Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Neuer Adapter für Roborock-Staubsauger

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Neuer Adapter für Roborock-Staubsauger

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SpacerX @SpacerX last edited by

      @spacerx

      Ab und an tauchen folgende Meldungen auf.

      C:\Users\SpacerX\.local\pipx\venvs\mitmproxy\Scripts\python.exe
      [21:15:18.262] Packet type CONNACK is not supported yet!
      C:\Users\SpacerX\.local\pipx\venvs\mitmproxy\Scripts\python.exe
      [21:15:18.262] Addon error: unpack requires a buffer of 2 bytes
      Traceback (most recent call last):
        File "C:\ioBroker\node_modules\iobroker.roborock\lib\sniffing\mitmproxy_roborock.py", line 286, in tcp_message
          mqtt_packet = MQTTControlPacket(message.content)
        File "C:\ioBroker\node_modules\iobroker.roborock\lib\sniffing\mitmproxy_roborock.py", line 83, in __init__
          self._parse_publish_variable_headers()
        File "C:\ioBroker\node_modules\iobroker.roborock\lib\sniffing\mitmproxy_roborock.py", line 136, in _parse_publish_variable_headers
          field_length, field_content_bytes = self._parse_length_prefixed_bytes(offset)
        File "C:\ioBroker\node_modules\iobroker.roborock\lib\sniffing\mitmproxy_roborock.py", line 127, in _parse_length_prefixed_bytes
          field_length = struct.unpack("!H", field_length_bytes)[0]
      struct.error: unpack requires a buffer of 2 bytes
      C:\Users\SpacerX\.local\pipx\venvs\mitmproxy\Scripts\python.exe
      [21:15:18.309] [PUBLISH]
      C:\Users\SpacerX\.local\pipx\venvs\mitmproxy\Scripts\python.exe
      [21:15:18.309] [PUBLISH]
      

      Die Sniffing Message taucht bei mir leider auch nicht im Log auf.

      Jetzt weis ich noch nicht genau nach was ich schauen soll.

      copystring 1 Reply Last reply Reply Quote 0
      • copystring
        copystring @SpacerX last edited by

        @spacerx okay. Kann ich mir aktuell nicht angucken. Bin im Urlaub. Du müsstest dich gedulden oder selber mal schauen was das sein kann.

        S 1 Reply Last reply Reply Quote 0
        • S
          SpacerX @copystring last edited by

          @copystring Alles gut!
          Nachdem ich 24h Lebenszeit in das Unternehmen Sniffing verschwendet habe, habe ich der PC-Kiste erst mal den Strom abgedreht. Zur Frustbewältigung ein Eis gegessen und 3 Kippen verschlungen.
          Nu hat es mir dann doch keine Ruhe gelassen. Also PC wieder an. ioBroker-Dienst + mitmproxy gestartet, Wireguard auf iPone angeschalten und Roborock App gestartet.

          Jetzt passt auf was kommt!

          Es Läuft. Decoded sniffing in der Log-Ausgabe.

          Hier schon mal rausgepickt was ich herausfinden will.

          2023-08-05 22:12:19.101  - roborock.0 (8400) Decoded sniffing message: {"dps":{"101":"{"id":277019,"method":"get_wash_towel_mode","params":{}}"},"t":1691266339}
          2023-08-05 22:12:19.181  - roborock.0 (8400) dps debug: {"id":277019,"result":{"wash_mode":1}}
          2023-08-05 22:12:19.204  - roborock.0 (8400) Decoded sniffing message: {"dps":{"101":"{"id":277020,"method":"get_smart_wash_params","params":{}}"},"t":1691266339}
          2023-08-05 22:12:19.296  - roborock.0 (8400) dps debug: {"id":277020,"result":{"smart_wash":0,"wash_interval":1200}}
          

          Das sind Teile von den Einstellungen der Dockingstation.

          Ich bin erst mal Happy.

          Falls jemand für das Sniffing mit Roborock App auf iPhone Unterstützung braucht kann ich gern mit meinen Notizen von diesem Amoklauf behilflich sein.

          Gut Nächtle.

          1 Reply Last reply Reply Quote 0
          • S
            SpacerX @jahnbes last edited by

            @jahnbes Bevor ich es vergessen!

            In der Doku zu den Objekten vom Robi Hast du eingetragen:
            SchnipSchnap.PNG

            wash_ready wird nach meiner Beobachtung und den Logs von oben immer dann auf TRUE wenn der Robi zum Mopp Waschen richtig herum an der Station angedockt hat. Unter dem Wasserbefüllstutzen am Roboter ist ein Mikroschalter der durch eine kleine Nase unter dem Wasserstutzen der Station betätigt wird.
            wash_ready wird FALSE wenn der Robi nach dem Mopp Waschen wieder abdockt und der Robi dreht rum um in Ladeposition wieder anzudocken.

            jahnbes 1 Reply Last reply Reply Quote 0
            • T
              tritanium @jahnbes last edited by

              @jahnbes sagte in Neuer Adapter für Roborock-Staubsauger:

              @matt77che
              Danke, so habe ich es jetzt auch im Wiki eingetragen.

              Wenn ihr schon mal dabei seid, das Wiki zu vervollständigen 😄 wir haben einen Q7 Max+

              Mehrfache Tests haben ergeben:

              clean_type:

              1 = Gesamt Reinigung (alle Räume)
              2 = Zonenreinigung (ausgewählt über die App z.b.)
              3 = Raumreinigung

              start_type:

              1 = manuell (Knopfdruck am Roboter)
              2 = via App (aus der App gestartet oder per ioBroker.Adapter)
              3 = Planstart (durch Zeitplanung in der App)

              complete Type

              1 = normal beendet
              <> 1 = abgebrochen


              Andere Werte habe ich auch noch, die schicke ich nachher noch nach 🙂

              Gruß Micha

              jahnbes 1 Reply Last reply Reply Quote 0
              • jahnbes
                jahnbes @SpacerX last edited by

                @spacerx Danke, ist geändert!

                S 1 Reply Last reply Reply Quote 1
                • jahnbes
                  jahnbes @tritanium last edited by

                  @tritanium
                  Danke, MIcha, ich habe das Wiki ergänzt. Und warte auf Weiteres!
                  Ein schönes Wochenende noch, Gruß Bert.

                  1 Reply Last reply Reply Quote 0
                  • S
                    SpacerX @jahnbes last edited by SpacerX

                    @jahnbes Sorry das ich nerve.

                    SchnipSchnap.PNG

                    Es ist genau umgekehrt!
                    0 = Nicht bereit zum Mopp Waschen
                    1 = Bereit zum Mopp Waschen und ggf. Wasser nachtanken

                    Sagt aus das der Saugroboter richtig herum in der Station steht und bereit ist um den Mopp zu Waschen oder Wasser nachzutanken.
                    Wenn der Robi beim Andocken zum Waschen den Befüllstutzen nicht treffen würde bleibt wash_ready auf 0 (FALSE)

                    jahnbes 1 Reply Last reply Reply Quote 0
                    • jahnbes
                      jahnbes @SpacerX last edited by jahnbes

                      @spacerx
                      Oh je, ich habe 0 und 1 und die Zuordnung von true und false dazu verwechselt. Mea culpa.
                      Gruß Bert.

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        tritanium @jahnbes last edited by tritanium

                        @jahnbes

                        So, diesmal habe ich mich mit dem Aufbau der JSON befasst.

                        Datenpunkt ...CleaningInfo.JSON:

                        09aab004-873d-430f-8163-7493a4cb2a78-grafik.png

                        begin + end:-------> Im TS Format
                        duration:-----------> in Sekunden
                        area:----------------> Gereingte Fläche (durch 1000000, für m²)
                        error:---------------> 0 = ohne Fehler beendet
                        duration:-----------> in Sekunden
                        complete:----------> 0 = abgebrochene Reinigung, 1 = Reingung beendet
                        start_type:---------> siehe Wiki
                        clean_type:--------> siehe Wiki
                        dust_collection_Status: -----> 0 = Staub eingesammelt (nur), 1 = gesaugt + gewischt
                        map_flag:-----------> Karten ID (bei mir immer 0, da nur eine Karte verwendet wird)


                        Den DP "finish_reason" gibt es übrigens mit folgenden Ergebnissen:

                        21
                        24
                        52
                        54
                        56

                        Die bin ich aber noch am "testen" 🙂

                        Habe die JSON bei mir in der VIS drin und dementspreechend formatiert:

                        b12d3e8e-bf02-4f0a-9a1a-18f6829d0ffc-grafik.png

                        Melde mich wieder wenn ich mehr habe, bis dahin lg MIcha

                        jahnbes 1 Reply Last reply Reply Quote 0
                        • jahnbes
                          jahnbes @tritanium last edited by

                          @tritanium
                          Danke!

                          1 Reply Last reply Reply Quote 0
                          • jahnbes
                            jahnbes last edited by

                            Im Wiki ist die Unterteilung in "Roboter" und "Dock" aufgelöst. Sie war nicht mehr durchzuhalten. Jetzt ist alles wie im ioBroker angeordnet, also alphabetisch anhand des Objektnamens
                            Wenn ein Objekt nur für eine Station relevant ist, wird das gleich nach seinem Namen durch das Wort "Dock" angezeigt.

                            1 Reply Last reply Reply Quote 0
                            • Daniel Syberg
                              Daniel Syberg last edited by

                              Hallo zusammen,
                              ich habe gerade den Adapter installiert, die Instanz lässt sich auch öffnen.
                              Allerdings bekomme ich keine Verbindung, es kommen immer wieder Fehlermeldungen und es erfolgt alle paar Sekunden ein Neutstart.

                              Anbei die Meldungen im Log:

                              Screenshot1.jpg

                              Kann mir vielleicht jemand helfen?

                              Thomas Braun 1 Reply Last reply Reply Quote 0
                              • Thomas Braun
                                Thomas Braun Most Active @Daniel Syberg last edited by

                                @daniel-syberg

                                Bitte nicht als Screenshot.
                                Und nodejs15 ist vollkommen falsch.
                                Ungerade Versionen sind für die Entwicklung vorgesehen, produktiv setzt man gerade Versionen von nodejs ein. Installier da die aktuelle Empfehlung v18.

                                N 1 Reply Last reply Reply Quote 0
                                • N
                                  nu_81 @Thomas Braun last edited by

                                  Hallo,
                                  ist es auch möglich die Reinigung mehrerer Räume auf einmal anzustoßen?

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    andibr @nu_81 last edited by

                                    Hallo zusammen

                                    Kleine Frage: "wurde da irgendwo irgendwas verändert?" Seit heute (Samstag 12.08.2023:12.34) macht mein Iob einen auf Terror mit dem Roborock-Adapter. Ich habe ihn jetzt mal deaktiviert.

                                    host.iobroker
                                    		2023-08-12 17:24:07.645	info	Do not restart adapter system.adapter.roborock.0 because disabled or deleted
                                    host.iobroker
                                    		2023-08-12 17:24:07.645	error	instance system.adapter.roborock.0 terminated with code 3 (NO_ADAPTER_CONFIG_FOUND)
                                    roborock.0
                                    	5273	2023-08-12 17:24:07.047	warn	Terminated (NO_ADAPTER_CONFIG_FOUND): Without reason
                                    roborock.0
                                    	5273	2023-08-12 17:24:06.999	error	adapter disabled
                                    host.iobroker
                                    		2023-08-12 17:23:49.676	info	"system.adapter.roborock.0" disabled
                                    mqtt.1
                                    		2023-08-12 17:23:34.190	info	Restart adapter system.adapter.roborock.0 because enabled
                                    host.iobroker
                                    		2023-08-12 17:23:34.190	info	instance system.adapter.roborock.0 terminated with code NaN ()
                                    host.iobroker
                                    		2023-08-12 17:23:34.190	warn	instance system.adapter.roborock.0 terminated due to SIGABRT
                                    host.iobroker
                                    		2023-08-12 17:23:34.190	error	Caught by controller[7]: 8: 0x17036b9 [io.roborock.0]
                                    host.iobroker
                                    		2023-08-12 17:23:34.190	error	Caught by controller[6]: 7: 0xdc3def v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [io.roborock.0]
                                    host.iobroker
                                    		2023-08-12 17:23:34.190	error	Caught by controller[5]: 6: 0xdc28b0 [io.roborock.0]
                                    host.iobroker
                                    		2023-08-12 17:23:34.189	error	Caught by controller[4]: 5: 0x7eff119f53d3 [/opt/iobroker/node_modules/canvas/build/Release/canvas.node]
                                    host.iobroker
                                    		2023-08-12 17:23:34.189	error	Caught by controller[4]: 4: 0x7eff11a0347c Context2d::GetImageData(Nan::FunctionCallbackInfo<v8::Value> const&) [/opt/iobroker/node_modules/canvas/build/Release/canvas.node]
                                    host.iobroker
                                    		2023-08-12 17:23:34.189	error	Caught by controller[4]: 3: 0xd644da v8::Utils::ReportApiFailure(char const*, char const*) [io.roborock.0]
                                    host.iobroker
                                    		2023-08-12 17:23:34.189	error	Caught by controller[3]: 2: 0xa94749 node::OOMErrorHandler(char const*, bool) [io.roborock.0]
                                    host.iobroker
                                    		2023-08-12 17:23:34.189	error	Caught by controller[2]: 1: 0xb83f50 node::Abort() [io.roborock.0]
                                    host.iobroker
                                    		2023-08-12 17:23:34.189	error	Caught by controller[1]: FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal.
                                    host.iobroker
                                    		2023-08-12 17:23:34.188	error	Caught by controller[0]: Downloading AlexxIT/go2rtc@v1.6.2...
                                    roborock.0
                                    	5234	2023-08-12 17:23:11.328	info	MQTT initialized
                                    roborock.0
                                    	5234	2023-08-12 17:23:09.896	info	starting. Version 0.2.1 (non-npm: copystring/ioBroker.roborock#cea0cc4fa080d5a2041706a71b4190f153c773b4) in /opt/iobroker/node_modules/iobroker.roborock, node: v18.17.1, js-controller: 4.0.24
                                    

                                    Das ganze wiederholt sich alle paar Minuten und füllt das Log. Ich muss auch gestehen, ich habe bis jetzt noch gar nichts mit den Daten gemacht, ausser in den Objekten angeschaut. Auch erst 1x die Map angeschaut und studiert wie ich das verwenden kann.
                                    Seit ca. 2 Wochen hat das ganze jetzt einfach sauber die Objekte gefüllt und keine Probleme verursacht.
                                    Ist das auch bei anderen so?
                                    Andi

                                    jahnbes 1 Reply Last reply Reply Quote 0
                                    • jahnbes
                                      jahnbes @andibr last edited by jahnbes

                                      Hallo @andibr und andere.
                                      seit dem Update der roborock-App auf die Version 02.58.40 am 11.8.23 habe ich auch Probleme mit dem roborock und dem Adapter, minütlich kommt die Fehlermeldung

                                      "Unsported attribute: clean_percent of get_status with value 0. Please contact the dev to add the newly found attribute of your robot."

                                      Ich habe das bereits in github gemeldet.

                                      Gruß Bert.

                                      David G. ch90045 2 Replies Last reply Reply Quote 0
                                      • David G.
                                        David G. @jahnbes last edited by

                                        @jahnbes

                                        Ist eine neue Funktion in der App. Dort sieht man beim reinigen den Fortschritt in einem Balken.

                                        jahnbes 1 Reply Last reply Reply Quote 1
                                        • M
                                          maxb last edited by

                                          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!
                                          7339ef60-fe24-4d68-afd3-a7dd9b4ae0da-image.png
                                          Code:

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                           <block type="control" id="q]VQvq6D3wTA4)@;2Pll" inline="false" x="-12" y="-62">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                             <field name="OID">0_userdata.0.own_variables.Bobs_Karte</field>
                                             <field name="WITH_DELAY">FALSE</field>
                                             <value name="VALUE">
                                               <block type="text_join" id="5-?y*KQ:Y80!V91Yodb!">
                                                 <mutation items="3"></mutation>
                                                 <value name="ADD0">
                                                   <block type="text" id="Cc@lc8)Fr2JyKrvP:/Fh">
                                                     <field name="TEXT">&lt;img  style="width: 80%; height: auto; object-fit: inherit; object-position: 0 0;"  src="</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD1">
                                                   <block type="get_value" id="Z]JX6e;b^dh)cs(P^N=:">
                                                     <field name="ATTR">val</field>
                                                     <field name="OID">roborock.0.Devices.5qpgK8e1ywan2qsWru9feg.cleaningInfo.Records.0.map.mapBase64</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD2">
                                                   <block type="text" id="8K1rL)_63uZRJ.-{+RG~">
                                                     <field name="TEXT">"&gt;</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="on" id="[oUHwy/QQu*ltlu5id5)">
                                                 <field name="OID">roborock.0.Devices.5qpgK8e1ywan2qsWru9feg.cleaningInfo.Records.0.map.mapBase64</field>
                                                 <field name="CONDITION">ne</field>
                                                 <field name="ACK_CONDITION"></field>
                                                 <statement name="STATEMENT">
                                                   <block type="control" id="nAbRG4CNIj(s,5[`9VkO" inline="false">
                                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                     <field name="OID">0_userdata.0.own_variables.Bobs_Karte</field>
                                                     <field name="WITH_DELAY">FALSE</field>
                                                     <value name="VALUE">
                                                       <block type="text_join" id="2k-vFVe8e:a2O76QlkW?">
                                                         <mutation items="3"></mutation>
                                                         <value name="ADD0">
                                                           <block type="text" id="AR^b;KZ;H]gW+VYbolQG">
                                                             <field name="TEXT">&lt;img  style="width: 80%; height: auto; object-fit: inherit; object-position: 0 0;"  src="</field>
                                                           </block>
                                                         </value>
                                                         <value name="ADD1">
                                                           <block type="get_value" id="k)(j6}MFVQkeqecTw`Qg">
                                                             <field name="ATTR">val</field>
                                                             <field name="OID">roborock.0.Devices.5qpgK8e1ywan2qsWru9feg.cleaningInfo.Records.0.map.mapBase64</field>
                                                           </block>
                                                         </value>
                                                         <value name="ADD2">
                                                           <block type="text" id="HQnyYb)[/{?#394+RKX!">
                                                             <field name="TEXT">"&gt;</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </statement>
                                               </block>
                                             </next>
                                           </block>
                                          </xml>
                                          


                                          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!

                                          copystring Flexer 3 Replies Last reply Reply Quote 0
                                          • copystring
                                            copystring @maxb last edited by

                                            @maxb said in Neuer Adapter für Roborock-Staubsauger:

                                            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.

                                            Da ist eine trimmed base64. Dort sind alle Ränder bereits entfernt.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            930
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            114
                                            812
                                            164223
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo