DOIF Verständnissfrage Event Reading

Begonnen von Rampler, 11 Juli 2017, 16:39:26

Vorheriges Thema - Nächstes Thema

Rampler

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 ?
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

CoolTux

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

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

ZitatWas soll eigentlich event-on-change-reading "no" sein?
Wenn das Reading ""no"" sich ändert, wird ein Event generiert ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

CoolTux

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

Rampler

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.
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

CoolTux

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

CoolTux

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

Brockmann

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.

Per

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