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

Solero

Hi,

ich kämpfe derzeit mit meinem ROBOROCK S7 MaxV Plus und der FHEM Integration.
Ich hatte ihn zuerst über die Roborock App betrieben, aber mit den Informationen hier problemlos auf die Xiaomi Mi Home App gewechselt.

Das 32-stellige Token habe ich mir identisch über die russische Android App und diesen Xiaomi Cloud Token Extractor https://en.techblog.co.il/2021/04/05/xiaomi-cloud-token-extractor/ besorgt.
Mein FHEM läuft in Docker in einem separaten VLAN. Der Sauger ist in einem anderen VLAN isoliert und hat darin unbeschränkten Internetzugriff. Aus dem FHEM-VLAN kann über TCP und UDP unbeschränkt per Unicast auf das Sauger-VLAN zugegriffen werden. In bestehenden TCP-Sessions kann auch aus dem Sauger-VLAN an das FHEM-WLAN gesendet werden. Ich kann u.a. den Sauger problemlos aus dem FHEM-VLAN anpingen. FHEM und der Sauger sind jeweils auf aktuellem Softwarestand.

Binde ich nun den Sauger mit

define robbi XiaomiDevice 192.168.11.196 426f584533574279733657413c624473
attr robbi subType VacuumCleaner

ein, erhalte ich

Internals
DEF 192.168.11.196 426f584633534279733657414c624173
FD 72
FUUID 62c1ff1e-f33f-b184-4535-c22e3731fb687217
NAME robbi
NR 264
STATE ???
TYPE XiaomiDevice
eventCount 7


Mit

attr robbi verbose 5

erhalte ich bei

set robbi reconnect

reproduzierbar im Log

2022.07.04 18:22:56 3: robbi: disconnecting
2022.07.04 18:22:56 2: robbi: connecting
2022.07.04 18:22:56 3: robbi: initialized
2022.07.04 18:22:56 5: robbi: initSend
2022.07.04 18:22:56 5: robbi Send SUCCESS
2022.07.04 18:22:56 5: robbi > 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff


Auf bspw.

set robbi volume 0



2022.07.04 18:24:26 4: robbi: write {"id":1,"method":"change_sound_volume","params":[0]} (52)
2022.07.04 18:24:26 5: robbi: initSend
2022.07.04 18:24:26 5: robbi Send SUCCESS
2022.07.04 18:24:26 5: robbi > 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
2022.07.04 18:24:26 1: robbi: internal error, values missing


und auf

set robbi start



2022.07.04 18:27:39 4: robbi: write {"id":2,"method":"app_start","params":[""]} (43)
2022.07.04 18:27:39 5: robbi: initSend
2022.07.04 18:27:39 5: robbi Send SUCCESS
2022.07.04 18:27:39 5: robbi > 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
2022.07.04 18:27:39 1: robbi: internal error, values missing


Beim reconnect command erhöht sich jeweils der event count.

Kennt evtl. jemand das Verhalten und hätte einen Tipp, was ich noch probieren könnte?
RaspberryPi 4 (4GB) mit Raspbian und FHEM als Docker-Container; Homematic, CCU3, HM-LC-Dim1TPBU-FM, HM-LC-Sw1PBU-FM, HM-ES-PMSw1-Pl, HM-SEC-SD-2; Z-Wave, ZME_UZB1, FGRM222; CUL; Enocean, TCM_ESP3, PTM-215, Tasmota

caldir65

Moin,
zum Token auslesen gibt es noch die Variante fhempy - dazu gibt es neben den Python-Bindings auch entsprechende Module, z.B. um Xiaomi-Token auszulesen.

Einiges zu fhempy steht auch im threat zu googlecast - damit habe ich die Token sowohl des S6 als auch der SmartFans ausgelesen. Voraussetzung ist nur die Einrichtung der Geräte via normaler App (ich nutze die normale xiaomi-app aus dem Playstore)

Besonders Paste'n'copy macht es so charmant hier mit dem fhempy-Modul ...

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Solero

Sollte es nötig sein, noch mit einem dritten Tool das Token auszulesen? Die Daten zuvor sind jeweils konsistent und per Copy-Paste in FHEM übertragen.

Deutet der Logeintrag bei einem
set robbi reconnect
denn darauf hin, dass das Token richtig oder falsch sein könnte?
RaspberryPi 4 (4GB) mit Raspbian und FHEM als Docker-Container; Homematic, CCU3, HM-LC-Dim1TPBU-FM, HM-LC-Sw1PBU-FM, HM-ES-PMSw1-Pl, HM-SEC-SD-2; Z-Wave, ZME_UZB1, FGRM222; CUL; Enocean, TCM_ESP3, PTM-215, Tasmota

