NEWS
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 > StandardWischmodus (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 -
@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 > StandardWischmodus (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/933171So hatte ich es dann auch implementiert:
https://forum.iobroker.net/post/933874 -
@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 > StandardWischmodus (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.
-
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 ...
-
@mrbungle64 gerne!
Aber Du denkst nicht an heute noch? -
@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
-
@mrbungle64 nun für mich nicht.
Aber für jemand anderen der hier sitztWir hätten aber doch noch immer das debug-Problem. Da die Freigabe ja kein Passwort hat.
Man musste ja ein VPN-Tunnel erstellen -
@jm3west sagte in Ecovacs Deebot Adapter: Status und Feedback:
@mrbungle64 nun für mich nicht.
Aber für jemand anderen der hier sitztAlles 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 erstellenDas 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
-
@mrbungle64 ach so, das habe ich falsch verstanden.
OK. lass' uns morgen darüber quatschen.Melde dich wenn du morgen bereit bist
-
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:
- 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.
- 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.
- 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? -
@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!