Generelle Frage NOTIFY / state

Begonnen von Det20, 28 April 2017, 12:44:05

Vorheriges Thema - Nächstes Thema

Det20

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.

Wzut

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" :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Det20

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.

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Det20

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

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

CoolTux


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.

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Wzut

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.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Det20

Ahhh danke, jetzt ergibt es einen Sinn. Es ist quasi zur vereinfachung.
Vielen Dank, wieder ein wenig schlauer