caldir65

Moin,

wenn der Token nicht richtig ist kannst Du nicht steuern, bekommst keine Readings.
ich habe das fhempy-Modul nur vorgeschlagen, weil Du dann keine Russen-App benötigst.

Gruß Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Solero

Valider Punkt und alle guten Dinge sind drei.
Ich berichte, sobald ich mit mit fhempy ein Ergebnis habe.
RaspberryPi 4 (4GB) mit Raspbian und FHEM als Docker-Container; Homematic, CCU3, HM-LC-Dim1TPBU-FM, HM-LC-Sw1PBU-FM, HM-ES-PMSw1-Pl, HM-SEC-SD-2; Z-Wave, ZME_UZB1, FGRM222; CUL; Enocean, TCM_ESP3, PTM-215, Tasmota

Solero

Ich habe jetzt mehrere Stunden mit fhempy gekämpft und es weigert sich beharrlich zu laufen, daher noch einmal kurz die Frage:

Ich erhalte exakt dasselbe Token aus der russischen App und dem fertig lauffähigen Dockercontainer https://en.techblog.co.il/2021/04/05/xiaomi-cloud-token-extractor/

Ich kann leider die verbosity von XiaomiDevice nicht noch weiter hoch drehen, um zu erfahren, was ihm hier nicht gefällt.
Hätte jemand vielleicht noch eine Idee, da ich so langsam mit meinem Latein am Ende bin.

Edit:

Nachdem ich bei meinem Xiaomi Passwort das Sonderzeichen rausgenommen hatte lief es nun doch und das Token ist identisch. :-X Nun habe ich dreimal dasselbe Token.
RaspberryPi 4 (4GB) mit Raspbian und FHEM als Docker-Container; Homematic, CCU3, HM-LC-Dim1TPBU-FM, HM-LC-Sw1PBU-FM, HM-ES-PMSw1-Pl, HM-SEC-SD-2; Z-Wave, ZME_UZB1, FGRM222; CUL; Enocean, TCM_ESP3, PTM-215, Tasmota

Solero

Da ich eine falsches Token wohl ausschließen kann, habe ich zwei Vermutungen

  • Probleme durch die Segmentierung in VLANs
  • Änderungen des Protokolls, die nicht im XiaomiDevice Modul berücksichtigt sind
Die beiden besagten VLANs sind geroutet und vom FHEM-VLAN aus ist durch die Firewall Zugriff per TCP und UDP Unicast auf das Sauger-VLAN möglich. NATing gibt es hierbei nicht, auch kein Multicast. Ich glaube eher weniger, dass der Fehler hier liegt.
Durch die Log-Meldung
Zitat von: Solero am 04 Juli 2022, 22:03:15
auf

set robbi start



2022.07.04 18:27:39 4: robbi: write {"id":2,"method":"app_start","params":[""]} (43)
2022.07.04 18:27:39 5: robbi: initSend
2022.07.04 18:27:39 5: robbi Send SUCCESS
2022.07.04 18:27:39 5: robbi > 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
2022.07.04 18:27:39 1: robbi: internal error, values missing

vermute ich hier eher, dass Problem liegt, da das Log nach meinem Verständnis auf einen Mismatch in den APIs hindeutet.

Hat jemand evtl. schon einmal einen S7 MaxV, nicht einen S7 ohne MaxV, mit FHEM zum Laufen bekommen? Falls ja, wäre meine Hypthese direkt widerlegt und es müsste irgendwo an meiner Dusseligkeit liegen.
RaspberryPi 4 (4GB) mit Raspbian und FHEM als Docker-Container; Homematic, CCU3, HM-LC-Dim1TPBU-FM, HM-LC-Sw1PBU-FM, HM-ES-PMSw1-Pl, HM-SEC-SD-2; Z-Wave, ZME_UZB1, FGRM222; CUL; Enocean, TCM_ESP3, PTM-215, Tasmota

Solero

Jetzt funktioniert es mit dem ROBOROCK S7 MaxV Plus und es lag doch am NATing zwischen den Subnets. Offensichtlich hat Xiaomi damit Probleme.

Vielleicht erspart diese Erkenntnis jemanden etwas Sucherei.
RaspberryPi 4 (4GB) mit Raspbian und FHEM als Docker-Container; Homematic, CCU3, HM-LC-Dim1TPBU-FM, HM-LC-Sw1PBU-FM, HM-ES-PMSw1-Pl, HM-SEC-SD-2; Z-Wave, ZME_UZB1, FGRM222; CUL; Enocean, TCM_ESP3, PTM-215, Tasmota

StephanFHEM

Hallo,

Ich hab noch einen Xiaomi Mi Vacuum Cleaner der seit längerem mit diesem Modul seinen Dienst verrichtet.
Das funktioniert soweit auch sehr gut. Jetzt wollte ich gerne einbauen, dass er zum Mülleimer fährt sobald der Dust Bin voll ist. Über die App kann ich das per Remote Control oder Target Point auf der Map machen. In FHEM finde ich die Möglichkeiten nicht. Unter set gibt es auch kein Move Direction oder sonstiges. Übersehe ich etwas?

Edit: ok, hatte auf dem Handy geschaut und nicht gesehen, das man in der Auswahlliste auch nach oben scrollen konnte. Es ist alles da. Bleibt nur die Frage: kann man mit ,,goto" zu den Koordinaten gehen? Kann man diese oder die Position irgendwo ablesen und ggf. speichern? In den Readings sind keine Koordinaten

MadMax-FHEM

Welchen Sauger hast du?

Bei mir gibt es:

set Sauger move
set Sauger goto
set Sauger remotecontrol -> start, stop, forward, left, right

Xiaomi V1 und V2 (S50?)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

StephanFHEM

Jup... hatte meinen Beitrag schon editiert. Problem war vor dem Bildschirm. Wie nutzt du goto? Kannst du irgendwelche Koordinaten auslesen?

MadMax-FHEM

Zitat von: StephanFHEM am 17 Juli 2022, 13:58:47
Wie nutzt du goto?

Gar nicht ;)

Bzw. früher mal zum "Spaß"...

Zitat von: StephanFHEM am 17 Juli 2022, 13:58:47
Kannst du irgendwelche Koordinaten auslesen?
Da hatte ich aber noch die "veränderte" Original-FW laufen mit Flole-App.
Damit konnte man ganz einfach die Goto und Zonen Koordinaten auslesen.

Aktuell nutze ich Valetudo.
Da geht das auch gut auszulesen aber die Koordinaten sind wohl (zumindest bei mir) nicht "kompatibel" mit diesem Modul :-\

Ich hatte mal wo eine Umrechnung aber irgendwie tut die auch nicht mehr :-\

Aber ich habe ja meine Zonen-Koordinaten noch und auch Sicherungen der Karten etc. 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

RappaSan

Ich hab seinerzeit die Koordinaten per "Flole-app" ausgelesen, genutzt werden sie z.B. per

attr  point_names Entladen:[31750,25800] WeitererPunkt:[X-Koordinate,Y-Koordinate]
und dann per Befehl
set goto Entladen

davidwohnthier

#2488
Zitat von: Solero am 06 Juli 2022, 23:36:12
Jetzt funktioniert es mit dem ROBOROCK S7 MaxV Plus und es lag doch am NATing zwischen den Subnets. Offensichtlich hat Xiaomi damit Probleme.

Vielleicht erspart diese Erkenntnis jemanden etwas Sucherei.


Wie hast du es gelöst? Mein Smartmi 2S will und will nicht verbunden werden. Ist auch in einem VLAN. mDns Repeater auf der opnSense läuft. Zugriff von FHEM aus auf alle anderen VLANs und Ports ist möglich (allow any).

Edit:

Ich hab die Lösung gefunden bei HA:
ZitatOn OPNSense (may be similar to PFSense), go to Firewall -> Outbound -> Activate `Hybrid outbound NAT rule generation` -> Save -> Add -> Interface `THE_ONE_WHERE_IS_THE_DEVICE` -> Source address `THE_HA_IP_ADDRESS/32`-> Destination address `THE_DEVICE_IP_ADDRESS/32` -> Translation / target `THE_INTERFACE_ADDRESS_WHERE_THE_DEVICE_IS` -> Save.

Der Ventilator wird jetzt gefunden, allerdings wird er trotz Homebridge Mapping und genericDeviceType fan als Speaker erkannt?!?!


StephanFHEM

hab mir jetzt auch mal einen neuen Roborock S7 gegönnt. Dabei ist mir aufgefallen, dass es im Vergleicht zum alten Mi Vacuum Cleaner das Reading wifi_state nicht mehr gibt.
Das hat normal immer den Status "online" ausgespuckt. Eigentlich sollte das bei dem Roborock S7 doch genau so angezeigt werden oder?