Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.0k

Neuer Adapter für Roborock-Staubsauger

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
928 Beiträge 138 Kommentatoren 327.3k Aufrufe 127 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S SpacerX

    Eine Frage.
    Welcher Datenpunk zeigt mir an, wenn der Wassertank im Roboter befüllt wird oder wurde.

    Wird wohl dann eher ein Trigger auf "Vorheriger Wert" und Wert werden.

    Soll mit in einer Berechnung verwendet werden, die den Füllstand des Reinwasser-, Schmutzwassertank der Station berechnet.

    jahnbesJ Offline
    jahnbesJ Offline
    jahnbes
    schrieb am zuletzt editiert von
    #64

    @spacerx
    Meines Wissens nach gibt es einen solchen Datenpunkt nicht. Bei meinen Tests mit dem Wassertank des Roboters war der Tank mal leer, mal halbvoll, mal voll. Immer blieb roborock.0.Devices.x.deviceStatus.water_shortage_status auf "0".
    Auch habe ich keinen Sensor im Roboter oder im Tank erkennen können.
    Wenn jemand etwas anderes weiß, bitte melden!
    Es ist schon etwas verwunderlich, dass ausgerechnet der Wasserstand im Robotertank keine Datenpunkt hat. Jedenfalls nicht bei meinem roborock S7 MasxV.
    Gruß Bert.

    copystringC 1 Antwort Letzte Antwort
    0
    • jahnbesJ jahnbes

      @SpacerX
      Hallo Ralf
      und danke für die weiteren Objekte und ihre Bedeutung. Das Wiki ist ergänzt.
      Gruß Bert.

      S Offline
      S Offline
      SpacerX
      schrieb am zuletzt editiert von SpacerX
      #65

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

      Das Wiki ist ergänzt.

      Da warst du aber schnell.:astonished:

      Ich schrub:

      [consumables.cleaning_brush_work_times] High-speed maintenance brush
      Zeit seit letzer Wartung der Mop-Reinigungsbürste
      [consumables.strainer_work_times] Water Filter
      Zeit seit letzer Wartung des Wasserfilters der Reinigungsstation

      Meine Aussage das es sich um eine Zeitangabe handelt scheint nicht richtig zu sein.
      Weil in der App zur Filterwartung was von mindestens einmal im Monat Reinigen stand, dachte ich das der Monat als Zeit 100% wären. Das gleiche bei der Bürste, wo steht mindesten alle 2 Monate.
      Falsch gedacht!

      Wie in meinem Logauszug zu sehen wird aller Voraussicht bei jedem Mop-Waschen einfach hochgezählt.

      2023-08-03 11:02:41.187 # Robi -> Water Filter (consumables.strainer_work_times] = 2 -> 3	"Dock Wasser Filter Anzahl Benutzung"
      2023-08-03 11:02:41.187 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 2 -> 3	"Dock Reinigungsbürste Anzahl Benutzung"
      

      DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

      jahnbesJ 1 Antwort Letzte Antwort
      0
      • S SpacerX

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

        Das Wiki ist ergänzt.

        Da warst du aber schnell.:astonished:

        Ich schrub:

        [consumables.cleaning_brush_work_times] High-speed maintenance brush
        Zeit seit letzer Wartung der Mop-Reinigungsbürste
        [consumables.strainer_work_times] Water Filter
        Zeit seit letzer Wartung des Wasserfilters der Reinigungsstation

        Meine Aussage das es sich um eine Zeitangabe handelt scheint nicht richtig zu sein.
        Weil in der App zur Filterwartung was von mindestens einmal im Monat Reinigen stand, dachte ich das der Monat als Zeit 100% wären. Das gleiche bei der Bürste, wo steht mindesten alle 2 Monate.
        Falsch gedacht!

        Wie in meinem Logauszug zu sehen wird aller Voraussicht bei jedem Mop-Waschen einfach hochgezählt.

        2023-08-03 11:02:41.187 # Robi -> Water Filter (consumables.strainer_work_times] = 2 -> 3	"Dock Wasser Filter Anzahl Benutzung"
        2023-08-03 11:02:41.187 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 2 -> 3	"Dock Reinigungsbürste Anzahl Benutzung"
        
        jahnbesJ Offline
        jahnbesJ Offline
        jahnbes
        schrieb am zuletzt editiert von
        #66

        @spacerx

        Ok, ich korrigiere es gleich.
        Gruß Bert.

        S 1 Antwort Letzte Antwort
        0
        • jahnbesJ jahnbes

          @spacerx

          Ok, ich korrigiere es gleich.
          Gruß Bert.

          S Offline
          S Offline
          SpacerX
          schrieb am zuletzt editiert von
          #67

          @jahnbes nicht so schnell!
          Sollte das nicht jemand nachprüfen?
          So könnte man auch den Zusammenhang der App Anzeige zur Wartung der Dock-Reinigungsbürste und Dock-Wasserfilter erkennen.
          Bezieht sich die App auf einen Wert in den Datenpunkten oder einfach nur Zeit nach dem letzten Nullen der Datenpunkte

          DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

          jahnbesJ 1 Antwort Letzte Antwort
          0
          • jahnbesJ jahnbes

            @spacerx
            Meines Wissens nach gibt es einen solchen Datenpunkt nicht. Bei meinen Tests mit dem Wassertank des Roboters war der Tank mal leer, mal halbvoll, mal voll. Immer blieb roborock.0.Devices.x.deviceStatus.water_shortage_status auf "0".
            Auch habe ich keinen Sensor im Roboter oder im Tank erkennen können.
            Wenn jemand etwas anderes weiß, bitte melden!
            Es ist schon etwas verwunderlich, dass ausgerechnet der Wasserstand im Robotertank keine Datenpunkt hat. Jedenfalls nicht bei meinem roborock S7 MasxV.
            Gruß Bert.

            copystringC Offline
            copystringC Offline
            copystring
            schrieb am zuletzt editiert von
            #68

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

            @spacerx
            Meines Wissens nach gibt es einen solchen Datenpunkt nicht. Bei meinen Tests mit dem Wassertank des Roboters war der Tank mal leer, mal halbvoll, mal voll. Immer blieb roborock.0.Devices.x.deviceStatus.water_shortage_status auf "0".
            Auch habe ich keinen Sensor im Roboter oder im Tank erkennen können.
            Wenn jemand etwas anderes weiß, bitte melden!
            Es ist schon etwas verwunderlich, dass ausgerechnet der Wasserstand im Robotertank keine Datenpunkt hat. Jedenfalls nicht bei meinem roborock S7 MasxV.
            Gruß Bert.

            Kann die App denn den Zustand anzeigen?
            Dann müsste man herausfinden, welcher Parameter der entsprechende für den Wassertank von der Station ist.
            Es wird immer Mal wieder neue Parameter geben.
            Um diese herauszufinden habe ich dieses Wiki mit der entsprechenden Anleitung erstellt. https://github.com/copystring/ioBroker.roborock/wiki/Sniffing-Roborock-MQTT-traffic
            Wenn also ein Parameter fehlt, darüber ein Debug Log erstellen und ein neues issue auf GitHub mit den entsprechenden fehlenden Parameter erstellen.
            Wenn die App den Zustand anzeigen kann, dann kann das auch der Adapter.

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

            S JackDanielJ 2 Antworten Letzte Antwort
            0
            • copystringC copystring

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

              @spacerx
              Meines Wissens nach gibt es einen solchen Datenpunkt nicht. Bei meinen Tests mit dem Wassertank des Roboters war der Tank mal leer, mal halbvoll, mal voll. Immer blieb roborock.0.Devices.x.deviceStatus.water_shortage_status auf "0".
              Auch habe ich keinen Sensor im Roboter oder im Tank erkennen können.
              Wenn jemand etwas anderes weiß, bitte melden!
              Es ist schon etwas verwunderlich, dass ausgerechnet der Wasserstand im Robotertank keine Datenpunkt hat. Jedenfalls nicht bei meinem roborock S7 MasxV.
              Gruß Bert.

              Kann die App denn den Zustand anzeigen?
              Dann müsste man herausfinden, welcher Parameter der entsprechende für den Wassertank von der Station ist.
              Es wird immer Mal wieder neue Parameter geben.
              Um diese herauszufinden habe ich dieses Wiki mit der entsprechenden Anleitung erstellt. https://github.com/copystring/ioBroker.roborock/wiki/Sniffing-Roborock-MQTT-traffic
              Wenn also ein Parameter fehlt, darüber ein Debug Log erstellen und ein neues issue auf GitHub mit den entsprechenden fehlenden Parameter erstellen.
              Wenn die App den Zustand anzeigen kann, dann kann das auch der Adapter.

              S Offline
              S Offline
              SpacerX
              schrieb am zuletzt editiert von
              #69

              @copystring Die App zeigt unter Wartung den Zustand des Dock-Wasserfilters und der Dock-Reinigungsbürste als Status an.

              ich habe hier nur Status: Normal und "Status: Sollte gereinigt werden" gesehen.

              Ich gehe davon aus das sich die App an den Consumables orientiert und ab einem bestimmten Wert die Reinigung empfiehlt.
              Oder!
              Die App die Zeit seit dem letzten zurücksetzen der Consumables heran nimmt.

              DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

              S 1 Antwort Letzte Antwort
              0
              • S SpacerX

                @jahnbes nicht so schnell!
                Sollte das nicht jemand nachprüfen?
                So könnte man auch den Zusammenhang der App Anzeige zur Wartung der Dock-Reinigungsbürste und Dock-Wasserfilter erkennen.
                Bezieht sich die App auf einen Wert in den Datenpunkten oder einfach nur Zeit nach dem letzten Nullen der Datenpunkte

                jahnbesJ Offline
                jahnbesJ Offline
                jahnbes
                schrieb am zuletzt editiert von
                #70

                @spacerx
                Ja, ich prüfe es ja auch nach, so ich die Möglichkeit dazu habe. Und die habe ich bei der Reinigungsstation nicht, bedingt durch das Fehlen derselben.
                Da hilft nur Schwarmintelligenz und schnelles Reagieren.
                Gruß Bert.

                A 1 Antwort Letzte Antwort
                0
                • copystringC copystring

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

                  @spacerx
                  Meines Wissens nach gibt es einen solchen Datenpunkt nicht. Bei meinen Tests mit dem Wassertank des Roboters war der Tank mal leer, mal halbvoll, mal voll. Immer blieb roborock.0.Devices.x.deviceStatus.water_shortage_status auf "0".
                  Auch habe ich keinen Sensor im Roboter oder im Tank erkennen können.
                  Wenn jemand etwas anderes weiß, bitte melden!
                  Es ist schon etwas verwunderlich, dass ausgerechnet der Wasserstand im Robotertank keine Datenpunkt hat. Jedenfalls nicht bei meinem roborock S7 MasxV.
                  Gruß Bert.

                  Kann die App denn den Zustand anzeigen?
                  Dann müsste man herausfinden, welcher Parameter der entsprechende für den Wassertank von der Station ist.
                  Es wird immer Mal wieder neue Parameter geben.
                  Um diese herauszufinden habe ich dieses Wiki mit der entsprechenden Anleitung erstellt. https://github.com/copystring/ioBroker.roborock/wiki/Sniffing-Roborock-MQTT-traffic
                  Wenn also ein Parameter fehlt, darüber ein Debug Log erstellen und ein neues issue auf GitHub mit den entsprechenden fehlenden Parameter erstellen.
                  Wenn die App den Zustand anzeigen kann, dann kann das auch der Adapter.

                  JackDanielJ Online
                  JackDanielJ Online
                  JackDaniel
                  schrieb am zuletzt editiert von
                  #71

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

                  Um diese herauszufinden habe ich dieses Wiki mit der entsprechenden Anleitung erstellt. https://github.com/copystring/ioBroker.roborock/wiki/Sniffing-Roborock-MQTT-traffic

                  da würde ich gerne helfen mit meinem q revo, was mir dabei aber unklar ist:

                  1. mein iobroker läuft auf einem debain nuc = nix mit *.exe starten :(
                  2. verwende ich wiregurad schon mit meinem geräten, wird dann eine neue verbindung eingerichtet?

                  Carpe diem

                  S 1 Antwort Letzte Antwort
                  0
                  • JackDanielJ JackDaniel

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

                    Um diese herauszufinden habe ich dieses Wiki mit der entsprechenden Anleitung erstellt. https://github.com/copystring/ioBroker.roborock/wiki/Sniffing-Roborock-MQTT-traffic

                    da würde ich gerne helfen mit meinem q revo, was mir dabei aber unklar ist:

                    1. mein iobroker läuft auf einem debain nuc = nix mit *.exe starten :(
                    2. verwende ich wiregurad schon mit meinem geräten, wird dann eine neue verbindung eingerichtet?
                    S Offline
                    S Offline
                    SpacerX
                    schrieb am zuletzt editiert von
                    #72

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

                    mein iobroker läuft auf einem debain nuc = nix mit *.exe starten

                    Selbes Problem. Wie kann ich den Datenverkehr App zum Sauger und dessen antworten unter Debian sniffen.
                    Ich hab schon quer durch das WWW gesucht, kann nur mit den englischen Beiträgen nicht viel anfangen.

                    DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                    1 Antwort Letzte Antwort
                    0
                    • copystringC Offline
                      copystringC Offline
                      copystring
                      schrieb am zuletzt editiert von
                      #73

                      Zum Testen habe ich mir aber ioBroker auf Windows installiert. Dort dann den Roborock Adapter installieren und dem Wiki folgen.
                      Für Debian kann ich keinen Support geben. Geht theoretisch auch, habe ich aber nicht getestet.

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

                      A S 2 Antworten Letzte Antwort
                      0
                      • copystringC copystring

                        Zum Testen habe ich mir aber ioBroker auf Windows installiert. Dort dann den Roborock Adapter installieren und dem Wiki folgen.
                        Für Debian kann ich keinen Support geben. Geht theoretisch auch, habe ich aber nicht getestet.

                        A Offline
                        A Offline
                        andibr
                        schrieb am zuletzt editiert von
                        #74

                        @copystring

                        Ich gehe davon aus, dass euch für MQTT die Tools schon bekannt sind:
                        Linux (Debian) == mqttx
                        Windows == mqtt.fx

                        Damit könnt ih den gesamten Trafic vom MQTT-Broker Abonieren, und dann mal schauen und immer weiter eingrenzen.

                        Aber vermutlich schreibe ich da Dinge die ihr schon längst kennt. Etwas änliches gibt es glaub auch für Modbus TCP/RTU, aber mir fällt der Namen nicht gerade ein.
                        Beim Linux gibt es noch irgendwie eine Möglichkeit, den Trafic über einen Port mit zuschneiden und in ein File zu paken. Aber auch da gibt es garantiert Personen die das besser wissen und können.

                        Andi

                        copystringC 1 Antwort Letzte Antwort
                        0
                        • jahnbesJ jahnbes

                          @spacerx
                          Ja, ich prüfe es ja auch nach, so ich die Möglichkeit dazu habe. Und die habe ich bei der Reinigungsstation nicht, bedingt durch das Fehlen derselben.
                          Da hilft nur Schwarmintelligenz und schnelles Reagieren.
                          Gruß Bert.

                          A Offline
                          A Offline
                          andibr
                          schrieb am zuletzt editiert von
                          #75

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

                          @spacerx
                          Ja, ich prüfe es ja auch nach, so ich die Möglichkeit dazu habe. Und die habe ich bei der Reinigungsstation nicht, bedingt durch das Fehlen derselben.
                          Da hilft nur Schwarmintelligenz und schnelles Reagieren.
                          Gruß Bert.

                          In gewissem Umfang kann ich da sicher Hilfe resp. Datenwerte liefern, den ich habe in meinem Haushalt einen S7 Max Ultra mit Reinigungsstation. Habe einfach aktuell nicht sehr viel Zeit zur Verfügung, aber Datenpunkte aus den Objekten raussuchen sollte gehen.

                          Andi

                          1 Antwort Letzte Antwort
                          0
                          • S SpacerX

                            @copystring Die App zeigt unter Wartung den Zustand des Dock-Wasserfilters und der Dock-Reinigungsbürste als Status an.

                            ich habe hier nur Status: Normal und "Status: Sollte gereinigt werden" gesehen.

                            Ich gehe davon aus das sich die App an den Consumables orientiert und ab einem bestimmten Wert die Reinigung empfiehlt.
                            Oder!
                            Die App die Zeit seit dem letzten zurücksetzen der Consumables heran nimmt.

                            S Offline
                            S Offline
                            SpacerX
                            schrieb am zuletzt editiert von SpacerX
                            #76

                            Ich möchte meine heutige Ausbeute teilen.

                            Es geht um Funktionen Rund um die Station vom S7 MaxV Ultra.

                            Meine Voraussetzungen:

                            • Kleines Blockly zum loggen der Datenpunkte vom Sauger geschrieben.
                            • Adapter vorrübergehend die Aktualisierung 5s gestellt.
                            • Mit Taschenlampe vor die Station gehockt und aufgeschrieben was passiert.
                            • Robi steht in der Station zum laden, dann Mopp Waschen gestartet.

                            Meine Aufzeichnungen dazu:

                            Log Mopp Waschen mit Roboter Wassertank leer.

                            2023-08-03 18:29:08.482 # Robi -> State [deviceStatus.state] = 8 -> 26 (Fahre Mopp waschen)
                            2023-08-03 18:29:08.487 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                            2023-08-03 18:29:08.488 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                            2023-08-03 18:29:08.489 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 1
                            2023-08-03 18:29:48.716 # Robi -> State [deviceStatus.state] = 26 -> 23 (Mopp waschen)
                            2023-08-03 18:29:48.719 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                            2023-08-03 18:29:48.721 # Robi -> Back Type [deviceStatus.back_type] = 1 -> -1
                            2023-08-03 18:29:48.721 # Robi -> Wash Phase [deviceStatus.wash_phase] = 0 -> 11
                            2023-08-03 18:29:48.722 # Robi -> Wash Ready [deviceStatus.wash_ready] = 0 -> 1
                            2023-08-03 18:29:49.365 # Robi -> Water Filter [consumables.strainer_work_times] = 4 -> 5
                            2023-08-03 18:29:49.366 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 4 -> 5
                            2023-08-03 18:31:03.661 # Robi -> Wash Phase [deviceStatus.wash_phase] = 11 -> 12
                            2023-08-03 18:31:08.651 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 10
                            2023-08-03 18:31:38.662 # Robi -> Wash Phase [deviceStatus.wash_phase] = 10 -> 13
                            2023-08-03 18:32:53.675 # Robi -> Wash Phase [deviceStatus.wash_phase] = 13 -> 12
                            2023-08-03 18:32:58.637 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 14
                            2023-08-03 18:33:08.634 # Robi -> State [deviceStatus.state] = 23 -> 6 (Rückkehr zur Station)
                            2023-08-03 18:33:08.677 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                            2023-08-03 18:33:08.679 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 0
                            2023-08-03 18:33:08.680 # Robi -> Wash Phase [deviceStatus.wash_phase] = 14 -> 0
                            2023-08-03 18:33:13.670 # Robi -> Wash Ready [deviceStatus.wash_ready] = 1 -> 0
                            2023-08-03 18:33:31.225 # Robi -> Times Dust Collected [cleaningInfo.dust_collection_count] = 77 -> 78 "Wahrscheinlicht Staubbehälterantleerungen"
                            2023-08-03 18:33:33.671 # Robi -> State [deviceStatus.state] = 6 -> 8 (Akku laden)
                            2023-08-03 18:33:33.674 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                            2023-08-03 18:33:33.674 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                            2023-08-03 18:33:33.675 # Robi -> Back Type [deviceStatus.back_type] = 0 -> -1
                            

                            Mopp Waschen mit Roboter Wassertank 100% voll.

                            2023-08-03 18:40:38.661 # Robi -> State [deviceStatus.state] = 8 -> 26 (Fahre Mopp waschen)
                            2023-08-03 18:40:38.706 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                            2023-08-03 18:40:38.706 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                            2023-08-03 18:40:38.708 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 1
                            2023-08-03 18:41:18.782 # Robi -> State [deviceStatus.state] = 26 -> 23 (Mopp waschen)
                            2023-08-03 18:41:18.787 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                            2023-08-03 18:41:18.793 # Robi -> Back Type [deviceStatus.back_type] = 1 -> -1
                            2023-08-03 18:41:18.805 # Robi -> Wash Phase [deviceStatus.wash_phase] = 0 -> 11
                            2023-08-03 18:41:18.806 # Robi -> Wash Ready [deviceStatus.wash_ready] = 0 -> 1
                            2023-08-03 18:41:19.536 # Robi -> Water Filter [consumables.strainer_work_times] = 5 -> 6
                            2023-08-03 18:41:19.537 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 5 -> 6
                            2023-08-03 18:42:58.756 # Robi -> Wash Phase [deviceStatus.wash_phase] = 11 -> 12
                            2023-08-03 18:43:03.720 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 13
                            2023-08-03 18:44:38.786 # Robi -> Wash Phase [deviceStatus.wash_phase] = 13 -> 12
                            2023-08-03 18:44:43.771 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 14
                            2023-08-03 18:44:48.739 # Robi -> State [deviceStatus.state] = 23 -> 6 (Rückkehr zur Station)
                            2023-08-03 18:44:48.741 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                            2023-08-03 18:44:48.781 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 0
                            2023-08-03 18:44:48.782 # Robi -> Wash Phase [deviceStatus.wash_phase] = 14 -> 0
                            2023-08-03 18:44:58.779 # Robi -> Wash Ready [deviceStatus.wash_ready] = 1 -> 0
                            2023-08-03 18:45:18.992 # Robi -> State [deviceStatus.state] = 6 -> 8 (Akku laden)
                            2023-08-03 18:45:18.994 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                            2023-08-03 18:45:18.995 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                            2023-08-03 18:45:18.996 # Robi -> Back Type [deviceStatus.back_type] = 0 -> -1
                            

                            Mopp Waschen mit Roboter Wassertank 50% voll.

                            2023-08-03 12:51:35.610 # Robi -> State [deviceStatus.state] = 8 -> 26 (Fahre Mopp waschen)
                            2023-08-03 12:51:35.653 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                            2023-08-03 12:51:35.654 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                            2023-08-03 12:51:35.655 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 1
                            2023-08-03 12:52:05.895 # Robi -> State [deviceStatus.state] = 26 -> 23 (Mopp waschen)
                            2023-08-03 12:52:05.899 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                            2023-08-03 12:52:05.901 # Robi -> Back Type [deviceStatus.back_type] = 1 -> -1
                            2023-08-03 12:52:05.902 # Robi -> Wash Ready [deviceStatus.wash_ready] = 0 -> 1
                            2023-08-03 12:52:06.393 # Robi -> Water Filter [consumables.strainer_work_times] = 3 -> 4
                            2023-08-03 12:52:06.394 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 3 -> 4
                            2023-08-03 12:52:10.868 # Robi -> Wash Phase [deviceStatus.wash_phase] = 0 -> 11	"11 = Mopp Waschen mit Bürste und Wasser"
                            2023-08-03 12:53:25.678 # Robi -> Wash Phase [deviceStatus.wash_phase] = 11 -> 12	"12 = Wasserauffang unter Bürste leeren"
                            2023-08-03 12:53:30.667 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 10	"10 = scheint das Befüllen vom Wassertank zu sein"
                            2023-08-03 12:53:40.630 # Robi -> Wash Phase [deviceStatus.wash_phase] = 10 -> 13	"13 = Mopp abbürsten ohne Wasser (Auswringen???)"
                            2023-08-03 12:54:55.687 # Robi -> Wash Phase [deviceStatus.wash_phase] = 13 -> 12	"12 = Wasserauffang unter Bürste leeren"
                            2023-08-03 12:55:00.703 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 14	"14 = Bürste in Parkposition fahren"
                            2023-08-03 12:55:05.641 # Robi -> State [deviceStatus.state] = 23 -> 6 (Rückkehr zur Station)
                            2023-08-03 12:55:05.685 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                            2023-08-03 12:55:05.687 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 0
                            2023-08-03 12:55:05.688 # Robi -> Wash Phase [deviceStatus.wash_phase] = 14 -> 0
                            2023-08-03 12:55:10.693 # Robi -> Wash Ready [deviceStatus.wash_ready] = 1 -> 0
                            2023-08-03 12:55:30.906 # Robi -> State [deviceStatus.state] = 6 -> 8 (Akku laden)
                            2023-08-03 12:55:30.910 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                            2023-08-03 12:55:30.915 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                            2023-08-03 12:55:30.916 # Robi -> Back Type [deviceStatus.back_type] = 0 -> -1
                            

                            Dazu meine Erkenntnisse.

                            deviceStatus.wash_phase
                            10 = Befüllen Roboter Wassertank
                            11 = Mopp Waschen mit Wasser und Reinigungsbürste
                            12 = Wasserauffang der Station unter Reinigungsbürste leeren
                            13 = Mopp Waschen nur Reinigungsbürste (Auswringen)
                            14 = Reinigungsbürste in Parkposition fahren

                            Das Befüllen des Roboter-Wassertanks wird immer bei Mopp-Waschen ausgeführt wenn der Tank nicht voll ist.

                            Dazu gleich noch für Später den Schmutzwasserbehälter vor jedem Start leer gemacht und vor dem Mopp-Waschen Befehl den Moppwaschmodus umgestellt um den Wasserverbrauch beim Mopp-Waschen zu ermitteln.

                            • Moppwäsche-Modus = Wassersparend -> Schmutzwasserbehälter = ca.130ml
                            • Moppwäsche-Modus = Mittel -> Schmutzwasserbehälter = ca.200ml
                            • Moppwäsche-Modus = Intensiv -> Schmutzwasserbehälter = ca.290ml

                            Für den Moppwaschmodus den man in der App wählen kann scheint es noch kein equivalenten Datenpunkt im Adapter zu geben.

                            Robi steht in Station zum laden, dann Staubbehälter entleeren gestartet.

                            2023-08-03 19:00:48.710 # Robi -> State [deviceStatus.state] = 8 -> 22 (Staubbehälter entleeren)
                            2023-08-03 19:00:48.713 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                            2023-08-03 19:01:18.709 # Robi -> State [deviceStatus.state] = 22 -> 8 (Akku laden)
                            2023-08-03 19:01:18.712 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                            

                            Der Datenpunkt deviceStatus.back_type scheint zu definieren wie rum der Roboter an die Station heran gefahren ist.

                            deviceStatus.back_type
                            -1 = NULL (wird immer auf diesen Wert zurück gesetzt.)
                            0 = Vorwärts -> Laden und Staubbehälter entleeren.
                            1 = Rückwärts -> Mopp Waschen

                            Zur Bedeutung von deviceStatus.in_fresh_state hab ich eine Idee die ich aber erst mit Test bestätigen muss.

                            DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                            jahnbesJ 2 Antworten Letzte Antwort
                            1
                            • A andibr

                              @copystring

                              Ich gehe davon aus, dass euch für MQTT die Tools schon bekannt sind:
                              Linux (Debian) == mqttx
                              Windows == mqtt.fx

                              Damit könnt ih den gesamten Trafic vom MQTT-Broker Abonieren, und dann mal schauen und immer weiter eingrenzen.

                              Aber vermutlich schreibe ich da Dinge die ihr schon längst kennt. Etwas änliches gibt es glaub auch für Modbus TCP/RTU, aber mir fällt der Namen nicht gerade ein.
                              Beim Linux gibt es noch irgendwie eine Möglichkeit, den Trafic über einen Port mit zuschneiden und in ein File zu paken. Aber auch da gibt es garantiert Personen die das besser wissen und können.

                              Andi

                              copystringC Offline
                              copystringC Offline
                              copystring
                              schrieb am zuletzt editiert von
                              #77

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

                              @copystring

                              Ich gehe davon aus, dass euch für MQTT die Tools schon bekannt sind:
                              Linux (Debian) == mqttx
                              Windows == mqtt.fx

                              Damit könnt ih den gesamten Trafic vom MQTT-Broker Abonieren, und dann mal schauen und immer weiter eingrenzen.

                              Aber vermutlich schreibe ich da Dinge die ihr schon längst kennt. Etwas änliches gibt es glaub auch für Modbus TCP/RTU, aber mir fällt der Namen nicht gerade ein.
                              Beim Linux gibt es noch irgendwie eine Möglichkeit, den Trafic über einen Port mit zuschneiden und in ein File zu paken. Aber auch da gibt es garantiert Personen die das besser wissen und können.

                              Andi

                              Nein. Das geht nicht mehr, seitdem ich da herumgespielt habe. Roborock hat das mitbekommen. Man kann nur noch über mitimproxy den Traffic mitschneiden. Vorher konnte man ganz einfach den Topic für das Senden der Befehle abonnieren. Das wurde gesperrt. Daher muss mitgeschnitten werden.
                              Der gesamte Datenverkehr ist mit SSL und speziellen Keys doppelt verschlüsselt und kodiert. Der Adapter dekodiert und entschlüsselt alles, wenn die Nachrichten mit mitmproxy und meinen python addon an den Adapter geschickt wird.

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

                              A 1 Antwort Letzte Antwort
                              0
                              • copystringC copystring

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

                                @copystring

                                Ich gehe davon aus, dass euch für MQTT die Tools schon bekannt sind:
                                Linux (Debian) == mqttx
                                Windows == mqtt.fx

                                Damit könnt ih den gesamten Trafic vom MQTT-Broker Abonieren, und dann mal schauen und immer weiter eingrenzen.

                                Aber vermutlich schreibe ich da Dinge die ihr schon längst kennt. Etwas änliches gibt es glaub auch für Modbus TCP/RTU, aber mir fällt der Namen nicht gerade ein.
                                Beim Linux gibt es noch irgendwie eine Möglichkeit, den Trafic über einen Port mit zuschneiden und in ein File zu paken. Aber auch da gibt es garantiert Personen die das besser wissen und können.

                                Andi

                                Nein. Das geht nicht mehr, seitdem ich da herumgespielt habe. Roborock hat das mitbekommen. Man kann nur noch über mitimproxy den Traffic mitschneiden. Vorher konnte man ganz einfach den Topic für das Senden der Befehle abonnieren. Das wurde gesperrt. Daher muss mitgeschnitten werden.
                                Der gesamte Datenverkehr ist mit SSL und speziellen Keys doppelt verschlüsselt und kodiert. Der Adapter dekodiert und entschlüsselt alles, wenn die Nachrichten mit mitmproxy und meinen python addon an den Adapter geschickt wird.

                                A Offline
                                A Offline
                                andibr
                                schrieb am zuletzt editiert von
                                #78

                                @copystring
                                Ok, dass ist aber doof. Wieder eine Firma die nicht will das man sich vor der chinesischen Überwachung verstecken kann.
                                Da könnte es ja auch sein, dass mit eine Firmeware Update alle eure super Arbeit zu nichte gemacht wird?

                                Andi

                                copystringC 1 Antwort Letzte Antwort
                                0
                                • A andibr

                                  @copystring
                                  Ok, dass ist aber doof. Wieder eine Firma die nicht will das man sich vor der chinesischen Überwachung verstecken kann.
                                  Da könnte es ja auch sein, dass mit eine Firmeware Update alle eure super Arbeit zu nichte gemacht wird?

                                  Andi

                                  copystringC Offline
                                  copystringC Offline
                                  copystring
                                  schrieb am zuletzt editiert von
                                  #79

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

                                  @copystring
                                  Ok, dass ist aber doof. Wieder eine Firma die nicht will das man sich vor der chinesischen Überwachung verstecken kann.
                                  Da könnte es ja auch sein, dass mit eine Firmeware Update alle eure super Arbeit zu nichte gemacht wird?

                                  Andi

                                  Unwahrscheinlich. Mitschneiden von Traffic kann man nicht verhindern. Änderungen könnte man schnell einbauen, indem man einfach den Traffic neu mitschneidet.

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • S SpacerX

                                    Ich möchte meine heutige Ausbeute teilen.

                                    Es geht um Funktionen Rund um die Station vom S7 MaxV Ultra.

                                    Meine Voraussetzungen:

                                    • Kleines Blockly zum loggen der Datenpunkte vom Sauger geschrieben.
                                    • Adapter vorrübergehend die Aktualisierung 5s gestellt.
                                    • Mit Taschenlampe vor die Station gehockt und aufgeschrieben was passiert.
                                    • Robi steht in der Station zum laden, dann Mopp Waschen gestartet.

                                    Meine Aufzeichnungen dazu:

                                    Log Mopp Waschen mit Roboter Wassertank leer.

                                    2023-08-03 18:29:08.482 # Robi -> State [deviceStatus.state] = 8 -> 26 (Fahre Mopp waschen)
                                    2023-08-03 18:29:08.487 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                                    2023-08-03 18:29:08.488 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                                    2023-08-03 18:29:08.489 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 1
                                    2023-08-03 18:29:48.716 # Robi -> State [deviceStatus.state] = 26 -> 23 (Mopp waschen)
                                    2023-08-03 18:29:48.719 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                                    2023-08-03 18:29:48.721 # Robi -> Back Type [deviceStatus.back_type] = 1 -> -1
                                    2023-08-03 18:29:48.721 # Robi -> Wash Phase [deviceStatus.wash_phase] = 0 -> 11
                                    2023-08-03 18:29:48.722 # Robi -> Wash Ready [deviceStatus.wash_ready] = 0 -> 1
                                    2023-08-03 18:29:49.365 # Robi -> Water Filter [consumables.strainer_work_times] = 4 -> 5
                                    2023-08-03 18:29:49.366 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 4 -> 5
                                    2023-08-03 18:31:03.661 # Robi -> Wash Phase [deviceStatus.wash_phase] = 11 -> 12
                                    2023-08-03 18:31:08.651 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 10
                                    2023-08-03 18:31:38.662 # Robi -> Wash Phase [deviceStatus.wash_phase] = 10 -> 13
                                    2023-08-03 18:32:53.675 # Robi -> Wash Phase [deviceStatus.wash_phase] = 13 -> 12
                                    2023-08-03 18:32:58.637 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 14
                                    2023-08-03 18:33:08.634 # Robi -> State [deviceStatus.state] = 23 -> 6 (Rückkehr zur Station)
                                    2023-08-03 18:33:08.677 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                                    2023-08-03 18:33:08.679 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 0
                                    2023-08-03 18:33:08.680 # Robi -> Wash Phase [deviceStatus.wash_phase] = 14 -> 0
                                    2023-08-03 18:33:13.670 # Robi -> Wash Ready [deviceStatus.wash_ready] = 1 -> 0
                                    2023-08-03 18:33:31.225 # Robi -> Times Dust Collected [cleaningInfo.dust_collection_count] = 77 -> 78 "Wahrscheinlicht Staubbehälterantleerungen"
                                    2023-08-03 18:33:33.671 # Robi -> State [deviceStatus.state] = 6 -> 8 (Akku laden)
                                    2023-08-03 18:33:33.674 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                                    2023-08-03 18:33:33.674 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                                    2023-08-03 18:33:33.675 # Robi -> Back Type [deviceStatus.back_type] = 0 -> -1
                                    

                                    Mopp Waschen mit Roboter Wassertank 100% voll.

                                    2023-08-03 18:40:38.661 # Robi -> State [deviceStatus.state] = 8 -> 26 (Fahre Mopp waschen)
                                    2023-08-03 18:40:38.706 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                                    2023-08-03 18:40:38.706 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                                    2023-08-03 18:40:38.708 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 1
                                    2023-08-03 18:41:18.782 # Robi -> State [deviceStatus.state] = 26 -> 23 (Mopp waschen)
                                    2023-08-03 18:41:18.787 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                                    2023-08-03 18:41:18.793 # Robi -> Back Type [deviceStatus.back_type] = 1 -> -1
                                    2023-08-03 18:41:18.805 # Robi -> Wash Phase [deviceStatus.wash_phase] = 0 -> 11
                                    2023-08-03 18:41:18.806 # Robi -> Wash Ready [deviceStatus.wash_ready] = 0 -> 1
                                    2023-08-03 18:41:19.536 # Robi -> Water Filter [consumables.strainer_work_times] = 5 -> 6
                                    2023-08-03 18:41:19.537 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 5 -> 6
                                    2023-08-03 18:42:58.756 # Robi -> Wash Phase [deviceStatus.wash_phase] = 11 -> 12
                                    2023-08-03 18:43:03.720 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 13
                                    2023-08-03 18:44:38.786 # Robi -> Wash Phase [deviceStatus.wash_phase] = 13 -> 12
                                    2023-08-03 18:44:43.771 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 14
                                    2023-08-03 18:44:48.739 # Robi -> State [deviceStatus.state] = 23 -> 6 (Rückkehr zur Station)
                                    2023-08-03 18:44:48.741 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                                    2023-08-03 18:44:48.781 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 0
                                    2023-08-03 18:44:48.782 # Robi -> Wash Phase [deviceStatus.wash_phase] = 14 -> 0
                                    2023-08-03 18:44:58.779 # Robi -> Wash Ready [deviceStatus.wash_ready] = 1 -> 0
                                    2023-08-03 18:45:18.992 # Robi -> State [deviceStatus.state] = 6 -> 8 (Akku laden)
                                    2023-08-03 18:45:18.994 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                                    2023-08-03 18:45:18.995 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                                    2023-08-03 18:45:18.996 # Robi -> Back Type [deviceStatus.back_type] = 0 -> -1
                                    

                                    Mopp Waschen mit Roboter Wassertank 50% voll.

                                    2023-08-03 12:51:35.610 # Robi -> State [deviceStatus.state] = 8 -> 26 (Fahre Mopp waschen)
                                    2023-08-03 12:51:35.653 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                                    2023-08-03 12:51:35.654 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                                    2023-08-03 12:51:35.655 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 1
                                    2023-08-03 12:52:05.895 # Robi -> State [deviceStatus.state] = 26 -> 23 (Mopp waschen)
                                    2023-08-03 12:52:05.899 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                                    2023-08-03 12:52:05.901 # Robi -> Back Type [deviceStatus.back_type] = 1 -> -1
                                    2023-08-03 12:52:05.902 # Robi -> Wash Ready [deviceStatus.wash_ready] = 0 -> 1
                                    2023-08-03 12:52:06.393 # Robi -> Water Filter [consumables.strainer_work_times] = 3 -> 4
                                    2023-08-03 12:52:06.394 # Robi -> High-speed maintenance brush [consumables.cleaning_brush_work_times] = 3 -> 4
                                    2023-08-03 12:52:10.868 # Robi -> Wash Phase [deviceStatus.wash_phase] = 0 -> 11	"11 = Mopp Waschen mit Bürste und Wasser"
                                    2023-08-03 12:53:25.678 # Robi -> Wash Phase [deviceStatus.wash_phase] = 11 -> 12	"12 = Wasserauffang unter Bürste leeren"
                                    2023-08-03 12:53:30.667 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 10	"10 = scheint das Befüllen vom Wassertank zu sein"
                                    2023-08-03 12:53:40.630 # Robi -> Wash Phase [deviceStatus.wash_phase] = 10 -> 13	"13 = Mopp abbürsten ohne Wasser (Auswringen???)"
                                    2023-08-03 12:54:55.687 # Robi -> Wash Phase [deviceStatus.wash_phase] = 13 -> 12	"12 = Wasserauffang unter Bürste leeren"
                                    2023-08-03 12:55:00.703 # Robi -> Wash Phase [deviceStatus.wash_phase] = 12 -> 14	"14 = Bürste in Parkposition fahren"
                                    2023-08-03 12:55:05.641 # Robi -> State [deviceStatus.state] = 23 -> 6 (Rückkehr zur Station)
                                    2023-08-03 12:55:05.685 # Robi -> Is returning [deviceStatus.in_returning] = 0 -> 1
                                    2023-08-03 12:55:05.687 # Robi -> Back Type [deviceStatus.back_type] = -1 -> 0
                                    2023-08-03 12:55:05.688 # Robi -> Wash Phase [deviceStatus.wash_phase] = 14 -> 0
                                    2023-08-03 12:55:10.693 # Robi -> Wash Ready [deviceStatus.wash_ready] = 1 -> 0
                                    2023-08-03 12:55:30.906 # Robi -> State [deviceStatus.state] = 6 -> 8 (Akku laden)
                                    2023-08-03 12:55:30.910 # Robi -> Is returning [deviceStatus.in_returning] = 1 -> 0
                                    2023-08-03 12:55:30.915 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                                    2023-08-03 12:55:30.916 # Robi -> Back Type [deviceStatus.back_type] = 0 -> -1
                                    

                                    Dazu meine Erkenntnisse.

                                    deviceStatus.wash_phase
                                    10 = Befüllen Roboter Wassertank
                                    11 = Mopp Waschen mit Wasser und Reinigungsbürste
                                    12 = Wasserauffang der Station unter Reinigungsbürste leeren
                                    13 = Mopp Waschen nur Reinigungsbürste (Auswringen)
                                    14 = Reinigungsbürste in Parkposition fahren

                                    Das Befüllen des Roboter-Wassertanks wird immer bei Mopp-Waschen ausgeführt wenn der Tank nicht voll ist.

                                    Dazu gleich noch für Später den Schmutzwasserbehälter vor jedem Start leer gemacht und vor dem Mopp-Waschen Befehl den Moppwaschmodus umgestellt um den Wasserverbrauch beim Mopp-Waschen zu ermitteln.

                                    • Moppwäsche-Modus = Wassersparend -> Schmutzwasserbehälter = ca.130ml
                                    • Moppwäsche-Modus = Mittel -> Schmutzwasserbehälter = ca.200ml
                                    • Moppwäsche-Modus = Intensiv -> Schmutzwasserbehälter = ca.290ml

                                    Für den Moppwaschmodus den man in der App wählen kann scheint es noch kein equivalenten Datenpunkt im Adapter zu geben.

                                    Robi steht in Station zum laden, dann Staubbehälter entleeren gestartet.

                                    2023-08-03 19:00:48.710 # Robi -> State [deviceStatus.state] = 8 -> 22 (Staubbehälter entleeren)
                                    2023-08-03 19:00:48.713 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 1 -> 0
                                    2023-08-03 19:01:18.709 # Robi -> State [deviceStatus.state] = 22 -> 8 (Akku laden)
                                    2023-08-03 19:01:18.712 # Robi -> In Fresh State [deviceStatus.in_fresh_state] = 0 -> 1
                                    

                                    Der Datenpunkt deviceStatus.back_type scheint zu definieren wie rum der Roboter an die Station heran gefahren ist.

                                    deviceStatus.back_type
                                    -1 = NULL (wird immer auf diesen Wert zurück gesetzt.)
                                    0 = Vorwärts -> Laden und Staubbehälter entleeren.
                                    1 = Rückwärts -> Mopp Waschen

                                    Zur Bedeutung von deviceStatus.in_fresh_state hab ich eine Idee die ich aber erst mit Test bestätigen muss.

                                    jahnbesJ Offline
                                    jahnbesJ Offline
                                    jahnbes
                                    schrieb am zuletzt editiert von
                                    #80

                                    @spacerx
                                    Danke! Ich werde mich am Wochenende darum kümmern und das Wiki ergänzen.

                                    Kannst Du mir / uns das "Kleines Blockly zum loggen der Datenpunkte vom Sauger geschrieben." zukommen lassen?

                                    Gruß Bert.

                                    S 2 Antworten Letzte Antwort
                                    0
                                    • jahnbesJ jahnbes

                                      @spacerx
                                      Danke! Ich werde mich am Wochenende darum kümmern und das Wiki ergänzen.

                                      Kannst Du mir / uns das "Kleines Blockly zum loggen der Datenpunkte vom Sauger geschrieben." zukommen lassen?

                                      Gruß Bert.

                                      S Offline
                                      S Offline
                                      SpacerX
                                      schrieb am zuletzt editiert von SpacerX
                                      #81

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

                                      Kannst Du mir / uns das "Kleines Blockly zum loggen der Datenpunkte vom Sauger geschrieben." zukommen lassen?

                                      Kann ich.

                                      Ich habe noch etwas dran herum gestrickt damit es einfach so läuft ohne Anpassungen.

                                      Zu beachten ist das nur vom Adapter bereitgestellte Datenpunkte erfasst werden und immer die Verzögerung eintritt die beim Aktualisierungsintervall im Adapter angegeben ist.

                                      SchnipSchnap.PNG

                                      <xml xmlns="https://developers.google.com/blockly/xml">
                                        <variables>
                                          <variable id="Dp(TEdvXq|dD(9XLkW!D">text</variable>
                                          <variable id=":UNV]Z$?%Qg963*a]Bn@">id</variable>
                                          <variable id="y]eb]G~;C._1Kg*RZ*)b">robiDevice</variable>
                                          <variable id="+r1nueMYBS=AZLN+pK0^">datenpunkt</variable>
                                          <variable id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</variable>
                                        </variables>
                                        <block type="procedures_defcustomnoreturn" id="qIp]hmVn|SQ~VcN{33kg" x="38" y="-213">
                                          <mutation statements="false">
                                            <arg name="text" varid="Dp(TEdvXq|dD(9XLkW!D"></arg>
                                          </mutation>
                                          <field name="NAME">RobiLog</field>
                                          <field name="SCRIPT">Y29uc29sZS5sb2coKCcjIFJvYmkgLT4gJyArIFN0cmluZyh0ZXh0KSkpOw==</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="procedures_defcustomreturn" id="CP?Cyo9e2)ey}0dh;^ke" x="37" y="-162">
                                          <mutation statements="false"></mutation>
                                          <field name="NAME">GetRobiStateText</field>
                                          <field name="SCRIPT">dmFyIHN0YXRlSUQgPSAicm9ib3JvY2suMC5EZXZpY2VzLiIgKyByb2JpRGV2aWNlICsgIi5kZXZpY2VTdGF0dXMuc3RhdGUiDQpyZXR1cm4gZ2V0T2JqZWN0KHN0YXRlSUQpLmNvbW1vbi5zdGF0ZXNbZ2V0U3RhdGUoc3RhdGVJRCkudmFsXQ==</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="procedures_defcustomreturn" id="oX1{x8TY@`NKcBbs^kq`" x="38" y="-113">
                                          <mutation statements="false">
                                            <arg name="id" varid=":UNV]Z$?%Qg963*a]Bn@"></arg>
                                          </mutation>
                                          <field name="NAME">GetName</field>
                                          <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="procedures_defcustomreturn" id="O-zZjZP:-@/s|8_l-`wX" x="38" y="-62">
                                          <mutation statements="false"></mutation>
                                          <field name="NAME">GetDevice</field>
                                          <field name="SCRIPT">dmFyIGRldmljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseSgkKCJyb2Jvcm9jay4wLkRldmljZXMuKiIpKVswXS5zcGxpdCgnLicpWzNdOw0KY29uc29sZS5sb2coKFsnICMgUm9iaSAtPiBTdGFydCBsb2dnaW5nIFJvYm9yb2NrIEluc3RhbnogMCAtIERldmljZTogIicsZGV2aWNlLCciJ10uam9pbignJykpKTsNCnJldHVybiBkZXZpY2U7</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="procedures_defcustomreturn" id="b#cVo{O:Xr%.:G~wk%BH" x="38" y="-12">
                                          <mutation statements="false">
                                            <arg name="id" varid=":UNV]Z$?%Qg963*a]Bn@"></arg>
                                          </mutation>
                                          <field name="NAME">GetDatenpunkt</field>
                                          <field name="SCRIPT">dG1wTGlzdGUgPSBpZC5zcGxpdCgnLicpOw0KdG1wTGlzdGUgPSB0bXBMaXN0ZS5zbGljZSh0bXBMaXN0ZS5sZW5ndGggLSAyLCB0bXBMaXN0ZS5sZW5ndGgpOw0KcmV0dXJuIHRtcExpc3RlLmpvaW4oJy4nKTs=</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="procedures_defcustomreturn" id="N%zy{o^r_)pj@)iW{[?^" x="38" y="38">
                                          <mutation statements="false">
                                            <arg name="id" varid=":UNV]Z$?%Qg963*a]Bn@"></arg>
                                          </mutation>
                                          <field name="NAME">GetSektion</field>
                                          <field name="SCRIPT">dG1wTGlzdGUgPSBpZC5zcGxpdCgnLicpOw0KcmV0dXJuIHRtcExpc3RlLnNsaWNlKC0yKVswXQ==</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="comment" id="?!:f=F9o%1h~eQ+b=~1H" x="37" y="88">
                                          <field name="COMMENT">Roborock DP`s loggen</field>
                                          <next>
                                            <block type="variables_set" id="*IkFS7Tt#d$=Zm3kGZ@u">
                                              <field name="VAR" id="y]eb]G~;C._1Kg*RZ*)b">robiDevice</field>
                                              <value name="VALUE">
                                                <block type="procedures_callcustomreturn" id="K-7wFf;`p!Dsqw69}$fO">
                                                  <mutation name="GetDevice"></mutation>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="on_ext" id="}Cjj:guHosL3tZ9AS7!F">
                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                                  <field name="CONDITION">ne</field>
                                                  <field name="ACK_CONDITION"></field>
                                                  <value name="OID0">
                                                    <shadow type="field_oid" id="_1~8-Qi)XQQfbpzHscaH">
                                                      <field name="oid">default</field>
                                                    </shadow>
                                                    <block type="selector" id="%nM33D%sk`5v*|1MAb4k">
                                                      <field name="TEXT">roborock.0.Devices." + robiDevice + ".*</field>
                                                    </block>
                                                  </value>
                                                  <statement name="STATEMENT">
                                                    <block type="variables_set" id="Y5uR438l0`7hHKOW4aqP">
                                                      <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                      <value name="VALUE">
                                                        <block type="procedures_callcustomreturn" id="3CX:;{,RAM%~o.w6B-gn" inline="true">
                                                          <mutation name="GetDatenpunkt">
                                                            <arg name="id"></arg>
                                                          </mutation>
                                                          <value name="ARG0">
                                                            <block type="on_source" id="d-*Fm*J|4{(1#,-UGfb,">
                                                              <field name="ATTR">id</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <next>
                                                        <block type="controls_if" id="s9!Kr3|Fy|vPX`(aBW|^">
                                                          <mutation elseif="2" else="1"></mutation>
                                                          <value name="IF0">
                                                            <block type="logic_compare" id="~wZ4EwlpPJ]w[VS:1{qA">
                                                              <field name="OP">EQ</field>
                                                              <value name="A">
                                                                <block type="variables_get" id="+dbMgijJ12zIg1zv*?bh">
                                                                  <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                </block>
                                                              </value>
                                                              <value name="B">
                                                                <block type="text" id="8FXGeXyr?zpfFei$1618">
                                                                  <field name="TEXT">deviceStatus.msg_seq</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <statement name="DO0">
                                                            <block type="comment" id="2b{#DDDt4KmkFVzUfvPT">
                                                              <field name="COMMENT">ausschließen</field>
                                                            </block>
                                                          </statement>
                                                          <value name="IF1">
                                                            <block type="logic_compare" id="0!^^HpJ.J08-{eY*ODa3">
                                                              <field name="OP">EQ</field>
                                                              <value name="A">
                                                                <block type="variables_get" id=")|yoBHjnvqqN@kOxF3le">
                                                                  <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                </block>
                                                              </value>
                                                              <value name="B">
                                                                <block type="text" id="Z;6E8hFG!WL:oZSGB0Tm">
                                                                  <field name="TEXT">networkInfo.rssi</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <statement name="DO1">
                                                            <block type="comment" id="qnCQIoA)9[ijQMLQF6no">
                                                              <field name="COMMENT">ausschließen</field>
                                                            </block>
                                                          </statement>
                                                          <value name="IF2">
                                                            <block type="logic_compare" id="R!z=Y/lV^q|3{z#*MX?n">
                                                              <field name="OP">EQ</field>
                                                              <value name="A">
                                                                <block type="procedures_callcustomreturn" id="lBk9kQU1UfL35p1}`X%/" inline="true">
                                                                  <mutation name="GetSektion">
                                                                    <arg name="id"></arg>
                                                                  </mutation>
                                                                  <value name="ARG0">
                                                                    <block type="on_source" id="inf$mhhpto.(Z#qor)gM">
                                                                      <field name="ATTR">id</field>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                              <value name="B">
                                                                <block type="text" id="P[^^zTEfaL)=-BV:atZ[">
                                                                  <field name="TEXT">map</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <statement name="DO2">
                                                            <block type="comment" id="IrLaMx.fY]vHKd=GC|]m">
                                                              <field name="COMMENT">ausschließen</field>
                                                            </block>
                                                          </statement>
                                                          <statement name="ELSE">
                                                            <block type="variables_set" id="5wr|$lnk==:5JTX)rDfk">
                                                              <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                              <value name="VALUE">
                                                                <block type="text" id="Z(s%7um*A*H;~t9eiq#c">
                                                                  <field name="TEXT"></field>
                                                                </block>
                                                              </value>
                                                              <next>
                                                                <block type="controls_if" id="g}5r)k5v#*y|]xH[lpE$">
                                                                  <value name="IF0">
                                                                    <block type="logic_compare" id="]:,Uu/R%/+22NQ-m]x:_">
                                                                      <field name="OP">EQ</field>
                                                                      <value name="A">
                                                                        <block type="variables_get" id="#=HegdOuoxuWaVjhrB8u">
                                                                          <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="B">
                                                                        <block type="text" id="_{#]pq]9a+2R;eM!wt5:">
                                                                          <field name="TEXT">deviceStatus.state</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                  <statement name="DO0">
                                                                    <block type="variables_set" id="fD)M(aoA*^`D@`fLBYW3" disabled="true">
                                                                      <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                      <value name="VALUE">
                                                                        <block type="text_join" id="bh:KAYP%BS8VW6=XC]8C" inline="true">
                                                                          <mutation items="3"></mutation>
                                                                          <value name="ADD0">
                                                                            <block type="text" id="hb[3Y**=`bfao{[D^e2c">
                                                                              <field name="TEXT"> (</field>
                                                                            </block>
                                                                          </value>
                                                                          <value name="ADD1">
                                                                            <block type="field_oid" id="(eK!JWI[O-3X@y_%jST/">
                                                                              <field name="oid">alias.0.Kueche.Roborock.Status.Zustand</field>
                                                                            </block>
                                                                          </value>
                                                                          <value name="ADD2">
                                                                            <block type="text" id="P:j.NT!lnmMvX`/KvVlk">
                                                                              <field name="TEXT">)</field>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                      <next>
                                                                        <block type="variables_set" id="|tzt{0w;V0obfXU}$pk-">
                                                                          <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                          <value name="VALUE">
                                                                            <block type="text_join" id=":PATIg.X0t##Du:,wU#`" inline="true">
                                                                              <mutation items="3"></mutation>
                                                                              <value name="ADD0">
                                                                                <block type="text" id="?X:DfH.Zm-_r$K5O][fp">
                                                                                  <field name="TEXT"> (</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD1">
                                                                                <block type="procedures_callcustomreturn" id="cDL1Mb$AAM$)z,[yj9^V" inline="true">
                                                                                  <mutation name="GetRobiStateText"></mutation>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD2">
                                                                                <block type="text" id=",3_,#[I$6[:,f:M|cT_k">
                                                                                  <field name="TEXT">)</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </next>
                                                                    </block>
                                                                  </statement>
                                                                  <next>
                                                                    <block type="procedures_callcustomnoreturn" id="0]vAqu2g7aQrTv|hf%W+" inline="true">
                                                                      <mutation name="RobiLog">
                                                                        <arg name="text"></arg>
                                                                      </mutation>
                                                                      <value name="ARG0">
                                                                        <block type="text_join" id="FkCwEa@T*cREvAt;iV*#">
                                                                          <mutation items="4"></mutation>
                                                                          <value name="ADD0">
                                                                            <block type="procedures_callcustomreturn" id="ba5]2zs,;pKK9P/sfH-?" inline="true">
                                                                              <mutation name="GetName">
                                                                                <arg name="id"></arg>
                                                                              </mutation>
                                                                              <value name="ARG0">
                                                                                <block type="on_source" id="L$IUp=sJxALkb[!h=,l7">
                                                                                  <field name="ATTR">id</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <value name="ADD1">
                                                                            <block type="text_join" id="S].PLij5PRyzH^RY+b48" inline="true">
                                                                              <mutation items="3"></mutation>
                                                                              <value name="ADD0">
                                                                                <block type="text" id="a),`F*[,hxB}KrSOk3r`">
                                                                                  <field name="TEXT"> [</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD1">
                                                                                <block type="variables_get" id=".{KppZkN-dBxc!zEjCSZ">
                                                                                  <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD2">
                                                                                <block type="text" id="M*9=yoSfjY[z)(qCZ|+/">
                                                                                  <field name="TEXT">] =  </field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <value name="ADD2">
                                                                            <block type="text_join" id="Q%QO01tRqYTTg)HJLpuW" inline="true">
                                                                              <mutation items="3"></mutation>
                                                                              <value name="ADD0">
                                                                                <block type="on_source" id="8X.KdeqQu]=!sw.iN~fA">
                                                                                  <field name="ATTR">oldState.val</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD1">
                                                                                <block type="text" id="T=TB(;Oo=zS.sJf#}c3$">
                                                                                  <field name="TEXT"> -&gt; </field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD2">
                                                                                <block type="on_source" id="H=Uvd4SX;)7L3|Y_(F!!">
                                                                                  <field name="ATTR">state.val</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <value name="ADD3">
                                                                            <block type="variables_get" id="i+fzc8kY=V}R`Lv%V/UW">
                                                                              <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </next>
                                                                </block>
                                                              </next>
                                                            </block>
                                                          </statement>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </statement>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </xml>
                                      


                                      Mit den 3 "falls mache" werden drei Datenpunkte ausgeschlossen die das log sehr unübersichtlich machen. Wer diese mit haben will, einfach den Block hinter falls ausblenden.
                                      Wer noch weitere Ausschließen will, dann ein "falls mache" hinzufügen.

                                      Dann viel Spaß beim Loggen der Adapterdatenpunkte.

                                      MfG Ralf

                                      DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                                      jahnbesJ M 2 Antworten Letzte Antwort
                                      0
                                      • S SpacerX

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

                                        Kannst Du mir / uns das "Kleines Blockly zum loggen der Datenpunkte vom Sauger geschrieben." zukommen lassen?

                                        Kann ich.

                                        Ich habe noch etwas dran herum gestrickt damit es einfach so läuft ohne Anpassungen.

                                        Zu beachten ist das nur vom Adapter bereitgestellte Datenpunkte erfasst werden und immer die Verzögerung eintritt die beim Aktualisierungsintervall im Adapter angegeben ist.

                                        SchnipSchnap.PNG

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                          <variables>
                                            <variable id="Dp(TEdvXq|dD(9XLkW!D">text</variable>
                                            <variable id=":UNV]Z$?%Qg963*a]Bn@">id</variable>
                                            <variable id="y]eb]G~;C._1Kg*RZ*)b">robiDevice</variable>
                                            <variable id="+r1nueMYBS=AZLN+pK0^">datenpunkt</variable>
                                            <variable id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</variable>
                                          </variables>
                                          <block type="procedures_defcustomnoreturn" id="qIp]hmVn|SQ~VcN{33kg" x="38" y="-213">
                                            <mutation statements="false">
                                              <arg name="text" varid="Dp(TEdvXq|dD(9XLkW!D"></arg>
                                            </mutation>
                                            <field name="NAME">RobiLog</field>
                                            <field name="SCRIPT">Y29uc29sZS5sb2coKCcjIFJvYmkgLT4gJyArIFN0cmluZyh0ZXh0KSkpOw==</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="procedures_defcustomreturn" id="CP?Cyo9e2)ey}0dh;^ke" x="37" y="-162">
                                            <mutation statements="false"></mutation>
                                            <field name="NAME">GetRobiStateText</field>
                                            <field name="SCRIPT">dmFyIHN0YXRlSUQgPSAicm9ib3JvY2suMC5EZXZpY2VzLiIgKyByb2JpRGV2aWNlICsgIi5kZXZpY2VTdGF0dXMuc3RhdGUiDQpyZXR1cm4gZ2V0T2JqZWN0KHN0YXRlSUQpLmNvbW1vbi5zdGF0ZXNbZ2V0U3RhdGUoc3RhdGVJRCkudmFsXQ==</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="procedures_defcustomreturn" id="oX1{x8TY@`NKcBbs^kq`" x="38" y="-113">
                                            <mutation statements="false">
                                              <arg name="id" varid=":UNV]Z$?%Qg963*a]Bn@"></arg>
                                            </mutation>
                                            <field name="NAME">GetName</field>
                                            <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="procedures_defcustomreturn" id="O-zZjZP:-@/s|8_l-`wX" x="38" y="-62">
                                            <mutation statements="false"></mutation>
                                            <field name="NAME">GetDevice</field>
                                            <field name="SCRIPT">dmFyIGRldmljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseSgkKCJyb2Jvcm9jay4wLkRldmljZXMuKiIpKVswXS5zcGxpdCgnLicpWzNdOw0KY29uc29sZS5sb2coKFsnICMgUm9iaSAtPiBTdGFydCBsb2dnaW5nIFJvYm9yb2NrIEluc3RhbnogMCAtIERldmljZTogIicsZGV2aWNlLCciJ10uam9pbignJykpKTsNCnJldHVybiBkZXZpY2U7</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="procedures_defcustomreturn" id="b#cVo{O:Xr%.:G~wk%BH" x="38" y="-12">
                                            <mutation statements="false">
                                              <arg name="id" varid=":UNV]Z$?%Qg963*a]Bn@"></arg>
                                            </mutation>
                                            <field name="NAME">GetDatenpunkt</field>
                                            <field name="SCRIPT">dG1wTGlzdGUgPSBpZC5zcGxpdCgnLicpOw0KdG1wTGlzdGUgPSB0bXBMaXN0ZS5zbGljZSh0bXBMaXN0ZS5sZW5ndGggLSAyLCB0bXBMaXN0ZS5sZW5ndGgpOw0KcmV0dXJuIHRtcExpc3RlLmpvaW4oJy4nKTs=</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="procedures_defcustomreturn" id="N%zy{o^r_)pj@)iW{[?^" x="38" y="38">
                                            <mutation statements="false">
                                              <arg name="id" varid=":UNV]Z$?%Qg963*a]Bn@"></arg>
                                            </mutation>
                                            <field name="NAME">GetSektion</field>
                                            <field name="SCRIPT">dG1wTGlzdGUgPSBpZC5zcGxpdCgnLicpOw0KcmV0dXJuIHRtcExpc3RlLnNsaWNlKC0yKVswXQ==</field>
                                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                          </block>
                                          <block type="comment" id="?!:f=F9o%1h~eQ+b=~1H" x="37" y="88">
                                            <field name="COMMENT">Roborock DP`s loggen</field>
                                            <next>
                                              <block type="variables_set" id="*IkFS7Tt#d$=Zm3kGZ@u">
                                                <field name="VAR" id="y]eb]G~;C._1Kg*RZ*)b">robiDevice</field>
                                                <value name="VALUE">
                                                  <block type="procedures_callcustomreturn" id="K-7wFf;`p!Dsqw69}$fO">
                                                    <mutation name="GetDevice"></mutation>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="on_ext" id="}Cjj:guHosL3tZ9AS7!F">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                                    <field name="CONDITION">ne</field>
                                                    <field name="ACK_CONDITION"></field>
                                                    <value name="OID0">
                                                      <shadow type="field_oid" id="_1~8-Qi)XQQfbpzHscaH">
                                                        <field name="oid">default</field>
                                                      </shadow>
                                                      <block type="selector" id="%nM33D%sk`5v*|1MAb4k">
                                                        <field name="TEXT">roborock.0.Devices." + robiDevice + ".*</field>
                                                      </block>
                                                    </value>
                                                    <statement name="STATEMENT">
                                                      <block type="variables_set" id="Y5uR438l0`7hHKOW4aqP">
                                                        <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                        <value name="VALUE">
                                                          <block type="procedures_callcustomreturn" id="3CX:;{,RAM%~o.w6B-gn" inline="true">
                                                            <mutation name="GetDatenpunkt">
                                                              <arg name="id"></arg>
                                                            </mutation>
                                                            <value name="ARG0">
                                                              <block type="on_source" id="d-*Fm*J|4{(1#,-UGfb,">
                                                                <field name="ATTR">id</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="controls_if" id="s9!Kr3|Fy|vPX`(aBW|^">
                                                            <mutation elseif="2" else="1"></mutation>
                                                            <value name="IF0">
                                                              <block type="logic_compare" id="~wZ4EwlpPJ]w[VS:1{qA">
                                                                <field name="OP">EQ</field>
                                                                <value name="A">
                                                                  <block type="variables_get" id="+dbMgijJ12zIg1zv*?bh">
                                                                    <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="text" id="8FXGeXyr?zpfFei$1618">
                                                                    <field name="TEXT">deviceStatus.msg_seq</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO0">
                                                              <block type="comment" id="2b{#DDDt4KmkFVzUfvPT">
                                                                <field name="COMMENT">ausschließen</field>
                                                              </block>
                                                            </statement>
                                                            <value name="IF1">
                                                              <block type="logic_compare" id="0!^^HpJ.J08-{eY*ODa3">
                                                                <field name="OP">EQ</field>
                                                                <value name="A">
                                                                  <block type="variables_get" id=")|yoBHjnvqqN@kOxF3le">
                                                                    <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="text" id="Z;6E8hFG!WL:oZSGB0Tm">
                                                                    <field name="TEXT">networkInfo.rssi</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO1">
                                                              <block type="comment" id="qnCQIoA)9[ijQMLQF6no">
                                                                <field name="COMMENT">ausschließen</field>
                                                              </block>
                                                            </statement>
                                                            <value name="IF2">
                                                              <block type="logic_compare" id="R!z=Y/lV^q|3{z#*MX?n">
                                                                <field name="OP">EQ</field>
                                                                <value name="A">
                                                                  <block type="procedures_callcustomreturn" id="lBk9kQU1UfL35p1}`X%/" inline="true">
                                                                    <mutation name="GetSektion">
                                                                      <arg name="id"></arg>
                                                                    </mutation>
                                                                    <value name="ARG0">
                                                                      <block type="on_source" id="inf$mhhpto.(Z#qor)gM">
                                                                        <field name="ATTR">id</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="text" id="P[^^zTEfaL)=-BV:atZ[">
                                                                    <field name="TEXT">map</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO2">
                                                              <block type="comment" id="IrLaMx.fY]vHKd=GC|]m">
                                                                <field name="COMMENT">ausschließen</field>
                                                              </block>
                                                            </statement>
                                                            <statement name="ELSE">
                                                              <block type="variables_set" id="5wr|$lnk==:5JTX)rDfk">
                                                                <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                <value name="VALUE">
                                                                  <block type="text" id="Z(s%7um*A*H;~t9eiq#c">
                                                                    <field name="TEXT"></field>
                                                                  </block>
                                                                </value>
                                                                <next>
                                                                  <block type="controls_if" id="g}5r)k5v#*y|]xH[lpE$">
                                                                    <value name="IF0">
                                                                      <block type="logic_compare" id="]:,Uu/R%/+22NQ-m]x:_">
                                                                        <field name="OP">EQ</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id="#=HegdOuoxuWaVjhrB8u">
                                                                            <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="text" id="_{#]pq]9a+2R;eM!wt5:">
                                                                            <field name="TEXT">deviceStatus.state</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                    <statement name="DO0">
                                                                      <block type="variables_set" id="fD)M(aoA*^`D@`fLBYW3" disabled="true">
                                                                        <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                        <value name="VALUE">
                                                                          <block type="text_join" id="bh:KAYP%BS8VW6=XC]8C" inline="true">
                                                                            <mutation items="3"></mutation>
                                                                            <value name="ADD0">
                                                                              <block type="text" id="hb[3Y**=`bfao{[D^e2c">
                                                                                <field name="TEXT"> (</field>
                                                                              </block>
                                                                            </value>
                                                                            <value name="ADD1">
                                                                              <block type="field_oid" id="(eK!JWI[O-3X@y_%jST/">
                                                                                <field name="oid">alias.0.Kueche.Roborock.Status.Zustand</field>
                                                                              </block>
                                                                            </value>
                                                                            <value name="ADD2">
                                                                              <block type="text" id="P:j.NT!lnmMvX`/KvVlk">
                                                                                <field name="TEXT">)</field>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </value>
                                                                        <next>
                                                                          <block type="variables_set" id="|tzt{0w;V0obfXU}$pk-">
                                                                            <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                            <value name="VALUE">
                                                                              <block type="text_join" id=":PATIg.X0t##Du:,wU#`" inline="true">
                                                                                <mutation items="3"></mutation>
                                                                                <value name="ADD0">
                                                                                  <block type="text" id="?X:DfH.Zm-_r$K5O][fp">
                                                                                    <field name="TEXT"> (</field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="ADD1">
                                                                                  <block type="procedures_callcustomreturn" id="cDL1Mb$AAM$)z,[yj9^V" inline="true">
                                                                                    <mutation name="GetRobiStateText"></mutation>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="ADD2">
                                                                                  <block type="text" id=",3_,#[I$6[:,f:M|cT_k">
                                                                                    <field name="TEXT">)</field>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </statement>
                                                                    <next>
                                                                      <block type="procedures_callcustomnoreturn" id="0]vAqu2g7aQrTv|hf%W+" inline="true">
                                                                        <mutation name="RobiLog">
                                                                          <arg name="text"></arg>
                                                                        </mutation>
                                                                        <value name="ARG0">
                                                                          <block type="text_join" id="FkCwEa@T*cREvAt;iV*#">
                                                                            <mutation items="4"></mutation>
                                                                            <value name="ADD0">
                                                                              <block type="procedures_callcustomreturn" id="ba5]2zs,;pKK9P/sfH-?" inline="true">
                                                                                <mutation name="GetName">
                                                                                  <arg name="id"></arg>
                                                                                </mutation>
                                                                                <value name="ARG0">
                                                                                  <block type="on_source" id="L$IUp=sJxALkb[!h=,l7">
                                                                                    <field name="ATTR">id</field>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                            <value name="ADD1">
                                                                              <block type="text_join" id="S].PLij5PRyzH^RY+b48" inline="true">
                                                                                <mutation items="3"></mutation>
                                                                                <value name="ADD0">
                                                                                  <block type="text" id="a),`F*[,hxB}KrSOk3r`">
                                                                                    <field name="TEXT"> [</field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="ADD1">
                                                                                  <block type="variables_get" id=".{KppZkN-dBxc!zEjCSZ">
                                                                                    <field name="VAR" id="+r1nueMYBS=AZLN+pK0^">datenpunkt</field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="ADD2">
                                                                                  <block type="text" id="M*9=yoSfjY[z)(qCZ|+/">
                                                                                    <field name="TEXT">] =  </field>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                            <value name="ADD2">
                                                                              <block type="text_join" id="Q%QO01tRqYTTg)HJLpuW" inline="true">
                                                                                <mutation items="3"></mutation>
                                                                                <value name="ADD0">
                                                                                  <block type="on_source" id="8X.KdeqQu]=!sw.iN~fA">
                                                                                    <field name="ATTR">oldState.val</field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="ADD1">
                                                                                  <block type="text" id="T=TB(;Oo=zS.sJf#}c3$">
                                                                                    <field name="TEXT"> -&gt; </field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="ADD2">
                                                                                  <block type="on_source" id="H=Uvd4SX;)7L3|Y_(F!!">
                                                                                    <field name="ATTR">state.val</field>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                            <value name="ADD3">
                                                                              <block type="variables_get" id="i+fzc8kY=V}R`Lv%V/UW">
                                                                                <field name="VAR" id="k6-Q,C$hI=dp+9Lz9*Ih">beschreibung</field>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </statement>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </xml>
                                        


                                        Mit den 3 "falls mache" werden drei Datenpunkte ausgeschlossen die das log sehr unübersichtlich machen. Wer diese mit haben will, einfach den Block hinter falls ausblenden.
                                        Wer noch weitere Ausschließen will, dann ein "falls mache" hinzufügen.

                                        Dann viel Spaß beim Loggen der Adapterdatenpunkte.

                                        MfG Ralf

                                        jahnbesJ Offline
                                        jahnbesJ Offline
                                        jahnbes
                                        schrieb am zuletzt editiert von
                                        #82

                                        @spacerx
                                        Es ist mir etwas peinlich, aber nachdem ich mir fast den iobroker zerschossen habe, wie bekomme ich Dein Skript bei mir in den iobroker?
                                        Das Blockly ist nur ein Ausschnitt und der Code bringt bei mir nur Fehler. Finden wir einen Weg. Wie machst Du das bei Dir, also Dein Weg vom Code zum Blockly?
                                        Gruß Bert.

                                        S 1 Antwort Letzte Antwort
                                        0
                                        • jahnbesJ jahnbes

                                          @spacerx
                                          Es ist mir etwas peinlich, aber nachdem ich mir fast den iobroker zerschossen habe, wie bekomme ich Dein Skript bei mir in den iobroker?
                                          Das Blockly ist nur ein Ausschnitt und der Code bringt bei mir nur Fehler. Finden wir einen Weg. Wie machst Du das bei Dir, also Dein Weg vom Code zum Blockly?
                                          Gruß Bert.

                                          S Offline
                                          S Offline
                                          SpacerX
                                          schrieb am zuletzt editiert von
                                          #83

                                          @jahnbes auf der Seite JavaScript ein neues Blockly erstellen. Das dann öffnen und oben rechts im Editor Block einfügen wählen. Dort kopierst du den Code aus dem Spoiler rein. Dann Skript speichern und starten.
                                          das war es.

                                          DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                                          jahnbesJ 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          779

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe