Blog Obsolet

HomeMatic – Zähler mit Hilfe der FAST EnergyCam auswerten

Gaszaehler EnergyCam

Letzte Aktualisierung am 1. Juli 2023

Dieser Beitrag ist obsolet, da er auf einem Fremdbeitrag basiert und seit Jahren inhaltlich unverändert ist. Er wird nicht mehr aktualisiert. Die Kommentare wurden geschlossen.

Ich wurde kürzlich von einem Nutzer meines Stromzählers mit HM-ES-TX-WM um Unterstützung gebeten, auf dessen Basis eine Lösung für einen Gaszähler zu realisieren, die an Stelle des HM-ES-TX-WM eine FAST EnergyCam verwendet.

Dieser Sensor ist – sofern man die vergleichsweise hohen Kosten nicht scheut – eine interessante Alternative und recht einfach umzusetzen. Auch für andere Zählerarten als den hier exemplarisch dargestellten Gaszähler, wie z.B. einen Strom- oder Wasserzähler, lässt sich die Lösung einsetzen.


Features:
Aktueller Zählerstand, Verbrauch seit letzter Ablesung, Tages-, Wochen-, Monats- und Jahreszähler

Ich schicke vorweg, dass ich selbst die FAST EnergyCam nicht verwende und keine eigene Erfahrung mit diesem Kamerasensor habe. Die nachfolgend beschriebene Lösung verweist daher bezüglich der Integration der FAST EnergyCam auf externe Links und setzt voraus, dass deren Datenpunkt „METER“ innerhalb der CCU zur Verfügung steht und aktualisiert wird. Die Screenshots von den EnergyCam Daten wurden mir freundlicherweise von dem oben genannten Nutzer zur Verfügung gestellt. Kürzlich hat mich ein weiterer Nutzer aus dem HomeMatic Forum freundlicherweise darauf hingewiesen, dass – weil der Gas-Zähler und somit auch die EnergyCam ja keine kWh sondern den Verbrauch in m³ liefern – die Werte von der EnergyCam(m³) mit der sogenannten Zustandszahl (ca. 0,93) und dem Brennwert (ca. 11,0 bis 12,0) multipliziert werden müssen, um den Verbrauch in kWh zu erhalten. Diese Faktoren können – je nach Anschluss – vollkommen unterschiedlich sein und der Gas-Rechnung entnommen werden. Das Tutorial wurde daher um diesen Aspekt ergänzt.

1. Abgriff des Zählerstandes und Übertragung in die HomeMatic

Benötigt werden…


Kamera: FAST EnergyCam
Wireless M-Bus USB Adapter: IMST iM871A-USB
CUxD mit Wireless M-Bus Lizenz für CUxD

In einschlägigen Online-Shops findet man hierzu Bundles, die auch bereits die erforderliche CUxD Lizenz beinhalten.

Wie die Einrichtung über den CUxD realisiert wird, zeigt das verlinkte Video sehr gut.

Wenn alles funktioniert, erscheinen innerhalb des WebUI der CCU folgende Datenpunkte,…

Gaszaehler EnergyCam

…von den wir für die hier beschriebene Lösung nur den Datenpunkt für den aktuellen Zählerstand…


METER

…benötigen.

Die Kamera nimmt ein Foto des Zählers auf und wandelt dieses über eine OCR-Erkennung in einen Zahlenwert um. Somit steht – im Vergleich HM-ES-TX-WM – immer der aktuelle Zählerstand als Datenpunkt zur Verfügung.

Die Ableseintervalle kann man (wohl über ein optionales USB-Interface) einstellen. Der oben zitierte Nutzer hat seinen Intervall auf 10 Minuten eingestellt.

2. Zählerauswertung

Zunächst sind folgende Systemvariablen in der CCU anzulegen…


„Gas Zustandszahl“, Zahl
„Gas Brennwert“, Zahl
„Gas Zaehlerstand Kubikmeter“, Zahl
„Gas Zaehlerstand“, Zahl
„Gas Verbrauch seit letzter Ablesung“, Zahl
„Gas Verbrauch laufendes Kalenderjahr“, Zahl
„Gas Verbrauch laufender Monat“, Zahl
„Gas Verbrauch laufende Woche“, Zahl
„Gas Verbrauch heute“, Zahl

Für die interne Berechnung werden zusätzlich folgende Systemvariablen benötigt…

Für den aufsummierten Ablesezählerstand bis letzte Ablesung…


„Gas Referenz Verbrauch seit letzter Ablesung“, Zahl

Für den aufsummierten Jahreszählerstand bis Ende letztes Jahr…


„Gas Referenz Verbrauch laufendes Kalenderjahr“, Zahl

Für den aufsummierten Monatszählerstand bis Ende letzten Monat…


„Gas Referenz Verbrauch laufender Monat“, Zahl

Für den aufsummierten Wochenzählerstand bis Ende letzte Woche…


„Gas Referenz Verbrauch laufende Woche“, Zahl

Für den aufsummierten Tageszählerstand bis gestern…


„Gas Referenz Verbrauch heute“, Zahl

Hierbei ist zu beachten, dass der in der CCU voreingestellte Wertebereich für Systemvariablen vom Typ Zahl von 0 bis 65000 reicht, was bei einigen Bestandszählern nicht ausreichen dürfte. Daher ist zumindest für die Systemvariable „Gas Zaehlerstand“ sowie alle Referenz-Systemvariablen als Maximalwert 999999.99 einzugeben…

Gaszaehler EnergyCam

Zur Auswertung wird mit dem folgenden Programm…

Gaszaehler EnergyCam

…das Auswerteskript ausgeführt:

object oE = dom.GetObject("CUxD.CUX2500001:1.METER");
var Zustand = dom.GetObject("Gas Zustandszahl").Value();
var Brennwert = dom.GetObject("Gas Brennwert").Value();
var zAM3 = dom.GetObject("Gas Zaehlerstand Kubikmeter");
var zA = dom.GetObject("Gas Zaehlerstand");
var vLz = dom.GetObject("Gas Referenz Verbrauch seit letzter Ablesung");
var vLg = dom.GetObject("Gas Verbrauch seit letzter Ablesung");
var vTz = dom.GetObject("Gas Referenz Verbrauch heute");
var vTg = dom.GetObject("Gas Verbrauch heute");
var vWz = dom.GetObject("Gas Referenz Verbrauch_laufende_Woche");
var vWg = dom.GetObject("Gas Verbrauch laufende_Woche");
var vMz = dom.GetObject("Gas Referenz Verbrauch_laufender_Monat");
var vMg = dom.GetObject("Gas Verbrauch laufender_Monat");
var vJz = dom.GetObject("Gas Referenz Verbrauch laufendes Kalenderjahr");
var vJg = dom.GetObject("Gas Verbrauch laufendes Kalenderjahr");
zAM3.State(oE.State());
vLg.State((zAM3.State() - vLz.State()) * Zustand * Brennwert);
vTg.State((zAM3.State() - vTz.State()) * Zustand * Brennwert);
vWg.State((zAM3.State() - vWz.State()) * Zustand * Brennwert);
vMg.State((zAM3.State() - vMz.State()) * Zustand * Brennwert);
vJg.State((zAM3.State() - vJz.State()) * Zustand * Brennwert);
zA.State(zAM3.State() * Zustand * Brennwert);

Da die EnergyCam mit dem Datenpunkt…


METER

…immer den aktuellen Zählerstand bereitstellt, wird dieser mit der Skriptzeile Nr. 13 unmittelbar in die Systemvariable…


„Gas Zaehlerstand“

…gespeichert.

Die Zeitraum-Zähler werden nach folgender Systematik mit den Skriptzeilen Nr. 14 bis 18 berechnet…


"neuer \quad Stand" \quad (kWh) = ("aktueller \quad Stand" - "Stand \quad bis \quad zum \quad letzten \quad Reset")\quad *\quad Zustandszahl\quad *\quad Brennwert

Zustandszahl und Brennwert sind der aktuellen Gasrechnung zu entnehmen.

Zum Reset der Jahres-, Monats-, Wochen und Tageszähler auf „NULL“ bieten sich CCU-Programme an, die über das Zeitmodul der CCU kurz nach Mitternacht ausgeführt werden. Hier ein Beispiel für den Tageszähler…

Gaszaehler EnergyCam

Mit dem Skript wird – bevor die Verbrauchs-Systemvariable auf NULL gesetzt wird – die zugehörige Referenz-Systemvariable (= Zählerstand zum Zeitpunkt des letzten Reset) mit dem aktuell aufsummierten Wert überschrieben und bildet sodann die Referenz für den nächsten Zeitraum.

var vTz = dom.GetObject("Gas Referenz Verbrauch heute");
var vTg = dom.GetObject("Gas Verbrauch heute");
vTz.State(vTg.State() + vTz.State());

Entsprechend sehen die Rücksetz-Skripte für die Zähler der anderen Zeiträume aus…

var vWz = dom.GetObject("Gas Referenz Verbrauch laufende Woche");
var vWg = dom.GetObject("Gas Verbrauch laufende Woche");
vWz.State(vWg.State() + vWz.State());
var vMg = dom.GetObject("Gas Verbrauch laufender Monat");
var vMz = dom.GetObject("Gas Referenz Verbrauch laufender Monat");
vMz.State(vMg.State() + vMz.State());
var vJz = dom.GetObject("Gas Referenz Verbrauch laufendes Kalenderjahr");
var vJg = dom.GetObject("Gas Verbrauch laufendes Kalenderjahr");
vJz.State(vJg.State() + vJz.State());

Hinweis:
Alternativ zu der hier beschriebenen Lösung kann man die Zeitraumzähler auch gemeinsam mit nur einem Programm/Skript zurücksetzen. Wie das geht, habe ich in dem verlinkten Tutorial gesondert beschrieben.

Zum Reset des Ablesezählers empfiehlt es sich, das Programm manuell (z.B. im WebUI) zu starten, wenn die Gaszählerablesung erfolgt ist. Im zugehörigen Programm lässt man hierzu einfach das Zeitmodul weg…

Gaszaehler EnergyCam
var vLz = dom.GetObject("Gas Referenz Verbrauch seit letzter Ablesung");
var vLg = dom.GetObject("Gas Verbrauch seit letzter Ablesung");
vLz.State(vLg.State() + vLz.State());

3. Ersteinrichtung und Korrektur

Nach der Ersteinrichtung oder bei Abweichungen durch z.B. Abstürze der CCU oder Stromausfälle können die Zählerstände der Zeitraumzähler durch manuelle Anpassung der Referenz-Systemvariablen…


„Gas Referenz Verbrauch seit letzter Ablesung“, Zahl
„Gas Referenz Verbrauch laufendes Kalenderjahr“, Zahl
„Gas Referenz Verbrauch laufender Monat“, Zahl
„Gas Referenz Verbrauch laufende Woche“, Zahl
„Gas Referenz Verbrauch heute“, Zahl

…nach dem folgenden Schema korrigiert werden…


"Gas \quad Referenz \quad Verbrauch \quad Zeitraum" = "Gas \quad Zaehlerstand" - "Gas \quad Verbrauch \quad Zeitraum"

also z.B. bezogen auf den Tageszähler…


"Gas \quad Referenz \quad Verbrauch \quad heute" = "Gas \quad Zaehlerstand" - "Gas \quad Verbrauch \quad heute"

Für den Tageszähler („Gas Referenz Verbrauch laufender Monat“) ist das der aktuelle Zählerstand minus den bis zum Eintragezeitpunkt bereits aufgelaufenen Verbrauch (ggf. geschätzt). Dies entspricht dem Zählerstand vom Vortag 23:59 Uhr.

Für den Wochenzähler „Gas Referenz Verbrauch laufende Woche“) der aktuelle Zählerstand minus den bis zum Eintragezeitpunkt bereits aufgelaufenen Wochenverbrauch (ggf. geschätzt). Dies entspricht dem Zählerstand von letztem Sonntag 23:59 Uhr.

Für des Monatszähler („Gas Referenz Verbrauch laufender Monat“) der aktuelle Zählerstand minus den bis zum Eintragezeitpunkt bereits aufgelaufenen Monatsverbrauch (ggf. geschätzt). Dies entspricht dem Zählerstand vom letzten Tag des Vormonats 23:59 Uhr.

Für den Jahreszähler („Gas Referenz Verbrauch laufendes Jahr“) der aktuelle Zählerstand minus den bis zum Eintragezeitpunkt bereits aufgelaufenen Jahresverbrauch (ggf. geschätzt). Dies entspricht dem Zählerstand vom 31.12. des Vorjahres 23:59 Uhr.

Für den Ablesezähler („Gas Referenz Verbrauch seit letzter Ablesung“) der aktuelle Zählerstand minus den bis zum Eintragezeitpunkt bereits aufgelaufenen Verbrauch seit der letzten Stromablesung (ggf. geschätzt). Am besten übernimmt man hierfür den Zählerstand von der letzten Gasrechnung.

Mit dem nächsten Ausführen des Auswerteskriptes sollten alle Zeitraumzähler (wieder) die korrekten Verbräuche anzeigen.

Bitte beachten...

SMART WOHNEN in Stern's Haus ist ein rein privates, nicht kommerzielles Projekt. Meine Hinweise, Anleitungen, Schaltungen und Software werden so angeboten, „wie sie sind“, Support kann ich nur im Rahmen meiner begrenzten Freizeit leisten, hierfür bitte ich um Verständnis.
Die Verwendung meiner Hinweise, Anleitungen, Schaltungen und Software erfolgt auf eigenes Risiko. Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung! Für die Einhaltung der einschlägigen technischen Vorschriften ist jeder Anwender selbst verantwortlich!
Creative Commons Lizenzvertrag
Copyright © Jens-Peter Stern | SMART WOHNEN in Stern's Haus | sternshaus.de
WordPress Cookie Plugin von Real Cookie Banner