at um den Tagesstand zu loggen und die Differenz dazu

Begonnen von tomix, 11 Januar 2021, 23:13:16

Vorheriges Thema - Nächstes Thema

tomix

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

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

rabehd

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.
Auch funktionierende Lösungen kann man hinterfragen.