FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tomix am 11 Januar 2021, 23:13:16

Titel: at um den Tagesstand zu loggen und die Differenz dazu
Beitrag von: tomix am 11 Januar 2021, 23:13:16
Ich lese den Wasserzähler alle 5 Minuten aus, ESP32CAM: https://forum.iobroker.net/topic/36622/wasserz%C3%A4hler-version-2-all-in-device

Das funktioniert wunderbar und die ESP32CAM liefert die Werte via MQTT wie folgt:

defmod MQTT2_watermeter MQTT2_DEVICE watermeter
attr MQTT2_watermeter IODev MQTT2_FHEM_Server
attr MQTT2_watermeter devStateIcon {\
  "<div>" \
    . sprintf(\
    "&nbsp;;Zählerstand: %.0f Liter, %.3f m3",\
    ReadingsVal($name,"zaehlerstand",0),\
    ReadingsVal($name,"zaehlerstand",0)/1000\
    ) . "</div>"\
  }
attr MQTT2_watermeter icon sani_water_tap
attr MQTT2_watermeter readingList watermeter:wasserzaehler/zaehlerstand:.* zaehlerstand\
watermeter:wasserzaehler/error:.* error
attr MQTT2_watermeter room MQTT2_DEVICE
attr MQTT2_watermeter userReadings d_dt_zaehlerstand:zaehlerstand.* differential { ReadingsVal("MQTT2_watermeter","zaehlerstand",0)*60 }, diff_zaehlerstand:zaehlerstand.* difference { ReadingsVal("MQTT2_watermeter","zaehlerstand",0) }


Der Stand um Mitternacht wird wie folgt geloggt.

defmod at_Log_Wasseruhr at *23:59:59 setreading at_Log_Wasseruhr Wasseruhr_zaehlerstand [MQTT2_watermeter:zaehlerstand]


Wie kann ich nun die Differenz zum Vortag loggen um den Tagesverbrauch dann auch plotten zu können? Also irgend so was:

at_Log_Wasseruhr userReadings diff_Wasseruhr_zaehlerstand:Wasseruhr_zaehlerstand.* difference { ReadingsVal("at_Log_Wasseruhr","Wasseruhr_zaehlerstand",0) }, d_dt_Wasseruhr_zaehlerstand:Wasseruhr_zaehlerstand.* differential { ReadingsVal("at_Log_Wasseruhr","Wasseruhr_zaehlerstand",0) }

wie ergänze ich das nun beim at Befehl?

Gruss
tomix
Titel: Antw:at um den Tagesstand zu loggen und die Differenz dazu
Beitrag von: KölnSolar am 11 Januar 2021, 23:21:02
wie wärs mit dem WaterCalculator ?
Titel: Antw:at um den Tagesstand zu loggen und die Differenz dazu
Beitrag von: rabehd am 12 Januar 2021, 12:23:59
Ich rufe eine Funktion auf, die den Stand/Verbrauch von heute ins Reading "gestern" schreibt und das Reading des Standes von heute (danach) auf 0 setzt.