[Gelöst] Average Aggreation nur mit Werten die nicht älter sind als

Begonnen von Sirel, 28 Juli 2020, 21:24:50

Vorheriges Thema - Nächstes Thema

Sirel

Hallo zusammen,
ich möchte von zwei Helligkeitssensoren den mittlern Helligkeitswert haben. Einer der Sensoren bleibt aber geren "hängen", sodass der Mittlewert entsprechend verfälscht ist. In diesem Fall soll nur der Wert des noch funktionierenden Sensors genommen werden.

Dazu hatte ich überlegt die Aggregationsfunktion "Average" zu nehmen und als Nebenbedingung das Alter des Readings abzuprüfen.
Etwa so:
([#average:"^BM_Aussen":"brightness" and ReadingsAge($name,"brightness",11) <= 20]

Trotz des kurzen Zeitintervalls werden immer beide Sensorwerte ausgewertet, was mich vermuten lässt, dass der Alterscheck nur auf das Triggernde Device angewendet wird, nicht aber auf die gesamt Funktion. Damit macht die Altersprüfung in dieser Form keinen Sinn.

Hat noch jemand eine Idee, wie man mein Problem lösen kann, ohne das Alter je Device explizit abzuprüfen (also in einer generalisierten Form)?

Vielen Dank vorab,

Max

Damian

Du hast kein Reading angegeben, siehe Syntax:

[<function>:<format>:"<regex device>:<regex event>":<reading>|"<regex reading>":<condition>,<default>]

Vermutlich meinst du das hier:

[#average:"^BM_Aussen":brightness:ReadingsAge($name,"brightness",11) <= 20]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Sirel

Hi Damian,
wie immer, besten Dank für Deine prompte Hilfe. Ich glaube, jetzt habe ich die Syntax auch verstanden.

Schönen Abend und bis demnächst...

Max


FunkOdyssey

Kannst du mir mal ein List des DOIFs zeigen?
Mich interessiert das auch. Danke.