Funktion monotonic bei userReadings

Begonnen von Prof. Dr. Peter Henning, 18 Mai 2024, 15:42:13

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Folgende Problematik:
- Meine Wallbox wird über HTTPMOD abgefragt und liefert dadurch ein Reading "energy".
- Dieses Reading wird von der Hardware jeweils auf Null gesetzt, wenn ein neuer Ladevorgang beginnt. Und auch nur dann, das kann durchaus Tage später sein.
- Das bedeutet, dass "energy" nicht die an diesem Tag ins Auto geladene Energie beinhaltet.

Also habe ich ein unserReading
energy_today:energy.* monotonic {ReadingsVal($NAME,"energy",0)}definiert, das außerdem um (kurz vor) Mitternacht auf Null gesetzt wird.

- Jetzt passiert, reproduzierbar, Folgendes:
-- Beim Abschluss eines Ladevorgangs nimmt "energy" den letzten Gesamtwert dieses Vorgangs an, z.B. 21.328 (kWh).
-- "energy_today" allerdings nimmt den letzten Änderungsvorgang nicht auf und zeigt z.B. nur 20.973 (kWh).
-- Dieser letzte Wert entspricht "energy" ungefähr zwei Minuten vor dem Ende des Ladevorgangs.

Daher folgende Frage in die Runde: Unter welchen Bedingungen erkennt ein userReading mit monotonic _nicht_, dass ein weiterer positiver Schritt in der überwachten Größe stattgefunden hat?

Leider kann man das mit dieser konkreten Hardware nicht beliebig testen.

LG

pah

RalfRog

Hi an sich steckst du viel tiefer im Thema...

Als Denkanstoß (ich meine ich hätte es mal beobachtet):
kann es sein, dass das Problem am Anfang der Berechnung entsteht und monotonic erst ab dem zweiten Event die korrekten Deltas erkennen kann?
Du fängst ja quasi täglich von vorne an.

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Prof. Dr. Peter Henning

#2
Zitat von: RalfRog am 19 Mai 2024, 09:14:22Hi an sich steckst du viel tiefer im Thema...
Dachte ich auch. Ich habe das jetzt mal mittels eines Dummy überprüft, der ein Reading "energy" hat, das periodisch hochgezählt wird. Diese Hochzählung stoppt nach 30 Sekunden für weitere 30 Sekunden, dann geht es wieder bei Null los.

Das zugehörige userreading hat auch den Modifier "monotonic".

Und siehe da, das funktioniert ganz hervorragend. Mit anderen Worten: Das ist kein generelles Problem von monotonic, sondern hat irgendetwas mit diesem speziellen Anwendungsfall zu tun. Muss weiter erforscht werden, dazu fange ich beim nächsten Laden mal alle relevanten Werte ab und logge sie.

LG

pah