NEWS
IRobot Roomba Adapter
-
@Zefau sagte in IRobot Roomba Adapter:
Hab die Buttons jetzt trotzdem mal ausgegraut.
@Zefau Ja, gefällt mir sogar besser
-
Hallo Zefau,
cooler Adapter. Hab leider ein Problem mit der Karte und dem Skript.- Karte: Wenn ich die Roomba-Adapter-Website öffne erscheint folgendes:
. Wie du siehst fehlen hier einige Informationen. Beim Klicken auf "download map" erscheint folgendes:
Wenn ich in VIS die Karte (roomba.0.missions.current.mapImage) einbinde funktioniert es:
- Skript:
Habe das Skript bei mir eingebunden, jedoch wird auch hier keine Karte an Telegram verschickt.
var _fs = require('fs'); /* * MISSION END: Send map * */ var ns = 'roomba.0'; var message = "%device.name% finished at %missions.current.endedDateTime% cleaning %missions.current.sqm% sqm in %missions.current.runtime% seconds (%missions.current.error% errors)."; on({id: ns + '.missions.current.ended', change: 'any'}, function(obj) { if (!obj.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('roomba.0.missions.current.mapImage').val; if (img !== null && img.indexOf('data:image/png;base64,') > -1) { _fs.writeFile('/tmp/image.png', img.replace(/^data:image\/png;base64,/, ''), 'base64', function(err) { if (err !== null) log(err.message, 'warn'); else sendTo('telegram', {text: '/tmp/image.png', message: message}); }); } });
Hast du eine Idee was ich falsch machen könnte?
Grüße Balu
- Karte: Wenn ich die Roomba-Adapter-Website öffne erscheint folgendes:
-
zu 1.: Ist dein Web-Adapter bzgl. SocketIO auf "integrated" konfiguriert? Welchen Browser nutzt du? Könntest du in der Browser-Konsole mal gucken, ob ein Fehler geworfen wurde? Für Firefox im Menü auf
Web Developer
gehen und dortWeb Console
.zu 2.: Im Skript ist ein Fehler, den ich gestern behoben habe. Aktuelle Version findest du unter https://github.com/Zefau/ioBroker.roomba#send-map-via-telegram-when-mission-is-finished.
-
- web.0 stand auf Socket I/O. Hab es nun auf integriert geändert und alles i.O.
- werde ich mal testen
-
@Zefau: hab das neuste Skript kopiert. Muss ich am Skript generell etwas anpassen? Bekomme keine Nachricht per Telegram.
-
@baluderbär kommt auf deine Umgebung an, aber eigl. nicht.
Die Roomba Objekte sind unter
roomba.0
? Also der Datenpunktroomba.0.missions.current.mapImage
existiert? Telegram ist im ioBroker installiert und konfiguriert?
Hast du Fehler im Log?Zum Verständnis: Du erhältst eine Nachricht, wenn der Roomba fertig gesaugt und die Mission beendet hat (also der Datenpunkt
roomba.0..missions.current.ended
beschrieben wird). -
@Zefau :
Roomba-Objekte sind unter roomba.0 vorhanden.
Telegram ist installiert und soweit konfiguriert (Api-Key eingetragen). Im Log finde ich keine Fehler.
Datenpunkt roomba.0..missions.current.ended wird beschrieben, siehe Bild oben.Info: Habe den Roomba 980.
Der Rest funktioniert:
Tippe mal auf Telegram, wenn es bei anderen funktioniert. So ok?
Gruß Balu
-
Füg mal vor
if (!obj.state || !obj.state.val) return;
noch ein Logging einlog(JSON.stringify(obj))
und schick mir das Log mal per PM, wenn dein Roomba seine Mission durch hat. -
@Zefau: Du hast eine PN
Hab auf dem Rechner einfach mal den Ordner C:\tmp erstellt, leider ohne Erfolg. -
@baluderbär Jo, liegt sehr eindeutig daran. Ich habe ioBroker auf einem Linux laufen, da funktioniert es. Auf dem Windows geht es offensichtlich nicht.
Ersetze
_fs.writeFile('/tmp/image.png', ...
mal mit_fs.writeFile('tmp/image.png', ...
(also Pfad anpassen). Funktioniert es dann? -
@Zefau muss ich es auch hier anpassen?
ALT
sendTo('telegram', {text: '/tmp/image.png', message: message})
NEU
sendTo('telegram', {text: 'tmp/image.png', message: message})
-
@baluderbär jo, genau
-
@baluderbär Funktioniert's bei dir nun? Habe das Skript auf Github schon mal angepasst.
-
@baluderbär Hallo Baluderbär, kannst du mir einen Tipp geben wie du die Karte in die Vis eingebunden hast? mit welchem Widget / Okjekt ID? Ich bin das gerade am versuchen und bekomme das leider nicht hin.
Ps. in den Objekten habe ich werte und es zeigt mir auch eine HTML Kartenvorschau an.
Danke für deine / eure Tipps! -
Hab doch gerade eine Variante gefunden wie ich das hinbekomme, für den nächsten der das auch Sucht:
Widget Basic / String img src und dort die Objekt ID: roomba.0.missions.current.mapImage auswählen. -
Cooler Adapter, danke dafür.
Eine Frage: welche Werte kann States/status annehmen
"run"," hmUsrDock", "charge"was noch?
-
Kann vielleicht noch jemand brauchen:
-
Hallo,
hab immer noch das Problem das keine Karte angezeigt wird genauso der Name des Saugers.
Hier screenshot -
@Gonzo0815 im Web Adapter Sockets aktivieren
-
Hab ich