IRobot Roomba mit Roowifi steuern

Begonnen von 2P4u, 06 Januar 2014, 20:33:59

Vorheriges Thema - Nächstes Thema

2P4u

Hi Jungs.
Cool, dass es hier weiter geht.
Ich habe mittlerweile den Roowifi in den Technikschrank geworfen.
Immer wenn ich den in mein Netzwerk eingebunden habe, wollten sich alle meine Geräte mit ihm verbinden.

Mittlerweile habe ich mir eine Harmony Ultimate gekauft und wollte nun damit die Befehle senden.
Da ich aber im moment mit dem Umzug von meinem RasPi auf den Cubietruck beschäftigt bin und hier noch ein Paar kleine Probleme habe bin ich auch noch zu keiner Lösung gekommen.

Läuft euer Roowifi einfach?

Gruss Daniel
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

stoxx

#16
Hi scooty,

ich hatte das gleiche Problem und habe nach etlichen Versuchen herausgefunden, dass Du den Roomba nur zuverlässig aus dem Schlafmodus bekommst, wenn Du vorher den Port 9001 ansprichst. Nicht die eleganteste Lösung, aber funktioniert (mit einer 15 Sekunden-Verzögerung). Hier mein notify:

roombabef { if (Value("roombabef") eq "start") {{GetFileFromURL("http://192.168.178.23:9001/roomba.cgi", 3)};
fhem("define roombago at +00:00:15 {GetFileFromURL('http://192.168.178.23/roomba.cgi?button=CLEAN', 3)};");};
if (Value("roombabef") eq "stop") {{GetFileFromURL("http://192.168.178.23/roomba.cgi?button=CLEAN", 3)}};
if (Value("roombabef") eq "dock") {{GetFileFromURL("http://192.168.178.23/roomba.cgi?button=DOCK", 3)}};
if (Value("roombabef") eq "spot") {{GetFileFromURL("http://192.168.178.23/roomba.cgi?button=SPOT", 3)}};}


Grüße,
stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

2P4u

stoxx, kannst du bitte mal deine Roowifi einstellungen als screenshot posten?
Natürlich kannst du die pw´s löschen.

Ich frage mich was habt ihr bei User und Passwort eingetragen?
Einfach leerlassen?
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

stoxx

Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

2P4u

Danke dir.
Wenn ich den Username und das PW weglasse komm ich nicht mehr mit der eingestellten IP drauf.
Komisch, dass das bei euch klappt.
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

stoxx

#20
Vielleicht liegts an der Roowifi Version? Ich habe einen v2.
(siehe Anhang)
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

2P4u

Nach deinem Bild habe ich auch die V2.
Ich muss mich mal intensiv damit beschäftigen.
Werde die einstellungen genau wie du übernehmen, dann sollte das ja klappen.

Danke für deine Hilfe.
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

2P4u

Hi stoxx,
ich bin schon weiter gekommen.

Kannst du mir vielleicht mal den ganzen Code posten, den du für den Roomba benutzt?
Inkl. Dummy?

Danke Gruss Daniel
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

scooty

Hallo zusammen,

ups, die Antworten und weiteren Themen sind wohl etwas an mir vorbeigegangen.  :-[
Danke für die ganzen Infos.
Besonders mit Port 9001, meine Gedanken gingen auch schon in die Richtung, hatte es aber noch nicht weiterverfolgt.

Also vielen Dank nochmals, werde über den weiteren Fortschritt berichten (aber wohl besser in diesem Thema).

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 WH1080 / IO Homecontrol

stoxx

Hi 2P4u,

klar schicke ich Dir meinen Roomba-Code, bin aber selber kein FHEM/Perl- Experte..

Ich fange einfach mal bei den 2 dummys an:

Dem dummy "roombabef" gebe ich die Roomba-Befehle, die per cgi ansteuerbar sind:

define roombabef dummy
attr roombabef webCmd start:stop:dock:spot


"roostat" soll den aktuellen Status des Roombas auslesen:

define roostat dummy


Dann gehts weiter mit dem Kalender. Ich habe dafür einen eigenen "Roomba" Kalender bei Google eingerichtet:

define RoombaCal Calendar ical url  https://www.google.com/calendar/ical/xxxxxxxxxxxxxxxxxxxxxxxxxxx



Damit kann man endlich einen fixen Zeitpunkt für den Roomba-Start festlegen und nicht nur bestimmte Wochentage. Das ist besonders nützlich, wenn man längere Zeit weg ist und den Roomba nur einmal vor Ankunft starten möchte.

Weiter gehts mit der Roomba-Status-Meldung, damit der Roomba FHEM meldet, was er gerade macht:

define RoombaStat HTTPMOD http://192.168.178.23/roomba.xml 180
attr RoombaStat readingsName2 Distance
attr RoombaStat readingsName3 ChState
attr RoombaStat readingsName4 Current
attr RoombaStat readingsRegex2 'Distance'</name><value>([\D]?[\d]+)
attr RoombaStat readingsRegex3 State'</name><value>([\d])
attr RoombaStat readingsRegex4 'Current'</name><value>([\D]?[\d]+)


Jetzt die notifys:
Der erste notify zum Ausführen des Roomba-Befehls, den z.B. im Floorplan einbinden kannst.

define roomba_notify notify roombabef { if (Value("roombabef") eq "start") {{GetFileFromURL("http://192.168.178.23:9001/roomba.cgi", 3)};;\
fhem("define roombago at +00:00:15 {GetFileFromURL('http://192.168.178.23/roomba.cgi?button=CLEAN', 3)};;");;};;
if (Value("roombabef") eq "stop") {{GetFileFromURL("http://192.168.178.23/roomba.cgi?button=CLEAN", 3)}};;
if (Value("roombabef") eq "dock") {{GetFileFromURL("http://192.168.178.23/roomba.cgi?button=DOCK", 3)}};;
if (Value("roombabef") eq "spot") {{GetFileFromURL("http://192.168.178.23/roomba.cgi?button=SPOT", 3)}};;}


Der notify für den Kalender:

define RoombaStartCal notify RoombaCal:modeStarted.*googlecom.* {roombastart();;}


Und nun noch für den Status (auch geeignet zur Anzeige im Floorplan). Leider gibts hier keinen Status "gedockt", "in Arbeit", usw. Man kann das nur über diverse Kombinationen der Sensoren-Werte erreichen. Ich habe das so gemacht:

define roostat_notify notify RoombaStat
{
if (ReadingsVal("RoombaStat", "ChState", 0) == 2) {fhem("set roostat 2");;}
if ((ReadingsVal("RoombaStat", "ChState", 0) == 3)||((ReadingsVal("RoombaStat", "ChState", 0) == 4)&&(ReadingsVal("RoombaStat", "Current", 0) >= -200))) {fhem("set roostat 0")};;
if ((ReadingsVal("RoombaStat", "ChState", 0) == 4)&&(ReadingsVal("RoombaStat", "Distance", 0) == 0)&&(ReadingsVal("RoombaStat", "Current", 0) < -200)&&(ReadingsVal("RoombaStat", "Current", 0) > -500)) {fhem("set roostat 3");;}
if ((ReadingsVal("RoombaStat", "ChState", 0) == 4)&&(ReadingsVal("RoombaStat", "Distance", 0) != 0)&&(Value("roostat") != 1)) {fhem("set roostat 1");;}
}

Dabei bedeutet der Wert von roostat folgendes: 0=Gedockt 1=Saugt  2=Lädt 3=steht irgendwo rum(Fehler!)
Dazu habe ich einige Zeit gegoogelt - eine Kombi aus vielen Vorschlägen in diversen Foren. Klappt ganz gut!

Mehr hab ich bis jetzt nicht.. Ist bestimmt auch alles noch nicht ausgereift, aber bis jetzt funzt es!
Achtung: Den Code oben habe ich aus der fhem.cfg rauskopiert..

Grüße
stoxx

Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

2P4u

Super cool  8)

So ist schon sehr viehl mehr möglich mit dem sauger.
Was jetzt noch toll wäre, wenn wir den iRobot Roomba Driver ansteuern könnten.
Sprich wir lassen den Roomba wenn er 5x gesagt hat (in der Regel ist er dann voll) einfach 3 Sekunden vom Dock rückwärts fahren.
Dann sieht man, dass man den Behälter leeren muss.
Mein Roomba steht z.B. unter einem Schrank und somit vergesse ich oft ihn zu leeren.

Gruss Daniel
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

stoxx

Ja, das mit dem Driver wäre schon klasse.. Mein Roomba steht auch unter nem Schrank und ich lasse ihn einfach per "Start" "Stop" Befehl per Timer über AT 35 sek fahren und dann landet er immer an der selben Stelle - und zwar außerhalb des Schranks  ;)
Aber keine Frage -schöner mit einem direkten Steuerbefehl, aber leider keine Ahnung wie...
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

stoxx

Habe die Steuerbefehle gefunden:

Zitat
Parameter für http://<IP>/rwr.cgi?exec=<Befehl>
rwr.cgi?exec=h     "start driver mode"
rwr.cgi?exec=j      "main brush"
rwr.cgi?exec=k     "side brush"
rwr.cgi?exec=a     "vorwärts"
rwr.cgi?exec=b     "15 Grad Links"
rwr.cgi?exec=c      "45 Grad Links"
rwr.cgi?exec=d      "90 Grad links"
rwr.cgi?exec=l       "rückwärts"
rwr.cgi?exec=e      "15 Grad Rechts"
rwr.cgi?exec=g      "90 Grad Rechts"
rwr.cgi?exec=f       "45 Grad Rechts"
rwr.cgi?exec=1      "IDLE"
rwr.cgi?exec=4      "Clean"
rwr.cgi?exec=5      "Spot"
rwr.cgi?exec=6      "Dock"

Ich überarbeite gerade meinen "ich fahre unter dem Schrank hervor" Code  :D

Grüße
stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

2P4u

Perfekt!
Leider gibts keinen "Gefällt mir" Button :(

Jetzt können wir eigentlich fast alles was mit dem Roomba möglich ist.
Bastel mir vielleicht noch ne Webcam drauf ;)

Gruss
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

2P4u

Zitat von: stoxx am 13 November 2014, 19:29:38
Habe die Steuerbefehle gefunden:

Ich überarbeite gerade meinen "ich fahre unter dem Schrank hervor" Code  :D

Grüße
stoxx

Hi Stoxx
Ich überarbeite auch grade meine ganze Roomba Geschichte. Bisher funktioniert alles wirklich prima.
Jetzt wollte ich ihn unterm Schrank vorfahren lassen, jedoch wenn ich ein http://192.168.178.69/rwr.cgi?exec=rwr.cgi?exec=h eingebe kommt im Browser eine 0 zurück.

Wie hast du das bei dir gelösst?
Ich habe vor:
Starten der Driver mode
Fahre 3 sec rückwärts
(Wie stoppt er dann? Den link nochmal ausführen?)
Dreh dich um 90° nach links.

Das wäre alles was er machen sollte.
Das ganze würde ich gerne mit eine Weekdaytimer immer Samstags laufen lassen.

Kannst du mal deine Lösung posten, damit ich n Anhaltspunkt habe?

Vielen Dank und Grüsse
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate