Event-min-interval: Unterschied zwischen den Versionen

Aus FHEMWiki
Zur Navigation springen Zur Suche springen
(Artikel so umgeschrieben und ergänzt, das ich beim Lesen verstanden hätte, was das attr macht. Fehler bereinigt.)
Zeile 1: Zeile 1:
{{SEITENTITEL:event-min-interval}}  <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat -->
{{SEITENTITEL:event-min-interval}}  <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat -->
<!-- Infobox Attribut sinnvoll? -->
== Syntax ==


Mit dem Attribut [[event-min-interval]] kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event, auch ohne Wertänderung ausgelöst wird.


Mit dem Attribut [[event-min-interval]] kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event auch ohne Wertänderung oder Update ausgelöst wird.
In der Regel ist das Attribut sinnvoll vor allem in Kombination mit dem Attribut [[event-on-change-reading]] einsetzbar.
== Einführung ==
FHEM erzeugt für jedes gemeldete Reading ein Event, egal, ob das Reading sich geändert hat, oder nur intervallweise per Update aktualisiert wurde. Dieses Verhalten kann Nachteile haben und daher mit event-on-change-reading für ein Gerät abgestellt werden.
event-min-interval dient nun vor allem dazu, für Readings des Gerätes in einem festgelegtem (längerem) Intervall dennoch Events für Readings (und damit Logeinträge) zu erzeugen. Dies kann z.b. bei der Erzeugung von Graphen notwendig sein.
== Syntax ==
Das ''event-min-interval'' Attribut wird in der folgenden Weise spezifiziert:
Das ''event-min-interval'' Attribut wird in der folgenden Weise spezifiziert:


:<code><nowiki>attr <device> event-min-interval reading1:minInterval1[,reading2:minInterval2,...]</nowiki></code>
:<code><nowiki>attr <device> event-min-interval reading1:minInterval1[,reading2:minInterval2,...]</nowiki></code>


* Reading Name oder reguläre Ausdrücke
Die zu berücksichtigenden Readings sind als durch Komma getrennte Werte anzugeben, können aber auch über reguläre Ausdrücke zusammengefasst werden.
* minIntervall in Sekunden.
Das minIntervall wird in Sekunden angegeben.




== Wechselwirkungen ==  
== Wechselwirkungen ==  
Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-change-reading]] und [[event-on-update-reading]], bitte beim Einsatz berücksichtigen.
Angenommen als minIntervall werden 3600 Sekunden eingesetzt und bei [[event-on-update-reading]]
[[event-on-change-reading]] würde durch den Regulären Ausdruck .* alle Readings eingeschlossen, so ergeben sich folgende Wechselwierkungen:


Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-change-reading]] und [[event-on-update-reading]], bitte also unbedingt auch deren Beschreibung berücksichtigen!


