NEWS
Ecovacs Deebot Adapter: Status und Feedback
-
@thirty8763 sagte in Ecovacs Deebot Adapter: Status und Feedback:
- 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
- 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
- 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. -
@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.
-
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; } });
-
@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
-
Löst das so schon Dein eigentliches Problem mit der als Wand behandelten Tür?
-
@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.
-
Die Version 1.4.11 ist seit heute im Stable Repo verfügbar
Änderungen seit der letzten Stable (1.4.8):
-
@mrbungle64 sagte in Ecovacs Deebot Adapter: Status und Feedback:
Die Version 1.4.11 ist seit heute im Stable Repo verfügbar
Änderungen seit der letzten Stable (1.4.8):
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:
-
@mrbungle64 said in Ecovacs Deebot Adapter: Status und Feedback:
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.
-
@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!
-
@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
-
@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. ) -
@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 5Dies 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)"). -
Hallo Leute bei mir macht der Adapter seit Samstag Probleme foldendes steht im Log.
Kann mir hier jemand Helfen.Danke
-
@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? -
@mrbungle64 am Netzwerk hat sich nichts geändert aber was soll das für eine IP Adresse sein der Sauger hat eine ganz andere?
-
@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.
-
@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
-
Benutzt du einen WLAN Repeater bzw. ein Mesh? Ich hatte da auch mal Probleme mit 2 Fritz!Boxen
-
@mrbungle64 bei mir ist alles unifi und hat jetzt auch ca 1 Jahr ohne probleme geklappt über die App ist der Sauger erreichbar