[98_ROOWIFI] Neues Modul für iRobot Roomba mit RooWifi Modul

Begonnen von jmike, 03 April 2016, 20:25:23

Vorheriges Thema - Nächstes Thema

chriz

Danke für das Turbo-Update  :D

Habs eben installiert und die Freezes sind bisher weg. Klasse Arbeit!

Grüße
Chris
FHEM auf Intel NUC D34010WYK Core i3, SSD, Ubuntu. HomeMatic mit HMLAN (Groundplane Antenne), Fritz DECT!200, FritzBox 7490, EnerGenie EG-PMS2-LAN, Yamaha RX-V475, Netatmo, Withings, Philips hue, Osram Lightify, Flukso Energy Meter, Harmony, RooWifi, Junkers ZSB 24-4 C Heizung via Heatronic HT-BUS

Blakharaz

Hab es auch eben installiert.
Funktioniert  :) Super, vielen Dank.

Allerdings ist mir eben aufgefallen das als State charging angezeigt wird obwohl er gerade neben meinen Füßen spazieren fährt.
Scheint er so anzuzeigen nachdem ich einmal den Raum gewechselt habe und wieder auf den Roomba bin.


jmike

Hi.

Oha, bleibt das so wenn du "set roomba update" startest?

Der state ist natürlich nur eine Moment-Aufnahme. D.h. wenn er im Dock ist, mit state charging, und man ihn per Hand auf Reinigung schickt, dann dauert es max 2min bis der state cleaning ist (sein sollte).

Bei einem Steuerbefehl wird ein Update kurz später losgetreten. Dock -> set roomba clean -> sollte also innerhalb 4-5 Sekunden "cleaning" anzeigen.

Wenn das nicht hilft, zeig mal dein roomba.json während er saugen ist.

lg
mike

Blakharaz

ZitatOha, bleibt das so wenn du "set roomba update" startest?
ja, bleibt so. siehe Bild 2.jpg

ZitatDer state ist natürlich nur eine Moment-Aufnahme. D.h. wenn er im Dock ist, mit state charging, und man ihn per Hand auf Reinigung schickt, dann dauert es max 2min bis der state cleaning ist (sein sollte).
State bleibt in diesem Fall auch auf charging. Siehe bild 1.jpg

ZitatBei einem Steuerbefehl wird ein Update kurz später losgetreten. Dock -> set roomba clean -> sollte also innerhalb 4-5 Sekunden "cleaning" anzeigen.
Ja. unter internals aktualisiert er auf cleaning. Allerdings steht bei Readings weiter state charging. Und ich vermute das er auch diese Information nutzt falls ich den Raum wechsle und danach wieder den Roomba aufrufe.

ZitatWenn das nicht hilft, zeig mal dein roomba.json während er saugen ist.
Vielleicht ne doofe Frage. Wo finde ich die?

Will

Wie weckt ihr den roomba eigentlich auf? Welchen befehl schick ihr da? Ich hatte mit auf mysensors Basis gebaut, hat funktioniert - allerdings schläft der roomba ein und war dann nicht mehr erreichbar....

jmike

Hi.

Zitat von: Blakharaz am 06 Mai 2016, 17:57:56
Ja. unter internals aktualisiert er auf cleaning. Allerdings steht bei Readings weiter state charging. Und ich vermute das er auch diese Information
Ich checks noch nicht ganz.. Der STATE bei Internals wird über den exakt gleichen Code aktualisiert wie das Reading. Das ist 1 operation im Code.

Bei mir verhält es sich so dass das Reading aktualisiert wird (automatisch oder set update), dabei wir der Timestamp rot, aber das Internal wird nicht automatisch/live aktualisiert. Dazu muss ich schon einen Browserrefresh machen.

Zitat von: Blakharaz am 06 Mai 2016, 17:57:56
Vielleicht ne doofe Frage. Wo finde ich die?
http://<ip-vom-roowifi>/roomba.json

Brauch ich aber eigentlich nicht mehr, das oben beantwortet schon die gestellte Frage ;)


Zitat von: Will am 06 Mai 2016, 20:34:04
Wie weckt ihr den roomba eigentlich auf? Welchen befehl schick ihr da? Ich hatte mit auf mysensors Basis gebaut, hat funktioniert - allerdings schläft der roomba ein und war dann nicht mehr erreichbar....
Hi Will.
Wenn der Roomba einschläft kannst du per http://<ip-vom-roowifi>/rwr.cgi?exec=1 einen init schicken und den Roomba aufwecken. Dabei piepst er 1x.

Will

Welchen Befehl überträgt roowifi.com dann an den roomba (also über seriell), weißt du das?

Sent from my SGP611 using Tapatalk


jmike

"Wissen" tue ich es nicht, aber vielleicht hilft dir das:

Der Roomba hat 4 modes, 0-off, 1-passive, 2-save, 3-full

Laut doku muss man falls er off ist (Mode 0) ihn erstmal in passive Mode schicken (opcode 128). Safe ist 131, Full 132.

Zitat... Roomba is in "off" mode. When Roomba is powered on, it is in Passive mode. ... Once the Roomba is in Passive mode, a mode command for one of the three operating modes can be sent to change the operating mode...


lg
mike

Will

Danke. Dann probier ich das mal....mein sketch hat immer funktioniert, bis der roomba eingeschlafen ist....

Blakharaz

#39
Zitat von: jmike am 06 Mai 2016, 21:24:32
Hi.
Ich checks noch nicht ganz.. Der STATE bei Internals wird über den exakt gleichen Code aktualisiert wie das Reading. Das ist 1 operation im Code.

Bei mir verhält es sich so dass das Reading aktualisiert wird (automatisch oder set update), dabei wir der Timestamp rot, aber das Internal wird nicht automatisch/live aktualisiert. Dazu muss ich schon einen Browserrefresh machen.
http://<ip-vom-roowifi>/roomba.json

Brauch ich aber eigentlich nicht mehr, das oben beantwortet schon die gestellte Frage ;)


Ich habe mir jetzt noch mal die roomba.json und 98_ROOWIFI.pm angeschaut.

Sehe ich das richtig das er laut 98_ROOWIFI.pm ab Zeile 426 den Status auf Cleaning nur dann setzt wenn der Charging_state = 0 ist?
Wenn ja. Dann erreiche ich laut der json nie diesen Status. Mein Roomba geht bei der Reinigung auf Status 4 was laut dieser Tabelle

http://www.quarcservice.com/ReleaseNotes/files/roomba_sensor_request_block.html

einfach nur der Status "Waiting" und nicht "Not Charging" ist.

Sind die Werte Roomba Serien abhängig? Ich habe einen aus der 500er Serie


Edit:
OK. Ich habe es einfach getestet und die 0 auf 4 geändert und zack er zeigt es korrekt an.

Also vielleicht doch Versions abhängig

jmike

Hi.

Also dein Charging State geht auf 4 (Waiting) während dein Roomba am saugen ist?

Meiner geht auf 0 (not charging) und der Code prüft erst dann, also wenn Charging State 0 ist, ob er mehr Strom zieht als 500mA was wiederum cleaning bedeutet.

Mal überlegen ob ich die Reihenfolge der IF conditions ändere oder auf State 4 eingehe.

Wenn dein Test erfolgreich war ist die Sache ja eigentlich klar.

lg
mike

Blakharaz

ZitatAlso dein Charging State geht auf 4 (Waiting) während dein Roomba am saugen ist?
Stimmt

ZitatMeiner geht auf 0 (not charging) und der Code prüft erst dann, also wenn Charging State 0 ist, ob er mehr Strom zieht als 500mA was wiederum cleaning bedeutet.
Die 500mA überprüfung funktioniert auch einwandfrei. Er zeigt zwar obwohl er schon am Saugen ist und laut JSon mehr als 500mAH gezogen werden erst ein kurzen Status idle an und wechselt beim nächsten update aber auf Clean

ZitatMal überlegen ob ich die Reihenfolge der IF conditions ändere oder auf State 4 eingehe.
Ich habe den Code versuchsweise auf
   if($sensors{'ChargingState'}  ne 4 && $sensors{'ChargingState'} ne 0){
geändert. scheint zu funktionieren. Ich kenne mich mit Perl nicht wirklich aus und bin nicht sicher ob das richtig ist.
Hab aber keine Ahnung was der Status 4 (Waiting) eventuell bei Euch für eine Auswirkung haben könnte.

ZitatWenn dein Test erfolgreich war ist die Sache ja eigentlich klar.
Ja. funktioniert

franky08

Es gibt da noch einen kleinen Fehler: event-on-change-reading steht per default auf *, dass müsste aber .* sein, gibt sonst eine Meldung im Log.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

jmike

Ah, stimmt.

Danke Frank, wird beim nächsten Update mit eingepflegt.

gruß
mike

pscheblein

Hallo zusammen,
bin gerade am testen und bekomme folgende Meldung im Log:
ROOWIFI: (Roomba) JSON Error: unexpected end of string while parsing JSON string, at character offset 495 (before "(end of string)") at ./FHEM/98_ROOWIFI.pm line 476.

vg Patrick