{| class="wikitable"
{| class="wikitable"
Zeile 29: Zeile 39:
<br>
<br>
Bei event-on-change-reading kann zusätzlich noch ein Threshold gesetzt werden um die Anzahl der Events zu redizieren. Z.B. bei Temperaturwerten sinnvoll:<br>
Bei event-on-change-reading kann zusätzlich noch ein Threshold gesetzt werden um die Anzahl der Events zu redizieren. Z.B. bei Temperaturwerten sinnvoll:<br>
event-on-change-reading Temp.*:0.5 ,.*<br>
event-on-change-reading Temp.*:0.4 ,.*<br>
<br>
<br>
Alle Readings, die mit Temp beginnen erzeugen nur ein event wenn die Änderung >0.5 Grad ist. Alle anderen Readings erzeugen bei jeder Änderung ein Event.<br>
Alle Readings, die mit Temp beginnen erzeugen nur ein event wenn die Änderung >0.4 Grad ist. Alle anderen Readings erzeugen bei jeder Änderung ein Event.<br>
|.*:3600
|.*:3600
|Durch die Regex ".*" gilt für alle Readings:  
|Durch die Regex ".*" gilt für alle Readings:  
Ein Event wird '''sofort''' ausgelöst wenn sich der Reading Wert ändert,<br>
Ein Event wird '''sofort''' ausgelöst wenn sich der Reading Wert ändert,<br>
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist<br>
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist<br>
UND das Reading '''aktuaisiert''' wird.<br><br>
 
Wird ein Reading nicht aktualisiert (mit dem gleichen Wert) gibt es nach Ablauf der Zeit auch kein Event.<br><br>
Beispiel:<br>
Ein Raspberry Pi GPIO besitzt ein Attribut poll_interval, dieses wird z.B. auf 10 Minuten gesetzt.<br>
Dann werden die Readings alle 10 Minuten aktualisiert. Bei konstantem Wert wird nach 1 Stunde und maximal 10 Minuten ein Event gesendet.<br>
|-
|-
|.*
|.*
|nicht gesetzt
|nicht gesetzt
|.*:3600
|.*:3600
|TODO
|Ein Event wird ausgelöst, wenn der selbe Wert, der bereits im Reading steht, nochmal geschrieben wird (Update) UND mindestens min-interval Sekunden seit dem letzten Event vergangen sind. Diese Kombination hat womöglich wenig sinnvolle Anwendungsfälle.
|-
|-
|nicht gesetzt
|nicht gesetzt
Zeile 61: Zeile 67:


== Beispiele ==
== Beispiele ==
Um alle Readings eines Gerätes bei Aktualisierungen zu protokollieren, sollte das Attribut folgendermaßen gesetzt werden:
Hat man durch
:<code><nowiki>attr <device><nowiki>event-on-change-reading .*</nowiki></code>
erreicht, dass alle Readings des Gerätes nur noch bei Werteänderung eine Event erzeugen (und somit auch nur bei Werteänderung geloggt werden), kann mit
:<code><nowiki>attr <device> event-min-interval .*:3600</nowiki></code>
:<code><nowiki>attr <device> event-min-interval .*:3600</nowiki></code>
dafür gesorgt werden, dass spätestens jede Stunde dennoch für alle Readings ein Event erzeugt und geloggt wird, egal ob der Wert sich geändert hat oder nicht..


== Siehe auch ==
== Siehe auch ==
*[[event-on-update-reading]]
*[[event-on-update-reading]]
*[[event-on-change-reading]]
*[[event-on-change-reading]]
*[[event-min-interval]]
 






[[Kategorie:Attribut (allgemeingültig)]]
[[Kategorie:Attribut (allgemeingültig)]]

Version vom 3. Januar 2021, 20:00 Uhr


Mit dem Attribut event-min-interval kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event auch ohne Wertänderung oder Update ausgelöst wird. In der Regel ist das Attribut sinnvoll vor allem in Kombination mit dem Attribut event-on-change-reading einsetzbar.

Einführung

FHEM erzeugt für jedes gemeldete Reading ein Event, egal, ob das Reading sich geändert hat, oder nur intervallweise per Update aktualisiert wurde. Dieses Verhalten kann Nachteile haben und daher mit event-on-change-reading für ein Gerät abgestellt werden. event-min-interval dient nun vor allem dazu, für Readings des Gerätes in einem festgelegtem (längerem) Intervall dennoch Events für Readings (und damit Logeinträge) zu erzeugen. Dies kann z.b. bei der Erzeugung von Graphen notwendig sein.


Syntax

Das event-min-interval Attribut wird in der folgenden Weise spezifiziert:

attr <device> event-min-interval reading1:minInterval1[,reading2:minInterval2,...]

Die zu berücksichtigenden Readings sind als durch Komma getrennte Werte anzugeben, können aber auch über reguläre Ausdrücke zusammengefasst werden. Das minIntervall wird in Sekunden angegeben.


Wechselwirkungen

Dieses Attribut steht in Wechselwirkung mit den Attributen event-on-change-reading und event-on-update-reading, bitte beim Einsatz berücksichtigen.

Angenommen als minIntervall werden 3600 Sekunden eingesetzt und bei event-on-update-reading event-on-change-reading würde durch den Regulären Ausdruck .* alle Readings eingeschlossen, so ergeben sich folgende Wechselwierkungen:


Wechselwirkiungen
event-on-update-reading event-on-change-reading event-min-interval Wirkung
nicht gesetzt .*


Bei event-on-change-reading kann zusätzlich noch ein Threshold gesetzt werden um die Anzahl der Events zu redizieren. Z.B. bei Temperaturwerten sinnvoll:
event-on-change-reading Temp.*:0.4 ,.*

Alle Readings, die mit Temp beginnen erzeugen nur ein event wenn die Änderung >0.4 Grad ist. Alle anderen Readings erzeugen bei jeder Änderung ein Event.

.*:3600 Durch die Regex ".*" gilt für alle Readings:

Ein Event wird sofort ausgelöst wenn sich der Reading Wert ändert,
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist

.* nicht gesetzt .*:3600 Ein Event wird ausgelöst, wenn der selbe Wert, der bereits im Reading steht, nochmal geschrieben wird (Update) UND mindestens min-interval Sekunden seit dem letzten Event vergangen sind. Diese Kombination hat womöglich wenig sinnvolle Anwendungsfälle.
nicht gesetzt nicht gesetzt .*:3600 Durch die Regex ".*" gilt für alle Readings:

Ein Event wird sofort ausgelöst wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist EGAL ob das Reading aktualisiert wird oder gleich bleibt.


Beispiel: Temperatursensor sendet Temperatur-Werte, es wird ein Event erzeugt wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist EGAL ob die Temperatur sich verändert hat oder nicht.

Beispiele

Hat man durch

attr <device><nowiki>event-on-change-reading .*

erreicht, dass alle Readings des Gerätes nur noch bei Werteänderung eine Event erzeugen (und somit auch nur bei Werteänderung geloggt werden), kann mit

attr <device> event-min-interval .*:3600

dafür gesorgt werden, dass spätestens jede Stunde dennoch für alle Readings ein Event erzeugt und geloggt wird, egal ob der Wert sich geändert hat oder nicht..


Siehe auch