Xiaomi WiFi Devices Modul (Vacuum/Airpurifier/Fan) - 72_XiaomiDevice (Support)

Begonnen von Markus M., 11 Juni 2017, 12:48:58

Vorheriges Thema - Nächstes Thema

Markus M.

Zitat von: Ganglion am 26 September 2020, 11:54:18
Sende ich z.B. "set vaccuum segment 1" gibt mir der Roborock S5 Max akustisch aus "Zimmerreinigung gestartet". Leider endet diese nach 5 Sekunden. Ich nehme an dass er eine bestimmte Angabe für den Raum benötigt.

Gibt es einen Trick um die "ID" der Räume zu erhalten?

Die IDs fangen bei 17 an.
set vacuum segment 17,18

Du kannst auch Namen vergeben:
attr vacuum segment_names Kitchen:17,18 Bathroom:19
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Ganglion

Zitat von: Markus M. am 26 September 2020, 14:05:32
Die IDs fangen bei 17 an.
set vacuum segment 17,18

Du kannst auch Namen vergeben:
attr vacuum segment_names Kitchen:17,18 Bathroom:19

Vielen Dank. Dadurch konnte ich per Try&Error meine IDs finden :-)
Ich hatte einen Raum der in 2 geteilt war und den habe ich per App zusammengefügt. Dieser Raum hat dann die ID 16 erhalten. Scheinbar werden die ID darunter also auch vergeben.

Ich bin glücklich :-) Schönes Wochenende

ChHerrm

Hallo zusammen,
ich hatte den Xiaomi Vacuum Cleaner der ersten Generation ca. 3 Jahre tadellos in FHEM integriert (damals noch per Flole App). Durch einen Routerwechsel muss ich nun den neuen Token auslesen. Inzwischen geht der Weg per Flole, wie ich auch gemerkt habe, ja nicht mehr und ich habe den Weg mit der alten Version 4.2.0 aus der Anleitung probiert - ebenfalls erfolglos. Wie ist denn nun der aktuell noch mögliche Weg? Geht der Weg aus der reddit-Anleitung aus https://forum.fhem.de/index.php?topic=73052.msg646649#msg646649 noch? Mein Virenprogramm war direkt unzufrieden mit dem Download von Memuplay, da wollte ich lieber nochmal nachfragen ob der Weg nach so langer Zeit überhaupt noch aktuell ist bzw. welcher Weg die aktuelle Empfehlung ist. Danke im Voraus.

Schöne Grüße
Christoph

swsmily

Zitat von: ChHerrm am 27 September 2020, 19:39:34
Hallo zusammen,
ich hatte den Xiaomi Vacuum Cleaner der ersten Generation ca. 3 Jahre tadellos in FHEM integriert (damals noch per Flole App). Durch einen Routerwechsel muss ich nun den neuen Token auslesen. Inzwischen geht der Weg per Flole, wie ich auch gemerkt habe, ja nicht mehr und ich habe den Weg mit der alten Version 4.2.0 aus der Anleitung probiert - ebenfalls erfolglos. Wie ist denn nun der aktuell noch mögliche Weg? Geht der Weg aus der reddit-Anleitung aus https://forum.fhem.de/index.php?topic=73052.msg646649#msg646649 noch? Mein Virenprogramm war direkt unzufrieden mit dem Download von Memuplay, da wollte ich lieber nochmal nachfragen ob der Weg nach so langer Zeit überhaupt noch aktuell ist bzw. welcher Weg die aktuelle Empfehlung ist. Danke im Voraus.

Schöne Grüße
Christoph

Schau mal hier:
https://forum.xda-developers.com/android/apps-games/app-xvacuum-firmware-xiaomi-vacuum-t3896526

Evtl hilft dir das weiter den Token auszulesen.

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

swsmily


ChHerrm

Danke schon mal für eure Hinweise!

Zitat von: swsmily am 27 September 2020, 21:41:54
Schau mal hier:
https://forum.xda-developers.com/android/apps-games/app-xvacuum-firmware-xiaomi-vacuum-t3896526

Evtl hilft dir das weiter den Token auszulesen.
Die App habe ich zum Laufen bekommen, auch den Token gefunden. Aber was für eine Firmware lade ich dann drauf? Das ging für mich da irgendwie nicht draus hervor, sorry:-/ Habe von hier die Neueste versucht: http://dustbuilder.xvm.mit.edu/pkg/v1/ Das brachte aber nichts, ich konnte den Token anschließend nicht auswerten. Hier also die Frage: Was für eine / von wo nehme ich eine Firmware?

Zur zweiten Hilfe:
Zitat von: Otto123 am 27 September 2020, 21:56:22
Ich würde ihn mit ssh versorgen / rooten. https://heinz-otto.blogspot.com/2019/06/root-und-gut.html

Auch hier habe ich ne ganze Weile rumprobiert, aber bin letztlich gescheitert. Das bash-Skript imagebuilder.sh musste ich anpassen, damit ich es überhaupt zum Laufen bekam. Für die Übergabeparameter musste ich im Skript $ARG jeweils mit $1 ersetzen, dann lief es. Und beim NTPSERVER habe ich einfach einen festgelegt, da ich ansonsten in eine Fehlermeldung kam, dass NTPSERVER leer sei in der Zeile 606.
Nach den Anpassungen (bei Bedarf kann ich auch mein angepasstes Skript posten) lief dann alles erfolgreich durch aus diesem Schritt. Beim Skript Flasher.py war dann aber endgültig Schluss. Das ist der Fehler:

sudo python3 flasher.py -a $ip -t $token -f output/v11_003468.fullos.pkg
Flasher for Xiaomi Vacuum
Connecting to device 192.168.8.1...
Starting local http server...
Serving http server at 192.168.8.221:38979
Sending ota command with parameters: {"mode": "normal", "install": "1", "app_url": "http://192.168.8.221:38979/v11_003468.fullos.pkg", "file_md5": "f82b79c4eb31447cc06cd747741feba1", "proc": "dnld install"}
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/miio/protocol.py", line 193, in _decode
    return json.loads(decoded)
  File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "flasher.py", line 216, in <module>
    main()
  File "flasher.py", line 194, in main
    r = vacuum.send('miIO.ota', ota_params)
  File "/usr/local/lib/python3.7/dist-packages/miio/device.py", line 147, in send
    command, parameters, retry_count, extra_parameters=extra_parameters
  File "/usr/local/lib/python3.7/dist-packages/miio/miioprotocol.py", line 193, in send
    m = Message.parse(data, token=self.token)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 288, in parse
    return self.parse_stream(io.BytesIO(data), **contextkw)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 300, in parse_stream
    return self._parsereport(stream, context, "(parsing)")
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 312, in _parsereport
    obj = self._parse(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 1981, in _parse
    subobj = sc._parsereport(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 312, in _parsereport
    obj = self._parse(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 2439, in _parse
    return self.subcon._parsereport(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 312, in _parsereport
    obj = self._parse(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 3987, in _parse
    obj = self.subcon._parsereport(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 312, in _parsereport
    obj = self._parse(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 4265, in _parse
    obj = self.subcon._parsereport(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 312, in _parsereport
    obj = self._parse(stream, context, path)
  File "/usr/local/lib/python3.7/dist-packages/construct/core.py", line 698, in _parse
    return self._decode(obj, context, path)
  File "/usr/local/lib/python3.7/dist-packages/miio/protocol.py", line 201, in _decode
    ) from ex
miio.exceptions.PayloadDecodeException: Unable to parse message payload

Ausgeführt habe ich hier alles mit einem RPi 2, der zumindest für das Ausführen des Flasher Skripts auch nur im WLAN des Staubsaugers war.


Die Möglichkeit mit Valetudo habe ich bislang noch nicht ausprobiert. Wenn mir zu den ersten beiden Möglichkeiten noch jemand Hinweise geben könnte, wäre das super. Ansonsten wäre als nächstes dann die Variante mit Valetudo dran.

Otto123

Hi,

Bist Du sicher, dass Du den richtigen Weg gegangen bist? Du hast ihn doch noch nicht eingebunden?! Du willst ihn doch quasi rooten nach dem Auspacken/Reset? Dafür gibt es einen extra Abschnitt in meinem Beitrag!
Sorry wenn das nicht so hundertprozentig drin steht.
Ich prüfe das die Tage nochmals, aber das Original Script muss keinesfalls gepatcht werden :o
Wenn ich richtig liege hat sich die Original Seite seit meinem Artikel nicht geändert. Aber im Zweifelsfall muss man die Original Anleitung nehmen, steht bei mir in der ersten Zeile!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

swsmily

Zitat von: ChHerrm am 28 September 2020, 22:28:22
Danke schon mal für eure Hinweise!
Die App habe ich zum Laufen bekommen, auch den Token gefunden. Aber was für eine Firmware lade ich dann drauf? Das ging für mich da irgendwie nicht draus hervor, sorry:-/ Habe von hier die Neueste versucht: http://dustbuilder.xvm.mit.edu/pkg/v1/ Das brachte aber nichts, ich konnte den Token anschließend nicht auswerten. Hier also die Frage: Was für eine / von wo nehme ich eine Firmware?

Die Frage ist, willst du ihn von der Cloud befreien (originale App geht dann natürlich nicht mehr).

Dann kannst du z.B. Valetudo RE installieren.
https://github.com/rand256/valetudo/releases

Passende PKG-Datei aufs Handy laden und per App flashen.

Ich hab bisher auch immer über den Raspi mit Mirobo geflashed. Mein Bruder hat es letzte Woche erst mit einem S50 über die App gemacht, lief problemlos. Außer, dass vom Roborock immer die Ansage kam, dass der Batteriestand zu niedrig wäre. Aber auf der Ladestation hat es dann funktioniert.

ChHerrm

Ich hab es nun wieder mit Ottos Anleitung lauffähig bekommen. Sehr schön. Ich habe letztlich nochmal ein Werksreset gemacht und dann die Schritte aus dem Tutorial durchlaufen.
Kleine Anmerkung noch zum Tutorial, Otto:
An der Stelle, an der du die Sprachumschaltung auf deutsch erklärst, ist der Aufruf nicht mehr

wget https://dustbuilder.xvm.mit.edu/pkg/voice/de.pkg
mirobo --ip $ip --token $token de.pkg


sondern

wget https://dustbuilder.xvm.mit.edu/pkg/voice-1/de.pkg
mirobo --ip $ip --token $token install-sound de.pkg


Und der Flash-Befehl brauchte von mir trotzdem eine IP und den Token.

Vielen Dank auf jeden Fall für die Anleitung, die hat mir deutlich besser geholfen als der Link!

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dominik

Für alle die die einen einfachen Weg für das Beziehen der Xiaomi Tokens suchen, hier nun als FHEM Modul:
Zuerst fhem_pythonbinding installieren:
https://github.com/dominikkarall/fhem_pythonbinding
danach:
define xiaomi_tokens PythonModule xiaomi_tokens
set xiaomi_tokens username USERNAME@MAIL.COM
set xiaomi_tokens password PASSWORD
set xiaomi_tokens get_tokens


Danach findet man alle Xiaomi Tokens in den Readings. Username und Passwort werden nicht gespeichert, sondern nur zum Abruf der Tokens benutzt.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

StephanFHEM

klingt super! wäre es nicht sinnvoll, dass direkt ins Modul von Markus mit einzubauen? Wenn der Token nicht da oder falsch ist holt er automatisch den richtigen Token...

dominik

Direkt ins Modul von Markus kann ich es nicht einbauen, da die Library dazu in Python vorliegt und nicht in Perl. Klar, man koennte das nun alles in Perl neu programmieren.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

neyzen