userReadings monotonic => Verdopplung des Werts

Begonnen von PatrickR, 20 Juli 2018, 22:41:48

Vorheriges Thema - Nächstes Thema

PatrickR

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
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook