Automower G3 (incl. Gardena) goes online via FHEM

Begonnen von Andi291, 20 März 2016, 17:59:34

Vorheriges Thema - Nächstes Thema

Andi291

Ja.

Einen guten XML-Parser hab ich nicht gefunden, also selber einen zusammengfrickelt. Lief aber instabil. Also hab ich auf json umgestellt. Das widerum ist in der Firmware 5b kaputt und muss manuell repariert werden.
Will aber bei json bleiben weil einfacher und effizienter.

Irgendwo da wird's liegen.

Fakt ist, bei mir geht's. Bei Euch nicht. Und das bringt mich ins grübeln...

Hau mal das bei Zeile 397 rein und mach nen Neustart. Ich brauch dann das Verbose-5-log...

my %tmp = %$answer;
print "answer: ", %tmp, "\n";

Jojo11


2016.04.16 17:37:49.343 5: enter get R70LI: R70LI hash: HASH(0x38fd680), attributes: R70LI, status
2016.04.16 17:37:49.529 3: callback - url http://xxx.xxx.xxx.xxx/json?cmd=status returned: {"successful": true:"status": {"status": 1, "mode": 0, "battery": 69, "hours": 689}:"timer": {"status": 1}}
2016.04.16 17:37:49.530 3: callback - url http://xxx.xxx.xxx.xxx/json?cmd=status repaired: {"successful": true,"status": {"status": 1, "mode": 0, "battery": 69, "hours": 689},"timer": {"status": 1}}
2016.04.16 17:37:49.531 5: decodeContent - NAME: kommunikation, VALUE: 1
2016.04.16 17:37:49.532 5: callback - communication ok
answer: timerHASH(0x401bfa0)statusHASH(0x3b4fa98)successful1

Andi291

So, und jetzt blick ichs echt nicht mehr.

Wo wird bitte aus

successful: true
successful: 1


?

Du hast irgend ne andere lib am start als ich...

Ersetz mal

if ($answer->{successful} =~ m/true/)

durch

if ($answer->{successful} =~ m/(true)|(1)/)

Jojo11

#78
Ich glaube wir kommen der Sache näher:

2016.04.16 18:07:22.811 5: enter get R70LI: R70LI hash: HASH(0x36e2c20), attributes: R70LI, status
2016.04.16 18:07:22.923 3: callback - url http://xxx.xxx.xxx.xxx/json?cmd=status returned: {"successful": true:"status": {"status": 1, "mode": 0, "battery": 66, "hours": 689}:"timer": {"status": 1}}
2016.04.16 18:07:22.924 3: callback - url http://xxx.xxx.xxx.xxx/json?cmd=status repaired: {"successful": true,"status": {"status": 1, "mode": 0, "battery": 66, "hours": 689},"timer": {"status": 1}}
2016.04.16 18:07:22.925 5: decodeContent - NAME: kommunikation, VALUE: 1
2016.04.16 18:07:22.926 5: callback - communication ok
answer: timerHASH(0x41a4c20)statusHASH(0x412e6c8)successful1
2016.04.16 18:07:22.926 5: callback - update readings
2016.04.16 18:07:22.927 5: decodeContent - NAME: Allgemein-status, VALUE: parken
2016.04.16 18:07:22.928 5: decodeContent - NAME: Allgemein-modus, VALUE: automatik
2016.04.16 18:07:22.928 5: decodeContent - NAME: Allgemein-batteriezustand, VALUE: 66
2016.04.16 18:07:22.929 5: decodeContent - NAME: Allgemein-betriebsstunden, VALUE: 689
2016.04.16 18:07:22.929 5: decodeContent - NAME: Timer-status, VALUE: aktiv
2016.04.16 18:07:22.930 5: decodeContent - NAME: Timer-startdatum, VALUE: undef
2016.04.16 18:07:22.931 5: decodeContent - NAME: Timer-startzeit, VALUE: undef
2016.04.16 18:07:23.010 5: enter set R70LI: R70LI hash: HASH(0x36e2c20), attributes: R70LI, ?


