Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Neuer Adapter für Roborock-Staubsauger

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    509

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Neuer Adapter für Roborock-Staubsauger

Scheduled Pinned Locked Moved ioBroker Allgemein
1.0k Posts 149 Posters 359.4k Views 136 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jahnbesJ jahnbes

    @darkdevil
    Da kann wohl nur der Entwickler, copystring, fundiert darauf antworten.

    ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #228

    Ich erhalte bei 2 Q Revos kontinuierlich den Fehler "has to be type "number" but received type "string". Adapter ist Version 0.4.4.

    96e8eaed-3074-4cf9-a082-bcb8d578c15a-image.png

    1 Reply Last reply
    0
    • jahnbesJ Offline
      jahnbesJ Offline
      jahnbes
      wrote on last edited by
      #229

      @darkdevil
      Da kann wohl nur der Entwickler, copystring, fundiert darauf antworten.

      1 Reply Last reply
      0
      • jahnbesJ jahnbes

        @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.

        T Online
        T Online
        TimoWald
        wrote on last edited by
        #230

        @jahnbes halo habe auch den S7 Max V

        1 Reply Last reply
        0
        • E Offline
          E Offline
          earl80
          wrote on last edited by
          #231

          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

          1 Reply Last reply
          0
          • David G.D Offline
            David G.D Offline
            David G.
            wrote on last edited by David G.
            #232

            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).

            Zeigt eure Lovelace-Visualisierung klick
            (Auch ideal um sich Anregungen zu holen)

            Meine Tabellen für eure Visualisierung klick

            copystringC 1 Reply Last reply
            0
            • David G.D David G.

              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).

              copystringC Offline
              copystringC Offline
              copystring
              wrote on last edited by
              #233

              @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.

              Unterstütze meine Arbeit gerne mit einer Spende über PayPal:
              https://paypal.me/copystring

              David G.D 1 Reply Last reply
              0
              • copystringC copystring

                @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.D Offline
                David G.D Offline
                David G.
                wrote on last edited by
                #234

                @copystring

                Ich warte einfach geduldig ^^.

                Zeigt eure Lovelace-Visualisierung klick
                (Auch ideal um sich Anregungen zu holen)

                Meine Tabellen für eure Visualisierung klick

                1 Reply Last reply
                0
                • FlexerF Offline
                  FlexerF Offline
                  Flexer
                  wrote on last edited by
                  #235

                  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

                  Unterm Strich ist alles besser.


                  Ja, voll geil hier!

                  David G.D 1 Reply Last reply
                  0
                  • FlexerF Flexer

                    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

                    David G.D Offline
                    David G.D Offline
                    David G.
                    wrote on last edited by
                    #236

                    @flexer

                    Die Position am Bild der Karte?
                    Wenn ja schau mal 2 bzw 3 Posts weiter oben.

                    Zeigt eure Lovelace-Visualisierung klick
                    (Auch ideal um sich Anregungen zu holen)

                    Meine Tabellen für eure Visualisierung klick

                    David G.D 1 Reply Last reply
                    0
                    • M maxb

                      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!

                      FlexerF Offline
                      FlexerF Offline
                      Flexer
                      wrote on last edited by Flexer
                      #237

                      @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?

                      Unterm Strich ist alles besser.


                      Ja, voll geil hier!

                      1 Reply Last reply
                      0
                      • David G.D David G.

                        @flexer

                        Die Position am Bild der Karte?
                        Wenn ja schau mal 2 bzw 3 Posts weiter oben.

                        David G.D Offline
                        David G.D Offline
                        David G.
                        wrote on last edited by
                        #238

                        @Flexer

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

                        @flexer

                        Die Position am Bild der Karte?
                        Wenn ja schau mal 2 bzw 3 Posts weiter oben.

                        Zeigt eure Lovelace-Visualisierung klick
                        (Auch ideal um sich Anregungen zu holen)

                        Meine Tabellen für eure Visualisierung klick

                        FlexerF 1 Reply Last reply
                        0
                        • David G.D David G.

                          @Flexer

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

                          @flexer

                          Die Position am Bild der Karte?
                          Wenn ja schau mal 2 bzw 3 Posts weiter oben.

                          FlexerF Offline
                          FlexerF Offline
                          Flexer
                          wrote on last edited by
                          #239

                          @david-g LOL Ok jetzt hab ich es gerafft. Alles klar danke. Manchmal sieht man den Wald vor lauter Bäume nicht

                          Unterm Strich ist alles besser.


                          Ja, voll geil hier!

                          1 Reply Last reply
                          0
                          • FlexerF Offline
                            FlexerF Offline
                            Flexer
                            wrote on last edited by
                            #240

                            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.

                            Unterm Strich ist alles besser.


                            Ja, voll geil hier!

                            David G.D 1 Reply Last reply
                            0
                            • FlexerF Flexer

                              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.

                              David G.D Offline
                              David G.D Offline
                              David G.
                              wrote on last edited by David G.
                              #241

                              @flexer

                              Die entsprechenden Räume auf true setzen und dann app_segment_clean.

                              Screenshot_20231110_211233_Chrome.jpg

                              Edit
                              Falls es mehrere Etagen gibt diese über load_multi_map auswählen.

                              Zeigt eure Lovelace-Visualisierung klick
                              (Auch ideal um sich Anregungen zu holen)

                              Meine Tabellen für eure Visualisierung klick

                              FlexerF 1 Reply Last reply
                              1
                              • David G.D David G.

                                @flexer

                                Die entsprechenden Räume auf true setzen und dann app_segment_clean.

                                Screenshot_20231110_211233_Chrome.jpg

                                Edit
                                Falls es mehrere Etagen gibt diese über load_multi_map auswählen.

                                FlexerF Offline
                                FlexerF Offline
                                Flexer
                                wrote on last edited by
                                #242

                                @david-g Super dank dir!!!

                                Unterm Strich ist alles besser.


                                Ja, voll geil hier!

                                1 Reply Last reply
                                0
                                • FlexerF Offline
                                  FlexerF Offline
                                  Flexer
                                  wrote on last edited by Flexer
                                  #243

                                  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.

                                  96c0cd7e-d7ca-4be2-b050-6472c3d0ce9f-image.png

                                  Unterm Strich ist alles besser.


                                  Ja, voll geil hier!

                                  T E 2 Replies Last reply
                                  0
                                  • FlexerF Flexer

                                    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.

                                    96c0cd7e-d7ca-4be2-b050-6472c3d0ce9f-image.png

                                    T Online
                                    T Online
                                    TimoWald
                                    wrote on last edited by
                                    #244

                                    @flexer sieht gut aus.

                                    1 Reply Last reply
                                    0
                                    • FlexerF Flexer

                                      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.

                                      96c0cd7e-d7ca-4be2-b050-6472c3d0ce9f-image.png

                                      E Offline
                                      E Offline
                                      earl80
                                      wrote on last edited by
                                      #245

                                      @flexer Sauber! Wie hast du die Map da so rein bekommen?

                                      1 Reply Last reply
                                      0
                                      • M maxb

                                        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!

                                        FlexerF Offline
                                        FlexerF Offline
                                        Flexer
                                        wrote on last edited by
                                        #246

                                        @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!
                                        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!

                                        Unterm Strich ist alles besser.


                                        Ja, voll geil hier!

                                        1 Reply Last reply
                                        0
                                        • jahnbesJ jahnbes

                                          @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:

                                          skript1.jpg

                                          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:

                                          skript2.jpg

                                          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.begin

                                          Zum 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.

                                          T Offline
                                          T Offline
                                          Tobias04
                                          wrote on last edited by Tobias04
                                          #247

                                          @jahnbes Würdest du dein Skript für die Raumreinigung mit uns teilen als .txt file?

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          477

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe