NEWS
IRobot Roomba Adapter
-
Hi zusammen,
ich habe einen s9 und habe mir den Roomba Adapter im IOBroker installiert.
Die Kommandos unter .commands wie Start, Stop ... funktionieren gut.
Jedoch wundert es mich das keine Bereichsreinigung möglich ist, also habe ich mich an '_runCommand' gemacht.
Egal was ich dort übergebe ich bekomme so gar kein Feedback, also keinen Fehler und nix.Ich hätte gedacht das dieses Kommando das richtige sei:
'{"command" : "cleanroom","ordered": 1,"pmap_id": "meine id","regions": [{ "region_id": "12"},{ "region_id": "13"}],"user_pmapv_id": "meine id"}'
Ich habe auch leider kein Erfolg gehabt dorita980 in einem Skript zu verwenden:
var dorita980 = require('dorita980'); var robi= new dorita980.Local('???', ':1:1596011664:??', '172.xx.xx.xx'); robi.on('connect', init); function init () { if (robi) { log("init"); robi.getRobotState(['lastCommand']).then((actualState) => { log(actualState); }); } }
Kann mir jemand damit bitte helfen, hat das schon mal jemand im IOBroker gemacht ?
-
Hallo zusammen, hallo @Zefau ,
ich habe mal ein wenig Recherche betrieben. Ich finde Deinen Adapter super und würde gerne die Node _runCommand benutzen.
Jedoch tut sich beim Benutzen dieser so garnichts.
So wie ich Deinen Code verstehe (roomba.js) Zeile 151// run command else if (action == '_runCommand' && state.ack !== true) { let command = { command: state.val, time: Date.now() / 1000 | 0, initiator: 'localApp' }; robot.publish('cmd', JSON.stringify(command), () => { adapter.log.info('Ran command ' + state.val + '!'); }); }
läßt Du dort nur ein Kommando wir 'start' o.ä., ohne Parameter zu, da der eigentliche Commandstring erst via stringify erzeugt wird.
Also möchte ich ein Command wie (btw: Dieses Command funktioniert wenn ich eine Verbindung zum s9 via MQTT Explorer aufbaue){ "command": "start", "ordered": 1, "params": { "carpetBoost": false, "noAutoPasses": false, "twoPass": false, "vacHigh": false }, "pmap_id": "???", "regions": [ { "region_id": "12", "type": "rid" } ], "user_pmapv_id": "???" }
los schicken, wird folgendes in die Methode publish geschickt:
{ command: { "command": "start", "ordered": 1, "params": { "carpetBoost": false, "noAutoPasses": false, "twoPass": false, "vacHigh": false }, "pmap_id": "???", "regions": [ { "region_id": "12", "type": "rid" } ], "user_pmapv_id": "???" }, time: Date.now() / 1000 | 0, initiator: 'localApp' }
... und das dürfte einen Fehler produzieren.
Ich möchte Dir nicht vorgreifen, jedoch sollte der case für _runCommand nicht so aussehen ?// run command else if (action == '_runCommand' && state.ack !== true) { robot.publish('cmd', state.val, () => { adapter.log.info('Ran command ' + state.val + '!'); }); }
Edit: Ich habe gerade meine lokale roomba.js dahingehend geändert. Ich denke der Case wird nicht angesprungen..
// run command else if (action == '_runCommand' && state.ack !== true) { adapter.log.info('_runCommand modify'); robot.publish('cmd', state.val, () => { adapter.log.info('Ran command ' + state.val + '!'); }); }
Ich kenne die Internas von IOBroker nicht und dachte es wäre die Stelle im Code die ausgeführt wird sobald ich den Inhalt der Node 'roomba.0.commands._runCommand' verändere. Ich sehe auch im Log nicht den erwarteten Output '_runCommand modify'
Liege ich damit falsch ?Viele Grüße
Kai
-
Hallo zusammen,
entschuldigt bitte, jedoch es hat mir keine Ruhe gelassen.
Ich habe die roomba.js dahin gehend angepasst sodass der _runCommand Befehl funktioniert.@Zefau : es wäre super wenn Du das prüfen könntest und ggf. einchecken.
Ich habe folgendes angepasst:
Zeile 151
else if (action == '_runCommand' && state.ack !== true) { robot.publish('cmd', state.val, () => { adapter.log.info('Ran command ' + state.val + '!'); }); }
Zeile 616
if (node.node !== undefined) { let leafnode = node.node.substr(node.node.lastIndexOf('.')+1); //adapter.log.info('Leafnode: ' + leafnode + '.'); if ((leafnode) && (leafnode === '_runCommand' ) && listeners[node.node] === undefined) { adapter.log.info('Subscripe Leafnode: ' + leafnode + '.'); adapter.subscribeStates(node.node); // attach state listener listeners[node.node] = node; } adapter.getState(node.node, function(err, res) { if ((err !== null || !res) && (node.node !== undefined && node.description !== undefined)) library.set(node, ''); }); }
Ich habe es bei mir getestet und das _runCommand funktioniert.
{ "command": "start", "ordered": 1, "params": { "carpetBoost": false, "noAutoPasses": false, "twoPass": false, "vacHigh": false }, "pmap_id": "yourmapid", "regions": [ { "region_id": "12", "type": "rid" } ], "user_pmapv_id": "yourid" }
Ich bekomme immer wieder ein "Cannot read property 'toString' of null" aber da bin ich dran.
Ich denke das habe ich mir eingefangen als ich die Nodes etwas verändert habe.LG und have fun
Kai -
@Ashuan Danke dir! Bitte Repo forken und dann einfach einen pull request
-
Alles klar, mache ich so.
-
@eric2905 wie hast du deinen den umgebaut? Ich habe einen Roomba 605
-
@HeinrichB Ich habe schon ewig keinen Roomba mehr ... der musste einem Xiaomi weichen.
Ich hatte seinerzeit die WLAN-Topplate drauf.Gruß,
Eric -
Ich hatte auch die Meldung
Cannot read property 'toString' of null
im Log.Ursache war anscheinend die fehlenden Einträge unter:
roomba.0.missions.currentNachdem ich die Einträge von Hand hinzugefügt habe werden diese vom Adapter verwendet und im Log gibt es keinen Fehler mehr.
-
Ich habe heute festgestellt das es bei mir ein kleines Problem mit dem i7 gibt.
Job 211 wurde wie geplant gestartet und sah auch am Anfang sehr gut aus!
Karte wurde gezeichnet, Zeit und Fläche wurde hoch gezählt.
Dann musste der Akku nachgeladen werden.
Im Anschluss war es immer noch Job 211 und die Fläche war auch noch die alte.
Allerdings wurde die Zeit (Startzeit und Dauer) und die Karte zurückgesetzt und dann nur noch mit den Daten nach dem laden gefüttert. Dies ist auch nach Abschluss so geblieben.
Somit ist die History für mich eigentlich Wertlos.
Job 211 zeigt die falsche Zeit und nur einen Teil der Karte...
Konnte jemand anders das schon einmal beobachten? -
@fvp said in IRobot Roomba Adapter:
Ich hatte auch die Meldung
Cannot read property 'toString' of null
im Log.Ursache war anscheinend die fehlenden Einträge unter:
roomba.0.missions.currentNachdem ich die Einträge von Hand hinzugefügt habe werden diese vom Adapter verwendet und im Log gibt es keinen Fehler mehr.
Moin, bei mir fehlen die Einträge auch, was genau hast du eingetragen und was muss ich beachten?
Danke und schöne Grüße
-
Vieleicht hat @Zefau noch eine bessere Variante die Datenpunkte zu erstellen?
Hier mal ein Screenshot der Datenpunkte.
und hier die RAW Einträge
{ "from": "system.adapter.roomba.0", "user": "system.user.admin", "ts": 1573151255191, "common": { "name": "All data of current mission", "role": "json", "type": "string", "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "roomba.0.missions.current._data", "type": "state" }
{ "from": "system.adapter.roomba.0", "user": "system.user.admin", "ts": 1573151255194, "common": { "name": "Cycle mode of current mission", "role": "text", "type": "string", "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "roomba.0.missions.current.cycle", "type": "state" }
{ "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597476142637, "common": { "name": "Timestamp when the current mission has ended", "role": "value", "type": "string", "desc": "Timestamp when the current mission has ended", "def": "", "read": true, "write": true }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "roomba.0.missions.current.ended", "type": "state" }
{ "_id": "roomba.0.missions.current.endedDateTime", "type": "state", "common": { "name": "DateTime when the current mission has ended", "role": "text", "type": "string", "desc": "DateTime when the current mission has ended", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597476060069, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "common": { "name": "Indicates an error during last mission", "role": "indicator", "type": "boolean", "write": false }, "type": "state", "native": {}, "from": "system.adapter.roomba.0", "user": "system.user.admin", "ts": 1589192844012, "_id": "roomba.0.missions.current.error", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
{ "_id": "roomba.0.missions.current.id", "type": "state", "common": { "name": "ID of current mission", "role": "text", "type": "string", "desc": "ID of current mission", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475913235, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.initiator", "type": "state", "common": { "name": "Initiator of current mission", "role": "text", "type": "string", "desc": "Initiator of current mission", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475853384, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.mapHTML", "type": "state", "common": { "name": "HTML for the map of current mission", "role": "text", "type": "string", "desc": "HTML for the map of current mission", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475796745, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.mapImage", "type": "state", "common": { "name": "Image of the map of current mission", "role": "text", "type": "string", "desc": "Image of the map of current mission", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475737183, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.mapSize", "type": "state", "common": { "name": "Size (in px) of the map", "role": "json", "type": "string", "desc": "Size (in px) of the map", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475646885, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.path", "type": "state", "common": { "name": "Path of current mission", "role": "text", "type": "string", "desc": "Path of current mission", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475576123, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "common": { "name": "Phase of current mission", "role": "text", "type": "string", "write": false }, "type": "state", "native": {}, "from": "system.adapter.roomba.0", "user": "system.user.admin", "ts": 1589192844011, "_id": "roomba.0.missions.current.phase", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
{ "from": "system.adapter.roomba.0", "user": "system.user.admin", "ts": 1573151255194, "common": { "name": "Runtime in seconds of the current mission", "role": "value", "type": "string", "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "roomba.0.missions.current.runtime", "type": "state" }
{ "_id": "roomba.0.missions.current.sqm", "type": "state", "common": { "name": "Cleaned square-meters of current mission", "role": "", "type": "string", "desc": "Cleaned square-meters of current mission", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475207130, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.started", "type": "state", "common": { "name": "Timestamp when the current mission has started", "role": "value", "type": "string", "desc": "Timestamp when the current mission has started", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475455408, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
{ "_id": "roomba.0.missions.current.startedDateTime", "type": "state", "common": { "name": "DateTime when the current mission has started", "role": "text", "type": "string", "desc": "DateTime when the current mission has started", "def": "", "read": true, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597475332114, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
-
@fvp Danke, werde das am Wochenende mal testen, hab schon ziemlich lange mit dem Problem zutun, aber darauf die Punkte manuell einzutragen, bin ich bisher nicht gekommen.
LG -
@fvp hat super geklappt!
Zuerst wurden mir zwar die Werte angezeigt jedoch nicht ausgegeben wenn sie abgefragt wurden, musste den jeweiligen Wert einmal manuell updaten dann hat’s auch geklappt!
Einzig nur, mir werden noch die Werte angegeben, von der letzten Aufgabe bevor dieses Problem auftrat, hoffe das aktualisiert sich mit der nächsten Aufgabe wieder...
Danke nochmal für dein Hinweis
-
Sind aktuell irgend welche Probleme mit dem Roomba Adapter 1.1.1. bekannt? Ich frage nur, weil ich heute festgestellt habe, das Aufruf des Webinterface des Adapter nicht mehr funktioniert.
Die Objekt Datenpunkte und die Canvas Karte wird aber brav erstellt. Nur der Aufruf des Web Interface liefert das hier. Im LOG gibt es keine Fehlermeldung dazu.BTW @Zefau - magst du hier vielleicht auch beitreten?
https://forum.iobroker.net/topic/36313/willkommen-beim-iobroker-discord-channel
-
@JB_Sullivan kann ich nicht bestätigen. V1.1.1 und Web Inerface ok.
Debian VM auf QNAP Host. -
@fvp Aus dem heimischen Netzwerk heraus, keine Chance. Gehe ich aber Remote über die ioB Cloud drauf funktioniert es .
BTW - ist eigentlich bei den Datenpunkten die json Tabelle mit den History Daten nicht mehr an Board? Die hat sich bei mir seit "100 Jahren" nicht mehr aktualisiert und als ich den Datenpunkt gelöscht habe und nach einem Instanz Neustart auf eine aktualisierte jason Datenpunkt Tabelle gehofft hatte, war der Datenpunkt ganz verschwunden.
Ist der mal irgend einem Update zum Opfer gefallen?
-
@JB_Sullivan Da kann ich dir leider nicht so recht helfen. Kann dir nur sagen das es hier im LAN noch funktioniert.
Bzgl. dem Historydatenpunkt:
Dieser war bei mir auch nicht mehr vorhanden. Auch hier hat das manuelle erstellen geholfen:
{ "common": { "name": "History of all missions", "role": "json", "type": "string", "write": false }, "type": "state", "native": {}, "from": "system.adapter.roomba.0", "user": "system.user.admin", "ts": 1573151255189, "_id": "roomba.0.missions.history", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@Ashuan ich würde den i7 auch gerne in bestimmte Räume schicken. Leider habe ich deine Erklärung noch nicht ganz verstanden
Ich habe unter /opt/iobroker/node_modules/iobroker.roomba eine roomba.js gefunden und diese durch deine ersetzt.
Soweit korrekt ?
Was muss ich den nun unter 'roomba.0.commands._runCommand' eingeben damit Wohnzimmer und Flur gesaugt wird ?
Vielen Dank!
-
Moin ich hab jetzt wieder das Problem, dass meine Objekte (current) nicht aktualisiert werden
Nach dem ich diese manuell wieder hinzugefügt habe, hat bis heute alles funktioniert, jetzt wird mir in den Logs wieder angezeigt „Canvas not installed!“.
Canvas lief von Anfang an lange problemlos, nun wird mir ständig aufs Neue dieses problem gemeldet, wie kann es sein, dass sich canvas immer verabschiedet?
Oder wo könnte das Problem liegen?Roomba 1.1.1, Node v12.16.3, js-Controller 3.1.4
Edit: Nachdem ich canvas neu installiert habe, wird mir kein Fehler in den Logs angezeigt, jedoch (restored last mission (#601).) das wäre die letzte mission bevor der Fehler aufgetreten ist, ich schätze es sollte die nächste wieder aktualisiert werden, aber da muss doch was nicht stimmen!
-
@fvp Hallo fvp
Ashuan hat mir selber auch bereits geholfen, daher kann ich dir das gerne erklären wenn du willst.
Schreib mir einfach eine PN, alles weitere dann dort.Gruss Kusi