FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: Morgennebel am 09 August 2018, 21:12:22

Titel: HM-ES-PMSw1-DR Hutschienen Aktor mit Messung: energy & energyCalc resetten?
Beitrag von: Morgennebel am 09 August 2018, 21:12:22
Moin Moin,

ich habe an meinem Warmwasser-Boiler ein HM-ES-PMSw1-DR Leistungsmesser/Aktor eingebaut. Dieser führt im Kanal _Pwr die readings energy und energyCalc.

Um besser verschiedene Konfigurationen vergleichen zu können, würde ich gerne jeden Tag um Mitternach bei 0.0 anfangen.

Ich habe versucht, die beiden readings mit setreading ... auf 0 zu setzen und sie zu löschen, leider bleiben die gespeicherten Werte immer erhalten.

Hat jemand eine schicke Idee, wie ich diese Werte nullen kann?

Danke, -MN
Titel: Antw:HM-ES-PMSw1-DR Hutschienen Aktor mit Messung: energy & energyCalc resetten?
Beitrag von: frank am 09 August 2018, 21:16:29
statistics?
Titel: Antw:HM-ES-PMSw1-DR Hutschienen Aktor mit Messung: energy & energyCalc resetten?
Beitrag von: Pfriemler am 10 August 2018, 08:43:10
oder einfacher: jeden Mitternacht den aktuellen Wert in ein separates reading wegschreiben und mit einem Userreading die Differenz aus aktuellem und Mitternachtswert den Tagesverbrauch errechnen lassen. Nutze ich so bei meinem Regenmesser.
Das originale Reading wird vom Messgerät geliefert und kann daher nicht per setreading genullt werden.
Und mitternächtlich stromlos machen um im Messgerät den Wert zu nullen ist nicht wirklich schick.
Titel: Antw:HM-ES-PMSw1-DR Hutschienen Aktor mit Messung: energy & energyCalc resetten?
Beitrag von: Morgennebel am 10 August 2018, 11:05:32
Danke für die Antworten,


das statistics-Modul liefert zwar die gewünschten Daten, aber ich kann diese nicht in ein SVG verpacken und die Auswirkungen meiner DOIF-Konstrukte visualisieren...

Vielleicht ein Dummy, der ein Userreading (Anfangswert zu Mitternacht) hat und dann die Differenzen alle 180 sec in ein Logfile schreibt? Dann gehen auch SVGs...

(*grübel*)

Ciao, -MN
Titel: Antw:HM-ES-PMSw1-DR Hutschienen Aktor mit Messung: energy & energyCalc resetten?
Beitrag von: frank am 10 August 2018, 11:39:55
Zitatdas statistics-Modul liefert zwar die gewünschten Daten, aber ich kann diese nicht in ein SVG verpacken und die Auswirkungen meiner DOIF-Konstrukte visualisieren...
ebenfalls grübel...

wenn es daten gibt, sollten diese auch im svg darstellbar sein. wo ist das problem?
Titel: Antw:HM-ES-PMSw1-DR Hutschienen Aktor mit Messung: energy & energyCalc resetten?
Beitrag von: Pfriemler am 10 August 2018, 12:40:02
Was machst Du bisher? Du loggst das reading energy bzw. energyCalc (letzteres ist ja nur die neustartbereinigte Variante mit einem Gesamtzählerstand, oder?) Wenn Du jetzt ein Userreading energyToday nennst und dieses loggst, bekommst Du bei jedem neuen Zählerstand ganz genauso einen aktualisierten Wert ins Log und damit ins SVG.
Ich habe gerade keinen VPN-Zugriff auf mein System, daher muss ich ein Beispiel später nachreichen.
edit: hier ist es. EZahler ist mein Ferraris-Interface (HM-ES-TX-WM), im Kanal IEC_01 gibt es energy und energyCount.

a) ein DOIF, welches kurz vor Mitternacht ein paar Werte berechnet und in Readings sichert:
define di_EnergyCount DOIF ([23:59:40])
  (setreading EZaehler_IEC_01 counter_lastnight [EZaehler_IEC_01:counter_thisnight])      ##sichert letzten Mitternachtsstand
  (setreading EZaehler_IEC_01 consumption_yesterday [EZaehler_IEC_01:consumption_today])  ## sichert Tageszähler
  (setreading EZaehler_IEC_01 counter_thisnight [EZaehler_IEC_01:energyCalc])             ## speichert aktuellen Summenzähler
  ({Log 1, "Stromverbrauch gestern ".ReadingsVal("EZaehler_IEC_01","consumption_yesterday","ERR")." kWh"}) ## ins Log.
  ## die Berechnung des aktuellen Summenzählers erfolgt über ein userreading!
attr di_EnergyCount state Stromverbrauch gestern: [EZaehler_IEC_01:consumption_yesterday] kWh


b) ein DOIF, welches stündlich ein paar Werte berechnet:
define di_SaveEZaehler DOIF ([:59])
  (setreading EZaehler_IEC_01 enHr {(sprintf("%.2f", [EZaehler_IEC_01:kWh]-[EZaehler_IEC_01:lastHourCount]))." -> ".[EZaehler_IEC_01:kWh]},    setreading EZaehler_IEC_01 lastHourCount [EZaehler_IEC_01:kWh])
attr di_SaveEZaehler comment berechnet stündlich Energieverbrauch in kWh (zwei Nachkommastellen) im Reading enHr und setzt Referenz lastHourCount  neu. lastHourCount wird damit stündlich in einem Logfile gespeichert zur Auswertung.
attr di_SaveEZaehler do always


c) Userreadings im besagten Messkanal:
attr EZaehler_IEC_01 userReadings kWh {sprintf("%.2f",ReadingsVal($name,"energyCalc","???")/1000)},consumption_today {sprintf( "%5.2f", (ReadingsVal($name,"energyCalc",0)-ReadingsVal($name,"counter_thisnight",0))/1000)}


d) ich nutze dazu noch ein stateFormat für den Messkanal:
attr EZaehler_IEC_01 stateFormat aktuell [$name:power] W, Verbrauch (kWh) gestern [$name:consumption_yesterday], heute [$name:consumption_today], letzte Stunde [$name:enHr] gesamt
Summa ergibt das allda
kWh: Hilfsreading in menschenfreundlicher kWh-Notation aus energyCalc
counter_thisnight: Zählerstand um Mitternacht
counter_lastnight: Zählerstand von Mitternacht des Vortages
consumption_yesterday: gestriger Verbrauch
consumption_today: heutiger Verbrauch
enHr: Verbrauch der letzten Stunde.

Für den TE reicht ja vielleicht eine Untermenge. Denn für den Aufwand hätte sich wohl schon statistics gelohnt ...
Namentlich comsumption_today liefert Dir nicht alle 180s, sondern bei jedem aktualisierten Zählerwert den aktuellen Tagesverbrauch, bereinigt ab Mitternacht.