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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Ecovacs Deebot Adapter: Status und Feedback

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Ecovacs Deebot Adapter: Status und Feedback

Scheduled Pinned Locked Moved Entwicklung
deebotecovacsecovacs-deebotecovacs-deebot adaptersaugrobotervacuum
576 Posts 36 Posters 152.1k Views 31 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J jm3west

    @mrbungle64 mal was ganz vertrauensvolles.

    Wie wäre es wenn ich Dir eine Freigabe erteilen würde.
    Könntest Du dann bei Dir debuggen (Technisch gesehen).

    Nicht das ich kein Interesse mehr hätte. Aber es gibt da noch einiges an Datenpunkte die nicht funktionieren!
    Wie zB. Multiple spot-Reinigung (Nur Ess- und Wohnzimmer). Da spuckt der Debugger auch Warnungen aus.

    Andererseits will ich aber auch nicht das Deine Programmierarbeit was exklusives für meinen OMNI X1 wird!!!

    mrbungle64M Offline
    mrbungle64M Offline
    mrbungle64
    Developer
    wrote on last edited by
    #237

    @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

    @mrbungle64 mal was ganz vertrauensvolles.

    Wie wäre es wenn ich Dir eine Freigabe erteilen würde.
    Könntest Du dann bei Dir debuggen (Technisch gesehen).

    Nicht das ich kein Interesse mehr hätte. Aber es gibt da noch einiges an Datenpunkte die nicht funktionieren!

    Meinst du Datenpunkte die nicht funktionieren - oder Datenpunkte die fehlen (das ist ja ein Unterschied)?

    Wie zB. Multiple spot-Reinigung (Nur Ess- und Wohnzimmer). Da spuckt der Debugger auch Warnungen aus.

    Ja, diese Funktion wird recht neu sein

    Andererseits will ich aber auch nicht das Deine Programmierarbeit was exklusives für meinen OMNI X1 wird!!!

    Ist ja kein Problem - du bist ja nicht der einzige mit einem Deebot X1 ;)

    1 Reply Last reply
    0
    • J Offline
      J Offline
      jm3west
      wrote on last edited by
      #238

      Freigabe ist raus

      1 Reply Last reply
      0
      • J Offline
        J Offline
        jm3west
        wrote on last edited by
        #239

        Ich nehme aber an das es nicht funktioniert. Da die Freigabe ohne Passwort erfolgt! :-1:

        mrbungle64M 1 Reply Last reply
        0
        • J jm3west

          Ich nehme aber an das es nicht funktioniert. Da die Freigabe ohne Passwort erfolgt! :-1:

          mrbungle64M Offline
          mrbungle64M Offline
          mrbungle64
          Developer
          wrote on last edited by
          #240

          @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

          Ich nehme aber an das es nicht funktioniert. Da die Freigabe ohne Passwort erfolgt! :-1:

          Ja, das hilft uns nur eingeschränkt weiter ;)

          1 Reply Last reply
          0
          • J Offline
            J Offline
            jm3west
            wrote on last edited by
            #241

            Ich habe in einer ruhigen Stunde nochmal die iOS App zur Hand genommen und durchgeklickt.

            Optionen aus iOS App heraus
            Reinigungseinstellungen > Standard

            Wischmodus (Scheinbar Standard und Anpassen weil payload der gleiche ist)

            warn  got payload for unknown command 'onCustomAreaMode': {"sweepMode":0}
            

            Reinigungseinstellungen > Anpassen > Bevorzugter Bereich
            Da für jedes(n) Zimmer/Bereich drei Einstellmöglichkeiten gibt (Reinigen: 1x/2x; Saugkraft: Leise/Standard/Maximal/Maximal+; Wasserdurchflussrate: niedrig/mittel/hoch) werden diese immer als Gesamtes gespeichert, auch wenn zB. nur 2x reinigen ausgewählt wird.
            Somit sind die unbekannten payloads immer sie gleichen.

            warn  got payload for unknown command 'onSimpleARMapSet': {"type":"ar","speechVer":"2.0","mid":"732490256","msid":"1863920572","subsets":[{"name":"Esszimmer1","mssid":"1","subtype":"2","totalCount":0},{"name":"","mssid":"2","subtype":"1","totalCount":0},{"name":"Küche1","mssid":"3","subtype":"5","totalCount":0},{"name":"Schlafzimmer1","mssid":"6","subtype":"3","totalCount":0},{"name":"Flur1","mssid":"8","subtype":"12","totalCount":0},{"name":"Badezimmer2","mssid":"7","subtype":"6","totalCount":0}]}
            
            warn  got payload for unknown command 'onFwBuryPoint-areasInfo': "{\"header\":{\"pri\":1,\"tzm\":60,\"ts\":\"1674563558544\",\"ver\":\"0.0.1\",\"fwVer\":\"2.3.9\",\"hwVer\":\"0.1.1\",\"wkVer\":\"0.1.54\"},\"body\":{\"gid\":\"G1674563558521\",\"index\":\"0000000123\",\"ts\":\"1674563558521\",\"mid\":732490256,\"areas\":[{\"id\":1,\"name\":\"Esszimmer1\",\"type\":2,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":2},{\"id\":2,\"name\":\"\",\"type\":1,\"priority\":0,\"waterLevel\":0,\"fanLevel\":1,\"cleanCnt\":1},{\"id\":3,\"name\":\"Küche1\",\"type\":5,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":1},{\"id\":6,\"name\":\"Schlafzimmer1\",\"type\":3,\"priority\":0,\"waterLevel\":2,\"fanLevel\":1,\"cleanCnt\":2},{\"id\":8,\"name\":\"Flur1\",\"type\":12,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":2},{\"id\":7,\"name\":\"Badezimmer2\",\"type\":6,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":1}]}}"
            
            warn  got payload for unknown command 'onFwBuryPoint-bd_mapinfo': "{\"header\":{\"pri\":1,\"tzm\":60,\"ts\":\"1674563558803\",\"ver\":\"0.0.1\",\"fwVer\":\"2.3.9\",\"hwVer\":\"0.1.1\",\"wkVer\":\"0.1.54\"},\"body\":{\"gid\":\"G1674563558794\",\"index\":\"0000000124\",\"ts\":\"1674563558794\",\"mapinfos\":[{\"mapid\":0,\"name\":\"\",\"savemapType\":0,\"isActive\":0,\"isRecentMap\":0,\"cleanCount\":0,\"priority\":0},{\"mapid\":732490256,\"name\":\"OG Loft\",\"savemapType\":1,\"isActive\":1,\"isRecentMap\":1,\"cleanCount\":2,\"priority\":26},{\"mapid\":0,\"name\":\"\",\"savemapType\":2,\"isActive\":0,\"isRecentMap\":0,\"cleanCount\":0,\"priority\":0},{\"mapid\":0,\"name\":\"\",\"savemapType\":3,\"isActive\":0,\"isRecentMap\":0,\"cleanCount\":0,\"priority\":0}]}}"
            

            Das sind eingentlich alle payloads die unbekannt sind.
            Die die unbekannt waren hast Du/wir ja schon erörtert.

            Was mir noch aufgefallen ist.
            Der Datenpunkt ecovacs-deebot.0.control.extended.volume wird von Dir mit Wert 1-10 vorgegeben.
            Denoch lässt sich in der iOS App der Wert von 0-10 ändern.
            So wird es auch im datenpunkt ecovacs-deebot.0.control.extended.volume gesetzt.
            Mal angenommen ich stelle in der iOS App die Lautstärke auf 5 und setzte sie danach im Datenpunkt ecovacs-deebot.0.control.extended.volume auf 0 springt dieser nach einigen Sekunden wieder auf 5

            mrbungle64M 2 Replies Last reply
            0
            • J jm3west

              Ich habe in einer ruhigen Stunde nochmal die iOS App zur Hand genommen und durchgeklickt.

              Optionen aus iOS App heraus
              Reinigungseinstellungen > Standard

              Wischmodus (Scheinbar Standard und Anpassen weil payload der gleiche ist)

              warn  got payload for unknown command 'onCustomAreaMode': {"sweepMode":0}
              

              Reinigungseinstellungen > Anpassen > Bevorzugter Bereich
              Da für jedes(n) Zimmer/Bereich drei Einstellmöglichkeiten gibt (Reinigen: 1x/2x; Saugkraft: Leise/Standard/Maximal/Maximal+; Wasserdurchflussrate: niedrig/mittel/hoch) werden diese immer als Gesamtes gespeichert, auch wenn zB. nur 2x reinigen ausgewählt wird.
              Somit sind die unbekannten payloads immer sie gleichen.

              warn  got payload for unknown command 'onSimpleARMapSet': {"type":"ar","speechVer":"2.0","mid":"732490256","msid":"1863920572","subsets":[{"name":"Esszimmer1","mssid":"1","subtype":"2","totalCount":0},{"name":"","mssid":"2","subtype":"1","totalCount":0},{"name":"Küche1","mssid":"3","subtype":"5","totalCount":0},{"name":"Schlafzimmer1","mssid":"6","subtype":"3","totalCount":0},{"name":"Flur1","mssid":"8","subtype":"12","totalCount":0},{"name":"Badezimmer2","mssid":"7","subtype":"6","totalCount":0}]}
              
              warn  got payload for unknown command 'onFwBuryPoint-areasInfo': "{\"header\":{\"pri\":1,\"tzm\":60,\"ts\":\"1674563558544\",\"ver\":\"0.0.1\",\"fwVer\":\"2.3.9\",\"hwVer\":\"0.1.1\",\"wkVer\":\"0.1.54\"},\"body\":{\"gid\":\"G1674563558521\",\"index\":\"0000000123\",\"ts\":\"1674563558521\",\"mid\":732490256,\"areas\":[{\"id\":1,\"name\":\"Esszimmer1\",\"type\":2,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":2},{\"id\":2,\"name\":\"\",\"type\":1,\"priority\":0,\"waterLevel\":0,\"fanLevel\":1,\"cleanCnt\":1},{\"id\":3,\"name\":\"Küche1\",\"type\":5,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":1},{\"id\":6,\"name\":\"Schlafzimmer1\",\"type\":3,\"priority\":0,\"waterLevel\":2,\"fanLevel\":1,\"cleanCnt\":2},{\"id\":8,\"name\":\"Flur1\",\"type\":12,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":2},{\"id\":7,\"name\":\"Badezimmer2\",\"type\":6,\"priority\":0,\"waterLevel\":1,\"fanLevel\":0,\"cleanCnt\":1}]}}"
              
              warn  got payload for unknown command 'onFwBuryPoint-bd_mapinfo': "{\"header\":{\"pri\":1,\"tzm\":60,\"ts\":\"1674563558803\",\"ver\":\"0.0.1\",\"fwVer\":\"2.3.9\",\"hwVer\":\"0.1.1\",\"wkVer\":\"0.1.54\"},\"body\":{\"gid\":\"G1674563558794\",\"index\":\"0000000124\",\"ts\":\"1674563558794\",\"mapinfos\":[{\"mapid\":0,\"name\":\"\",\"savemapType\":0,\"isActive\":0,\"isRecentMap\":0,\"cleanCount\":0,\"priority\":0},{\"mapid\":732490256,\"name\":\"OG Loft\",\"savemapType\":1,\"isActive\":1,\"isRecentMap\":1,\"cleanCount\":2,\"priority\":26},{\"mapid\":0,\"name\":\"\",\"savemapType\":2,\"isActive\":0,\"isRecentMap\":0,\"cleanCount\":0,\"priority\":0},{\"mapid\":0,\"name\":\"\",\"savemapType\":3,\"isActive\":0,\"isRecentMap\":0,\"cleanCount\":0,\"priority\":0}]}}"
              

              Das sind eingentlich alle payloads die unbekannt sind.
              Die die unbekannt waren hast Du/wir ja schon erörtert.

              Was mir noch aufgefallen ist.
              Der Datenpunkt ecovacs-deebot.0.control.extended.volume wird von Dir mit Wert 1-10 vorgegeben.
              Denoch lässt sich in der iOS App der Wert von 0-10 ändern.
              So wird es auch im datenpunkt ecovacs-deebot.0.control.extended.volume gesetzt.
              Mal angenommen ich stelle in der iOS App die Lautstärke auf 5 und setzte sie danach im Datenpunkt ecovacs-deebot.0.control.extended.volume auf 0 springt dieser nach einigen Sekunden wieder auf 5

              mrbungle64M Offline
              mrbungle64M Offline
              mrbungle64
              Developer
              wrote on last edited by
              #242

              @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

              Ich habe in einer ruhigen Stunde nochmal die iOS App zur Hand genommen und durchgeklickt.

              Optionen aus iOS App heraus
              Reinigungseinstellungen > Standard

              Wischmodus (Scheinbar Standard und Anpassen weil payload der gleiche ist)

              warn  got payload for unknown command 'onCustomAreaMode': {"sweepMode":0}
              

              Was ist es denn nun genau?

              Hier hattest du noch geschrieben, dass das die Werte "Standard" und "Tief" sind:
              https://forum.iobroker.net/post/933171

              So hatte ich es dann auch implementiert:
              https://forum.iobroker.net/post/933874

              J 1 Reply Last reply
              0
              • mrbungle64M mrbungle64

                @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                Ich habe in einer ruhigen Stunde nochmal die iOS App zur Hand genommen und durchgeklickt.

                Optionen aus iOS App heraus
                Reinigungseinstellungen > Standard

                Wischmodus (Scheinbar Standard und Anpassen weil payload der gleiche ist)

                warn  got payload for unknown command 'onCustomAreaMode': {"sweepMode":0}
                

                Was ist es denn nun genau?

                Hier hattest du noch geschrieben, dass das die Werte "Standard" und "Tief" sind:
                https://forum.iobroker.net/post/933171

                So hatte ich es dann auch implementiert:
                https://forum.iobroker.net/post/933874

                J Offline
                J Offline
                jm3west
                wrote on last edited by
                #243

                @mrbungle64 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                Ich habe in einer ruhigen Stunde nochmal die iOS App zur Hand genommen und durchgeklickt.

                Optionen aus iOS App heraus
                Reinigungseinstellungen > Standard

                Wischmodus (Scheinbar Standard und Anpassen weil payload der gleiche ist)

                warn  got payload for unknown command 'onCustomAreaMode': {"sweepMode":0}
                

                Was ist es denn nun genau?

                Hier hattest du noch geschrieben, dass das die Werte "Standard" und "Tief" sind:

                Damit meinte ich dass, wie schon beschrieben, der payload sowohl bei Standard und Anpassen immer gleich sind, mit gleichen Wertepaar.
                So würde ich es auch von der optischen Aufteilung interpretieren.

                Sprich beide werden mit den Werten Standard=0; Tief=1 beschrieben.

                mrbungle64M 1 Reply Last reply
                0
                • J jm3west

                  @mrbungle64 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                  @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                  Ich habe in einer ruhigen Stunde nochmal die iOS App zur Hand genommen und durchgeklickt.

                  Optionen aus iOS App heraus
                  Reinigungseinstellungen > Standard

                  Wischmodus (Scheinbar Standard und Anpassen weil payload der gleiche ist)

                  warn  got payload for unknown command 'onCustomAreaMode': {"sweepMode":0}
                  

                  Was ist es denn nun genau?

                  Hier hattest du noch geschrieben, dass das die Werte "Standard" und "Tief" sind:

                  Damit meinte ich dass, wie schon beschrieben, der payload sowohl bei Standard und Anpassen immer gleich sind, mit gleichen Wertepaar.
                  So würde ich es auch von der optischen Aufteilung interpretieren.

                  Sprich beide werden mit den Werten Standard=0; Tief=1 beschrieben.

                  mrbungle64M Offline
                  mrbungle64M Offline
                  mrbungle64
                  Developer
                  wrote on last edited by
                  #244

                  @jm3west

                  Kannst du mir vielleicht doch noch mal für ne Stunde (oder so) deinen Bot freigeben, so dass ich mir mal das User Interface anschauen kann? Irgendwie verstehe ich das wohl noch nicht so ganz, wie Ecovacs das nun beim X1 aufgebaut hat ...

                  J 1 Reply Last reply
                  0
                  • mrbungle64M mrbungle64

                    @jm3west

                    Kannst du mir vielleicht doch noch mal für ne Stunde (oder so) deinen Bot freigeben, so dass ich mir mal das User Interface anschauen kann? Irgendwie verstehe ich das wohl noch nicht so ganz, wie Ecovacs das nun beim X1 aufgebaut hat ...

                    J Offline
                    J Offline
                    jm3west
                    wrote on last edited by
                    #245

                    @mrbungle64 gerne!
                    Aber Du denkst nicht an heute noch?

                    mrbungle64M 1 Reply Last reply
                    0
                    • J jm3west

                      @mrbungle64 gerne!
                      Aber Du denkst nicht an heute noch?

                      mrbungle64M Offline
                      mrbungle64M Offline
                      mrbungle64
                      Developer
                      wrote on last edited by
                      #246

                      @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                      @mrbungle64 gerne!
                      Aber Du denkst nicht an heute noch?

                      Falls das für dich kein Problem ist wäre jetzt direkt ganz günstig für mich :)

                      J 1 Reply Last reply
                      0
                      • mrbungle64M mrbungle64

                        @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                        @mrbungle64 gerne!
                        Aber Du denkst nicht an heute noch?

                        Falls das für dich kein Problem ist wäre jetzt direkt ganz günstig für mich :)

                        J Offline
                        J Offline
                        jm3west
                        wrote on last edited by
                        #247

                        @mrbungle64 nun für mich nicht.
                        Aber für jemand anderen der hier sitzt :blond-haired-woman:

                        Wir hätten aber doch noch immer das debug-Problem. Da die Freigabe ja kein Passwort hat.
                        Man musste ja ein VPN-Tunnel erstellen

                        mrbungle64M 1 Reply Last reply
                        0
                        • J jm3west

                          @mrbungle64 nun für mich nicht.
                          Aber für jemand anderen der hier sitzt :blond-haired-woman:

                          Wir hätten aber doch noch immer das debug-Problem. Da die Freigabe ja kein Passwort hat.
                          Man musste ja ein VPN-Tunnel erstellen

                          mrbungle64M Offline
                          mrbungle64M Offline
                          mrbungle64
                          Developer
                          wrote on last edited by
                          #248

                          @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                          @mrbungle64 nun für mich nicht.
                          Aber für jemand anderen der hier sitzt :blond-haired-woman:

                          Alles klar ;) Für mich kein Problem - ich weiß auch ansonsten was mit meiner Zeit anzufangen ;)

                          Wir hätten aber doch noch immer das debug-Problem. Da die Freigabe ja kein Passwort hat.
                          Man musste ja ein VPN-Tunnel erstellen

                          Das verstehe ich gerade nicht, zwischen welchen Endpunkten du dafür einen VPN-Tunnel aufbauen willst ...
                          Ich muss mich mit deinen Zugangsdaten authentifizieren, damit ich mit deinem Bot sprechen und dazu eine Ausgabe über die Library bekomme ...

                          Wie bereits mitgeteilt habe ich ja sowieso schon ein paar Dinge für den X1 umgesetzt. Wir werden dann früher oder später sehen, ob es funktioniert ;)

                          J T 2 Replies Last reply
                          0
                          • mrbungle64M mrbungle64

                            @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                            @mrbungle64 nun für mich nicht.
                            Aber für jemand anderen der hier sitzt :blond-haired-woman:

                            Alles klar ;) Für mich kein Problem - ich weiß auch ansonsten was mit meiner Zeit anzufangen ;)

                            Wir hätten aber doch noch immer das debug-Problem. Da die Freigabe ja kein Passwort hat.
                            Man musste ja ein VPN-Tunnel erstellen

                            Das verstehe ich gerade nicht, zwischen welchen Endpunkten du dafür einen VPN-Tunnel aufbauen willst ...
                            Ich muss mich mit deinen Zugangsdaten authentifizieren, damit ich mit deinem Bot sprechen und dazu eine Ausgabe über die Library bekomme ...

                            Wie bereits mitgeteilt habe ich ja sowieso schon ein paar Dinge für den X1 umgesetzt. Wir werden dann früher oder später sehen, ob es funktioniert ;)

                            J Offline
                            J Offline
                            jm3west
                            wrote on last edited by
                            #249

                            @mrbungle64 ach so, das habe ich falsch verstanden.
                            OK. lass' uns morgen darüber quatschen.

                            Melde dich wenn du morgen bereit bist

                            1 Reply Last reply
                            0
                            • mrbungle64M mrbungle64

                              @jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:

                              @mrbungle64 nun für mich nicht.
                              Aber für jemand anderen der hier sitzt :blond-haired-woman:

                              Alles klar ;) Für mich kein Problem - ich weiß auch ansonsten was mit meiner Zeit anzufangen ;)

                              Wir hätten aber doch noch immer das debug-Problem. Da die Freigabe ja kein Passwort hat.
                              Man musste ja ein VPN-Tunnel erstellen

                              Das verstehe ich gerade nicht, zwischen welchen Endpunkten du dafür einen VPN-Tunnel aufbauen willst ...
                              Ich muss mich mit deinen Zugangsdaten authentifizieren, damit ich mit deinem Bot sprechen und dazu eine Ausgabe über die Library bekomme ...

                              Wie bereits mitgeteilt habe ich ja sowieso schon ein paar Dinge für den X1 umgesetzt. Wir werden dann früher oder später sehen, ob es funktioniert ;)

                              T Offline
                              T Offline
                              Thirty8763
                              wrote on last edited by
                              #250

                              Hallo zusammen,

                              Habe ein generelles Problem mit meinem T8 AIVI und Türen und ich versuche es derzeit mit diesem tollen Adapter zu lösen.

                              Ihr kennt es bestimmt:
                              Man schickt den Staubsauger in das Gangzimmer und lässt manche Türen lieber zu. Dies verringert die Lärmbelästigung.
                              Der Roboter aktualisiert aber blöderweise die Karte und zeichnet dort, wo die Türe geschlossen war nun eine Wand ein.
                              Bei der nächsten Reinigung findet der Roboter nicht mehr in den Raum hinter der Türe. Er versucht nicht mal in die Nähe zu fahren, um vl nachzusehen ob die Türe schon offen ist. Auch wenn man zusätzlich das Gangzimmer auch noch ins Reinigungsprogramm aufnimmt bringt das manchmal nichts weil die Karte scheinbar erst nach einener erfolgreichen Reinigung aktualisiert wird.

                              Nun meine Gedanken:

                              1. Kann man nicht irgendwie den Zustand einer Karte speichern und vor jedem Start auf diesen Stand zurücksetzen? Damit könnte man den Zustand mit offenen Türen immer wieder wiederherstellen.
                              2. Ich suche vergeblich noch immer einen "Move" Befehl. Mit ihm würde ich vor der Reinigung vor die Türe fahren. Damit schnallt er hoffentlich, dass die Türe offen ist und ich könnte das eigentliche Reinigungsprogramm ausführen. Die Abfolge ließe sich vl mit einem Javascript durch Statuspolls und entspechende Reaktionscommands implementieren.
                              3. Weil es ja keinen "Move" Befehl gibt könnte man statt Move auch z.B. eine 1x1m Bereichsreinigung vor der Türe ausführen. Sobald sich der Roboter auf den Heimweg machen will wird dann das eigentliche Programm ausgeführt, das den Raum hinter der Türe reinigt.

                              Was meint ihr?
                              Könnt ihr das Problem nachvollziehen?
                              Ist einer der Lösungsansätze umsetzbar?

                              mrbungle64M 1 Reply Last reply
                              0
                              • T Thirty8763

                                Hallo zusammen,

                                Habe ein generelles Problem mit meinem T8 AIVI und Türen und ich versuche es derzeit mit diesem tollen Adapter zu lösen.

                                Ihr kennt es bestimmt:
                                Man schickt den Staubsauger in das Gangzimmer und lässt manche Türen lieber zu. Dies verringert die Lärmbelästigung.
                                Der Roboter aktualisiert aber blöderweise die Karte und zeichnet dort, wo die Türe geschlossen war nun eine Wand ein.
                                Bei der nächsten Reinigung findet der Roboter nicht mehr in den Raum hinter der Türe. Er versucht nicht mal in die Nähe zu fahren, um vl nachzusehen ob die Türe schon offen ist. Auch wenn man zusätzlich das Gangzimmer auch noch ins Reinigungsprogramm aufnimmt bringt das manchmal nichts weil die Karte scheinbar erst nach einener erfolgreichen Reinigung aktualisiert wird.

                                Nun meine Gedanken:

                                1. Kann man nicht irgendwie den Zustand einer Karte speichern und vor jedem Start auf diesen Stand zurücksetzen? Damit könnte man den Zustand mit offenen Türen immer wieder wiederherstellen.
                                2. Ich suche vergeblich noch immer einen "Move" Befehl. Mit ihm würde ich vor der Reinigung vor die Türe fahren. Damit schnallt er hoffentlich, dass die Türe offen ist und ich könnte das eigentliche Reinigungsprogramm ausführen. Die Abfolge ließe sich vl mit einem Javascript durch Statuspolls und entspechende Reaktionscommands implementieren.
                                3. Weil es ja keinen "Move" Befehl gibt könnte man statt Move auch z.B. eine 1x1m Bereichsreinigung vor der Türe ausführen. Sobald sich der Roboter auf den Heimweg machen will wird dann das eigentliche Programm ausgeführt, das den Raum hinter der Türe reinigt.

                                Was meint ihr?
                                Könnt ihr das Problem nachvollziehen?
                                Ist einer der Lösungsansätze umsetzbar?

                                mrbungle64M Offline
                                mrbungle64M Offline
                                mrbungle64
                                Developer
                                wrote on last edited by mrbungle64
                                #251

                                @thirty8763 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                1. Ich suche vergeblich noch immer einen "Move" Befehl. Mit ihm würde ich vor der Reinigung vor die Türe fahren. Damit schnallt er hoffentlich, dass die Türe offen ist und ich könnte das eigentliche Reinigungsprogramm ausführen. Die Abfolge ließe sich vl mit einem Javascript durch Statuspolls und entspechende Reaktionscommands implementieren.

                                Den gibt es (wenn ich deine Anforderung an den "Move" Befehl richtig verstehe) - inzwischen sogar mehrfach für Modelle ab dem T8 AIVI - der heißt nur nicht "move":

                                • control.extended.goToPosition (nativ für Modelle ab dem T8 AIVI, seit Version 1.4.6)
                                • control.spotArea_silentApproach (inkl. Reinigung, seit Version 1.4.12-alpha.x)

                                Man kann die aktuelle Positionen vom Bot sogar dauerhaft als Datenpunkt bzw. Button speichern:

                                • control.extended.goToPosition_saveCurrentDeebotPosition (seit Version 1.4.11)

                                Weitere Varianten:

                                • map.[mapID].spotAreas.[spotAreaID].goToCalculatedCenterPosition (seit Version 1.4.12-alpha.x)
                                • map.[mapID].spotAreas.[spotAreaID].cleanSpotArea_silentApproach (inkl. Reinigung, seit Version 1.4.12-alpha.x)

                                "control.extended.goToPosition" ist die einfache Variante, welche du wahrscheinlich gemeint hast.

                                Ich werde das noch mal ausführlicher beschreiben - es ist jetzt für heute aber schon zu spät dafür ;)

                                1. Weil es ja keinen "Move" Befehl gibt könnte man statt Move auch z.B. eine 1x1m Bereichsreinigung vor der Türe ausführen. Sobald sich der Roboter auf den Heimweg machen will wird dann das eigentliche Programm ausgeführt, das den Raum hinter der Türe reinigt.

                                Punkt 3 sollte für den T8 AIVI und neuere Modelle mit den o.g. Funktionen nicht mehr notwendig sein

                                1. Kann man nicht irgendwie den Zustand einer Karte speichern und vor jedem Start auf diesen Stand zurücksetzen? Damit könnte man den Zustand mit offenen Türen immer wieder wiederherstellen.

                                Punkt 1 bin ich aktuell am untersuchen, ob das ab dem T8 oder T9 möglich ist.
                                Ich würde da aber nicht zu viel Hoffnung rein stecken, weil die Ecovacs Deebot API offiziell undokumentiert ist und ich daher sehr vorsichtig bin mit solchen Sachen, welche auch "gesunde" Karten zerstören könnten.

                                T 1 Reply Last reply
                                1
                                • mrbungle64M mrbungle64

                                  @thirty8763 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                  1. Ich suche vergeblich noch immer einen "Move" Befehl. Mit ihm würde ich vor der Reinigung vor die Türe fahren. Damit schnallt er hoffentlich, dass die Türe offen ist und ich könnte das eigentliche Reinigungsprogramm ausführen. Die Abfolge ließe sich vl mit einem Javascript durch Statuspolls und entspechende Reaktionscommands implementieren.

                                  Den gibt es (wenn ich deine Anforderung an den "Move" Befehl richtig verstehe) - inzwischen sogar mehrfach für Modelle ab dem T8 AIVI - der heißt nur nicht "move":

                                  • control.extended.goToPosition (nativ für Modelle ab dem T8 AIVI, seit Version 1.4.6)
                                  • control.spotArea_silentApproach (inkl. Reinigung, seit Version 1.4.12-alpha.x)

                                  Man kann die aktuelle Positionen vom Bot sogar dauerhaft als Datenpunkt bzw. Button speichern:

                                  • control.extended.goToPosition_saveCurrentDeebotPosition (seit Version 1.4.11)

                                  Weitere Varianten:

                                  • map.[mapID].spotAreas.[spotAreaID].goToCalculatedCenterPosition (seit Version 1.4.12-alpha.x)
                                  • map.[mapID].spotAreas.[spotAreaID].cleanSpotArea_silentApproach (inkl. Reinigung, seit Version 1.4.12-alpha.x)

                                  "control.extended.goToPosition" ist die einfache Variante, welche du wahrscheinlich gemeint hast.

                                  Ich werde das noch mal ausführlicher beschreiben - es ist jetzt für heute aber schon zu spät dafür ;)

                                  1. Weil es ja keinen "Move" Befehl gibt könnte man statt Move auch z.B. eine 1x1m Bereichsreinigung vor der Türe ausführen. Sobald sich der Roboter auf den Heimweg machen will wird dann das eigentliche Programm ausgeführt, das den Raum hinter der Türe reinigt.

                                  Punkt 3 sollte für den T8 AIVI und neuere Modelle mit den o.g. Funktionen nicht mehr notwendig sein

                                  1. Kann man nicht irgendwie den Zustand einer Karte speichern und vor jedem Start auf diesen Stand zurücksetzen? Damit könnte man den Zustand mit offenen Türen immer wieder wiederherstellen.

                                  Punkt 1 bin ich aktuell am untersuchen, ob das ab dem T8 oder T9 möglich ist.
                                  Ich würde da aber nicht zu viel Hoffnung rein stecken, weil die Ecovacs Deebot API offiziell undokumentiert ist und ich daher sehr vorsichtig bin mit solchen Sachen, welche auch "gesunde" Karten zerstören könnten.

                                  T Offline
                                  T Offline
                                  Thirty8763
                                  wrote on last edited by
                                  #252

                                  @mrbungle64
                                  Ahhh... Der goToPosition Datenpunkt war nicht sicher weil "Einige weitere experimentelle Features ("control.extended" Kanal)" nicht aktiv gesetzt war.
                                  Ich dachte das ist mit " Native "goToPosition" Funktion benutzen (z.B. T8/T9/N8/X1 Serie)" erledigt aber scheinbar muss man beide experimentellen Features aktivieren.

                                  Super, damit kann ich arbeiten, dann werde ich versuchen immer vorher die entsprechenden Türpositionen anzufahren und erst dann direkt von dort die Reinigung aufnehmen.

                                  Die nächste Ausbaustufe könnte sein, auch noch Türsensoren anzubringen. Wenn eine Türe verschlossen ist braucht er es nicht mehr versuchen den/die dahinterliegenden Räume anzufahren.

                                  T mrbungle64M 2 Replies Last reply
                                  0
                                  • T Thirty8763

                                    @mrbungle64
                                    Ahhh... Der goToPosition Datenpunkt war nicht sicher weil "Einige weitere experimentelle Features ("control.extended" Kanal)" nicht aktiv gesetzt war.
                                    Ich dachte das ist mit " Native "goToPosition" Funktion benutzen (z.B. T8/T9/N8/X1 Serie)" erledigt aber scheinbar muss man beide experimentellen Features aktivieren.

                                    Super, damit kann ich arbeiten, dann werde ich versuchen immer vorher die entsprechenden Türpositionen anzufahren und erst dann direkt von dort die Reinigung aufnehmen.

                                    Die nächste Ausbaustufe könnte sein, auch noch Türsensoren anzubringen. Wenn eine Türe verschlossen ist braucht er es nicht mehr versuchen den/die dahinterliegenden Räume anzufahren.

                                    T Offline
                                    T Offline
                                    Thirty8763
                                    wrote on last edited by
                                    #253

                                    @thirty8763

                                    Ich konnte das Vorhaben dank deiner Unterstützung umsetzen.
                                    Hier der erste Wurf meines Javascripts, vl kanns ja jemand brauchen:

                                    /* -------------------------------------------------------------------------------- */
                                    /* global status variables */
                                    var m_moveCommands = [];
                                    var m_cleanCommands = [];
                                    var m_forceNextCommand = false;
                                    var m_timeout = 0;
                                    
                                    
                                    /* -------------------------------------------------------------------------------- */
                                    /* trigger point to go back to charging */
                                    on({id: '0_userdata.0.Staubsauger.myCharge'}, function (obj) {
                                        console.log('myCharge Start');
                                    
                                        m_moveCommands = [];
                                        m_cleanCommands = [];
                                        
                                        setState('ecovacs-deebot.0.control.charge', "1");
                                    });
                                    
                                    
                                    /* -------------------------------------------------------------------------------- */
                                    /* trigger point to start a cleaning */
                                    on({id: '0_userdata.0.Staubsauger.mySpotArea'}, function (obj) {
                                        console.log('mySpotArea Start');
                                    
                                        /* clear old cleaning program */
                                        m_moveCommands = [];
                                        m_cleanCommands = [];
                                    
                                        /* get the input information where to clean */
                                        var cleanInput = getState('0_userdata.0.Staubsauger.mySpotArea').val.toString();
                                    
                                        /* parse the input */
                                        var cleanCommands = [];
                                        if (cleanInput.includes(","))
                                        {
                                            cleanCommands = cleanInput.split(",");
                                        }
                                        else
                                        {
                                            cleanCommands[0] = cleanInput.toString();
                                        }
                                    
                                        /* add the move commands if needed */
                                    
                                        /* Schlafzimmertüre */
                                        if (cleanCommands.includes("2"))    /* Schlafzimmer */
                                        {
                                            /* move to Schlafzimmertüre */
                                            m_moveCommands[m_moveCommands.length] = "304,-1037";
                                        }
                                    
                                        /* Vorzimmertüre */
                                        if (cleanCommands.includes("3") ||  /* Vorzimmer */
                                            cleanCommands.includes("4") ||  /* WC */
                                            cleanCommands.includes("6") ||  /* Badezimmer */
                                            cleanCommands.includes("7"))    /* Kammer */
                                        {
                                            /* move to Vorzimmertüre */
                                            m_moveCommands[m_moveCommands.length] = "-2012,2126";
                                        }
                                    
                                        /* WC Türe */
                                        if (cleanCommands.includes("4"))    /* WC */
                                        {
                                            /* move to WC Türe */
                                            m_moveCommands[m_moveCommands.length] = "-3368,1542";
                                        }
                                    
                                        /* Badezimmertüre */
                                        if (cleanCommands.includes("6"))    /* Badezimmer */
                                        {
                                            /* move to Badezimmer Türe */
                                            m_moveCommands[m_moveCommands.length] = "-5203,1354";
                                        }
                                    
                                        /* Kammer Türe */
                                        if (cleanCommands.includes("7"))    /* Kammer */
                                        {
                                            /* move to Kammer Türe */
                                            m_moveCommands[m_moveCommands.length] = "-5698,2844";
                                        }
                                    
                                        /* set the global clean commands variable */
                                        m_cleanCommands = cleanCommands;
                                    
                                        // force the continuation to start the next program step
                                        m_forceNextCommand = true;
                                    
                                        // print program
                                        console.log("New Cleaning Programm:");
                                        console.log(m_moveCommands);
                                        console.log(m_cleanCommands);
                                    });
                                    
                                    
                                    /* -------------------------------------------------------------------------------- */
                                    /* cyclicly check if the the next command shall be triggered */
                                    schedule('* * * * * *', function () {
                                    
                                        /* handle the timeout function */
                                        /* wait a moment to become the program active */
                                        if (0 < m_timeout)
                                        {
                                            if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val)
                                            {
                                                m_timeout = 0;
                                                return;
                                            }
                                            
                                            m_timeout = m_timeout - 1;
                                            return;
                                        }
                                        
                                        /* find out if the robot is still busy or if we force the continuation */
                                        if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val &&
                                            false == m_forceNextCommand) 
                                        {
                                            // console.log("Busy detected.");
                                            return;
                                        }
                                    
                                        m_forceNextCommand = false;
                                    
                                        // console.log("Continue with next step if available.");
                                        
                                        /* print program */
                                        // console.log(m_moveCommands);
                                        // console.log(m_cleanCommands);
                                    
                                        /* execute next move command if needed */
                                        if (0 != m_moveCommands.length)
                                        {
                                            /* get next move command parameter */
                                            const s_move = m_moveCommands.shift();
                                    
                                            console.log("goToPostion " + s_move);
                                    
                                            /* start the move command */
                                            setState("ecovacs-deebot.0.control.extended.goToPosition", s_move);
                                    
                                            m_timeout = 10;
                                    
                                            /* stop the execution of this loop */
                                            return;
                                        }
                                    
                                        /* execute next clean command if needed */
                                        if (0 != m_cleanCommands.length)
                                        {
                                            /* get next clean command parameter */
                                            var s_clean = "";
                                            for (var i = 0; i < m_cleanCommands.length; i++)
                                            {
                                                s_clean = s_clean + m_cleanCommands[i] + ",";
                                            }
                                            s_clean.substring(0, s_clean.length - 1);
                                    
                                            /* remove the commands that will be processed */
                                            m_cleanCommands = [];
                                    
                                            console.log("spotArea " + s_clean);
                                    
                                            /* start the move command */
                                            setState("ecovacs-deebot.0.control.spotArea", s_clean);
                                    
                                            /* stop the execution of this loop */
                                            return;
                                        }
                                    });
                                    
                                    mrbungle64M 2 Replies Last reply
                                    1
                                    • T Thirty8763

                                      @thirty8763

                                      Ich konnte das Vorhaben dank deiner Unterstützung umsetzen.
                                      Hier der erste Wurf meines Javascripts, vl kanns ja jemand brauchen:

                                      /* -------------------------------------------------------------------------------- */
                                      /* global status variables */
                                      var m_moveCommands = [];
                                      var m_cleanCommands = [];
                                      var m_forceNextCommand = false;
                                      var m_timeout = 0;
                                      
                                      
                                      /* -------------------------------------------------------------------------------- */
                                      /* trigger point to go back to charging */
                                      on({id: '0_userdata.0.Staubsauger.myCharge'}, function (obj) {
                                          console.log('myCharge Start');
                                      
                                          m_moveCommands = [];
                                          m_cleanCommands = [];
                                          
                                          setState('ecovacs-deebot.0.control.charge', "1");
                                      });
                                      
                                      
                                      /* -------------------------------------------------------------------------------- */
                                      /* trigger point to start a cleaning */
                                      on({id: '0_userdata.0.Staubsauger.mySpotArea'}, function (obj) {
                                          console.log('mySpotArea Start');
                                      
                                          /* clear old cleaning program */
                                          m_moveCommands = [];
                                          m_cleanCommands = [];
                                      
                                          /* get the input information where to clean */
                                          var cleanInput = getState('0_userdata.0.Staubsauger.mySpotArea').val.toString();
                                      
                                          /* parse the input */
                                          var cleanCommands = [];
                                          if (cleanInput.includes(","))
                                          {
                                              cleanCommands = cleanInput.split(",");
                                          }
                                          else
                                          {
                                              cleanCommands[0] = cleanInput.toString();
                                          }
                                      
                                          /* add the move commands if needed */
                                      
                                          /* Schlafzimmertüre */
                                          if (cleanCommands.includes("2"))    /* Schlafzimmer */
                                          {
                                              /* move to Schlafzimmertüre */
                                              m_moveCommands[m_moveCommands.length] = "304,-1037";
                                          }
                                      
                                          /* Vorzimmertüre */
                                          if (cleanCommands.includes("3") ||  /* Vorzimmer */
                                              cleanCommands.includes("4") ||  /* WC */
                                              cleanCommands.includes("6") ||  /* Badezimmer */
                                              cleanCommands.includes("7"))    /* Kammer */
                                          {
                                              /* move to Vorzimmertüre */
                                              m_moveCommands[m_moveCommands.length] = "-2012,2126";
                                          }
                                      
                                          /* WC Türe */
                                          if (cleanCommands.includes("4"))    /* WC */
                                          {
                                              /* move to WC Türe */
                                              m_moveCommands[m_moveCommands.length] = "-3368,1542";
                                          }
                                      
                                          /* Badezimmertüre */
                                          if (cleanCommands.includes("6"))    /* Badezimmer */
                                          {
                                              /* move to Badezimmer Türe */
                                              m_moveCommands[m_moveCommands.length] = "-5203,1354";
                                          }
                                      
                                          /* Kammer Türe */
                                          if (cleanCommands.includes("7"))    /* Kammer */
                                          {
                                              /* move to Kammer Türe */
                                              m_moveCommands[m_moveCommands.length] = "-5698,2844";
                                          }
                                      
                                          /* set the global clean commands variable */
                                          m_cleanCommands = cleanCommands;
                                      
                                          // force the continuation to start the next program step
                                          m_forceNextCommand = true;
                                      
                                          // print program
                                          console.log("New Cleaning Programm:");
                                          console.log(m_moveCommands);
                                          console.log(m_cleanCommands);
                                      });
                                      
                                      
                                      /* -------------------------------------------------------------------------------- */
                                      /* cyclicly check if the the next command shall be triggered */
                                      schedule('* * * * * *', function () {
                                      
                                          /* handle the timeout function */
                                          /* wait a moment to become the program active */
                                          if (0 < m_timeout)
                                          {
                                              if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val)
                                              {
                                                  m_timeout = 0;
                                                  return;
                                              }
                                              
                                              m_timeout = m_timeout - 1;
                                              return;
                                          }
                                          
                                          /* find out if the robot is still busy or if we force the continuation */
                                          if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val &&
                                              false == m_forceNextCommand) 
                                          {
                                              // console.log("Busy detected.");
                                              return;
                                          }
                                      
                                          m_forceNextCommand = false;
                                      
                                          // console.log("Continue with next step if available.");
                                          
                                          /* print program */
                                          // console.log(m_moveCommands);
                                          // console.log(m_cleanCommands);
                                      
                                          /* execute next move command if needed */
                                          if (0 != m_moveCommands.length)
                                          {
                                              /* get next move command parameter */
                                              const s_move = m_moveCommands.shift();
                                      
                                              console.log("goToPostion " + s_move);
                                      
                                              /* start the move command */
                                              setState("ecovacs-deebot.0.control.extended.goToPosition", s_move);
                                      
                                              m_timeout = 10;
                                      
                                              /* stop the execution of this loop */
                                              return;
                                          }
                                      
                                          /* execute next clean command if needed */
                                          if (0 != m_cleanCommands.length)
                                          {
                                              /* get next clean command parameter */
                                              var s_clean = "";
                                              for (var i = 0; i < m_cleanCommands.length; i++)
                                              {
                                                  s_clean = s_clean + m_cleanCommands[i] + ",";
                                              }
                                              s_clean.substring(0, s_clean.length - 1);
                                      
                                              /* remove the commands that will be processed */
                                              m_cleanCommands = [];
                                      
                                              console.log("spotArea " + s_clean);
                                      
                                              /* start the move command */
                                              setState("ecovacs-deebot.0.control.spotArea", s_clean);
                                      
                                              /* stop the execution of this loop */
                                              return;
                                          }
                                      });
                                      
                                      mrbungle64M Offline
                                      mrbungle64M Offline
                                      mrbungle64
                                      Developer
                                      wrote on last edited by
                                      #254

                                      @thirty8763 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                      setState('ecovacs-deebot.0.control.charge', "1");

                                      setState('ecovacs-deebot.0.control.charge', "1");
                                      

                                      Für den Wert solltest du einen boolean verwenden:

                                      setState('ecovacs-deebot.0.control.charge', true);
                                      

                                      Mich wundert, dass das überhaupt so funktioniert hat

                                      1 Reply Last reply
                                      0
                                      • T Thirty8763

                                        @thirty8763

                                        Ich konnte das Vorhaben dank deiner Unterstützung umsetzen.
                                        Hier der erste Wurf meines Javascripts, vl kanns ja jemand brauchen:

                                        /* -------------------------------------------------------------------------------- */
                                        /* global status variables */
                                        var m_moveCommands = [];
                                        var m_cleanCommands = [];
                                        var m_forceNextCommand = false;
                                        var m_timeout = 0;
                                        
                                        
                                        /* -------------------------------------------------------------------------------- */
                                        /* trigger point to go back to charging */
                                        on({id: '0_userdata.0.Staubsauger.myCharge'}, function (obj) {
                                            console.log('myCharge Start');
                                        
                                            m_moveCommands = [];
                                            m_cleanCommands = [];
                                            
                                            setState('ecovacs-deebot.0.control.charge', "1");
                                        });
                                        
                                        
                                        /* -------------------------------------------------------------------------------- */
                                        /* trigger point to start a cleaning */
                                        on({id: '0_userdata.0.Staubsauger.mySpotArea'}, function (obj) {
                                            console.log('mySpotArea Start');
                                        
                                            /* clear old cleaning program */
                                            m_moveCommands = [];
                                            m_cleanCommands = [];
                                        
                                            /* get the input information where to clean */
                                            var cleanInput = getState('0_userdata.0.Staubsauger.mySpotArea').val.toString();
                                        
                                            /* parse the input */
                                            var cleanCommands = [];
                                            if (cleanInput.includes(","))
                                            {
                                                cleanCommands = cleanInput.split(",");
                                            }
                                            else
                                            {
                                                cleanCommands[0] = cleanInput.toString();
                                            }
                                        
                                            /* add the move commands if needed */
                                        
                                            /* Schlafzimmertüre */
                                            if (cleanCommands.includes("2"))    /* Schlafzimmer */
                                            {
                                                /* move to Schlafzimmertüre */
                                                m_moveCommands[m_moveCommands.length] = "304,-1037";
                                            }
                                        
                                            /* Vorzimmertüre */
                                            if (cleanCommands.includes("3") ||  /* Vorzimmer */
                                                cleanCommands.includes("4") ||  /* WC */
                                                cleanCommands.includes("6") ||  /* Badezimmer */
                                                cleanCommands.includes("7"))    /* Kammer */
                                            {
                                                /* move to Vorzimmertüre */
                                                m_moveCommands[m_moveCommands.length] = "-2012,2126";
                                            }
                                        
                                            /* WC Türe */
                                            if (cleanCommands.includes("4"))    /* WC */
                                            {
                                                /* move to WC Türe */
                                                m_moveCommands[m_moveCommands.length] = "-3368,1542";
                                            }
                                        
                                            /* Badezimmertüre */
                                            if (cleanCommands.includes("6"))    /* Badezimmer */
                                            {
                                                /* move to Badezimmer Türe */
                                                m_moveCommands[m_moveCommands.length] = "-5203,1354";
                                            }
                                        
                                            /* Kammer Türe */
                                            if (cleanCommands.includes("7"))    /* Kammer */
                                            {
                                                /* move to Kammer Türe */
                                                m_moveCommands[m_moveCommands.length] = "-5698,2844";
                                            }
                                        
                                            /* set the global clean commands variable */
                                            m_cleanCommands = cleanCommands;
                                        
                                            // force the continuation to start the next program step
                                            m_forceNextCommand = true;
                                        
                                            // print program
                                            console.log("New Cleaning Programm:");
                                            console.log(m_moveCommands);
                                            console.log(m_cleanCommands);
                                        });
                                        
                                        
                                        /* -------------------------------------------------------------------------------- */
                                        /* cyclicly check if the the next command shall be triggered */
                                        schedule('* * * * * *', function () {
                                        
                                            /* handle the timeout function */
                                            /* wait a moment to become the program active */
                                            if (0 < m_timeout)
                                            {
                                                if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val)
                                                {
                                                    m_timeout = 0;
                                                    return;
                                                }
                                                
                                                m_timeout = m_timeout - 1;
                                                return;
                                            }
                                            
                                            /* find out if the robot is still busy or if we force the continuation */
                                            if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val &&
                                                false == m_forceNextCommand) 
                                            {
                                                // console.log("Busy detected.");
                                                return;
                                            }
                                        
                                            m_forceNextCommand = false;
                                        
                                            // console.log("Continue with next step if available.");
                                            
                                            /* print program */
                                            // console.log(m_moveCommands);
                                            // console.log(m_cleanCommands);
                                        
                                            /* execute next move command if needed */
                                            if (0 != m_moveCommands.length)
                                            {
                                                /* get next move command parameter */
                                                const s_move = m_moveCommands.shift();
                                        
                                                console.log("goToPostion " + s_move);
                                        
                                                /* start the move command */
                                                setState("ecovacs-deebot.0.control.extended.goToPosition", s_move);
                                        
                                                m_timeout = 10;
                                        
                                                /* stop the execution of this loop */
                                                return;
                                            }
                                        
                                            /* execute next clean command if needed */
                                            if (0 != m_cleanCommands.length)
                                            {
                                                /* get next clean command parameter */
                                                var s_clean = "";
                                                for (var i = 0; i < m_cleanCommands.length; i++)
                                                {
                                                    s_clean = s_clean + m_cleanCommands[i] + ",";
                                                }
                                                s_clean.substring(0, s_clean.length - 1);
                                        
                                                /* remove the commands that will be processed */
                                                m_cleanCommands = [];
                                        
                                                console.log("spotArea " + s_clean);
                                        
                                                /* start the move command */
                                                setState("ecovacs-deebot.0.control.spotArea", s_clean);
                                        
                                                /* stop the execution of this loop */
                                                return;
                                            }
                                        });
                                        
                                        mrbungle64M Offline
                                        mrbungle64M Offline
                                        mrbungle64
                                        Developer
                                        wrote on last edited by
                                        #255

                                        @thirty8763

                                        Löst das so schon Dein eigentliches Problem mit der als Wand behandelten Tür?

                                        T 1 Reply Last reply
                                        0
                                        • T Thirty8763

                                          @mrbungle64
                                          Ahhh... Der goToPosition Datenpunkt war nicht sicher weil "Einige weitere experimentelle Features ("control.extended" Kanal)" nicht aktiv gesetzt war.
                                          Ich dachte das ist mit " Native "goToPosition" Funktion benutzen (z.B. T8/T9/N8/X1 Serie)" erledigt aber scheinbar muss man beide experimentellen Features aktivieren.

                                          Super, damit kann ich arbeiten, dann werde ich versuchen immer vorher die entsprechenden Türpositionen anzufahren und erst dann direkt von dort die Reinigung aufnehmen.

                                          Die nächste Ausbaustufe könnte sein, auch noch Türsensoren anzubringen. Wenn eine Türe verschlossen ist braucht er es nicht mehr versuchen den/die dahinterliegenden Räume anzufahren.

                                          mrbungle64M Offline
                                          mrbungle64M Offline
                                          mrbungle64
                                          Developer
                                          wrote on last edited by
                                          #256

                                          @thirty8763 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                          Ahhh... Der goToPosition Datenpunkt war nicht sicher weil "Einige weitere experimentelle Features ("control.extended" Kanal)" nicht aktiv gesetzt war.
                                          Ich dachte das ist mit " Native "goToPosition" Funktion benutzen (z.B. T8/T9/N8/X1 Serie)" erledigt aber scheinbar muss man beide experimentellen Features aktivieren.

                                          Du hast recht. Ich habe das nun so angepasst, dass man nur noch eins von beidem aktiviert haben muss.

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          714

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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