Wenn ich manuell "get status" anfordere, aktualisiert sich "state", aber die anderen Readings nicht.

LÄUFT! Er aktualisiert  :)
Du hattest die readings umbenannt  :o

Du kannst Dir ja mal

libjson-c2:armhf
libjson-perl

installieren. Dann wüssten wir, ob's daran liegt  ::)

schöne Grüße
Jo

Andi291

Um nicht zu sagen - damit geht's.

Laut Google wird bei decode_json true automatisch zu 1. Frage mich, warum bei mir nicht...

Anyway, wieder was gelernt!

Achtung: event-on-change-reading ist wieder aktiv. Möchtest Du alle Events sehen:

attr myMower event-on-change-reading inaktiv

Jojo11

Herzlichen Dank für Deine Mühen! Damit kann ich erstmal leben.

schöne Grüße
Jo

shorty1111

#81
Nun ist wohl irgendwas an mir vorbeigegangen:

Bei mir kommen mit dem Modul keine Readings in der Definition oder was ist wie verändert?

Hier das aktuelle Log deiner letzen angehängten Version (18:14) bei mir:

2016.04.16 20:48:16 3: callback - url http://192.168.0.60/json?user=Benutzer&pass=Passwort&cmd=status repaired: {"successful": true,"status": {"status": 0, "mode": 0, "battery": 100, "hours": 1568},"timer": {"status": 2,"next": {"date": "18.04.2016", "time": "06:00:00", "unix": 1460959200}}}
answer: successful1statusHASH(0x2e5a238)timerHASH(0x2e404a0)
2016.04.16 20:49:46 3: callback - url http://192.168.0.60/json?user=Benutzer&pass=Passwort&cmd=status returned: {"successful": true:"status": {"status": 0, "mode": 0, "battery": 100, "hours": 1568}:"timer": {"status": 2:"next": {"date": "18.04.2016", "time": "06:00:00", "unix": 1460959200}}}
2016.04.16 20:49:46 3: callback - url http://192.168.0.60/json?user=Benutzer&pass=Passwort&cmd=status repaired: {"successful": true,"status": {"status": 0, "mode": 0, "battery": 100, "hours": 1568},"timer": {"status": 2,"next": {"date": "18.04.2016", "time": "06:00:00", "unix": 1460959200}}}
answer: successful1statusHASH(0x2e40350)timerHASH(0x2b231d8)


Edit: So, in der Version auch die Änderung aus Post 77 gemacht und rennt erst mal.
Edit2: Mit Pollen im Reading ist aber noch nix .... -> Back to AutoMover
Hier meine cfg:

define GardenaR70 Robonect 192.168.0.60
attr GardenaR70 basicAuth xxxxxxxx:yyyyyy
attr GardenaR70 event-on-change-reading inaktiv
attr GardenaR70 pollInterval 60
attr GardenaR70 room GardenaR70
define Mower readingsGroup GardenaR70:<%measure_battery_75>,<Batterie>,Allgemein-batteriezustand GardenaR70:<%time_timer>,<Betriebsstunden>,Allgemein-betriebsstunden GardenaR70:<%rc_OPTIONS>,<Modus>,Allgemein-modus GardenaR70:<%rc_REPEAT>,<Status>,Allgemein-status GardenaR70:<%time_clock>,<NaechsterStart>,Timer-startzeit GardenaR70:<%time_calendar>,<NaechsterStart>,Timer-startdatum
attr Mower room GardenaR70
define FileLog_Gardena FileLog ./log/Gardena-%Y-%m.log GardenaR70:Allgemein-batteriezustand:.*
define SVG_FileLog_Gardena_1 SVG FileLog_Gardena:SVG_FileLog_Gardena_1:CURRENT

Andi291

#82
Morgen!

Jetzt weiß ich immer noch nicht, was mit der Version von 18:14 nicht läuft. Bei mir geht's, bei Jo auch. Ein bißchen präziser brauch ich es schon. Und Du hast NICHT die Version von 18:14. Da ist die Zeile answer: successful1statusHASH(0x2e5a238)timerHASH(0x2e404a0) nämlich raus. Also nochmal die Frage: Was genau klemmt bei Dir?

Zur Erinnerung: Polling läuft im 90s Rhythmus, Events werden nur bei Wertänderung geworfen. Du siehst also nur am Zeitstempel in der Detailansicht, dass sich was tut.
Wie mehrfach geschrieben - ohne verbose-5-logs kann ich NICHTS machen...

Grüße, Andi

EDIT: vielleicht shutdown restart vergessen?

Jojo11

Hast Du die Änderung mit (true|1) eingebaut? Das hatte bei mir den Unterschied gemacht.

schöne Grüße
Jo

Gesendet von meinem Nokia 8210

Andi291

Zefix...Nein, ich hatte die falsche Datei hochgeladen. Dennoch - shorties letzter Post basiert nicht auf der 18:14. Sonst wäre das Log anders...

Grüße, Andi

shorty1111

#85
So, nu läufts

Was war es? -> Event_on_update_reading

da kann ich dann ja nix sehen wenn das default aus ist.

sorry für die Umstände

Hier der laufende Code:


# Gardena R70
define mower Robonect 192.168.0.60
attr mower basicAuth xxxxxx:yyyyyyyyy
attr mower event-on-change-reading inaktiv
attr mower event-on-update-reading .*
attr mower pollInterval 60
attr mower room Unsorted
attr mower verbose 0

#Gruppe Mower fuer Anzeige
define Mower readingsGroup mower:<%measure_battery_75>,<Batterie>,Allgemein-batteriezustand\
mower:<%time_timer>,<Betriebsstunden>,Allgemein-betriebsstunden\
mower:<%rc_OPTIONS>,<Modus>,Allgemein-modus\
mower:<%rc_REPEAT>,<Status>,Allgemein-status\
mower:<%time_clock>,<NaechsterStart>,Timer-startzeit\
mower:<%time_calendar>,<NaechsterStart>,Timer-startdatum\

attr Mower room Automower
attr Mower valueStyle style="text-align:right"
# Loggen einer Auswahl von Daten aktivieren, Pfad/Dateiname ./log/mower-<Jahr>-<Monat>.log; Bsp.: "Mower-2015-01.log"
# =======================================================================================================================
define FileLog_mower FileLog ./log/mower-%Y-%m.log mower:Allgemein-batteriezustand:.*
attr FileLog_mower group Mower
attr FileLog_mower logtype text
attr FileLog_mower room LogFiles

#Plotten der Daten
define SVG_FileLog_mower_1 SVG FileLog_mower:SVG_FileLog_mower_1:CURRENT
attr SVG_FileLog_mower_1 room Automower,Plots


Jojo11

#86
V0.6 ist draußen. JSON-Fehler ist anscheinend behoben. Spannende Frage: Passt die neue Version noch zu Deinem Modul oder sollte ich wartenmit dem Update?

schöne Grüße
Jo

Andi291

#87
Servus Jo!

Altes Modul und neue FW sind kompatibel - hab grad geupdated und geprüft.
Dennoch eine neue Version anbei - wenn Fehler anstehen, wird die Fehlermeldung im Klartext als Reading angegeben.

Falls jetzt keine Riesen-Feature-Requests oder Mängel mehr kommen, würd ich das Modul die kommenden Tage noch ein wenig aufhübschen und dann einchecken...

Grüße, Andi

Jojo11

#88
Wow, fetten Dank! Heute komm ich nicht mehr dazu, aber morgen werde ich es testen. Features? Mmh, Akku-Temperatur könnte ich noch gebrauchen. Habe mich heute gefragt, ob der sich bei 3°C wohl fühlt  ;D

schöne Grüße
Jo

Nachtrag: Funktioniert. Readings haben sich minimal geändert, aber sonst musst eich nichts anpassen. Danke!

Adriano