Xiaomi Robot (1. Generation): Keine Reaktion auf Update-Command (miIO.ota)

  • Hallo zusammen,


    ich versuche den Xiaomi Robot (Gen.1) zu rooten, indem ich die Anleitung von dustcloud verwende (an dieser Stelle: vielen Dank für die tolle Arbeit :-) ).


    Leider konnte ich nicht mirobo von der Kommandozeile (also das Wrapper-Skript was Python3 aufruft) direkt verwenden.
    Deshalb habe ich direkt im Python-Interpreter gearbeitet.

    >>> v = miio.vacuum.Vacuum(ip='192.168.8.1', token='abcdefghij..........xyz.........') # token anonymisiert


    Beim folgenden Command bekomme ich kein Feedback:


    >>> v.raw_command('miIO.ota', '{"mode":"normal", "install":"1", "app_url":"http://192.168.8.xx/v11_003132.pkg", "file_md5":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","proc":"dnld install"}') # md5 anonymisiert


    Lokal läuft ein http-Server auf Port 80 (mit npm; wenn ich im Browser die app_url eingebe, sehe ich einen Output des Servers). Bei obigem Command passiert aber nichts.
    Andere Commands (wie start, stop, status und spot) funktionieren.


    Für jegliche Tipps bin ich sehr dankbar.


    Servus,


    wang

  • Jetzt schon. Danke für den Tipp. Hat aber leider nichts gebracht. :-(



    Selbst bei 100% Ladung, passiert nichts:
    <VacuumStatus state=Charging, error=No error bat=100%, fan=60% cleaned 0.0 m² in 0:00:01>


    Beim Update-Versuch kommt nur ['ok'] zurück.


    Auch bei v.info() kommt nur:


    ...
    self.__id = m.data.value['id']
    TypeError: 'NoneType' object is not subscriptable



    (nebenbei: Wie finde ich denn die aktuell installierte Firmware-Version heraus? Muss ich dafür eine App installieren?)

  • Äh,sorry, das Leerzeichen ist wohl beim Editieren des Posts aus Versehen reingekommen. Meine Python-History zeigt es richtig.


    Kann es sein, dass die Commands geändert wurden?

  • Moin, hast du es irgendwie lösen können?


    Habe derzeit dasselbe Problem und auch bei mir funktionieren die anderen Befehle. Habe es schon mit einem kompletten Reset und dem neuen Token probiert jedoch auch keinen Erfolg.


    Was mich wundert ist, dass auch der eigentliche discover über mirobo nicht mehr funktioniert.


    ---


    Update!!! Nachdem ich mir nochmal genau die Zeilen der Ausgabe angeschaut habe ist mir aufgefallen, dass das Script den HTTP Server auf der falschen IP startet ... da kommt der Robot natürlich noch nicht rauf. Interface deaktiviert und siehe da ... läuft ;o)

  • Arbeitet ihr zufällig mit einer virtuellen Maschine? Ich habe bei valetudo die Erfahrung gemacht, dass das Aufspielen einer Firmware mit einer virtuellen Maschine bei mir auch nie funktioniert hat. Mit einem raspberry ging es dann auf Anhieb.


    Gruß holybabel

  • root@ioBroker-Rock:~/dustcloud/devices/xiaomi.vacuum/firmwarebuilder# python3 flasher.py -a 192.168.178.34 -t Token -f output/v11_003468.fullos.pkg

    Flasher for Xiaomi Vacuum

    Connecting to device 192.168.178.34...

    Starting local http server...

    Serving http server at 192.168.178.71:46264

    Sending ota command with parameters: {"file_md5": " 4848488484848484848484848", "app_url": "http://192.168.178.71:46264/output/v11_003468.fullos.pkg", "install": "1", "proc": "dnld install", "mode": "normal"}

    unable to parse json '': Expecting value: line 1 column 1 (char 0)

    Traceback (most recent call last):

    File "flasher.py", line 207, in <module>

    main()

    File "flasher.py", line 185, in main

    r = vacuum.send('miIO.ota', ota_params)

    File "/usr/local/lib/python3.5/dist-packages/miio/device.py", line 265, in send

    self.__id = m.data.value["id"]

    TypeError: 'NoneType' object is not subscriptable