Neues Modul: THINKINGCLEANER (für iRobot Roomba 500/600)

Begonnen von d.schoen, 23 August 2015, 13:45:59

Vorheriges Thema - Nächstes Thema

franky08

#30
Ich hätte da auch mal eine Frage zum Roomba782, würde das Modul mit dem Roomba funktionieren und ist das extra WIFI Modul notwendig? Oder hat der 782 WIFI on Board?

Danke und guten Rutsch

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...

scooty

Hallo,

vielen Dank für das Modul, funtioniert echt klasse!
Bin mit meinem Roomba 800 von RooWifi umgestiegen und die Zuverlässigkeit des ThinkingCleaner ist um Klassen besser.

Vielleicht kann es noch jemand gebrauchen: Nach der API-Doku habe ich mir ein eigenes userReading "power_status_cleaner_state_text" erstellt, das ich im Attribut "stateformat" verwende, um den Status des Roomba etwas sprechender darzustellen:

attr <Roomba-Name> userReadings power_status_cleaner_state_text:power_status_cleaner_state {
my $RoombaStatus = ReadingsVal("$name","power_status_cleaner_state","unknown");;
if ($RoombaStatus eq "st_base") {return "On homebase: Not Charging";;}
elsif ($RoombaStatus eq "st_base_recon") {return "On homebase: Reconditioning Charging";;}
elsif ($RoombaStatus eq "st_base_full") {return "On homebase: Full Charging";;}
elsif ($RoombaStatus eq "st_base_trickle") {return "On homebase: Trickle Charging";;}
elsif ($RoombaStatus eq "st_base_wait") {return "On homebase: Waiting";;}
elsif ($RoombaStatus eq "st_plug") {return "Plugged in: Not Charging";;}
elsif ($RoombaStatus eq "st_plug_recon") {return "Plugged in: Reconditioning Charging";;}
elsif ($RoombaStatus eq "st_plug_full") {return "Plugged in: Full Charging";;}
elsif ($RoombaStatus eq "st_plug_wait") {return "Plugged in: Waiting";;}
elsif ($RoombaStatus eq "st_plug_trickle") {return "Plugged in: Trickle Charging";;}
elsif ($RoombaStatus eq "st_clean") {return "Cleaning";;}
elsif ($RoombaStatus eq "st_cleanstop") {return "Stopped with cleaning";;}
elsif ($RoombaStatus eq "st_clean_spot") {return "Spot cleaning";;}
elsif ($RoombaStatus eq "st_clean_max") {return "Max cleaning";;}
elsif ($RoombaStatus eq "st_delayed") {return "Delayed cleaning will start soon ..";;}
elsif ($RoombaStatus eq "st_dock") {return "Searching Homebase";;}
elsif ($RoombaStatus eq "st_pickup") {return "Roomba picked up";;}
elsif ($RoombaStatus eq "st_remote") {return "Remote control driving";;}
elsif ($RoombaStatus eq "st_wait") {return "Waiting for command";;}
elsif ($RoombaStatus eq "st_off") {return "Off";;}
elsif ($RoombaStatus eq "st_error_charge") {return "Charging error";;}
elsif ($RoombaStatus eq "st_error") {return "Error";;}
elsif ($RoombaStatus eq "st_locate") {return "Find me!";;}
elsif ($RoombaStatus eq "E_ROOMBA") {return "Roomba error,<br/> press SPOT + DOCK for 10s to reset";;}
elsif ($RoombaStatus eq "st_unknown") {return "unknown";;}
elsif ($RoombaStatus eq "unknown") {return "Reading failed!";;}
else {return "Total failure";;};;
}

Code ist für Eingabe im Befehlszeilenfeld, <Roomba-Name> ersetzen durch eigenen Roomba-Device-Namen.

Dann noch ein
attr <Roomba-Name> stateFormat power_status_cleaner_state_text

Eine Kleinigkeit ist mir allerdings noch aufgefallen:
Im THINKINGCLEANER-Device erscheint immer das Attribut "userattr", gefüllt mit Werten von von mir verwendeten Standard-Attributen, also:
userattr   icon stateFormat userReadings
Lösche das Attribut "userattr" zwar immer, aber nach jedem "shutdown restart" ist es wieder da.

Also nochmals danke,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

scooty

Hallo zusammen,

in der aktuellen Version auf GitHub (https://github.com/dsgrafiniert/fhem-thinkingcleaner)sind jetzt noch die Kommandos:

set <NAME> max/find_me/leavehomebase/drivestop/poweroff

hinzugekommen.
Details zu den Kommandos können in der API-Doku (ab Seite 6) nachgeschlagen werden.

Vielen Dank an Dominik für's mergen.

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

franky08

Hat keiner einen Tipp ob das mit dem Roomba782 funktioniert?

Guten Rutsch,
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...

raspklaus

Der aktuelle Thinkingcleaner ist nur für die 500er und 600er. Mit den grösseren Modellen dürfte es nicht funktionieren.

scooty

Doch, mein 800er funktioniert, allerdings nicht mit der kompletten Faceplate der 500/600er, sondern nur mit der Platine (wie beim RooWifi).
Eine passende Abdeckung für die 700/800er wurde von ThinikingCleaner für 3D-Drucker bereitgestellt:
http://www.thingiverse.com/thing:1219169/

Beim 782 ist eher das Problem, dass wohl keiner das WLAN-Interface kennt.

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

franky08

#36
@scooty
Danke
ZitatBeim 782 ist eher das Problem, dass wohl keiner das WLAN-Interface kennt.

darüber versuche ich schon den ganzen Tag etwas herauszufinden. Da es für das Teil ja eine "RF Fernbedienung" gibt muss ja über Funk irgendwas gehen. oder?

P.S. Selbst mit einem WIFI Scanner ist der Roomba leider nicht zu finden  >:(

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...

irgendsowas

@d.schoen

ist es möglich die API von irobot einzupflegen?
Eine direktverbindung zu schaffen?

siehe:https://forum.fhem.de/index.php/topic,50025.0.html

Danke im Voraus

d.schoen

Hallo irgendsowas,

danke für deine Anfrage. Das würde meines Erachtens am Ziel des Moduls vorbeigehen. Deine Eigenentwicklung in Ehren, aber dieses Modul richtet sich konkret an das ThinkingCleaner Faceplate. Noch nicht mal RooWifi wird unterstützt.

Ich denke, die Zielgruppe für deine Eigenentwicklung ist auch ziemlich gering, da es ja bereits (mindestens) zwei existierende Wifi-Module für die Roombas gibt - die noch dazu auch wirklich bezahlbar sind.

Natürlich kannst du dir gern mein Modul als Basis für eine Eigenentwicklung nehmen, aber eine Low-Level TCP Schnittstelle werde ich in mein Modul nicht einbauen.

Beste Grüße und viel Spaß mit deinem ferngesteuertern Roomba
Dominik

Zitat von: irgendsowas am 04 März 2016, 09:32:11
@d.schoen

ist es möglich die API von irobot einzupflegen?
Eine direktverbindung zu schaffen?

siehe:https://forum.fhem.de/index.php/topic,50025.0.html

Danke im Voraus
FHEM 5.7 auf RasPi2
COC 868MHz, Jeelink Clone
Devices: IT, HomeMatic, LaCrosse, ENIGMA2, LG-TV, Thinkingcleaner (iRobot Roomba), LIFX Wifi-Bulbs
Helper: TelegramBot, Homebridge (Siri), Geofency

Markus

ZitatHat keiner einen Tipp ob das mit dem Roomba782 funktioniert?

Guten Rutsch,
VG
Frank

Funktioniert das Jetzt?


Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

d.schoen

Zitat von: Markus am 16 März 2016, 19:53:55
Funktioniert das Jetzt?


Gruß Markus

Die Faceplates für die 700/800er Roombas sind in Vorbereitung. Wann ThinkingCleaner die veröffentlicht, weiß ich nicht. Damit sollte es dann klappen. Die Wifi Funktionen der größeren Roombas werden von meinem Modul nicht unterstützt - es ist speziell für die ThinkingCleaner Faceplate.

Beste Grüße
Dominik
FHEM 5.7 auf RasPi2
COC 868MHz, Jeelink Clone
Devices: IT, HomeMatic, LaCrosse, ENIGMA2, LG-TV, Thinkingcleaner (iRobot Roomba), LIFX Wifi-Bulbs
Helper: TelegramBot, Homebridge (Siri), Geofency

Markus

Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

dantist

#42
Gibt es eine Möglichkeit, das thinkingcleaner-Modul zu resetten? Es kommen keine Befehle mehr beim Roomba an.

Ich weiß leider nicht, seit wann der Defekt besteht - könnte es etwas mit dem Update auf fhem 5.7 zu tun haben?

Edit: Ein Reset des Roombas hat nicht geholfen, auch nicht, das Gerät neu in FHEM anzulegen. Was mir aber aufgefallen ist: Wenn ich den Befehl, der im Internal "displayurl" angezeigt wird, manuell im Browser aufrufe, wird er korrekt ausgeführt. z.B. http://roomba-ip/command.json?command=spot

d.schoen

Das ist in er Tat sehr komisch... Findest du mit einem höheren Log-Level irgendwelche Informationen im Log? Ansonsten bin ich (zumindest bis jetzt) auch ziemlich ratlos...
FHEM 5.7 auf RasPi2
COC 868MHz, Jeelink Clone
Devices: IT, HomeMatic, LaCrosse, ENIGMA2, LG-TV, Thinkingcleaner (iRobot Roomba), LIFX Wifi-Bulbs
Helper: TelegramBot, Homebridge (Siri), Geofency

dantist

#44
Ich habe mal das Loglevel hochgesetzt, anbei der Output. Roomba neu angelegt und drei Minuten später "set clean" ausgeführt:

2016.04.17 12:03:21.229 3: Roomba: no URL for Update
2016.04.17 12:03:28.697 1: Registering THINKINGCLEANER WebHook Roomba
2016.04.17 12:03:28.698 3: Roomba: Defined with URL http://192.168.108.73 and interval 60
2016.04.17 12:06:12.296 1: PERL WARNING: Use of uninitialized value $request{"type"} in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 554.
2016.04.17 12:06:12.297 1: PERL WARNING: Use of uninitialized value $request{"data"} in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 554.
2016.04.17 12:06:12.298 1: PERL WARNING: Use of uninitialized value $request{"header"} in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 554.
2016.04.17 12:06:12.299 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 523.


Und nochmal ein "set clean" mit verbose level 5:

2016.04.17 12:47:46.760 4: WEB_192.168.108.51_55629 POST /fhem&detail=Roomba&dev.setRoomba=Roomba&cmd.setRoomba=set&arg.setRoomba=clean&val.setRoomba=; BUFLEN:0
2016.04.17 12:47:46.763 5: Cmd: >set Roomba clean<
2016.04.17 12:47:46.764 5: Roomba: AddToQueue called, initial send queue length : 0
2016.04.17 12:47:46.766 5: Roomba: AddToQueue adds type  to URL http://192.168.108.73/command.json?command=clean, data , header
2016.04.17 12:47:46.767 5: Roomba: HandleSendQueue called, qlen = 1
2016.04.17 12:47:46.768 4: Roomba: HandleSendQueue sends request type  to URL http://192.168.108.73/command.json?command=clean, data , header , timeout 2
2016.04.17 12:47:46.770 4: HttpUtils url=http://192.168.108.73/command.json?command=clean
2016.04.17 12:47:46.773 5: Triggering Roomba (1 changes)
2016.04.17 12:47:46.774 5: Starting notify loop for Roomba, first event clean
2016.04.17 12:47:46.795 4: WEB_192.168.108.51_55629 GET /fhem?detail=Roomba&fw_id=; BUFLEN:0
2016.04.17 12:47:46.835 4: name: /fhem?detail=Roomba&fw_id= / RL:2948 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2016.04.17 12:47:46.846 4: Connection closed for WEB_192.168.108.51_55632: EOF

2016.04.17 12:47:47.252 4: WEB_192.168.108.51_55645 GET /fhem?cmd={ReadingsVal(%22Roomba%22,%22clean%22,%22%22)}&XHR=1; BUFLEN:0
2016.04.17 12:47:47.254 5: Cmd: >{ReadingsVal("Roomba","clean","")}<
2016.04.17 12:47:47.263 4: name: /fhem?cmd={ReadingsVal(%22Roomba%22,%22clean%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.04.17 12:47:47.268 4: WEB_192.168.108.51_55629 GET /fhem?cmd={AttrVal(%22Roomba%22,%22room%22,%22%22)}&XHR=1; BUFLEN:0
2016.04.17 12:47:47.270 5: Cmd: >{AttrVal("Roomba","room","")}<
2016.04.17 12:47:47.278 4: name: /fhem?cmd={AttrVal(%22Roomba%22,%22room%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.04.17 12:47:47.368 4: WEB_192.168.108.51_55629 GET /fhem?XHR=1&inform=type=status;filter=Roomba;since=1460890065;fmt=JSON&fw_id=196×tamp=1460890067361; BUFLEN:0


Wie gesagt, wenn ich die die URL http://192.168.108.73/command.json?command=clean im Browser öffne, startet der Roomba.