Autor Thema: Integralfunktion bei UserReadings  (Gelesen 17001 mal)

Offline buennerbernd

  • Developer
  • Full Member
  • ****
  • Beiträge: 478
Antw:Integralfunktion bei UserReadings
« Antwort #15 am: 22 November 2022, 10:54:32 »
Mir ist aufgefallen, dass userReadings, bei jeder Änderung im Device aktualisiert werden.
Dadurch halten sich meine Befürchtungen wegen Verfälschungen durch zu lange Intervalle nun in Grenzen.
Modulentwickler von KLF200 und KLF200Node

Offline Ajuba

  • Full Member
  • ***
  • Beiträge: 176
Antw:Integralfunktion bei UserReadings
« Antwort #16 am: 01 Januar 2023, 09:57:32 »
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?
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

Offline simonberry

  • Full Member
  • ***
  • Beiträge: 106
Antw:Integralfunktion bei UserReadings
« Antwort #17 am: 01 Januar 2023, 13:34:39 »
Hallo Ajuba,

leider verstehe ich Dein Excel Tabelle nicht ganz. Welche Seite ist die von FHEM ermittelte Energie, und welche hast Du mit Excel berechnet, und wie hast Du die Energie in Excel berechnet?

viele Grüße
Simonberry

NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

Offline Ajuba

  • Full Member
  • ***
  • Beiträge: 176
Antw:Integralfunktion bei UserReadings
« Antwort #18 am: 01 Januar 2023, 15:08:24 »
Ich habe das Problem gelöst durch Entfernen von UserReading Definition und Löschen des UserReadings.
Nach Neueingabe zählt integral korrekt.
« Letzte Änderung: 04 Januar 2023, 12:58:33 von Ajuba »
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight