FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Rampler am 11 Juli 2017, 16:39:26

Titel: DOIF Verständnissfrage Event Reading
Beitrag von: Rampler am 11 Juli 2017, 16:39:26
Hallo zusammen,
ich dachte ich hätte das DOIF einigermaßen verstanden ...

Kann ich Readings abfragen, ohne das ein Event (keine Meldung im Eventlog) erzeugt wird ?

z.B.:
([Wetterstation:humidity] > 0 )   
wobei für die Wetterstation, event-on-change "no" kodiert ist.

Danke im Voraus

PS: Ich denke nicht oder ?
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: CoolTux am 11 Juli 2017, 16:46:51
Auf irgendein Event muss immer getriggert werden. Oder Du machst auf Zeit reagieren. Du kannst dann aber noch zusätzlich eine Abfrage machen. Einfach ein Fragezeichen davor. Steht aber auch alles in der super tollen Commandref mit so so vielen wundervollen Beispielen.

Was soll eigentlich event-on-change-reading "no" sein?
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: amenomade am 11 Juli 2017, 16:47:50
Du kannst abfrage mit [?Wetterstation:humidity] > 0

Da brauchst Du aber ein anderes Trigger in deiner Bedingung:

DOIF ([Device] eq "x" and [?Wetterstation:humidity] > 0) (do etwas)
Hier wird nur eine Änderung im Status von "Device" das DOIF triggern. Wenn eq "x", wird auch die "humidity" geprüft.
Eine Änderung der "huminity" wird aber nix schalten.
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: amenomade am 11 Juli 2017, 16:50:11
ZitatWas soll eigentlich event-on-change-reading "no" sein?
Wenn das Reading ""no"" sich ändert, wird ein Event generiert ;)
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: CoolTux am 11 Juli 2017, 17:01:22
Zitat von: amenomade am 11 Juli 2017, 16:50:11
Wenn das Reading ""no"" sich ändert, wird ein Event generiert ;)

Macht Sinn. Ich lerne ja auch noch dazu  ;D
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: Rampler am 11 Juli 2017, 17:10:02
Zitat von: CoolTux am 11 Juli 2017, 16:46:51
Auf irgendein Event muss immer getriggert werden. Oder Du machst auf Zeit reagieren. Du kannst dann aber noch zusätzlich eine Abfrage machen. Einfach ein Fragezeichen davor. Steht aber auch alles in der super tollen Commandref mit so so vielen wundervollen Beispielen.

Was soll eigentlich event-on-change-reading "no" sein?

Stimmt eigentlich, ich habe hier und da eben bei "event-on-change-reading" ein "no" kodiert, was einem nicht kodieren gleich ist, eigentlich dumm, mach ich mal bei Gelegenheit raus.


Hintergrund meines Anliegens:
Meine Wetterstation ist sehr geschwätzig, diese meldet alle 2-3 Minuten ihre Daten.
Da ich aber die Daten mitloggen will, habe ich einen 30 Minuten Timer gesetzt:
fhem trigger Wetterstation T: xx H: yy  << addLog
Das erzeugt jetzt nur noch alle 30 Minuten Meldungen im Eventlog.
Natürlich hätte ich auch das "event-min-intervall" nehmen können, glaub ich zumindest.
Da aber jetzt mein DOIF nicht triggert, muss ich wohl sowieso ran ..

Heißt jetzt also, wenn keine Meldungen für das abzufragende DOIF Device im EventLog stehen wird nie getriggert.
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: CoolTux am 11 Juli 2017, 17:17:46
Zitat von: Rampler am 11 Juli 2017, 17:10:02
Stimmt eigentlich, ich habe hier und da eben bei "event-on-change-reading" ein "no" kodiert, was einem nicht kodieren gleich ist, eigentlich dumm, mach ich mal bei Gelegenheit raus.

Damit sorgst Du dafür das gar kein Event mehr vom Device gesendet wird. Somit hat ein triggernes DOIF oder Notify keine Funktion.
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: CoolTux am 11 Juli 2017, 17:23:01
Mach Mal bei Deiner Wetterstation ein event-on-change-reading .*

Dann wird nur ein Event ausgelöst und somit auch geloggt wenn sich irgend ein Reading ändert. Wenn Du nur bestimmte Readings loggen und/oder reagieren möchtest dann statt .* die Readingsnamen einsetzen durch Komma getrennt. Schau mal bitte ins Einsteiger PDF.
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: Brockmann am 12 Juli 2017, 08:43:38
Zitat von: Rampler am 11 Juli 2017, 17:10:02
Natürlich hätte ich auch das "event-min-intervall" nehmen können, glaub ich zumindest.
Da glaubst Du richtig. Genau für solche Fälle ist dieses Attribut da und bietet dann eine einfache Lösung.
event-min-interval .*:1800
Damit erzeugt jedes Reading frühestens alle 30 Minuten ein neues Event.
Titel: Antw:DOIF Verständnissfrage Event Reading
Beitrag von: Per am 13 Juli 2017, 08:48:30
Zitat von: Rampler am 11 Juli 2017, 16:39:26ich dachte ich hätte das DOIF einigermaßen verstanden ...
Hmm...

Zitat von: Rampler am 11 Juli 2017, 16:39:26Kann ich Readings abfragen, ohne das ein Event (keine Meldung im Eventlog) erzeugt wird ?
Ursache und Wirkung verwechselt? Die Abfrage im DOIF erzeugt kein Event, sondern das Event bewirkt das "Loslaufen" (Triggern) des DOIF.
Ohne Event kein DOIF.
Allerdings gibt es auch Events, welche nicht im Eventlog landen, und das ist die Uhrzeit. Du könntest also aller 30 min (Beispiele stehen in der Command_ref zu hauf) triggern und anschließend beliebige Daten abfragen (mit [?Device:reading]).
Das DOIF selbst meldet sich dann aber noch im Eventlog ;).