NEWS
Roborock Adapter tester gesucht
-
@io-alex @copystring
Erstmal danke für die tolle Arbeit. Bei mir sieht das aktuell nach Installation des dev Stands so aus im Log:roborock.0 2023-06-30 00:00:06.106 warn Terminated (UNCAUGHT_EXCEPTION): Without reason roborock.0 2023-06-30 00:00:06.101 info terminating roborock.0 2023-06-30 00:00:06.069 error Exception-Code: MODULE_NOT_FOUND: Cannot find module './undefined'Require stack:- /opt/iobroker/node_modules/iobroker.roborock/lib/vacuum.js- /opt/iobroker/node_modules/iobroker.roborock/main.js roborock.0 2023-06-30 00:00:06.067 error Error: Cannot find module './undefined'Require stack:- /opt/iobroker/node_modules/iobroker.roborock/lib/vacuum.js- /opt/iobroker/node_modules/iobroker.roborock/main.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1072:15) at Function.Module._load (node:internal/modules/cjs/loader:925:27) at Module.require (node:internal/modules/cjs/loader:1139:19) at require (node:internal/modules/helpers:121:18) at new vacuum (/opt/iobroker/node_modules/iobroker.roborock/lib/vacuum.js:47:31) at /opt/iobroker/node_modules/iobroker.roborock/main.js:195:28 roborock.0 2023-06-30 00:00:06.056 error unhandled promise rejection: Cannot find module './undefined'Require stack:- /opt/iobroker/node_modules/iobroker.roborock/lib/vacuum.js- /opt/iobroker/node_modules/iobroker.roborock/main.js roborock.0 2023-06-30 00:00:06.054 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). roborock.0 2023-06-30 00:00:04.585 error The model roborock.vacuum.a65 is not supported. Get in touch with the dev to get this robot supported. roborock.0 2023-06-30 00:00:04.580 info MQTT initialized
Liegt das bei mir auch am s7 max ultra oder habe ich noch ein anderes Problem? Eigentlich hätte ich auch noch einen normalen S7 in meinem Account.
-
@io-alex said in Roborock Adapter tester gesucht:
Hallo
Ist geplant demnächst den roborock s7 max ultra zu unterstützen?
Mit freundlichen Grüßen
Ist eingebaut. Bitte die dev testen und ein Debuglog hier anhängen: https://github.com/copystring/ioBroker.roborock/tree/dev
-
Moin, ich wollte den Adapter mal testen, wo muss ich mich denn anmelden? die von mir gefundene adresse euiot.irgendwas scheint nicht zu existieren?
In der Doku finde ich nix...
Hab einen S5 vom Xiaomi -
Hi, das oben beschriebene Verhalten hast du dir noch nicht angeschaut oder? Denn auch mit der neuen dev läd er die Karte minütlich neu. Ich meine jetzt aber nicht die Kartendarstellung im Adapter sondern die Karte in der app bzw. die Karte im Roboter. Es ist so als ob er bei jedem aktualisierungsintervall (60s) das Stockwerk neu läd auch wenn sich das Stockwerk nicht geändert hat. Deaktiviere ich den Adapter wird es nicht mehr getriggert und die Karte und somit die Position des Saugers bleibt erhalten. Ich dachte schon der Sauger hat ein Problem und kann sich seine Position nicht mehr merken. Ich will dich da nicht stressen. Hast ja geschrieben das du Zeitmangel hast. Sollte er eine Info sein.
-
@dimi Nein, konnte ich mir nicht angucken. Wie oben bereits gesagt, wollte ich wissen, ab wann es nicht mehr ging. Darauf bist du nicht eingegangen.
-
Doch hatte was dazu geschrieben:
Ich glaube das ist ab der Version so, wo der Q7 mit reingekommen ist. Bin mir leider nicht mehr sicher.
-
@dimi Naja, das würde keinen Sinn ergeben. Nur weil ein Roboter dazugekommen ist, hat sich das Verhalten der Karte nicht verändert.
Wenn du dir aber nicht sicher bist, müsstest du es ohnehin ausprobieren.
Hier sind alle Änderungen der: https://github.com/copystring/ioBroker.roborock/commits/dev.
Du kannst jede Änderung mit der rechten Maustaste anklicken und den Link kopieren. Über den Link dann den Adapter installieren und so herausfinden, welche Version lief. -
Ah cool wusste ich nicht. Werde ich testen und dir dann berichten.
-
Also jetzt bin ich verwirrt. Ich bin jetzt bis zu der Version vom 28 März zurück und das Verhalten ist das gleiche. Kann es sein das es schon immer so war und ich es nicht gemerkt habe? Aber was ich nicht verstehe ist, warum triggert der Adpater bei jedem Aktualisierung (Intervall 60) ein Kartenspeichern und Laden des gleichen Stockwerks. Das hat halt den Effekt das der Sauger seine Position verliert. Beispiel: Ich lasse per Pin&Go den Sauger irgednwo hinfahren. Er stoppt. Wenn der Adapter aktualisiert, zeigt mir die App auf dem Handy das der Sauger wieder auf der Ladestation ist. Habe nur ich das Verhalten? Ein Kartenspeichern sollte nur dann statt finden wenn man das Stockwerk manuell auswählt oder wenn der Sauger auf die Ladestation fährt. So passiert es wenn der Adapter nicht aktiv ist.
Nachtrag: Also ich habe jetzt auch mal die main Version installiert. Das Verhalten ist da das gleiche. Kann es sein das Roborock was an der API geändert hat? Alles sehr komisch.
-
@dimi Ich habe den gleichen Saugroboter wie du. S6 MaxV und kann das Problem mit der aktuellen dev nicht reproduzieren.
Der Adapter hat übrigens gar keine Option eingebaut, Karten zu speichern. Nur das Laden und Lesen ist implementiert.
Aber ich sehe, dass dein System auf einem arm64 System läuft. Ist das ein RPi?
Teste doch mal ioBroker mit dem Adapter auf einem Windows System. Tritt da der Fehler auch auf? -
Die letzten Wochen war ich damit beschäftigt, wie man das Mitschneiden des Datenverkehrs realisieren könnte (daher der Zeitmangel )
Dies ging vor einiger Zeit mal direkt über ein Subscribe im MQTT Client des Adapters.
Anscheinen hat Roborock das aber mitbekommen, und die Möglichkeit gesperrt.Mit der neuesten dev ist jetzt möglich zusammen mit mitmproxy den Datenverkehr dann doch wieder mitzuschneiden.
Das funktioniert folgendermaßen:- Die aktuelle dev installieren (https://github.com/copystring/ioBroker.roborock/tree/dev)
- Auf dem selben PC, auf dem ioBroker läuft, mitmproxy wie folgt installieren:
--pipx install mitmproxy
--pipx inject mitmproxy websocket
--pipx inject mitmproxy websocket-client
- Und so starten:
mitmweb.exe --listen-port 9090 --web-port 9091 --mode wireguard -s C:\iobroker\node_modules\ioBroker.roborock\lib\sniffing\mitmproxy_roborock.py
ggf. den Pfad von mitmproxy_roborock.py auf eure Installation anpassen. - Anschließend öffnet sich im Browser das Fenster von mitmproxy und ein QR Code. Darüber Wireguard am Handy einrichten. Ihr benötigt dann noch das entsprechende Zertifikat von mitmproxy: https://docs.mitmproxy.org/stable/concepts-certificates/. Bitte fragt mich nicht, wie das zu installieren ist. Ihr müsst euch auskennen!
- Dann Wireguard auf dem Handy aktivieren und die Roborock App öffnen.
Das sieht dann z.B. so aus:
Dadurch ist nun möglich, auch neue und unbekannte Befehle mitzuschneiden, welche direkt von der App kommen.
-
Ja es läuft auf einem RPi 4 mit 64 Bit. Das laden würde ja schon aureichen um die Karte im Roboter erneut zu laden. Ich bin mir sicher das war am Anfang nicht so. Könnte es sein das es was mit der aktualisierung des js-controllers zu tun hat? Der wurde letztens auf die Version 5.0.5 aktualisiert. Bin im beta Repository.
Wenn ich die Tage Zeit finde werde ich mal den iobroker mal auf Windows installieren um es damit zu testen.Nachtrag:
Ich konnte das Problem gerade lösen. Ich habe lediglich einen raum saugen lassen nachdem der Adapter neu instelliert wurde. Danach wird die Karte auch nicht ständig neu geladen. Anscheinend habe ich unbewusst immer den Sauger einen raum saugen lassen, so dass ich das Problem nie hatte. Es reicht wohl nicht aus nur den Befehl Pin&Go auszuführen.
-
@dimi Verstehe nicht so ganz was du geschrieben hast, aber toll, dass du es lösen konntest.
-
Wenn mit der aktuellen dev keine gravierenden Fehler auftreten, wird dies der nächste Release werden.
Wer mag, kann testen und die Fehler auf GitHub erstellen. -
Kann man aus den Adapterdatenpunken irgendwie ableiten welcher Raum gerade gereinigt wird?
Hintergrund meiner Frage ist das ich gern eine History erstellen möchte die Raumbezogen ist.
Wenn ich zum Beispiel in der App 3 Räume zum Reinigen auswähle möchte ich bei fertig Raum 1, Raum 2, Raum 3 jeweils die Time festhalten.MfG Ralf
-
@spacerx
Hallo spacerx, da habe ich eine gute und eine schlechte Nachricht. Ja, man kann und nein, man kann es nicht. Ich zumindest kann aus den Datenpunkten heraus den Ort nicht identifizieren, da in meiner Konstellation (Raspberry 4pi und iobroker) die Arbeit mit der Karte nicht funktioniert, auch laut copystring nicht. Ich bekomme keine Karte, keinen aktuellen gezeichneten Reinigungsverlauf und kann auch nicht (über diesen Adapter) mit Zonen arbeiten.
Aber, und jetzt geht es um das ja, ich wollte genau wie Du, in der Historie erkenntlich machen, nicht nur wann, sondern auch wo Erna gereinigt hat.
Und es klappt, siehe hier mittig im grünen Feld und rechts unten in der Historie:
Wie funktioniert es? Ich löse eine Raumreinigung über die oben in der Mitte stehenden Tasten aus. Dabei gehe ich wie hier im Forum beschrieben vor
"Für die Raumreinigung die Räume unter Floors entsprechend auf true oder false setzen und anschließend unter commands app_segment_clean auf true setzen."
und die Reinigung beginnt.
Im nächsten Schritt nutze ich die unter Floors gespeicherte Information (welcher Raum ist auf true gesetzt), um den Klarnamen des Raumes, der gerade gereinigt wird, in einem Objekt im iobroker zu speichern und in der gui auszugeben.
Und zu guter Letzt wird die Liste der Historie-Einträge um eines nach unten geschoben und die aktuelle Reinigung kommt ganz oben drauf nach dem last-in-last-out-Prinzip.
Was ist das Fragezeichen? Das sind erfolgte Zonenreinigungen und Raumreinigungen, die ich über die App ausgelöst habe, da komme ich -zumindest momentan- nicht an die notwendigen Informationen ran. Und die vielen Einträge mit "0 m²" und "0 min" waren Testläufe in einer anderen Frage.
Was kommt als Weiterentwicklung? Recht einfach, eher eine Fleißaufgabe, in Kürze wird in der Historie auch die Art der Reinigung (Saugen, Wischen, Saugen + Wischen) gelistet sein.
Die Lösung ist sicher nicht perfekt, für mich aber die zur Zeit machbare und ein erster Lösungsansatz.
Und leider konnte ich Deine Frage nach der Nutzung der Adapterdatenpunkte in Wirklichkeit nicht beantworten, sondern nur einen anderen Weg zum Ziel einer raumbezogenen Historie zeigen.
Gruß Bert. -
@jahnbes Danke für das zeigen deiner Lösung.
Schöner wäre es natürlich wenn der Adapter bei der Auswahl der Räume in der App das auch auf die Datenpunkte Synchronisieren würde.
Vielleicht komm da ja noch was nach. -
@spacerx
Da hast Du Recht. Mir fehlt da auch mancher Punkt, z.B. kann ich in der Handy-App die Anzahl der Zyklen einstellen. Die habe ich im Adapter noch nicht gefunden.
Und nur verbal direkt vom Gerät bekomme ich die Mitteilung, dass der Staubbehälter entfernt wurde, etwas, was ich anderweitig auch gern sehen und in der gui anzeigen würde.
Es gibt bei dem tollen Adapter noch etwas Luft nach oben, trotzdem, er ist große Klasse, Dank an copystring!
Gruß Bert. -
@jahnbes sagte in Roborock Adapter tester gesucht:
z.B. kann ich in der Handy-App die Anzahl der Zyklen einstellen. Die habe ich im Adapter noch nicht gefunden.
roborock.0.Devices.xxxxx.floors.cleanCount
-
@david-g
Danke, David, da hatte ich noch nicht gesucht. allerdings, leider und jedenfalls bei mir, wenn ich diesen Wert im iobroker ändere, ändert sich die Anzeige in der Handy-App nicht und umgedreht, auch bei mit dieser geänderten Zyklenzahl dann stattfindender Reinigung, egal, ob wischen oder Saugen. Die Reinigung hatte ich allerdings nur gestartet, nicht getestet, ob er wirklich zweimal reinigt, das will ich der Familie am Sonntag nicht zumuten.
Mache ich da was falsch oder denke falsch? Mit diesem Fehler ist der Wert nutzlos für mich.
Viele Grüße und einen schönen Sonntag, Bert.