Ich versuche nach obiger Erklärung die Funktion "intergral" bei UserReadings zur Berechnung der Gesamtenergie meiner Wärmepumpe einzusetzen habe aber starke Abweichungen zu der händischen Berechnung. Siehe Screenshot des Excel.
attr Fernwaerme userReadings Energie integral {ReadingsVal("Fernwaerme","Leistung",0)/3600}
Ich wende es auf ein UserReding eines MQQT Devices an. myElEnergy ist die unterste Zeile des codes.
defmod WP MQTT2_DEVICE ESPAltherma_dev
attr WP DbLogInclude myThPowerBW,myElPowerBW,myThEnergyBW,myElEnergyBW,myElPowerBUH1,myElEnergy,Raumheizbetrieb,2-Wege-Ventil_ON-Heizen/OFF-Kuehlen,3-Wege-Ventil_ON-DHW/OFF-Raum,Abtauung,Aktuelle_Betriebsart,Alarmausgabe,Aussentemperatur_R1T,Betrieb/Stoerung,BSH,Drehzahl_Verdichter_U/Sek,Durchflussmenge_l/min,Heizstab_Stufe-1,Heizstab_Stufe-2,Hochleistungs-DHW-Betrieb,INV_Primaerstrom_A,Raumtemperatur_R1T,Notbetrieb_aktiviert/nicht_aktiviert,R1T-Wasser_Vorlauftemperatur_nach_Plattenwaermetauscher,R2T-Wasser_Vorlauftemperatur_nach_Heizstab,R4T-Wasser_Ruecklauftemperatur_vor_Plattenwaermetauscher,R5T-Brauchwassertemperatur_im_Speicher,Raumheizbetrieb,Raumheizung_Betriebsleistung,Schallreduzierter_Betrieb,Sollwert_Brauchwasser,Sollwert_Heizungsvorlauf,Spannung_N-Phase_V,Stoercode,System_AUS,Umwaelzpumpenbetrieb,Ventilator_1_Stufe,Ventilator_2_Stufe,Waermetauscher_Mitteltemperatur,Wasserdruck,myCOP,myElPower,myThPower
attr WP IODev myBroker
attr WP event-on-change-reading myThPowerBW,myBW,myElPowerBW,myThEnergyBW,myElEnergyBW,myElPowerBUH1,myElEnergy,Raumheizbetrieb,2-Wege-Ventil_ON-Heizen/OFF-Kuehlen,3-Wege-Ventil_ON-DHW/OFF-Raum,Abtauung,Aktuelle_Betriebsart,Alarmausgabe,Aussentemperatur_R1T,Betrieb/Stoerung,BSH,Durchflussmenge_l/min,Heizstab_Stufe-1,Heizstab_Stufe-2,Hochleistungs-DHW-Betrieb,INV_Primaerstrom_A,Raumtemperatur_R1T,Notbetrieb_aktiviert/nicht_aktiviert,R1T-Wasser_Vorlauftemperatur_nach_Plattenwaermetauscher,R2T-Wasser_Vorlauftemperatur_nach_Heizstab,R4T-Wasser_Ruecklauftemperatur_vor_Plattenwaermetauscher,R5T-Brauchwassertemperatur_im_Speicher,Raumheizbetrieb,Raumheizung_Betriebsleistung,Schallreduzierter_Betrieb,Sollwert_Brauchwasser,Sollwert_Heizungsvorlauf,Spannung_N-Phase_V,Stoercode,System_AUS,Umwaelzpumpenbetrieb,Ventilator_1_Stufe,Ventilator_2_Stufe,Waermetauscher_Mitteltemperatur,Wasserdruck,myCOP,myElPower,myThPower
attr WP event-on-update-reading Drehzahl_Verdichter_U/Sek
attr WP eventMap /Fan Only:Fan_Only
attr WP readingList ESPAltherma_dev:homeassistant/sensor/espAltherma/config:.* { json2nameValue($EVENT) }\
ESPAltherma_dev:espaltherma/LWT:.* LWT\
ESPAltherma_dev:homeassistant/switch/espAltherma/config:.* { json2nameValue($EVENT) }\
ESPAltherma_dev:espaltherma/log:.* log\
ESPAltherma_dev:espaltherma/ATTR:.* { json2nameValue($EVENT) }
attr WP room MQTT2_DEVICE,WP
attr WP userReadings myAbtauung {((ReadingsVal ("WP","Abtauung",0))) eq "ON" ? (1) : (0)},\
myBW {((ReadingsVal ("WP","3-Wege-Ventil_ON-DHW/OFF-Raum",0))) eq "ON" ? (1) : (0)},\
myElPower {(((ReadingsVal ("WP","INV_Primaerstrom_A",0))*230)+(ReadingsVal ("WP","myElPowerBUH1",0))+(ReadingsVal ("WP","myElPowerBUH2",0))) ;;;;},\
myElPowerBUH1 {((ReadingsVal ("WP","Heizstab_Stufe-1",0))) eq "ON" ? (3000) : (0)},\
myElPowerBUH2 {((ReadingsVal ("WP","Heizstab_Stufe-2",0))) eq "ON" ? (6000) : (0)},\
myElPowerBW {(ReadingsVal ("WP","myElPower",0))*(ReadingsVal ("WP","myBW",0)) ;;;;},\
myThPowerBW {((ReadingsVal ("WP","R5T-Brauchwassertemperatur_im_Speicher",0) - ReadingsVal ("myBWStart","state",0))*230*1.1639)*(ReadingsVal ("WP","myBW",0)) ;;;;},\
myThPower {((ReadingsVal ("WP","R1T-Wasser_Vorlauftemperatur_nach_Plattenwaermetauscher",0) - ReadingsVal ("WP","R4T-Wasser_Ruecklauftemperatur_vor_Plattenwaermetauscher",0))*ReadingsVal ("WP","Durchflussmenge_l/min",0)*60*1.1639);;;;},\
myCOP {((ReadingsVal ("WP","myThPower",0))/(ReadingsVal ("WP","myElPower",0))) > 0 ? ((ReadingsVal ("WP","myThPower",0))/(ReadingsVal ("WP","myElPower",0)+0.1)) : (0)},\
myThEnergyBW integral {ReadingsVal ("WP","myBW",0) * ((ReadingsVal ("WP","R5T-Brauchwassertemperatur_im_Speicher",0) - ReadingsVal ("myBWStart","state",0))*230*1.1639/3600/1000) ;;;;},\
myElEnergyBW integral {ReadingsVal ("WP","myElPowerBW",0)/3600/1000},\
myElEnergy integral {ReadingsVal("WP","myElPower",0)/3600/1000}\
Das Ergebnis der Fhem Integral Berechnung weicht vollkommen von meiner händischen Excel Berechnung und vom Smartmeter ab.
Die Fhem Integral Berechnung liefert viel kleinere Werte.
Die Zeitabstände der Readings sind unterschiedlich aber das sollte ja nichts ausmachen.
myElEnergy ist auch als event-on-change-reading gesetzt und die Timestamps passen auch zusammen.
Die Division durch 3600 und durch 1000 ist um von Wattsekunden auf kWh zu kommen.
Wo könnte der Fehler liegen?