HomeMatic Nachrichten

HomeMatic – Stromzähler mit Hoch- und Niedertarif

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…

Stromzaehler

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…

Stromzaehler

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);

 

Bitte beachten...

SMART WOHNEN by sTeRn AV ist ein rein privates Projekt. Support kann ich daher nur im Rahmen meiner begrenzten Freizeit leisten, hierfür bitte ich um Verständnis. Meine Hinweise, Anleitungen, Schaltungen und Software werden so angeboten, „wie sie sind“. Die Verwendung erfolgt auf eigenes Risiko, ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung.
Creative Commons Lizenzvertrag
Copyright © Jens-Peter Stern | SMART WOHNEN by sTeRn AV | smart-wohnen.org
  1. 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!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere