NEWS
Neuer Adapter für Roborock-Staubsauger
-
@darkdevil
Da kann wohl nur der Entwickler, copystring, fundiert darauf antworten. -
@timowald Welchen Roborock hast Du? Ich habe im Laufe dieses Threads festgestellt, dass es bei dem Datenhandling offensichtlich signifikante Unterschiede zwischen den einzelnen Typen gibt. Nicht jeder überträgt wohl alles.
Ich habe einen Roborock S7 Max V.
Gruß Bert. -
Moin!
Bin gerade über den Adapter gestolpert, endlich was ohne Token auslesen :+1:Zwei Sachen funktionieren bei mir nicht:
Wartungsarbeiten resetten. Beim senden eines true bei "resetConsumables" tut sich nicht viel. Klappt das bei jemanden?
Die Karte in die VIS einbinden. Der Code beim HTML-Widget sieht so aus:
<img src="{roborock.0.6b8DGQeSsLLF0UHsYyVTMN.cleaningInfo.Records.0.map.mapBase64>Gruß Pit
-
Ich melde mich no hnam wegen der Kartendarstellung.
Word bei euch der Datenpunkt mit dem Base64 Bild während der Reinigung regelmäßig aktualisiert?
Bei mir hilft nur ein Neustart vom Adapter die Aktualisierung der gui des Adapters (http://IP:6824/map.html).
-
Ich melde mich no hnam wegen der Kartendarstellung.
Word bei euch der Datenpunkt mit dem Base64 Bild während der Reinigung regelmäßig aktualisiert?
Bei mir hilft nur ein Neustart vom Adapter die Aktualisierung der gui des Adapters (http://IP:6824/map.html).
@david-g das ist ein Fehler im Adapter und ist in der dev bereits gefixt. Die dev hat aber noch Fehler. Ich muss Zeit finden damit ich mich darum kümmern kann.
-
@david-g das ist ein Fehler im Adapter und ist in der dev bereits gefixt. Die dev hat aber noch Fehler. Ich muss Zeit finden damit ich mich darum kümmern kann.
Ich warte einfach geduldig ^^.
-
Hallo und guten Morgen in die Runde, seit gestern bin ich Besitzer von einem Roborock S8 Pro Ultra. Noch ganz neu in der Roborockwelt muss ich mich erstmal zurechtfinden.
Ich habe gestern auch die Karte in die Vis bekommen, jedoch aktualisiert er nicht die Position. Wie macht ihr das?
Grüße
-
Hallo und guten Morgen in die Runde, seit gestern bin ich Besitzer von einem Roborock S8 Pro Ultra. Noch ganz neu in der Roborockwelt muss ich mich erstmal zurechtfinden.
Ich habe gestern auch die Karte in die Vis bekommen, jedoch aktualisiert er nicht die Position. Wie macht ihr das?
Grüße
-
Hallo!
Es wurde ja schon über die Darstellung einer Karte gesprochen und dass das nicht so einfach funktionert, da die Karte nur als Base64-Image vorliegt.
Ich habe mal etwas getüftelt und vielleicht hilft es dem ein oder anderen:Die Base64-Images sind ganz normale HTML-"Bilder", die man z.B. in einer Visu nutzen kann, leider aber nicht einfach so, sondern nur über Umwege.
Der HTML-Code für die Einbindung eines Bas64-Bildes ist so aufgebaut:<img src="[BASE64-CODE]">Also eigentlich alles kein Hexenwerk. Wenn man aus dem Datenpunkt den Code kopiert und in ein HTML-Objekt in VIS einfügt, wird die Karte auch wunderbar dargestellt, aber natürlich nicht aktualisiert. Da man über geschweifte Klammern direkt in VIS auf den Inhalt eines Datenpunktes zugreifen kann, dachte ich, dass man das über
<img src="{roborock.0.Devices.ID.map.mapBase64}">lösen kann, das funktioniert aber so nicht. Sollte jemand wissen, wie das funktioniert, gerne melden!
Ich habe das dann so gelöst, dass ich eine script erstellt habe, was nichts anderes macht, als die spitzen Klammern davor und dahinter zu setzen und das alles in einer neuen Variable zu speichern. Diesen String kann ich dann über die geschweiften Klammern in VIS einbinden, es funktionert alles ohne Probleme!

Code:
Hinweise:- In VIS im Editor wird immer nur das Objekt in geschweiften Klammern dargestellt. Geladen wird der Inhalt erst in der feriten VIS!
- die zusätzlichen Inhalte style="[...]" skalieren und beschneiden das Bild, damit es vernünftig dargestllt werden kann. Da muss man je nach Karte schauen wie es passt. Bei mir ist der Bereich oben links des Bildes erstmal sehr viel weiß, weshalb ich da viel wegschneiden muss, bis die eigentliche Karte zu sehen ist, spielt einfach mit den Werten.
- Die Aktualisierungsrate der Karte ist wirklich mäßig. Ich weiß nicht in welchen Intervallen das passiert, es scheint immer so gegen Ende der Reinigung zu sein, manchmal auch währenddessen, manchmal auch im Dock. Woran das liegt weiß vermutlich nur Roborock.
Bei Bedarf kann ich das hier gerne noch fürs WIKI auf englisch aufbereiten, ich habe da aber keine Schreibrechte drauf.
Viel Spaß damit, Anmerkungen oder Fragen sind willkommen!
@maxb Hallo nochmal zur Karte.
Dein Blockly habe ich übernommen, jedoch aktualisiert der Datenpunkt ohne erkennbares Muster.
roborock.0.Devices.73IcwgDs3bor4cpoGQz8Oa.map.mapBase64 aktualisiert sich unregelmäßig von alle paar Sekunden bis hin zu alle 10 Minuten. Hast du eine Idee wie ich das in den Griff bekommen könnte?
-
@david-g sagte in Neuer Adapter für Roborock-Staubsauger:
Die Position am Bild der Karte?
Wenn ja schau mal 2 bzw 3 Posts weiter oben. -
Ok noch eine Frage habe ich, gibt es auch de Möglichkeit mehrere Räume auszuwählen zur Reinigung? Würde gerne auf der Vis anwählen Raum 1+2+3 oder 1+3+5 und dann auf start drücken.
-
Die entsprechenden Räume auf true setzen und dann app_segment_clean.

Edit
Falls es mehrere Etagen gibt diese über load_multi_map auswählen. -
So ich bin dann auch mal fertig mit der integration. Man muss nur den Raum auf der Karte anwählen. Er wird dann heller, start drücken fertig. Einfach Geil!
Design wird noch aufgehübscht
Danke für den Adapter.
-
So ich bin dann auch mal fertig mit der integration. Man muss nur den Raum auf der Karte anwählen. Er wird dann heller, start drücken fertig. Einfach Geil!
Design wird noch aufgehübscht
Danke für den Adapter.
-
Hallo!
Es wurde ja schon über die Darstellung einer Karte gesprochen und dass das nicht so einfach funktionert, da die Karte nur als Base64-Image vorliegt.
Ich habe mal etwas getüftelt und vielleicht hilft es dem ein oder anderen:Die Base64-Images sind ganz normale HTML-"Bilder", die man z.B. in einer Visu nutzen kann, leider aber nicht einfach so, sondern nur über Umwege.
Der HTML-Code für die Einbindung eines Bas64-Bildes ist so aufgebaut:<img src="[BASE64-CODE]">Also eigentlich alles kein Hexenwerk. Wenn man aus dem Datenpunkt den Code kopiert und in ein HTML-Objekt in VIS einfügt, wird die Karte auch wunderbar dargestellt, aber natürlich nicht aktualisiert. Da man über geschweifte Klammern direkt in VIS auf den Inhalt eines Datenpunktes zugreifen kann, dachte ich, dass man das über
<img src="{roborock.0.Devices.ID.map.mapBase64}">lösen kann, das funktioniert aber so nicht. Sollte jemand wissen, wie das funktioniert, gerne melden!
Ich habe das dann so gelöst, dass ich eine script erstellt habe, was nichts anderes macht, als die spitzen Klammern davor und dahinter zu setzen und das alles in einer neuen Variable zu speichern. Diesen String kann ich dann über die geschweiften Klammern in VIS einbinden, es funktionert alles ohne Probleme!

Code:
Hinweise:- In VIS im Editor wird immer nur das Objekt in geschweiften Klammern dargestellt. Geladen wird der Inhalt erst in der feriten VIS!
- die zusätzlichen Inhalte style="[...]" skalieren und beschneiden das Bild, damit es vernünftig dargestllt werden kann. Da muss man je nach Karte schauen wie es passt. Bei mir ist der Bereich oben links des Bildes erstmal sehr viel weiß, weshalb ich da viel wegschneiden muss, bis die eigentliche Karte zu sehen ist, spielt einfach mit den Werten.
- Die Aktualisierungsrate der Karte ist wirklich mäßig. Ich weiß nicht in welchen Intervallen das passiert, es scheint immer so gegen Ende der Reinigung zu sein, manchmal auch währenddessen, manchmal auch im Dock. Woran das liegt weiß vermutlich nur Roborock.
Bei Bedarf kann ich das hier gerne noch fürs WIKI auf englisch aufbereiten, ich habe da aber keine Schreibrechte drauf.
Viel Spaß damit, Anmerkungen oder Fragen sind willkommen!
@earl80 Eigentlich genau wie hier. Man muss dann im blockly die größe anpassen. Statt% geht auch width="1000px" width="800px" zum beispiel.
@maxb sagte in Neuer Adapter für Roborock-Staubsauger:
Hallo!
Es wurde ja schon über die Darstellung einer Karte gesprochen und dass das nicht so einfach funktionert, da die Karte nur als Base64-Image vorliegt.
Ich habe mal etwas getüftelt und vielleicht hilft es dem ein oder anderen:Die Base64-Images sind ganz normale HTML-"Bilder", die man z.B. in einer Visu nutzen kann, leider aber nicht einfach so, sondern nur über Umwege.
Der HTML-Code für die Einbindung eines Bas64-Bildes ist so aufgebaut:<img src="[BASE64-CODE]">Also eigentlich alles kein Hexenwerk. Wenn man aus dem Datenpunkt den Code kopiert und in ein HTML-Objekt in VIS einfügt, wird die Karte auch wunderbar dargestellt, aber natürlich nicht aktualisiert. Da man über geschweifte Klammern direkt in VIS auf den Inhalt eines Datenpunktes zugreifen kann, dachte ich, dass man das über
<img src="{roborock.0.Devices.ID.map.mapBase64}">lösen kann, das funktioniert aber so nicht. Sollte jemand wissen, wie das funktioniert, gerne melden!
Ich habe das dann so gelöst, dass ich eine script erstellt habe, was nichts anderes macht, als die spitzen Klammern davor und dahinter zu setzen und das alles in einer neuen Variable zu speichern. Diesen String kann ich dann über die geschweiften Klammern in VIS einbinden, es funktionert alles ohne Probleme!

Code:
Hinweise:- In VIS im Editor wird immer nur das Objekt in geschweiften Klammern dargestellt. Geladen wird der Inhalt erst in der feriten VIS!
- die zusätzlichen Inhalte style="[...]" skalieren und beschneiden das Bild, damit es vernünftig dargestllt werden kann. Da muss man je nach Karte schauen wie es passt. Bei mir ist der Bereich oben links des Bildes erstmal sehr viel weiß, weshalb ich da viel wegschneiden muss, bis die eigentliche Karte zu sehen ist, spielt einfach mit den Werten.
- Die Aktualisierungsrate der Karte ist wirklich mäßig. Ich weiß nicht in welchen Intervallen das passiert, es scheint immer so gegen Ende der Reinigung zu sein, manchmal auch währenddessen, manchmal auch im Dock. Woran das liegt weiß vermutlich nur Roborock.
Bei Bedarf kann ich das hier gerne noch fürs WIKI auf englisch aufbereiten, ich habe da aber keine Schreibrechte drauf.
Viel Spaß damit, Anmerkungen oder Fragen sind willkommen!
-
@niggich
Hallo,
hier die versprochenen Skripte, ich hoffe, sie können eine Anregung sein. Sie sind sicher nicht ideal, es gibt bestimmt auch elegantere Lösungen. Bei mir erledigen sie ihren Auftrag:Um eine Historie der gereinigten Zimmer mit Klarnamen der Zimmer in der gui anzeigen zu können, bin ich wie folgt vorgegangen:
folgende Datenpunkte wurden vereinbart:
0_userdata.0.Saugroboter.Zimmer_saugen_starten
(Nummer des zu reinigenden Zimmers, Eingabe aus der gui)0_userdata.0.Saugroboter.Zimmer_Name_aktuell
(Klarname des zu reinigenden Zimmers)0_userdata.0.Saugroboter.Raum0 ... 9
(Klarnamen der letzten 9 gereinigten Zimmer)0_userdata.0.Saugroboter.Tag0 ... 9
(formatierter Tag der letzten 9 gereinigten Zimmer)0_userdata.0.Saugroboter.Zeit0 ... 9
(formatierte Zeit der letzten 9 gereinigten Zimmer)Ablauf einer Reinigung:
Sobald sich Zimmer_saugen_starten durch einen Button in der gui ändert, enthält dieser Datenpunkt die Nummer des zu reinigenden Zimmers (z.B. „18“ für die Küche) und das erste Skript startet:

In dem werden zunächst alle db roborock.0.Devices.x.floors.0.* auf false und anschließend der roborock.0.Devices.x.floors.0.* des gewünschten Zimmers auf true gesetzt. Im gleichen Schritt wird im db 0_userdata.0.Saugroboter.Zimmer_Name_aktuell der Klarname des Zimmers gespeichert.
Zum Schluss wird mit roborock.0.Devices.x.commands.app_segment_clean die Einzelzimmerreingung gestartet.Erstellen der Historieeinträge:
Ist diese beendet, ändert der Adapter seine 19 Historieeintragungen. Das dabei erfolgende Ändern des Datenpunktes roborock.0.Devices.x.cleaningInfo.Records.0.begin zeigt an, dass diese Änderung erfolgt ist und triggert den Start des zweiten Skriptes, das meine Historie erzeugt:

Hier werden zunächst die Räume in der 9-stelligen Historie um eins nach unten gereicht und anschließend der neueste Historieeintrag aus den entsprechenden Werten des Adapters erzeugt. Dann werden den Tag- und Zeiteinträgen in der meiner Historie die entsprechenden Werte des Adapters formatiert zugewiesen, z.B.
0_userdata.0.Saugroboter.Tag1 <- roborock.0.Devices.x.cleaningInfo.Records.1.begin
ebenso
0_userdata.0.Saugroboter.Zeit1 <- roborock.0.Devices.x.cleaningInfo.Records.1.beginZum Schluss wird der Klarname in 0_userdata.0.Saugroboter.Zimmer_Name_aktuell mit einem „?“ gelöscht.
Problem:
Etwas kritisch ist bei beiden Skripten das Timing in Verbindung mit dem laufenden Adapter, das muss durch testen und einfügen von Pausen angepasst werden.
Wie schon oben geschrieben, dass ganze funktioniert nur, wenn die Einzelzimmerreinigung über die gui gestartet wird. Es funktioniert nicht beim Start über die Handy-App und es funktioniert auch nicht bei Zonenreinigung.
Ich hoffe, ich konnte meine Skripte erläutern. Wenn Du Fragen hast, melde Dich bitte.
Viele Grüße, Bert.
-
@rmortan es ist nicht möglich die Karte auf Raspberry Pi zu verwenden.
@copystring said in Neuer Adapter für Roborock-Staubsauger:
@rmortan es ist nicht möglich die Karte auf Raspberry Pi zu verwenden.
Kannst du mir sagen warum das nicht aus dem PI läuft? Danke
Gruß