Kann man event_Readings verzögern?

Begonnen von FunkOdyssey, 30 Juli 2020, 16:11:34

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Hallo, besteht die Möglichkeit, die Inhalte in event_Readings irgendwie zu verzögern?
Ich habe Sensoren, die zu schnell pollen und ich will mit event_Readings einen Median und einen größeren Abstand zwischen den Events erzeugen.
Danke.

Damian

Zitat von: FunkOdyssey am 30 Juli 2020, 16:11:34
Hallo, besteht die Möglichkeit, die Inhalte in event_Readings irgendwie zu verzögern?
Ich habe Sensoren, die zu schnell pollen und ich will mit event_Readings einen Median und einen größeren Abstand zwischen den Events erzeugen.
Danke.

Dann nimm Median von 5 oder 10, dann hast du automatisch eine Verzögerung.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Danke. Das hat nur leider den Nachteil, dass der Wert irgendwann stehenbleibt, da auf 5-10 weitere Events gewartet wird.

amenomade

Geht das nicht mit event-min-interval?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

FunkOdyssey

Ja und nein.
Zwar wird dann dadurch der Wert als Event verschickt.
Aber der Median wurde nicht neu berechnet. Somit bleibt dad Reading unverändert.

amenomade

Mir ist nicht klar welche Events zu verzögern willst. Das vom Sensor, oder das vom event_Readings? Je nach dem meinte ich entspr. das event-min-interval zu setzen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

Zitat von: amenomade am 22 August 2020, 12:09:14
Mir ist nicht klar welche Events zu verzögern willst. Das vom Sensor, oder das vom event_Readings? Je nach dem meinte ich entspr. das event-min-interval zu setzen.

Also, wenn ein Sensor z. B. alle 30 Sekunden etwas sendet, dann wird mit einer Verzögerung bei med5 nach 5*30=150 Sekunden der entsprechende bereinigte Wert geliefert. Die Häufigkeit des Triggerns bleibt aber die Gleiche.

Wenn das Modul nicht getriggert wird, dann liegt es ggf. an einem gesetzten event-on-change-Attribut beim Sensor, dann sollte event-min-interval beim Sensor helfen, damit gleiche Events durchkommen.

 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

#7
Mir ist das eigentlich egal, wo verzögert wird. Ich habe einfach zu viele Events und würde die ansonsten einfach zum DOIF durchlassen und dort irgendwie drosseln.

Edit: Es tut mir leid, ich habe wieder den falschen Knopf gedrückt, statt Zitat, Änderung, ich kann es leider nicht mehr rückgängig machen.

Nachtrag von FunkOdyssey: Die Änderung kam nicht von mir. :D

FunkOdyssey

Zitat von: Damian am 22 August 2020, 12:20:08
Also, wenn ein Sensor z. B. alle 30 Sekunden etwas sendet, dann wird mit einer Verzögerung bei med5 nach 5*30=150 Sekunden der entsprechende bereinigte Wert geliefert. Die Häufigkeit des Triggerns bleibt aber die Gleiche.

Wenn das Modul nicht getriggert wird, dann liegt es ggf. an einem gesetzten event-on-change-Attribut beim Sensor, dann sollte event-min-interval beim Sensor helfen, damit gleiche Events durchkommen.



Ich probiere es noch einmal.
Dann könnte ich auch evtl. den Code dazu hier posten.

FunkOdyssey

Also ich kann machen was ich will.
Aber auch mit Median10 kommen die Events zu häufig.

Die Sensoren triggern alle 5 Sekunden.
Dort habe ich folgendes gesetzt:

event-min-interval lux:300,lightlevel:300
event-on-change-reading .*


Das DOIF sieht so aus:


defmod di_light DOIF ##
attr di_light do always
attr di_light event-min-interval lux:300,lightlevel:300
attr di_light event-on-change-reading .*
attr di_light event_Readings lux:round([sensor:lux:med10],0),\
lightlevel:round([sensor:lightlevel:med10],0)
attr di_light readingList lux,lightlevel
attr di_light setList lux\
lightlevel


Trotzdem kommen fast alle 5s neue Werte im DOIF-FileLog an.

Damian

Zitat von: FunkOdyssey am 22 August 2020, 12:42:09
Also ich kann machen was ich will.
Aber auch mit Median10 kommen die Events zu häufig.

Die Sensoren triggern alle 5 Sekunden.
Dort habe ich folgendes gesetzt:

event-min-interval lux:300,lightlevel:300
event-on-change-reading .*


Das DOIF sieht so aus:


defmod di_light DOIF ##
attr di_light do always
attr di_light event-min-interval lux:300,lightlevel:300
attr di_light event-on-change-reading .*
attr di_light event_Readings lux:round([sensor:lux:med10],0),\
lightlevel:round([sensor:lightlevel:med10],0)
attr di_light readingList lux,lightlevel
attr di_light setList lux\
lightlevel


Trotzdem kommen fast alle 5s neue Werte im DOIF-FileLog an.

Die Attribute event-min-interval und event-on-change-reading .* gehören zum Sensor.

Sonst beim DOIF cmdpause Attribut setzen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Zitat von: Damian am 22 August 2020, 12:52:09
Die Attribute event-min-interval und event-on-change-reading .* gehören zum Sensor.


Ja. Eigentlich wohl. Die richten im DOIF aber doch keinen Schaden an. Aber auch ohne gibt es keinen Unterschied.

Zitat
Sonst beim DOIF cmdpause Attribut setzen.

Ausprobiert. Ohne Erfolg. Kein Unterschied zu zuvor.

Damian

Zitat von: FunkOdyssey am 22 August 2020, 12:56:28
Ja. Eigentlich wohl. Die richten im DOIF aber doch keinen Schaden an. Aber auch ohne gibt es keinen Unterschied.

Ausprobiert. Ohne Erfolg. Kein Unterschied zu zuvor.

OK, ich sehe, dass du das DOIF nur für die berechneten Readings lux, lightlevel benutzt, da nützt cmdpause natürlich nichts.

Es steht und fallt alles mit den berechneten Readings.

Wenn die Readings nach jeder Berechnung einen unterschiedlichen Wert haben, dann nützt auch  event-on-change-reading natürlich nichts.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Mit dem Attribut event-aggregator im Ursprungsgerät kann ein Median berechnet werden und die Eventrate gedrosselt werden, https://commandref.fhem.de/commandref_DE.html#readingFnAttributes

FunkOdyssey

@Ellert: Danke. Ich kenne nicht eine Installation, in dem event-aggregator richtig funktioniert. Die Events kommen trotzdem in 5s-Intervallen.

Merkwürdig ist das Verhalten von event-aggregator nach Änderung daran. Man muss das Attribut jedesmal löschen und neu anlegen.