NEWS
IRobot Roomba Adapter
-
Also,
Ich habe hier ein Skript entwickelt, was genau das tut, was du zu suchen scheinst:https://www.kreyenborg.koeln/irobot-steuerung-in-iobroker/
Gruß,
Stephan -
Also,
Ich habe hier ein Skript entwickelt, was genau das tut, was du zu suchen scheinst:https://www.kreyenborg.koeln/irobot-steuerung-in-iobroker/
Gruß,
Stephan@wendy2702 sagte in IRobot Roomba Adapter:
@igor123 Wie heisst denn deine Frau ?
Spass beiseite, ohne Sprachassistenten wirst du es nur schwer umsetzen können.
Also Alexa, Google Home oder Siri wirst du wohl verwenden müssen.
Hab auch ihren Namen gerufen, tat sich aber auch nix 😄
Suche etwas ohne sprachassistenten
@gezi70 sagte in IRobot Roomba Adapter:
@igor123 als du schriebst: "wie kann ich dem Roomba nun sagen, reinige das Wohnzimmer..." war ich eigentlich der Meinung du meinst wirklich eine Sprachaufforderung. :grinning:
Guck mal hier: https://forum.iobroker.net/post/497945
Weiter oben steht, wie du die Zonen herausfinden kannst.Sry, falsch ausgedrückt :-)
War nicht per Sprache gedacht sondern direkt via iobroker
Schaue ich mir gleich morgen an, thx!
@kusi sagte in IRobot Roomba Adapter:@kusi sagte in IRobot Roomba Adapter:
Die Räume:
@igor123
Sieh dir hier mein Post an, da ist alles erklärt.Schaue ich mir auch gleich an, Dankeschön!
@skb sagte in IRobot Roomba Adapter:
Also,
Ich habe hier ein Skript entwickelt, was genau das tut, was du zu suchen scheinst:https://www.kreyenborg.koeln/irobot-steuerung-in-iobroker/
Gruß,
StephanAh, da gibts also eh bereits was fertiges, danke dir!
Teste ich die nächsten tage ausGibt es eigentlich schon eine Lösung für dieses "Loading States"-Problem beim Aufrufen der Roomba-Seite?
Thx
Lg -
@wendy2702 sagte in IRobot Roomba Adapter:
@igor123 Wie heisst denn deine Frau ?
Spass beiseite, ohne Sprachassistenten wirst du es nur schwer umsetzen können.
Also Alexa, Google Home oder Siri wirst du wohl verwenden müssen.
Hab auch ihren Namen gerufen, tat sich aber auch nix 😄
Suche etwas ohne sprachassistenten
@gezi70 sagte in IRobot Roomba Adapter:
@igor123 als du schriebst: "wie kann ich dem Roomba nun sagen, reinige das Wohnzimmer..." war ich eigentlich der Meinung du meinst wirklich eine Sprachaufforderung. :grinning:
Guck mal hier: https://forum.iobroker.net/post/497945
Weiter oben steht, wie du die Zonen herausfinden kannst.Sry, falsch ausgedrückt :-)
War nicht per Sprache gedacht sondern direkt via iobroker
Schaue ich mir gleich morgen an, thx!
@kusi sagte in IRobot Roomba Adapter:@kusi sagte in IRobot Roomba Adapter:
Die Räume:
@igor123
Sieh dir hier mein Post an, da ist alles erklärt.Schaue ich mir auch gleich an, Dankeschön!
@skb sagte in IRobot Roomba Adapter:
Also,
Ich habe hier ein Skript entwickelt, was genau das tut, was du zu suchen scheinst:https://www.kreyenborg.koeln/irobot-steuerung-in-iobroker/
Gruß,
StephanAh, da gibts also eh bereits was fertiges, danke dir!
Teste ich die nächsten tage ausGibt es eigentlich schon eine Lösung für dieses "Loading States"-Problem beim Aufrufen der Roomba-Seite?
Thx
Lg@igor123 sagte in IRobot Roomba Adapter:
Gibt es eigentlich schon eine Lösung für dieses "Loading States"-Problem beim Aufrufen der Roomba-Seite?
Ja, ersetze die letzten beiden Ziffern der IP des Roomba (vor dem Doppelpunkt) durch die Ziffern der IP des ioBrokers.
-
@igor123 sagte in IRobot Roomba Adapter:
Gibt es eigentlich schon eine Lösung für dieses "Loading States"-Problem beim Aufrufen der Roomba-Seite?
Ja, ersetze die letzten beiden Ziffern der IP des Roomba (vor dem Doppelpunkt) durch die Ziffern der IP des ioBrokers.
@gezi70 sagte in IRobot Roomba Adapter:
@igor123 sagte in IRobot Roomba Adapter:
Gibt es eigentlich schon eine Lösung für dieses "Loading States"-Problem beim Aufrufen der Roomba-Seite?
Ja, ersetze die letzten beiden Ziffern der IP des Roomba (vor dem Doppelpunkt) durch die Ziffern der IP des ioBrokers.
Ist derzeit bei mir der Fall & es kommt eben die Meldung
iobroker-IP:8082/roomba/index.htmlWenn ich die io vom irobot +den rest von oben nehmen lädt es ne Ewigkeit und es wird nix angezeigt
-
@gezi70 sagte in IRobot Roomba Adapter:
@igor123 sagte in IRobot Roomba Adapter:
Gibt es eigentlich schon eine Lösung für dieses "Loading States"-Problem beim Aufrufen der Roomba-Seite?
Ja, ersetze die letzten beiden Ziffern der IP des Roomba (vor dem Doppelpunkt) durch die Ziffern der IP des ioBrokers.
Ist derzeit bei mir der Fall & es kommt eben die Meldung
iobroker-IP:8082/roomba/index.htmlWenn ich die io vom irobot +den rest von oben nehmen lädt es ne Ewigkeit und es wird nix angezeigt
-
@igor123 bei mir sieht's so aus:

Die Seite ist halt leer, weil der Adapter nicht mehr aufzeichnet. Aber sie wird noch aufgerufen...
-
@igor123 gehst du direkt von der Übersichtsseite rein?
Während dort beim Aufrufen der Seite die IP des Roomba ewig leiert, gibst du mal die beiden Ziffern (wie oben gesagt) ein. Wenn dann die Seite laden sollte, speichere sie gleich als Lesezeichen ab. Wenn sie nicht lädt, weiß ich auch nicht weiter...
-
@igor123 gehst du direkt von der Übersichtsseite rein?
Während dort beim Aufrufen der Seite die IP des Roomba ewig leiert, gibst du mal die beiden Ziffern (wie oben gesagt) ein. Wenn dann die Seite laden sollte, speichere sie gleich als Lesezeichen ab. Wenn sie nicht lädt, weiß ich auch nicht weiter...
Guten Abend ich benötige bitte eure Hilfe
Wie schaffe ich es durch ein blockly Skript mir die Karte von meinem roboter schicken zu lassen.Ich habe eine JavaScript gefunden welches die Karte auch schickt aber leider nicht meinen Anforderungen entsprechend und leider kenne ich mich nur mit blockly aus habt ihr eine Idee für mich ? Würde es gerne in Verbindung mit anderen Abhängigkeiten steuern wann ich das Bild bekomme usw
Beste Grüße silvan
-
Guten Abend ich benötige bitte eure Hilfe
Wie schaffe ich es durch ein blockly Skript mir die Karte von meinem roboter schicken zu lassen.Ich habe eine JavaScript gefunden welches die Karte auch schickt aber leider nicht meinen Anforderungen entsprechend und leider kenne ich mich nur mit blockly aus habt ihr eine Idee für mich ? Würde es gerne in Verbindung mit anderen Abhängigkeiten steuern wann ich das Bild bekomme usw
Beste Grüße silvan
-
@navlis sagte in IRobot Roomba Adapter:
in Verbindung mit anderen Abhängigkeiten steuern
Sag uns mal was du genau möchtest und stell das Javascript hier hinein. Dann schauen wir was machbar ist.
@kusi danke schon mal ;)
Hier einmal das Skript
var _fs = require('fs');
/*
- MISSION END: Send map
*/
var message = "%device.name% finished at %missions.current.endedDateTime% cleaning %missions.current.sqm% sqm in %missions.current.runtime% seconds (%missions.current.error% errors).";
var ns = 'roomba.0';
var imagePath = '/opt/iobroker/node_modules/iobroker.roomba/img';on({id: ns + '.missions.current.ended', change: 'any'}, function(obj)
{
if (!obj.state || !obj.state.val) return;// replace variables with state values var pos, variable, state, value; while (message.indexOf('%') > -1) { pos = message.indexOf('%'); variable = message.substring(pos, message.indexOf('%', pos+1)+1); state = getState(ns + '.' + variable.replace(/%/g, '')); if (state !== null && state.val !== null) value = state.val else { log('State ' + variable.replace(/%/g, '') + ' not found!', 'warn'); value = ''; } if (typeof value === "boolean") value = value === true ? 'with' : 'no'; message = message.replace(RegExp(variable, 'gi'), value); } // console log(message); // get image var img = getState(ns + '.missions.current.mapImage').val; if (img !== null && img.indexOf('data:image/png;base64,') > -1) { _fs.writeFile(imagePath + 'image.png', img.replace(/^data:image\/png;base64,/, ''), 'base64', function(err) { if (err !== null) log(err.message, 'warn'); else sendTo('telegram', {text: imagePath + 'image.png', message: message}); }); }});
Und ich würde jetzt gerne nicht diese skript nutzen sondern mein eigenes welches ich in blockly gebaut habe wo ich Infos zu dem staubsauger bekomme und so weiter darin würde ich gerne integrieren das ich ein Bild gesendet bekomme. Aber das klappt nicht und leider bekomme ich nicht raus wie ich z.b. das Skript umgebaut bekomme so das wenn ich einen datenpunkt trigger diese Skript sofort einfach das bild sendet... besser wäre halt wenn ich direkt über das blockly das Bild senden könnte.
Besten danke
Silvan -
@kusi danke schon mal ;)
Hier einmal das Skript
var _fs = require('fs');
/*
- MISSION END: Send map
*/
var message = "%device.name% finished at %missions.current.endedDateTime% cleaning %missions.current.sqm% sqm in %missions.current.runtime% seconds (%missions.current.error% errors).";
var ns = 'roomba.0';
var imagePath = '/opt/iobroker/node_modules/iobroker.roomba/img';on({id: ns + '.missions.current.ended', change: 'any'}, function(obj)
{
if (!obj.state || !obj.state.val) return;// replace variables with state values var pos, variable, state, value; while (message.indexOf('%') > -1) { pos = message.indexOf('%'); variable = message.substring(pos, message.indexOf('%', pos+1)+1); state = getState(ns + '.' + variable.replace(/%/g, '')); if (state !== null && state.val !== null) value = state.val else { log('State ' + variable.replace(/%/g, '') + ' not found!', 'warn'); value = ''; } if (typeof value === "boolean") value = value === true ? 'with' : 'no'; message = message.replace(RegExp(variable, 'gi'), value); } // console log(message); // get image var img = getState(ns + '.missions.current.mapImage').val; if (img !== null && img.indexOf('data:image/png;base64,') > -1) { _fs.writeFile(imagePath + 'image.png', img.replace(/^data:image\/png;base64,/, ''), 'base64', function(err) { if (err !== null) log(err.message, 'warn'); else sendTo('telegram', {text: imagePath + 'image.png', message: message}); }); }});
Und ich würde jetzt gerne nicht diese skript nutzen sondern mein eigenes welches ich in blockly gebaut habe wo ich Infos zu dem staubsauger bekomme und so weiter darin würde ich gerne integrieren das ich ein Bild gesendet bekomme. Aber das klappt nicht und leider bekomme ich nicht raus wie ich z.b. das Skript umgebaut bekomme so das wenn ich einen datenpunkt trigger diese Skript sofort einfach das bild sendet... besser wäre halt wenn ich direkt über das blockly das Bild senden könnte.
Besten danke
Silvan -
@igor123 gehst du direkt von der Übersichtsseite rein?
Während dort beim Aufrufen der Seite die IP des Roomba ewig leiert, gibst du mal die beiden Ziffern (wie oben gesagt) ein. Wenn dann die Seite laden sollte, speichere sie gleich als Lesezeichen ab. Wenn sie nicht lädt, weiß ich auch nicht weiter...
@gezi70 mit dem Update funkt die seite nun auch.
Problem ist jedoch, dass er weiterhin beim öffnen die IP vom Roomba nimmt und nicht automatisch die vom iobroker
dementsprechend muss ich die IP immer händisch anpassen damit die richtige seite sich öffnet - aber auch das ging vorher nicht.Ich verstehe jedoch nicht ganz wie ich den roomba via iobroker in gewissen Räume schicken kann.
Würde gern im VIS einzelne Button machen wie bspw. "Schlafzimmer", "Bad" u.ä. und dann beim Druck darauf den Raum anwählen (so wie es in der App passiert) und beim anschließenden Druck auf den Button "Start" ihn in den ausgewählten Räumen zu schicken.jemand ne idee wie das funken soll? habe null ahnung... :D
-
Die Räume:
Ich habe die Ordner '0_userdata.0/Roomba/Räume' erstellt, und dort für sämtliche Räume von Roomba ein Objekt mit "Raumname" mit der Art "Zeichenkette" erstellt. Dies wird später genutzt und ist dafür da, wenn sich mal die Raum-ID ändert, kannst du diese dort ganz einfach ändern und musst nicht das Blockly anpassen. Zudem kannst du in Blockly mit den Raumnamen arbeiten und nicht den ID´s.Dann erstellst du auf deiner Roomba-App auf dem Smartphone einen Zeitplan (nur einen!!!) und wählst unter "Räume anwählen" nur EINEN Raum aus. Sobald du diesen gespeichert hast, musst du ggfs. den Roomba-Adapter neu starten, damit sich der Wert 'roomba.0/device/_rawData' aktualisiert. Alternativ das Abfrageintervall des Adapters auf 10 Sekunden stellen.
Dieser Wert kopierst du dir dann und fügst ihn in ein Texteditor (ich nehme Word) ein. Der Text ist über eine Seite lang, dort musst du nun nach dem Wort "cleanSchedule2" suchen. Der ganze Text davor habe ich einfach gerade gelöscht, damit es übersichtlicher wird. Ein paar Wörter (ca. 3-4 Zeilen) später findest du die "Region-ID".
Kopiere nun den Text '{"region_id":"xx","type":"xxx"}' (xx steht für den Text, der bei dir angezeigt wird) und füge dies in den von dir erstellten Objektwert im Ordner '0_userdata.0/roomba/räume' des entsprechenden Raumes ein.Nachtrag: Mit folgendem Blockly kann man die Region_ID per Debug auslesen. Geht viel schneller und ist um einiges bequemer:

Nun änderst du im Zeitplan der Roomba-App den Raum, Neustart von Roomba-Adapter und kopierst wieder den Wert von 'roomba.0/device/_rawData', suchst dir wiedder die Region-ID heraus und kopierst diese in dein von dir erstellten Raum im Javascript-Ordner. Dies machst du mit all den Räumen, welche du dann von ioBroker aus starten willst. Ich habe mir alle 10 Räume so kopiert.
Weitere Objekte:
Erstelle zu den Räumen noch 2 weitere Datenpunkte, ich habe diese "Beginn" und "Ende" benannt.Folgende Werte muss du darin speichern:
Bei Beginn: {"command":"start","ordered":1,"params":{"noAutoPasses":false,"twoPass":false},"pmap_id":"xxxxxxxxxxxxxxxxx","regions":[Bei Ende: ],"user_pmapv_id":"xxxxxxxxxxx"}
Die pmap_id und user_pmapv_id musst du mit den Werten ergänzen, welche bei dir in der _rawData stehen (wo du die RaumID herauskopiert hast).
Start der Reinigung:
Um nun einen Raum zu Starten, musst du die Werte/Teile wie folgt zusammensetzen:
"Beginn" "Raumname" "Ende", alles an einem Stück! Dies kannst du dann direkt in 'roomba.0/commands/_runCommand' schreiben und Roomba beginnt zu saugen.
Wenn du mehrere Räume saugen willst, dann kannst du mehrere Räume hintereinander nehmen, z.B. so:
"Beginn" "Raumname" , "Raumname" , "Raumname" "Ende"
(Räume getrennt mit einem Komma, OHNE Leerzeichen!Der Roomba-Start mache ich mit Blockly.
1 Raum reinigen:

mehrere Räume reinigen:

Der Sonst-Teil habe ich eingefügt, damit der Roomba seine Reinigung stoppt, wenn ich den Schalter wieder auf "Aus" stelle.

Und so sieht meine vis "Roomba" aus:

Erklärung, warum ich "Beginn" und "Ende" als Datenpunkte gespeichert habe:
Zu Beginn habe ich mir die Werte darin einfach als Text in Blockly vor/nach den Raum gesetzt.
Leider hat sich dann die Karte mal angepasst in der Roomba-App, dadurch hat sich die pmap_id geändert (und die Räume).
Darauf musste ich bei ALLEN Einzelräumen und Gruppen diese pmap_id ändern.
Wenn man jedoch diese Werte eben in einem Datenpunkt hat, dann muss man dies nur einmal im Objekt ändern, und es wird gleich überall übernommen.Folgendes habe ich bei mir noch gemacht (optional):
Pause-Schalter:

Licht einschalten, wenn Zeit zwischen Sonnenuntergang und Sonnenaufgang (kann auch ohne Datenpunkt gelöst werden, ich brauche diesen aber noch für andere Skripts).
Licht ausschalten, wenn dieses vorher für die Reinigung eingeschaltet wurde.
Schalter zurücksetzen auf "Aus", sobald der Roomba seine Reinigung beendet hat.

-
Hallo Zusammen,
ich hatte meine Robots nun längere Zeit zwecks Umzug offline.
Seit heute sind sie wieder aktiv im Dienst - jedoch kommen wieder weniger Daten durch den Adapter an.Aktuell fehlen mir die ganzen "pmaps" und "regions".
Habt ihr hier Neugikeiten?
-
@kusi sagte in IRobot Roomba Adapter:
Anleitung für die Reinigung von Räumen
@igor123 Hier mei Betrag mit der Anleitung..
@kusi Nach einer Neujustierung der Bereiche auf der Karte will der Roboter jetzt nicht mehr losfahren und meldet er wäre stecken geblieben. Er befindet sich aber noch in der Station. Auch hätte er Probleme mit der SmartMap. Ich habe mir die Mühe gemacht und alle Region Id's neu eingelesen. Diese hatten sich auch teilweise verändert. Allerdings hat das Ganze überhaupt nichts gebracht...:face_with_rolling_eyes:
Meine Frage wäre, ob der Fehler jetzt generell besteht, da ja einige Daten nicht mehr befüllt werden, oder ob eine Neuerstellung der Karte und Neuaufsetzen aller Datenpunkte doch wieder etwas bringen würde? -
@kusi Nach einer Neujustierung der Bereiche auf der Karte will der Roboter jetzt nicht mehr losfahren und meldet er wäre stecken geblieben. Er befindet sich aber noch in der Station. Auch hätte er Probleme mit der SmartMap. Ich habe mir die Mühe gemacht und alle Region Id's neu eingelesen. Diese hatten sich auch teilweise verändert. Allerdings hat das Ganze überhaupt nichts gebracht...:face_with_rolling_eyes:
Meine Frage wäre, ob der Fehler jetzt generell besteht, da ja einige Daten nicht mehr befüllt werden, oder ob eine Neuerstellung der Karte und Neuaufsetzen aller Datenpunkte doch wieder etwas bringen würde?@gezi70 sagte in IRobot Roomba Adapter:
Region Id's neu eingelesen
Hast du die von dir erstellten Datenpunkte, welche mit den Werten für "vor" und "nach" der Region-ID benötigt werden, auch angepasst? Ich bin der Meinung dass sich diese Werte auch ändern, wenn die Map angepasst wird.
-
@gezi70 sagte in IRobot Roomba Adapter:
Region Id's neu eingelesen
Hast du die von dir erstellten Datenpunkte, welche mit den Werten für "vor" und "nach" der Region-ID benötigt werden, auch angepasst? Ich bin der Meinung dass sich diese Werte auch ändern, wenn die Map angepasst wird.
-
@kusi Danke dir, das wars! Warum bin ich da nicht selber drauf gekommen? :face_with_rolling_eyes:
-
Ist der Roomba Adapter jetzt eigentlich ein Community Adapter? Zefau scheint ja nichts mehr daran zu machen, aber ich habe auf GIT nur seine Einträge gefunden.
In der aktuellen Version 1.1.4 beglückt mich der Adapter mit der folgenden Meldung
roomba.0 2022-07-20 08:01:24.529 info State value to set for "roomba.0.missions.current.sqm" has to be type "string" but received type "number" roomba.0 2022-07-20 08:01:24.471 warn TypeError: Cannot read property 'y' of undefined at mapMission (C:\iobroker\GLT\node_modules\iobroker.roomba\roomba.js:754:100) at MqttClient.<anonymous> (C:\iobroker\GLT\node_modules\iobroker.roomba\roomba.js:363:6) at MqttClient.emit (events.js:315:20) at Timeout._onTimeout (C:\iobroker\GLT\node_modules\dorita980\lib\v2\local.js:39:16) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7) roomba.0 2022-07-20 08:01:24.468 warn Cannot read property 'y' of undefined roomba.0 2022-07-20 08:01:24.459 info Roomba has started a new mission (#445). roomba.0 2022-07-20 08:01:20.963 info Triggered action -start- on Roomba. -
Ist der Roomba Adapter jetzt eigentlich ein Community Adapter? Zefau scheint ja nichts mehr daran zu machen, aber ich habe auf GIT nur seine Einträge gefunden.
In der aktuellen Version 1.1.4 beglückt mich der Adapter mit der folgenden Meldung
roomba.0 2022-07-20 08:01:24.529 info State value to set for "roomba.0.missions.current.sqm" has to be type "string" but received type "number" roomba.0 2022-07-20 08:01:24.471 warn TypeError: Cannot read property 'y' of undefined at mapMission (C:\iobroker\GLT\node_modules\iobroker.roomba\roomba.js:754:100) at MqttClient.<anonymous> (C:\iobroker\GLT\node_modules\iobroker.roomba\roomba.js:363:6) at MqttClient.emit (events.js:315:20) at Timeout._onTimeout (C:\iobroker\GLT\node_modules\dorita980\lib\v2\local.js:39:16) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7) roomba.0 2022-07-20 08:01:24.468 warn Cannot read property 'y' of undefined roomba.0 2022-07-20 08:01:24.459 info Roomba has started a new mission (#445). roomba.0 2022-07-20 08:01:20.963 info Triggered action -start- on Roomba.Würde mich auch interessieren. Ich habe nicht den Eindruck, dass den Adapter noch jemand pflegt. Ich habe schon lange dauernd Warnmeldungen, aber es funktioniert noch alles was ich brauche. Ich warte schon länger auf den Tag wo er nicht mehr funktioniert.
