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(\
" ;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
wie wärs mit dem WaterCalculator ?
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.