NEWS
IRobot Roomba Adapter
-
@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.
-
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.
-
Der Adapter wird auch aktuell nicht mehr gepflegt.
Weiterhin müsste man diesen einmal aufräumen, da ja die Kartenpunkte auch nicht mehr übertragen werden.@skb Also bei mir kommen die Karten immer noch - zumindest mit dem 960 Roomba

-
@skb Also bei mir kommen die Karten immer noch - zumindest mit dem 960 Roomba

@jb_sullivan Bei einem i7, i9 oder Braava Jet kommt dies nicht mehr - Premium eben :D
-
Hallo an alle.
Ich stelle gerade allmählich alles von ITTT auf den io broker um - ich bin selbst sehr interessiert aber definitiv ein informatischer Laie :-)
Aktuell versuche ich meinen IRobot I7 in den IO Broker zu integrieren. Ich scheitere aber schon bei Einbinden:
Ich habe die Verbindung zu Handy defintiv aus, und auch zu ITTT ist es gekappt.
Wenn ich bei den Instanzeinstellungen nach Anleitung vorgehe (ich hoffe, alles richtig gemacht zu haben), komme ich aber nicht weiter:

Die Anleitung zur "manuellen Einrichtung" ist mir leider zu hoch...
Kann mir evtl. hier jemand weiterhelfen?Danke und viele Grüße!
