FHEM Forum

FHEM => Sonstiges => Thema gestartet von: PatrickR am 20 Juli 2018, 22:41:48

Titel: userReadings monotonic => Verdopplung des Werts
Beitrag von: PatrickR am 20 Juli 2018, 22:41:48
Guten Abend zusammen!

Ich setze ein Userreading ein, um den Wert eines sich gelegentlich zurücksetzenden Regenmessers abzufangen:

attr AU.GA.Wetterstation userReadings 1.RAIN_COUNTER_FHEM:1.RAIN_COUNTER:.[\d\.]+ monotonic {ReadingsVal($name, '1.RAIN_COUNTER', 0)}


Das Gerät ist ein Homematic-IP-Gerät, das über hmccu an eine CCU angebunden ist. Diese meldet beim Neustart zunächst den Wert Null, was in der Folge zu einer Verdopplung des Userreadings führt:

TIMESTAMP DEVICE READING VALUE
2018-07-19 22:01:19 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:01:19 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 71.4
2018-07-19 22:03:05 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 71.4
2018-07-19 22:03:05 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:18:05 AU.GA.Wetterstation 1.RAIN_COUNTER 0.0
2018-07-19 22:18:05 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 71.4
2018-07-19 22:18:56 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:18:56 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 142.8
2018-07-19 22:21:17 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:21:17 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 142.8
2018-07-19 22:23:24 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:23:24 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 142.8
2018-07-19 22:26:21 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:26:21 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 142.8
2018-07-19 22:29:03 AU.GA.Wetterstation 1.RAIN_COUNTER 71.4
2018-07-19 22:29:03 AU.GA.Wetterstation 1.RAIN_COUNTER_FHEM 142.8


Das entspricht natürlich genau der Commandref, d. h. das monotonic Reading verhält sich korrekt.

Hat zufällig jemand dieses Problem schon gelöst, vielleicht elegant und robust?

Schon das Thema, mit welchem Kriterium man das Problem von einer tatsächlichen Sensoränderung unterscheidet, ist m. E. nicht ganz trivial. Ist beispielsweise event-on-change-reading mit einer Schwelle konfiguriert, hängt das Userreading dem Sensorwert hinterher und es kommt zu keiner exakten Verdoppelung. Man könnte natürlich die Größe des Sprungs des Quell-Readings berechnen und bei Überschreitung einer Schwelle davon ausgehen, dass es sich um keine "echte" Änderung des Werts handelt.

Patrick