[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

jmike

Hallo Patrick.

Spannend!
An der Stelle "teste" ich das empfangene JSON. Eigentlich sollte der Code dort gar nicht abrechen. Wenn überhaupt auf 487.
Ursache ist, dass das Modul das JSON nicht dekodieren kann. Also RooWifi non-konforme JSON Daten sendet!

Anscheinend waren meine Tests zu dem Thema nicht ausreichend.

Ist das Problem persistent? Kannst du mal das <roowifi>/roomba.json hier posten?

lg
mike



bacanol

Moin Moin!

Cooles Modul, leider läuft es bei mir nicht. Bekomme folgendes im Log:
2016.06.21 21:43:54.759 5: ROOWIFI: (Robbie) set Robbie clean
2016.06.21 21:43:54.786 3: ROOWIFI: (Robbie) try to connect to robbiedersauger.springfield.bacanol.de
2016.06.21 21:43:54.788 3: ROOWIFI: (Robbie) connection object built, initializing
2016.06.21 21:43:54.791 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:54.792 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:54.894 3: ROOWIFI: (Robbie) initialized
2016.06.21 21:43:54.903 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:54.905 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:54.908 1: ROOWIFI: (Robbie) connection failed

und kurz danach dann:
2016.06.21 21:43:59.764 3: ROOWIFI: (Robbie) internal interval timer set to call StartUpdate again in 120 seconds
2016.06.21 21:43:59.796 3: ROOWIFI: (Robbie) GetUpdate started
2016.06.21 21:43:59.909 3: ROOWIFI: (Robbie) seems to be offline
2016.06.21 21:43:59.920 3: ROOWIFI: (Robbie) ROOWIFI_FinishUpdate start
2016.06.21 21:43:59.940 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:59.943 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:59.945 5: ROOWIFI: (Robbie) set Robbie ?
2016.06.21 21:43:59.947 3: ROOWIFI: (Robbie) ROOWIFI_FinishUpdate error: offline
2016.06.21 21:44:13.526 5: ROOWIFI: (Robbie) set Robbie ?

IP-Adresse, Passwort und User habe ich schon mehrmals überprüft. Auch ein direkter json Aufruf funktioniert einwandfrei.

Die Perl Module liegen auch alle vor.

Hat jemand eine Idee?

Vielen Dank und viele Grüße

franky08

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

Hi.

bekommen wir schon hin :)

Hast du in der device definition tatsächlich einen fqdn eingetragen? Was passiert wenn du hier wirklich nur die IP einträgst?
Hostnamen hab ich glaub ich gar nicht getestet...

Zitat von: bacanol am 21 Juni 2016, 21:46:30
2016.06.21 21:43:54.786 3: ROOWIFI: (Robbie) try to connect to robbiedersauger.springfield.bacanol.de
...
2016.06.21 21:43:59.909 3: ROOWIFI: (Robbie) seems to be offline

Der Fehler ist recht eindeutig. FHEM kann den angegeben Host nicht auf Port 80 erreichen, da wird direkt abgebrochen.

also 2 Sachen:
- direkte IP
- im Zweifel mal usernamen und passwort im roowifi leer lassen

lg
mike

franky08

Darum hab ich nach dem list vom device gefragt  ;)
Das kam mir gleich "spanisch" vor.

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

bacanol

Hier der List:
Internals:
   CHANGED
   DEF        robbiedersauger.springfield.bacanol.de 120
   IPADDR     robbiedersauger.springfield.bacanol.de
   Interval   120
   NAME       Robbie
   NR         697
   STATE      offline
   TRIGGERTIME 1466540039.94973
   TRIGGERTIME_FMT 2016-06-21 22:13:59
   TYPE       ROOWIFI
   VERSION    0.0.9
   Readings:
     2016-06-21 22:12:00   state           offline
Attributes:
   event-on-change-reading *
   icon       scene_robo_lawnmower
   password   roombawifi
   room       Heizungsraum
   user       admin
   userattr   event-on-change-reading icon leaveDock password user verbose
   verbose    5



Das mit dem PW und User teste ich mal. Der Name anstatt IP geht zumindest in allen Browsern und via Ping, etc

franky08

ZitatDEF        robbiedersauger.springfield.bacanol.de 120

nimm da mal die IP Adresse, könnte wetten das es dann funktioniert.
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

#52
Hm..

Habe gerade noch mal einen Blick reingeworfen.

Bin mir nun doch sicher es liegt am user/pw.
Der IO::Socket::INET funktioniert laut dem Log noch. Der init vom connection Objekt dann nicht mehr.

Da habe ich tatsächlich kein user/passwort implementiert beim check von:
http://'.$self->{address}.'/roomba.json

Der Aufruf wird dein Roowifi blocken bzw. im Browser nach user/pw fragen. Kannst ja mal schauen was curl zurückbringt. Ein "unauthorized" sollte reichen. Wenn überhaupt keine Antwort kommt, hilft user/pw im Roowifi leer machen.

mike


bacanol

Super Hilfe!!  ;)

Es geht nur ohne User und PW bei mir. IP Addr oder FQDN ist das gleiche verhalten.

Prima!! Danke!!

jmike

Ok

Sorry, schlecht getestet ;)
Hab das Pw rausgenommen und diesen offline Check erst später hinzugefügt.
Ich werde das bei mir die Tage mal setzen und das Modul entsprechend fixen.

Lg
Mike

pscheblein

Hallo,

ja das Problem tritt immer wieder auf. Hier mein Roomba.json

{
"response": {
"r0": {
"name": "Bumps Wheeldrops",
"value": "0"
},
"r1": {
"name": "Wall",
"value": "0"
},
"r2": {
"name": "Cliff Left",
"value": "0"
},
"r3": {
"name": "Cliff Front Left",
"value": "0"
},
"r4": {
"name": "Cliff Front Right",
"value": "0"
},
"r5": {
"name": "Cliff Right",
"value": "0"
},
"r6": {
"name": "Virtual Wall",
"value": "0"
},
"r7": {
"name": "Motor Overcurrents",
"value": "0"
},
"r8": {
"name": "Dirt Detector - Left",
"value": "0"
},
"r9": {
"name": "Dirt Detector - Right",
"value": "0"
},
"r10": {
"name": "Remote Opcode",
"value": "0"
},
"r11": {
"name": "Buttons",
"value": "0"
},
"r12": {
"name": "Distance",
"value": "0"
},
"r13": {
"name": "Angle",
"value": "0"
},
"r14": {
"name": "Charging State",
"value": "4"
},
"r15": {
"name": "Voltage",
"value": "16253"
},
"r16": {
"name": "Current",
"value": "-250"
},
"r17": {
"name": "Temperature",
"value": "46"
},
"r18": {
"name": "Charge",
"value": "2618"
},
"r19": {
"name": "Capacity",
"value": "2696"
}
}
}

jmike

Hi.

Ist auf jeden Fall valides JSON bei dir!

Habe den Fehler mittlerweile auch 2x erhalten. Die Ursache ist mir noch nicht ganz klar, aber ich werde es im Code abfangen.

Ich habe manchmal noch ein anderes Phänomen.
Wenn der Roomba im Dock ist und ein "set roomba clean" ausgeführt wird, passiert einfach nichts. Erst ein zweites "clean" lässt ihn starten.
Wenn er Idled geht es sofort.

Hat das noch jemand anders bzw. kann es als konsistenten Fehler bestätigen?

Fehlt / buggt sonst irgendwas ausser:
- JSON Error 476
- konsistenter Passwort-support
- set-clean-bug beheben

franky08

ZitatWenn der Roomba im Dock ist und ein "set roomba clean" ausgeführt wird, passiert einfach nichts. Erst ein zweites "clean" lässt ihn starten.

Kann ich bestätigen, ist bei mir kontinuierlich so. Habe es erst einmal über einen dummy Switch mit notify gelöst, welches mit 3 sec. sleep, zwei mal clean auslöst.

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

Hi.

Heute gibts ein (letztes) Update übers Forum bevor das Modul ins SVN kommt und über "update" aktualisiert werden kann.

Ich habe etliches geändert und probiert die letzten Tage. Wollte eigentlich auf URL-only gehen, wird aber eher schlechter als der aktuelle Gateway-Mode.
Auch die Roowifi.pm Klasse wurde geändert, also File nach /FHEM kopieren und "reload 98_ROOWIFI" UND "reload Roowifi.pm" ausführen.

Was gibts neues:
- Logging erweitert/verbessert

- JSON Fehler "entsorgt".
   Ich teste den return-JSON um beim parsen nicht FHEM abzuschiessen, falls korrupt. Sollte das fehlschlagen hatte ich in der Vergangenheit die Fehlermeldung des Tests mit ins Log geschrieben. Das war verwirrend. Im Prinzip kann man es zwecks auto-re-schedule vergessen, die native Perl Fehlermeldung gibt es nur noch bei verbose 5.

- clean Command verbessert.
   Frank und Ich konnten einen Workaround finden um clean auch direkt aus dem Dock sauber zu starten. Dazu fährt der Roomba ab nun erstmal Rückwärts bevor er zu saugen beginnt.
   Die Parameter lassen sich über das Attribut "preCleanCmd" definieren. Default: "80 2", heisst: Geschwindigkeit 80 zurückfahren, 2 Sekunden Delay.
   Wenn euch das nicht reicht könnt ihr z.b. mit "200 5" die Fahrt verlängern.

- neues Attribut "nonChargingState"
   By Default ist Chargingstate 0 wenn er NICHT läd -> unterwegs. Bei älteren Geräten ist das anscheinend 4.
   Das braucht z.b @Blackharaz. "attr nonChargingState 4" und du brauchst den Code nicht ändern.

- default Attribute event-on-change gefixt, webCmd neu definiert

- Credential support (diesmal auch getestet)


Wenn alles läuft mach ich daraus v1.0 und submitte es ins SVN.

Gruß
mike


franky08

#59
PM eben gelesen, komme erst morgen dazu, haben heute Besuch und der Roomba steht im WZ  ;)

P.S. habe es mir nicht verkneifen können und die Module schnell mal aktualisiert, leider startet mein Roomba mit den defaults gar nicht mehr, es passiert zwar wake up aber er fährt nicht mehr aus dem Dock, habe auf meinem Produktivsystem noch die alte roowifi.pm und die von mir gestern angepasste 98_ROOWIFI.pm, also mit 2 sec sleep und leaveDock 200, damit startet er zuverlässig. Auch das ändern von preCleanCmd auf 200 5 bringt keine Besserung.

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