Verständnisfrage zu event-on-change-reading

Begonnen von Thomas_SH, 04 August 2015, 16:21:24

Vorheriges Thema - Nächstes Thema

Thomas_SH

Noch ein Un-Verständnis: Im Bild unten ist eine Meßwertkurve (blau) gezeigt. Zu erkennen ist, das die Werte um 1/10 (oder weniger) Grad schwankend geloggt werden, also auch entsprechend viele Dateieinträge produziert werden. In dazugehörendem Parameterfeld ist jedoch bei "event-on-change-reading" eine Schwelle von 2 eingetragen. Warum wirkt/funktioniert die nicht?

Thomas


Elektrolurch

Zitat
"event-on-change-reading" eine Schwelle von 2 eingetragen. Warum wirkt/funktioniert die nicht?

event-on-change-reading hat als Parameter jene readings (oder auch einen regex wie .*) für die es gelten soll.
Matched ein reading, welches in event-on-change-reading eingetragen ist wenn das device einen Wert liest, so wird geprüft, ob der neue Wert ungleich dem alten Wert ist. Wenn ja, wird ein Ereignis  erzeugt, ist der neue Wert gleich dem alten Wert, wird kein Ereignis generiert.

Lies in der Commandref noch mal den Abschnitt zu den FN-Attributen durch, dann wirst Dui finden, was Du benötigst.

Gruß Elektrolurch
configDB und Windows befreite Zone!

Thomas_SH

Zitat von: Elektrolurch am 04 August 2015, 16:31:12

Matched ein reading, welches in event-on-change-reading eingetragen ist wenn das device einen Wert liest, so wird geprüft, ob der neue Wert ungleich dem alten Wert ist. Wenn ja, wird ein Ereignis  erzeugt, ist der neue Wert gleich dem alten Wert, wird kein Ereignis generiert.


Commandref HABE ich mehrfach gelesen, aber nicht verstanden. Aber dein Satz oben ist noch unverständlicher.

Thomas

JoWiemann

Dann ein zweiter Versuch:

event-on-change-reading => mache etwas, wenn sich ein reading (gelesener Wert) ändert

Benötigt wird, auf welches reading geprüft werden soll.

Beispiel bei einem FS20 Aktor (Funksteckdose)

Dort gibt es das reading "state" und die Definition lautet:

attr <device> event-on-change-reading state

Bei jeder Änderung von "state" wird nun geprüft, ob der neue Werte ungleich dem Alten ist. Ist das der Fall, dann wird ein Event ausgelöst, dass z.B. über ein notify abgefragt werden kann.

Es gibt nun devices, wie die KS300, die mehrere readings haben. Hier kann ich nun über eine "regular Expression" auch mehrere readings adressieren.

attr KS300 event-on-change-reading rain.*

Damit würden die readings: rain, rain_raw und rain_raw_adj geprüft werden.

Grüße Jörg





Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

LuckyDay

dein event-min-interval ist falsch, da fehlt das reading in der angabe

ich würde es einmal löschen und jedes attr einzeln setzten und probieren wie sich die attr verhalten für deine Anwendung

Thomas_SH

Zitat von: fhem-hm-knecht am 04 August 2015, 17:02:04
dein event-min-interval ist falsch, da fehlt das reading in der angabe

ich würde es einmal löschen und jedes attr einzeln setzten und probieren wie sich die attr verhalten für deine Anwendung

Laut commandref ist ein Wert anzugeben, der die Anzahl von Sekunden nennt bis was passiert. Was ist also an "300" falsch?

Commandref:
event-min-interval
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind.


Hm, das mit den "Paare"n hatte ich überlesen. Der letzte Satz aber ist entweder unvollständig oder falsch, denn dort wird nur EIN Wert beschrieben. Was soll im zweitem Wert (des Paares) drin stehen? Ein Null? Ein weiteres 300? Eine unendlich grosse Zahl? Woher soll ich erkennen, was der zweite Wert sein soll?

Thomas

LuckyDay

entweder so für alle Readings
event-min-interval   .*:300

odere einzelne
event-min-interval   temperature:300,temperature2:900   usw

Thomas_SH

Zitat von: JoWiemann am 04 August 2015, 17:00:35
Dann ein zweiter Versuch:

event-on-change-reading => mache etwas, wenn sich ein reading (gelesener Wert) ändert

Benötigt wird, auf welches reading geprüft werden soll.

Soweit gut...

Zitat von: JoWiemann am 04 August 2015, 17:00:35
Beispiel bei einem FS20 Aktor (Funksteckdose)

Dort gibt es das reading "state" und die Definition lautet:

attr <device> event-on-change-reading state

Bei jeder Änderung von "state" wird nun geprüft, ob der neue Werte ungleich dem Alten ist. Ist das der Fall, dann wird ein Event ausgelöst, dass z.B. über ein notify abgefragt werden kann.

Es gibt nun devices, wie die KS300, die mehrere readings haben. Hier kann ich nun über eine "regular Expression" auch mehrere readings adressieren.

attr KS300 event-on-change-reading rain.*

Damit würden die readings: rain, rain_raw und rain_raw_adj geprüft werden.

Grüße Jörg

Sorry, wenn ich mich jetzt blöd anhöre, aber du schreibst genauso ein ungenaues Blubber wie die Commandref - Wenig Text mit noch weniger Infos.

Dein Beispiel mit FS20 nützt mir nichts, denn den Inhalt des ersten Satzes wußte ich schon. Nur was nützt mir das bei meiner Frage?

Dein Beispiel mit KS300 ist überflüssig, denn das hilft mir nicht um zu verstehen, warum meine Parameter nicht funktionieren.


Also kann ich das nicht nachvollziehen. Wenn du an meinem konkretem Problem gezeigt hättest, WAS ich WO einzustellen habe, damit nur ein Logeintrag in die Datei geschrieben wird wenn sich der Messwert um 2 oder mehr Grad ändert, dann wäre mir geholfen und vielleicht würde ich dann das System auch verstehen.

Thomas

Thomas_SH

Zitat von: fhem-hm-knecht am 04 August 2015, 17:19:13
entweder so für alle Readings
event-min-interval   .*:300

odere einzelne
event-min-interval   temperature:300,temperature2:900   usw

NÖ!

Laut commandref ist "event-min-interval" ein Befehl für eine Zeitangabe. Da hat "temperature" also gar nichts drin zu suchen. Ausserdem soll nur was passieren, wenn die Temperatur um 2 Grad abweicht, nicht um 300 Grad. Dafür soll spätestens alle 300 SEKUNDEN ein Wert geschrieben werden.

ODER IST DIE COMMANDREF FALSCH???

Thomas


LuckyDay

ZitatKommata getrennte Liste von "readings:minInterval" Paare

Was heißt denn hier NO!

ist temperature denn kein readings ? bei dir?

event-min-interval   temperature:300


justme1968

ZitatNÖ!

doch...

für event-min-interval gibst du jeweils paare aus reading und zeit an die angeben wann dieses reading frühestens ein event erzeugen soll.

für deinen fall brauchst du aber event-on-change-reading um anzugeben das das event nur erzeugt werden soll wenn der wert sich geändert hat bzw. wenn er sich um mindestens einen bestimmten betrag geändert hat.

wenn du zusätzlich zu event-on-change-reading auch noch event-min-interval passend setzt wird nach dem angegebenen intervall auch dann genau ein mal ein event erzeugt wenn due schwelle nicht erreicht wurde.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thomas_SH

Zitat von: fhem-hm-knecht am 04 August 2015, 17:40:07
Was heißt denn hier NO!

ist temperature denn kein readings ? bei dir?

event-min-interval   temperature:300

Das Ereignis soll bei *2* Grad passieren, nicht bei 300 Grad. Entweder "Nö" oder die Commanref ist falsch (im Sinne von unvollständig).

Thomas

justme1968

oder du liest nicht was über deinem beitrag steht...
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

LuckyDay

event-min-interval ist eine andere Funktion wie event-on-change-reading

du vermischt das gerade,
und welche Funktion wann sticht , bin ich mir gerade nicht sicher ob das dir klar ist

JoWiemann

Zitat von: Thomas_SH am 04 August 2015, 17:47:10
Das Ereignis soll bei *2* Grad passieren, nicht bei 300 Grad. Entweder "Nö" oder die Commanref ist falsch (im Sinne von unvollständig).

event-min-interval gibt die Zeit an, die zu vergehen hat, bis ein neues event akzeptiert wird.

event-min-interval   temperature:300 bedeutet: Bei Änderungen des readings wird erst ein event erzeugt, wenn 300 Sekunden vergangen sind und nicht wenn 300 sich die Temperatur um 300 Grad genändert hat.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM