Letzte Aktualisierung am 15. Januar 2023
Werner Keller aus der Schweiz hat auf Basis meines Stromzählertutorials eine sehr interessante Lösung für einen Stromzähler mit unterschiedlichem Hoch (HT)- und Niedertarif (NT) für seine Wärmepumpe entwickelt, die ich mit seiner Zustimmung hier gerne vorstelle.
Die Daten greift er mit einem HM-ES-TX-WM ab, nutzt jedoch nicht den „Energie-Zähler Gerät“ sondern den rücksetzbaren „Energie-Zähler CCU2“ respektive „Energie-Zähler RaspMatic“.
Die Lösung wurde ursprünglich für einen regulären Zähler mit nur einem Zählwerk konzipiert. Da dieser Zähler aber eine grün blinkende LED hatte, die vom Sensor nur unregelmässig und falsch erkannt wurde, setzt er nunmehr einen Doppeltarifzähler mit einer weißen LED ein, bei dem das Display des Zählers laufend zwischen den Werten wechselt.
Der Zähler wird jeweils um 19:00 Uhr (Wechsel auf NT) und 07:00 Uhr (Wechsel auf HT) auf NULL zurück gesetzt. Dabei werden die Werte in den zugeordneten Systemvariablen gespeichert.
Genau genommen sind seine Tarifwechselzeiten wie folgt:
Hochtarifzeiten:
Montag: 07:00 – 19:00
Dienstag: 07:00 – 19:00
Mittwoch: 07:00 – 19:00
Donnerstag: 07:00 – 19:00
Freitag: 07.00 – 19:00
Niedertarif: Übrige Zeiten
Hinweis:
Ich selbst habe keinen HT/NT (-Zähler) und diese Lösung daher nicht ausprobiert. Somit kann ich hierzu auch keinerlei Support geben.
Ich stelle sie hier als „Impulsidee“ für die eigene Verwendung so bereit, wie sie ist. Der Artikel hat nicht den Anspruch, ein vollständiges Schritt für Schritt Tutorial zu sein.
Dennoch lasse ich die Kommentare mal offen. Werner Keller wird hier hin und wieder bestimmt mal mitlesen und kann einige Fragen vielleicht beantworten.
Die grundsätzliche Vorgehensweise richtet sich nach dem Stromzählertutorial. Die anzulegenden Systemvariablen sind den nachfolgenden Skripten zu entnehmen.
1. Berechnung des laufenden Verbrauchs
Trigger: jede Aktualisierung des Leistungs-Datenpunktes [POWER]
!Ablesen var energy = dom.GetObject("svEnergyCounter_19439_NEQXXXXXXX:1").Value().ToString(1)#" Wh"; dom.GetObject("Verbrauch1").State(energy); object oP = dom.GetObject("BidCos-RF.NEQXXXXXXX:1.POWER"); ! Programm var oE = dom.GetObject("Verbrauch1"); !Zuordnung Auslese an oE zur Weiterverarbeitung var zA = dom.GetObject("Strom Zaehlerstand"); var aA = dom.GetObject("Strom Leistungsaufnahme aktuell"); !Aktuelle Leistungsanzeige in Watt var vTg = dom.GetObject("Strom Verbrauch heute"); !der Systemvariablen zuordnen zA.State(oE.State()/1000); !Watt in kW/h umrechnen aA.State(oP.State()); !Zuordnung Leistungsanzeige vTg.State(zA.State()); !Tagesverbrauch in kW/h - zur Anzeigenvariablen zuordnen
2. Umschaltung von NT auf HT
Trigger: mittels Zeitmodul oder CUxD Timer, jeweils Mo, Di, Mi, Do, Fr um 07:00 Uhr
!Tageszähler CCU2 gelöscht (dom.GetObject("svEnergyCounter_19439_NEQ0XXXXXXXX:1")).State(0.0); !Zuordnung NT Bereich mit löschen Tageszähler var vTz = dom.GetObject("Strom Referenz Verbrauch letzte Ableseperiode NT"); var vTg = dom.GetObject("Strom Verbrauch heute"); var vWznt = dom.GetObject("Strom Referenz Verbrauch laufende Woche NT"); var vWgnt = dom.GetObject("Strom Verbrauch laufende Woche NT"); var vMznt = dom.GetObject("Strom Referenz Verbrauch laufender Monat NT"); var vMgnt = dom.GetObject("Strom Verbrauch laufender Monat NT"); var vJznt = dom.GetObject("Strom Referenz Verbrauch laufendes Kalenderjahr NT"); var vJgnt = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr NT"); var vGgnt = dom.GetObject("Strom Verbrauch letzte Ableseperiode NT"); var vzant = dom.GetObject("Zaehlerstand NT"); var vzarnt = dom.GetObject("R_Zaehlerstand NT"); vTz.State(vTg.State()); !Zuordnung an Referenzwert vGgnt.State(vTg.State()); vWznt.State(vWgnt.State()); !Zuordnung an Referenzwert vWgnt.State(vWznt.State()+vTz.State()); !Berechnung neuer Wert vMznt.State(vMgnt.State()); !Zuordnung an Referenzwert vMgnt.State(vMznt.State()+vTz.State()); !Berechnung neuer Wert vJznt.State(vJgnt.State()); !Zuordnung an Referenzwert vJgnt.State(vJznt.State()+vTz.State()); !Berechnung neuer Wert vzarnt.State(vzant.State()); !Zuordnung an Referenzwert vzant.State(vzarnt.State()+vTz.State()); !Berechnung neuer Wert vTg.State(0.00);
3. Umschaltung von HT auf NT
Trigger: mittels Zeitmodul oder CUxD Timer, jeweils Mo, Di, Mi, Do, Fr um 19:00 Uhr
!Tageszähler CCU2 zurücksetzen (dom.GetObject("svEnergyCounter_19439_NEQXXXXXXXX:1")).State(0.0); !Zuordnung HT Bereich mit löschen Tageszähler var vTz = dom.GetObject("Strom Referenz Verbrauch letzte Ableseperiode HT"); var vTg = dom.GetObject("Strom Verbrauch heute"); var vWzht = dom.GetObject("Strom Referenz Verbrauch laufende Woche HT"); var vWght = dom.GetObject("Strom Verbrauch laufende Woche HT"); var vMzht = dom.GetObject("Strom Referenz Verbrauch laufender Monat HT"); var vMght = dom.GetObject("Strom Verbrauch laufender Monat HT"); var vJzht = dom.GetObject("Strom Referenz Verbrauch laufendes Kalenderjahr HT"); var vJght = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr HT"); var vGght = dom.GetObject("Strom Verbrauch letzte Ableseperiode HT"); var vzaht = dom.GetObject("Zaehlerstand HT"); var vzarht = dom.GetObject("R_Zaehlerstand HT"); !HT Zuordnung Tageszähler zuordnen vTz.State(vTg.State()); !Referenz zuordnen vGght.State(vTg.State()); vWzht.State(vWght.State()); !Referenz zuordnen vWght.State(vWzht.State()+vTz.State()); vMzht.State(vMght.State()); !Referenz zuordnen vMght.State(vMzht.State()+vTz.State()); vzarht.State(vzaht.State()); !Referenz zuordnen vzaht.State(vzarht.State()+vTz.State()); vJzht.State(vJght.State()); vJght.State(vJzht.State()+vTz.State()); vTg.State(0.00);
4. Wochenzähler zurück setzen und Übertrag auf letzte Woche
Trigger: wie nachfolgend im Zeitmodul oder anlaog über einen CUxD Timer…
var vWzlnt = dom.GetObject("Strom Verbrauch letzte Woche NT"); var vWgnt = dom.GetObject("Strom Verbrauch laufende Woche NT"); vWzlnt.State(vWgnt.State()); !NT zuordnen letzte Woche und löschen vWgnt.State(0.00); var vWzlht = dom.GetObject("Strom Verbrauch letzte Woche HT"); var vWght = dom.GetObject("Strom Verbrauch laufende Woche HT"); vWzlht.State(vWght.State()); !HT zuornden und letze Woche löschen vWght.State(0.00);
5. Monatszähler zurück setzen und Übertrag auf letzten Monat
Trigger: wie nachfolgend im Zeitmodul oder anlaog über einen CUxD Timer…
var vMzlht = dom.GetObject("Strom Verbrauch letzter Monat HT"); var vMght = dom.GetObject("Strom Verbrauch laufender Monat HT"); vMzlht.State(vMght.State()); vMght.State(0.00); var vMzlnt = dom.GetObject("Strom Verbrauch letzter Monat NT"); var vMgnt = dom.GetObject("Strom Verbrauch laufender Monat NT"); vMzlnt.State(vMgnt.State()); vMgnt.State(0.00);
6. Hilfsskript zum Eintragen der Werte
Trigger: bei Bedarf manuell
!Hochtarifsystemvariable var vWght = dom.GetObject("Strom Verbrauch laufende Woche HT"); var vMght = dom.GetObject("Strom Verbrauch laufender Monat HT"); var vJght = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr HT"); var vzaht = dom.GetObject("Zaehlerstand HT"); !vWght.State(XXX); !vMght.State(XXX); !vJght.State(XXX); !vzaht.State(XXX) ! Niedertarifsystemvariable var vWgnt = dom.GetObject("Strom Verbrauch laufende Woche NT"); var vMgnt = dom.GetObject("Strom Verbrauch laufender Monat NT"); var vJgnt = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr NT"); var vzant = dom.GetObject("Zaehlerstand NT"); !vWgnt.State(XXX); !vMgnt.State(XXX); !vJgnt.State(XXX); !vzant.State(XXX);
Hallo,
ich habe ein Problem mit dem Script. Leider setzt es bei mir lediglich den CCU2 Zähler zurück.
Das Script läuft nicht mit dem „Energie-Zähler Gerät“! In meinem Script muss nur der „Energie-Zähler CCU2“ zurückgesetzt werden? Der Zähler „Energie-Zähler Gerät“ kann ruhig vor sich hinzählen. Der wird nirgends gebraucht. Der „Energie-Zähler CCU2“ hat nur Vorteile: Er übersteht Stromausfälle, Batteriewechsel, ist einfach auf 0 zu setzen und hat keine automatische Rücksetzung bei erreichen des Wertes 838.8607. (Vom Energie-Zähler CCU2 ist auf jeden Fall bis heute nichts bekannt und ich glaube auch nicht, dass bei meiner kurzfristigen Rücksetzungen je solch hohe Werte erreicht werden) Vielleicht kennt jemand eine Möglichkeit den „Energie-Zähler Gerät“ leicht auf 0 zu setzen. Dann könnte man auch den als Lieferant der Werte verwenden. Ich frage mich einfach: wieso? Man hat doch einen gut funktionierenden Zähler!
Hallo
Ich hab mich mal daran versucht, es zum Laufen zu bekommen, jedoch bekomme ich schon bei „1. Berechnung des laufenden Verbrauchs“ keine Einträge in den Variablen.
Gruß Dirk
Hallo
Wo bekommt man das her?
svEnergyCounter_19439_NEQXXXXXXXX:1