Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Ecovacs Deebot Adapter: Status und Feedback

NEWS

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

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

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

Ecovacs Deebot Adapter: Status und Feedback

Geplant Angeheftet Gesperrt Verschoben Entwicklung
deebotecovacsecovacs-deebotecovacs-deebot adaptersaugrobotervacuum
576 Beiträge 36 Kommentatoren 141.7k Aufrufe 31 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.
  • 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
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antworten Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antworten Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #255

            @thirty8763

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

            T 1 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • mrbungle64M mrbungle64

                (Anmerkung: Der folgende Text wurde am 03.06.2022 gekürzt und danach immer wieder aktualisiert)

                Hallo zusammen,

                ich möchte hier über den Status des Ecovacs Deebot Adapters berichten

                und natürlich auch nach Eurer Meinung fragen, ob es noch "offene Baustellen" gibt - oder ob Ihr soweit alles damit umsetzen könnt, was Ihr Euch so vorgestellt habt ( Bitte dabei aber realistisch bleiben und auch den aktuellen Status berücksichtigen 😉 ).


                Aktuelle Versionen

                Stadium Version Releasedatum
                Stable 1.4.14 04.02.2024 / 20.02.2024
                Beta 1.4.15 16.03.2024
                Alpha 1.4.16-alpha.2 09.05.2024

                Bekannte (größere) Probleme

                • Aktuell gibt es (mehr oder weniger häufig) auf 32-Bit Systemen Probleme mit der Erstellung vom Map Image.
                  • Das betrifft hauptsächlich Raspberry Pi Systeme, welche i.d.R. noch mit einem 32-Bit Linux betrieben werden. Das wird offensichtlich durch eine System-nahe Komponente von bzw. unter der Canvas Library verursacht - daher kann ich aktuell nichts machen und muss an anderer Stelle gefixt werden. Auch eine ältere Version von Canvas hilft nicht weiter, da der betroffene Teil bei der Installation i.d.R. neu erstellt wird.
                • Die Generierung der aktuellen Map ("map.[mapID].loadMapImage" bzw. "map64") funktioniert noch nicht bei den Deebot X1, X2, T20 und T30 Serien

                Weitere Informationen:

                • Informationen und Praxistipps (GitHub)
                • Datenpunkte (GitHub)
                • FAQ (GitHub)

                Möglichkeit für sonstiges Feedback:

                • Bug reports und feature requests (GitHub)
                • Informationen und Praxistipps (Forum)

                Nützliche Links:

                • Deebot Staubsauger in VIS integrieren - ioBroker Tutorial | verdrahtet.info
                • Ideen-Sammlung "Views für ozmo Deebot" (für Deebot Geräte im Allgemeinen)
                mrbungle64M Offline
                mrbungle64M Offline
                mrbungle64
                Developer
                schrieb am zuletzt editiert von
                #257

                @mrbungle64

                Die Version 1.4.11 ist seit heute im Stable Repo verfügbar 🙂

                Änderungen seit der letzten Stable (1.4.8):

                • Version 1.4.11
                • Version 1.4.10
                • Version 1.4.9
                mrbungle64M 1 Antwort Letzte Antwort
                0
                • mrbungle64M mrbungle64

                  @mrbungle64

                  Die Version 1.4.11 ist seit heute im Stable Repo verfügbar 🙂

                  Änderungen seit der letzten Stable (1.4.8):

                  • Version 1.4.11
                  • Version 1.4.10
                  • Version 1.4.9
                  mrbungle64M Offline
                  mrbungle64M Offline
                  mrbungle64
                  Developer
                  schrieb am zuletzt editiert von mrbungle64
                  #258

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

                  @mrbungle64

                  Die Version 1.4.11 ist seit heute im Stable Repo verfügbar 🙂

                  Änderungen seit der letzten Stable (1.4.8):

                  • Version 1.4.11
                  • Version 1.4.10
                  • Version 1.4.9

                  Einen Teil der Neuerungen werde ich in diesem Artikel genauer beschreiben bzw. in die Beiträge einfließen lassen (sind mit 🆕 gekennzeichnet)

                  Aktuell sind folgende Beiträge hinzugekommen:

                  • Automatisches Anhalten
                  • Karte der letzten Reinigung
                  • Aktuelle Karte erstellen
                  • "Spot Areas" für die nächste Bereichs-Reinigung markieren
                  S 1 Antwort Letzte Antwort
                  0
                  • mrbungle64M mrbungle64

                    @thirty8763

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

                    T Offline
                    T Offline
                    Thirty8763
                    schrieb am zuletzt editiert von
                    #259

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

                    @thirty8763

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

                    Absolut!

                    Funktioniert nun perfekt.
                    Unabhängig ob bei der letzten Fahrt die Türen offen waren oder nicht, findet der Staubsauger immer in die Räume.

                    Ich überlege jetzt noch, dass ich das ganze mit Türsensoren kombiniere und automatisch die nicht zugänglichen Räume im Reinigungsprogramm ausspare. Ist aber wahrscheinlich nicht nötig. Früher oder später gibt er ja eh auf, wenn er nicht in einen Raum findet. Er fährt halt dann nur wirr herum und sucht nach einen Zugang zum Raum. Das könnte man sich damit ersparen.

                    1 Antwort Letzte Antwort
                    1
                    • mrbungle64M mrbungle64

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

                      @mrbungle64

                      Die Version 1.4.11 ist seit heute im Stable Repo verfügbar 🙂

                      Änderungen seit der letzten Stable (1.4.8):

                      • Version 1.4.11
                      • Version 1.4.10
                      • Version 1.4.9

                      Einen Teil der Neuerungen werde ich in diesem Artikel genauer beschreiben bzw. in die Beiträge einfließen lassen (sind mit 🆕 gekennzeichnet)

                      Aktuell sind folgende Beiträge hinzugekommen:

                      • Automatisches Anhalten
                      • Karte der letzten Reinigung
                      • Aktuelle Karte erstellen
                      • "Spot Areas" für die nächste Bereichs-Reinigung markieren
                      S Offline
                      S Offline
                      senger1985
                      schrieb am zuletzt editiert von
                      #260

                      @mrbungle64 einen Wunderschönen.

                      Sag mal, wie komme ich denn an den Datenpunkt:
                      map.[mapID].loadMapImage
                      ran, den in deinem Beitrag beschrieben wird?

                      Ich habe den V 1.4.11 installiert.

                      Und danke, für deine super Arbeit! TOP!

                      mrbungle64M 1 Antwort Letzte Antwort
                      0
                      • S senger1985

                        @mrbungle64 einen Wunderschönen.

                        Sag mal, wie komme ich denn an den Datenpunkt:
                        map.[mapID].loadMapImage
                        ran, den in deinem Beitrag beschrieben wird?

                        Ich habe den V 1.4.11 installiert.

                        Und danke, für deine super Arbeit! TOP!

                        mrbungle64M Offline
                        mrbungle64M Offline
                        mrbungle64
                        Developer
                        schrieb am zuletzt editiert von
                        #261

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

                        @mrbungle64 einen Wunderschönen.

                        Hi @senger1985

                        Sag mal, wie komme ich denn an den Datenpunkt:
                        map.[mapID].loadMapImage
                        ran, den in deinem Beitrag beschrieben wird?

                        Der muss bei manchen Modellen noch über die Adapter-Einstellungen aktiviert werden:
                        "Funktion zum Erzeugen einer statischen Map ("map.[mapID].loadMapImage")"

                        Das werde ich dem Beitrag noch ergänzen und bei weiteren Modellen zur Standard-Einstellung machen 🙂

                        Und danke, für deine super Arbeit! TOP!

                        Danke für das Feedback 👍

                        S 1 Antwort Letzte Antwort
                        0
                        • mrbungle64M mrbungle64

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

                          @mrbungle64 einen Wunderschönen.

                          Hi @senger1985

                          Sag mal, wie komme ich denn an den Datenpunkt:
                          map.[mapID].loadMapImage
                          ran, den in deinem Beitrag beschrieben wird?

                          Der muss bei manchen Modellen noch über die Adapter-Einstellungen aktiviert werden:
                          "Funktion zum Erzeugen einer statischen Map ("map.[mapID].loadMapImage")"

                          Das werde ich dem Beitrag noch ergänzen und bei weiteren Modellen zur Standard-Einstellung machen 🙂

                          Und danke, für deine super Arbeit! TOP!

                          Danke für das Feedback 👍

                          S Offline
                          S Offline
                          senger1985
                          schrieb am zuletzt editiert von
                          #262

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

                          Funktion zum Erzeugen

                          Merci gefunden und aktiviert.
                          Mal gucken, was man noch so alles "neues" mit dem Adapter anstellen kann.(Kennst mich ja. 😁 )

                          1 Antwort Letzte Antwort
                          1
                          • 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
                            schrieb am zuletzt editiert von
                            #263

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

                            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

                            Dies habe ich nun korrigiert.
                            In zukünftigen Versionen darf der Wert auch 0 sein und der Name vom Datenpunkt ist ebenfalls korrigiert ("Volume for voice and sounds (0-10)").

                            1 Antwort Letzte Antwort
                            0
                            • M Offline
                              M Offline
                              michael 1975
                              schrieb am zuletzt editiert von
                              #264

                              Hallo Leute bei mir macht der Adapter seit Samstag Probleme foldendes steht im Log.
                              Kann mir hier jemand Helfen.

                              sauger.JPG

                              Danke

                              mrbungle64M 1 Antwort Letzte Antwort
                              0
                              • M michael 1975

                                Hallo Leute bei mir macht der Adapter seit Samstag Probleme foldendes steht im Log.
                                Kann mir hier jemand Helfen.

                                sauger.JPG

                                Danke

                                mrbungle64M Offline
                                mrbungle64M Offline
                                mrbungle64
                                Developer
                                schrieb am zuletzt editiert von mrbungle64
                                #265

                                @michael-1975 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                Hallo Leute bei mir macht der Adapter seit Samstag Probleme foldendes steht im Log.
                                Kann mir hier jemand Helfen.

                                Das Modul Axios schmeißt einen Fehler, dass die Adresse 3.68.172.231 auf Port 443 nicht erreichbar ist.
                                Hat sich bei dir irgendwas am Netzwerk bzw. der Internet-Verbindung geändert?

                                M 1 Antwort Letzte Antwort
                                0
                                • mrbungle64M mrbungle64

                                  @michael-1975 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                  Hallo Leute bei mir macht der Adapter seit Samstag Probleme foldendes steht im Log.
                                  Kann mir hier jemand Helfen.

                                  Das Modul Axios schmeißt einen Fehler, dass die Adresse 3.68.172.231 auf Port 443 nicht erreichbar ist.
                                  Hat sich bei dir irgendwas am Netzwerk bzw. der Internet-Verbindung geändert?

                                  M Offline
                                  M Offline
                                  michael 1975
                                  schrieb am zuletzt editiert von
                                  #266

                                  @mrbungle64 am Netzwerk hat sich nichts geändert aber was soll das für eine IP Adresse sein der Sauger hat eine ganz andere?

                                  mrbungle64M 1 Antwort Letzte Antwort
                                  0
                                  • M michael 1975

                                    @mrbungle64 am Netzwerk hat sich nichts geändert aber was soll das für eine IP Adresse sein der Sauger hat eine ganz andere?

                                    mrbungle64M Offline
                                    mrbungle64M Offline
                                    mrbungle64
                                    Developer
                                    schrieb am zuletzt editiert von mrbungle64
                                    #267

                                    @michael-1975 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                    @mrbungle64 am Netzwerk hat sich nichts geändert aber was soll das für eine IP Adresse sein der Sauger hat eine ganz andere?

                                    Die Adresse gehört zur Amazon Cloud (Edit: oder Alibaba Cloud - da werde ich gerade nicht so schlau draus) und wird von Ecovacs verwendet.

                                    M 1 Antwort Letzte Antwort
                                    0
                                    • mrbungle64M mrbungle64

                                      @michael-1975 sagte in Ecovacs Deebot Adapter: Status und Feedback:

                                      @mrbungle64 am Netzwerk hat sich nichts geändert aber was soll das für eine IP Adresse sein der Sauger hat eine ganz andere?

                                      Die Adresse gehört zur Amazon Cloud (Edit: oder Alibaba Cloud - da werde ich gerade nicht so schlau draus) und wird von Ecovacs verwendet.

                                      M Offline
                                      M Offline
                                      michael 1975
                                      schrieb am zuletzt editiert von
                                      #268

                                      @mrbungle64 wie gesagt am netzwerk hat sich nicht geändert wenn ich den Adapter neu starten dann geht es eine Zeitlang gut und irgentwann gehts dann nicht mehr

                                      mrbungle64M 2 Antworten Letzte Antwort
                                      0
                                      • M michael 1975

                                        @mrbungle64 wie gesagt am netzwerk hat sich nicht geändert wenn ich den Adapter neu starten dann geht es eine Zeitlang gut und irgentwann gehts dann nicht mehr

                                        mrbungle64M Offline
                                        mrbungle64M Offline
                                        mrbungle64
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #269

                                        @michael-1975

                                        Benutzt du einen WLAN Repeater bzw. ein Mesh? Ich hatte da auch mal Probleme mit 2 Fritz!Boxen

                                        M 1 Antwort Letzte Antwort
                                        0
                                        • mrbungle64M mrbungle64

                                          @michael-1975

                                          Benutzt du einen WLAN Repeater bzw. ein Mesh? Ich hatte da auch mal Probleme mit 2 Fritz!Boxen

                                          M Offline
                                          M Offline
                                          michael 1975
                                          schrieb am zuletzt editiert von
                                          #270

                                          @mrbungle64 bei mir ist alles unifi und hat jetzt auch ca 1 Jahr ohne probleme geklappt über die App ist der Sauger erreichbar

                                          mrbungle64M 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

                                          756

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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