Hallo,
ich habe gerade einige Zeit damit verbracht, bei meinem Mäh-Roboter das Event "fehler" abzufangen:
define Gardena Robonect xxx.xxx.xxx.xxx
attr Gardena basicAuth .....
attr Gardena event-on-change-reading .*
attr Gardena event-on-update-reading .*
attr Gardena icon scene_robo_lawnmower
attr Gardena pollInterval 60
Die Abfrage von "Gardena:state" funktioniert nicht, obwohl ich im FHEM selbst beim Reading "state" den korrekten Wert sehe. Das Event wird aber niemals ausgelöst:
define Gardena.BrauchtHilfe notify Gardena:state:.* { if((ReadingsVal("Gardena","state","-") eq "fehler")) { fhem("macheirgendwastolles'") } }
Das Reading "allgemein-status" enthält eine Kopie. Wenn ich das Reading abfange, funktioniert es:
define Gardena.BrauchtHilfe notify Gardena:allgemein-status:.* { if((ReadingsVal("Gardena","allgemein-status","-") eq "fehler")) { fhem("macheirgendwastolles") } }
Blöde Frage: Wieso? Wenn ich das Reading in FHEM sehe dache ich, ich kann es auch abfragen. Aber wieso geht das nicht? Es funktioniert mit der anderen Lösung, möchte nur gerne verstehen, wieso es mit state nicht funktioniert.
Zitat von: Det20 am 28 April 2017, 12:44:05
notify Gardena:state:.*
Tipp : schau mal in den Event Monitor, da wird auch niemals "Gardena state:irgendetwas" stehen, sondern wie bei state üblich "Device Wert" :)
Hallo,
danke, aber wieso wird "state" als Reading aufgelistet, wenn ich es in einem Notify nicht abfragen kann? Laut Doku kann ich die Readings abfragen, geht aber nicht mit state.
Kann ich also immer nur Readings <> state abfragen? Sorry, aber will mir nicht einleuchten.
Gib mal ein "list Gardena".
attr Gardena event-on-change-reading .*
attr Gardena event-on-update-reading .*
Das könnte auch problematisch sein.
"event-on-update-reading .*" ist eigentlich das Standardverhalten.
1x sagst Du es soll nur ein Event geben wenn das Readings sich verändert und im nächsten Schritt wird das wieder auf Default zurückgesetzt indem alle Readings auf "event-on-update" gesetzt werden.
Was möchtest Du denn eigentlich?
Erzeugt denn state überhaupt ein Event?
Evtl. hilft im notify "attr <name> addStateEvent 1".
Gruß
Dan
Gruß
Dan
Zitat von: DeeSPe am 28 April 2017, 13:21:05
Gib mal ein "list Gardena".
Da taucht state auf:
Internals:
DEF xxx.xxx.xxx.xxx
DEVNAME Gardena
IP xxx.xxx.xxx.xxx
LAST_CMD cmd=status
LAST_COMM_STATUS success: erfolgreich
NAME Gardena
NR 65
STATE maehen
TYPE Robonect
Readings:
2017-04-28 13:23:14 allgemein-batteriezustand 45
2017-04-28 13:23:14 allgemein-betriebsstunden 405
2017-04-28 13:23:14 allgemein-dauer 0
2017-04-28 13:23:14 allgemein-modus manuell
2017-04-28 13:23:14 allgemein-status maehen
2017-04-28 13:23:14 state maehen
2017-04-28 13:23:14 timer-startdatum undef
2017-04-28 13:23:14 timer-startzeit undef
2017-04-28 13:23:14 timer-status deaktiviert
2017-03-31 08:47:58 winterschlaf off
2017-04-28 13:23:14 wlan-signal -72
2017-04-28 13:23:14 wlan-signal-prozent 38
Zitat von: DeeSPe am 28 April 2017, 13:21:05
1x sagst Du es soll nur ein Event geben wenn das Readings sich verändert und im nächsten Schritt wird das wieder auf Default zurückgesetzt indem alle Readings auf "event-on-update" gesetzt werden.
Was möchtest Du denn eigentlich?
Ups, Copy&Paste Fehler. Danke für den Hinweis.
Zitat von: DeeSPe am 28 April 2017, 13:21:05
Evtl. hilft im notify "attr <name> addStateEvent 1".
> Gardena: unknown attribute addStateEvent. Type 'attr Gardena ?' for a detailed list.
Kann man das global für alle deklarieren? Das macht meiner Meinung nach sowas von Sinn.
Zitat von: Det20 am 28 April 2017, 13:26:24
> Gardena: unknown attribute addStateEvent. Type 'attr Gardena ?' for a detailed list.
Kann man das global für alle deklarieren? Das macht meiner Meinung nach sowas von Sinn.
Das Attribut dem notify zuordnen, nicht dem Mäher!
Die Frage ist ob es das bringt bei dem Modul (welches ich nicht kenne).
Global kann man das m.E. nirgends setzen da das dann weitere Auswirkungen hätte.
Das Attribut ist eigentlich auch nur sinnvoll wenn im Event-Monitor das Event zwar ankommt, aber ohne das state davor.
Gruß
Dan
define Gardena.BrauchtHilfe notify Gardena:fehler set DEVICENAME macheirgendwastolles
Sollte bei state so eigentlich gehen.
ansonsten Eventmonitor aufmachen und das Event abfangen und schauen wie es genau aus schaut. Die benötigte Zeile makieren und sagen mach ein notify draus. Gibt wohl ganz neu jetzt einen button dafür.
Zitat von: Det20 am 28 April 2017, 13:20:53
Kann ich also immer nur Readings <> state abfragen? Sorry, aber will mir nicht einleuchten.
Wie immer bei solchen Sachen, Tante command.ref fragen :
ZitataddStateEvent
Das mit dem state Reading verknüpfte Event ist speziell, da das dazugehörige Prefix "state: " entfernt wird, d.h. $EVENT ist nicht "state: on", sondern nur "on". In manchen Fällen ist es aber erwünscht ein zusätzliches Event zu bekommen, wo "state: " nicht entfernt ist. Für diese Fälle sollte addStateEvent auf 1 gesetzt werden, die Voreinstellung ist 0 (deaktiviert).
Achtung:
dieses Attribut muss beim Empfänger (notify, FileLog, etc) gesetzt werden.
dieses Attribut zeigt nur für solche Geräte-Events eine Wirkung, die readingFnAttributes unterstützen.
Ahhh danke, jetzt ergibt es einen Sinn. Es ist quasi zur vereinfachung.
Vielen Dank, wieder ein wenig schlauer