NEWS
Neato Botvac Connected Adapter
-
Habe seit kurzem einen Neato Botvac Connected:
https://neatorobotics.com/de/robot-vacu … connected/
Wieder so ein Gerät mit eigener APP zur Steuerung, jedoch ohne öffentlich zugängliche API. Zum Glück hat kangguru schon super Vorarbeit geleistet: https://github.com/kangguru/botvac
Darauf basierend habe ich ein Node-Module und einen passenden Adapter erstellt:
https://github.com/Pmant/ioBroker.botvac
Falls jemand so ein Gerät besitzt kann gerne getestet werden.
-
Habe seit kurzem einen Neato Botvac Connected:
https://neatorobotics.com/de/robot-vacu … connected/
Wieder so ein Gerät mit eigener APP zur Steuerung, jedoch ohne öffentlich zugängliche API. Zum Glück hat kangguru schon super Vorarbeit geleistet: https://github.com/kangguru/botvac
Darauf basierend habe ich ein Node-Module und einen passenden Adapter erstellt:
https://github.com/Pmant/ioBroker.botvac
Falls jemand so ein Gerät besitzt kann gerne getestet werden. `
Pman, wenn Adapter von dir commt, dann kann ich gleich den ins Repo nehmen, oder? -
Er funktioniert bei mir schon, ich mache aber noch keine Dokumentation falls ich noch was ändere. Es gibt aber nur wenige Funktionen, die sind eigentlich selbsterklärend :lol:
-
Hallo Pman,
vielen Dank für diesen Adapter. Installation und Einrichtung haben ohne Probleme bei mir funktioniert.
Leider ist für mich die Handhabung nicht ganz selbsterklärend. Vielleicht könntest du mir hierbei weiterhelfen?
Wenn ich den Zustand von "botvac.0.<name>.commands.clean" auf "true" stelle, beginnt der Botvac wie erwartet mit der Reinigung.
Welche Befehle bzw. Zustände müsste ich jetzt ändern, wenn ich den Reinigungsvorgang abbrechen und dien Roboter wieder zurück zur Ladestation schicken möchte?
Müssen hierbei mehrere Zustände nacheinander verändert werden?
Danke und Gruß
Esche</name>
-
Wenn ich den Zustand von "botvac.0.<name>.commands.clean" auf "true" stelle, beginnt der Botvac wie erwartet mit der Reinigung.
Welche Befehle bzw. Zustände müsste ich jetzt ändern, wenn ich den Reinigungsvorgang abbrechen und dien Roboter wieder zurück zur Ladestation schicken möchte?</name> `
Ob man direkt aus Reinigungsmodus zurück zur Base fahren kann weiß ich grade garnicht so genau (status.canGoToBase). Auf jeden Fall müsste ein commands.pause oder commands.stop, gefolgt von commands.gotoBase funktionieren. Welche Commands aktuell möglich sind kannst du jeweils unter status (canPause, canStop, canGoToBase usw.) sehen, andere Commands nimmer er nicht an. Diese Logik habe ich nicht erfunden, die ist fest im Botvac verankert und kann nicht umgangen werden. Grundvorraussetzung für ein goToBase ist, dass dockHasBeenSeen auf true steht. Der Botvac muss immer erst etwas im Raum rumfahren bevor die Base wieder "sieht", danach merkt er sich die Position der Base für diesen Reinigungsvorgang.
Bugs in meiner Implementierung sind natürlich auch möglich, falls also etwas nicht funktioniert einfach nochmal die Situation genau schildern und dann versuche ich das bei mir nachzustellen.
-
Ich habe eine Frage zum Datenpunkt Error.
Hier werden Werte wie ui_alert_invalid und ui_error_dust_bin_full ausgespuckt. Den für Bürste reinigen kenne ich gerade nicht.
Kann man mit einem Widget (welches?) oder in javascript (wie sollte da aussehen?) daraus z.B. Kein Fehler bzw. Filter und Staubbehälter reinigen ausgeben lassen?
-
Ich habe eine Frage zum Datenpunkt Error.
Hier werden Werte wie ui_alert_invalid und ui_error_dust_bin_full ausgespuckt. Den für Bürste reinigen kenne ich gerade nicht.
Kann man mit einem Widget (welches?) oder in javascript (wie sollte da aussehen?) daraus z.B. Kein Fehler bzw. Filter und Staubbehälter reinigen ausgeben lassen? `
Das sind die Codes, wie sie von der Botvac API ausgegeben werden. Ich weiß nicht welche Fehlercodes es alle gibt und unter welchen Umständen diese auftreten können, daher ist es im Moment noch nicht sinnvoll einen entsprechenden Datenpunkt zu machen.Du kannst dir ein einfaches Script machen:
createState('BotvacError', 'kein Fehler'); var codesToMessage = { 'ui_alert_invalid': 'kein Fehler', 'ui_error_dust_bin_full': 'Staubbehälter voll', }; on('botvac.0.Rick.status.error', function (obj) { if (codesToMessage.hasOwnProperty(obj.state.val)) { setState('BotvacError', codesToMessage[obj.state.val], true); } else { setState('BotvacError', obj.state.val); } });
Vorsicht: nicht getestet!
-
Geht nicht. Ich war mir sicher, dass Dein Script funktioniert. Muss ich das Script dem Widget zuweisen, eigentlich nicht, oder? Habe die ID im Script mit mener Ersetzt.
-
Du erstellst das Skript unter "Skripte" im Adminadapter? Den Datenpunkte findest du dann unter "javascript.0.BotvacError".
-
Hab ich gemacht.
Mein Script:
createState('BotvacError', 'Kein Fehler'); var codesToMessage = { 'ui_alert_invalid': 'Alles in Ordnung', 'ui_error_dust_bin_full': 'Staubbehälter voll', }; on('botvac.0.Sam.status.error', function (obj) { if (codesToMessage.hasOwnProperty(obj.state.val)) { setState('BotvacError', codesToMessage[obj.state.val], true); } else { setState('BotvacError', obj.state.val); } });
Nur zeigt mir das Script immer "ui_error_brush_stuck" an obwohl der error status "ui_alert_invalid" ist. (siehe Foto)
-
Vielleicht ist das Skript nicht an? Oder es war beim letzten update des Fehlercodes nicht an? Log mal ein wenig mit:
createState('BotvacError', 'Kein Fehler'); var codesToMessage = { 'ui_alert_invalid': 'Alles in Ordnung', 'ui_error_dust_bin_full': 'Staubbehälter voll', }; on('botvac.0.Sam.status.error', function (obj) { log(obj.state.val); if (codesToMessage.hasOwnProperty(obj.state.val)) { log('->' + codesToMessage[obj.state.val]); setState('BotvacError', codesToMessage[obj.state.val], true); } else { setState('BotvacError', obj.state.val); } });
-
Hab das Log eingetragen. Wo sehe ich das Log, im Admin unter Log Tab?
Ich hätte erwartet, dass durch das Script in botvac.0.Sam.status.error und javascript.0.BotvacError das selbe steht.
createState('BotvacError', 'Kein Fehler'); var codesToMessage = { 'ui_alert_invalid': 'Alles in Ordnung', 'ui_error_dust_bin_full': 'Staubbehälter voll', 'ui_error_brush_stuck': 'Bürste verklemmt', }; on('botvac.0.Sam.status.error', function (obj) { log(obj.state.val); if (codesToMessage.hasOwnProperty(obj.state.val)) { log('->' + codesToMessage[obj.state.val]); setState('BotvacError', codesToMessage[obj.state.val], true); } else { setState('BotvacError', obj.state.val); } });
-
Ja unter Log im Admin Tab oder direkt im Skripttab.
Das Skript reagiert aber nur auf Änderung des Error States, du kannst das testen, indem du einfach manuell etwas in botvac.0.Sam.status.error einträgst.
-
indem du einfach manuell etwas in botvac.0.Sam.status.error einträgst. `
…das war ein guter Tip. Scheint zu funktionieren:Log:
javascript-0 2016-08-30 13:19:56.645 info script.js.Test.Neato: ->Alles in Ordnung javascript-0 2016-08-30 13:19:56.643 info script.js.Test.Neato: ui_alert_invalid javascript-0 2016-08-30 13:19:31.034 info script.js.Test.Neato: ->Bürste verklemmt javascript-0 2016-08-30 13:19:31.032 info script.js.Test.Neato: ui_error_brush_stuck botvac-0 2016-08-30 13:19:31.030 warn state change in unknown channel: status javascript-0 2016-08-30 13:19:25.627 info script.js.Test.Neato: ->Alles in Ordnung javascript-0 2016-08-30 13:19:25.625 info script.js.Test.Neato: ui_alert_invalid javascript-0 2016-08-30 13:19:22.982 info script.js.Test.Neato: ->Staubbehälter voll javascript-0 2016-08-30 13:19:22.981 info script.js.Test.Neato: ui_error_dust_bin_full
was hat "botvac-0 2016-08-30 13:19:31.030 warn state change in unknown channel: status" zu bedeuten?
-
Das ist die Standardausgabe für nicht unterstützte Stateänderungen, eigentlich sind die Status-States read-only.
Check mal dein pollInterval in den Adaptersettings, das habe ich von Millisekunden auf Sekunden geändert, vielleicht steht bei dir noch 60000 drin?
-
das sind aber 30000ms, wenn ich nämlich was in error manuell rein schreibe, ändert sich der Wert nach 30 Sekunden zurück.
Ich lass das mal so. Im Roboter Forum hat einer geschrieben, dass er in OpenHAB das Intervall runter gesetzt hat und vom Neato Server gesperrt wurde.
-
Dann hast du noch nicht die aktuelle Version, da wird in Sekunden gemessen :lol:
Außerdem wurden die Anfragen an die Api reduziert.
-
Bin jetzt auf 0.5.0.
da steht immer noch Poll Interval (ms) 30000
-
Hallo! Bei mir werden im ioBroker.admin die Werte alle korrekt angezeigt aber im VIS wird nur "null" oder "false" angezeigt. Habe den Adapter schon deinstalliert und neu installiert, iobroker neu gestartet, aber leider hat sich dadurch nichts geändert. Woran könnte das liegen? Danke
-
Hallo Pman,
wäre klasse wenn du den Adapter um den Vorwerk VR200 erweitern könntest.
Für FHEM wurde dies schon vorgenommen. Als Basis hat ebenfalls die Arbeit vn Kangguru gedient.
https://raw.githubusercontent.com/vuffi … _BOTVAC.pm
Gruß,
Matze