HomeMatic Tutorial

HomeMatic – Verbrauchs- und Betriebsstundenzähler für Ölheizungen

Bei Ölheizungsbrennern ist es sehr einfach möglich, anhand der Parameter der Brennerdüse und der Betriebszeit des Brenners, den Heizölverbrauch zu berechnen. Mit recht wenig Aufwand lassen sich so umfangreiche Auswertungen bezüglich des Heizölverbrauchs vornehmen. In diesem Beitrag wird eine solche Lösung für das Hausautomatisierungssystem HomeMatic beschrieben.


Features:
Verschiedene Betriebsstunden- und Verbrauchszähler, Füllstand im Vorratstank


Update Juli 2017 | Wichtiger Hinweis:

Bestandsanwender dieses Tutorials sollten vor dem Update auf die CCU2 Firmware Version 2.29.18 (oder höher) auf das u.a. Ausschaltskript umstellen, das Einschaltskript kann belassen werden.


1. Abgriff des Brennerzustandes (Stand-by / Feuerung)

Um die Betriebsstunden des Brenners abzugreifen, gibt es grundsätzlich mehrere Möglichkeiten. Am genauesten ist wohl ein Sensor, der den Schaltzustand des Magnetventils der Heizölversorgung ermittelt. Bei Vernachlässigung der kurzen Aufwärmzeit, in der noch kein Heizöl verbraucht wird, kann auch Zustand des Brenners abgegriffen werden, z.B. parallel zur Brenner-Kontrollleuchte oder zum evtl. vorhandenen Betriebsstundenzähler.

Wenn man nicht in die elektrische Anlage des Brenners bzw. der Heizungssteuerung eingreifen möchte, lässt sich der Zustand des Brenners auch mit einem simplen Dämmerungsschalter (z.B. ein Bausatz) über die oftmals an der Heizung vorhande Brenner-Kontroll-LED ermitteln. Der Helligkeitssensor des Dämmerungsschalters wird einfach in eine schwarze Gummi-LED-Fassung gesteckt, über die Brenner-Kontroll-LED gestülpt und mit Isolierband fixiert.

IMAG1324

Das Relais des Dämmerungsschalters schaltet den Eingang eines „HomeMatic Schließerkontakt-Interface für Öffner und Schließerkontakte“ (HM-SCI-3-FM). In ein Gehäuse verbaut, schaut das z.B. so aus…

IMAG1305

…und liefert zuverlässig (z.B. über einen Wintertag) folgendes Ergebnis (0 = Brenner ein, 1 = Brenner aus)…

Bild01
2. Berechnung von Betriebsstunden und Verbrauch

Bei der Umsetzung der Zählerskripte wurden einige im HomeMatic-Forum beschriebene Vorüberlegungen zu Grunde gelegt.

Als Voraussetzung für das Funktionieren aller Funktionen des Zählers müssen in der HomeMatic-CCU zunächst einige Systemvariablen angelegt werden…

„Brenner Betriebsstunden heute“, Zahl

„Brenner Betriebsstunden laufende Woche“, Zahl

„Brenner Betriebsstunden laufender Monat“, Zahl

„Brenner Betriebsstunden laufendes Kalenderjahr“, Zahl

„Brenner Betriebsstunden seit letzter Fuellung“, Zahl

„Brenner Verbrauch heute“, Zahl

„Brenner Verbrauch laufende Woche“, Zahl

„Brenner Verbrauch laufender Monat“, Zahl

„Brenner Verbrauch laufendes Kalenderjahr“, Zahl

„Brenner Verbrauch seit letzter Fuellung“, Zahl

„Brenner letzte Ausschaltzeit“, Zeichenkette

„Brenner letzte Einschaltzeit“, Zeichenkette

„Brenner Tankinhalt aktuell“, Zahl

„Brenner Tankinhalt bei letzter Fuellung“, Zahl

„Brenner Status“, Logikwert, wahr = Feuerung, falsch = Stand-by

Anstatt unmittelbar den Zustand des HM-SCI-3-FM zur Triggerung der Programme zu nutzen, empfiehlt sich der Umweg über die Systemvariable „Brenner Status“, da der HM-SCI-3-FM im Vergleich zu einer Systemvariablen nach einem Reboot der CCU nicht den ursprünglichen Status behält sondern bis zum nächsten Schalten immer den Zustand „geschlossen“ anzeigt.

Ölverbrauch

Ölverbrauch

Ergänzend kann man zur Sicherheit parallel zum Relais des Dämmerungsschalters einen Taster schalten und über diesen nach einem CCU-Reboot bei ausgeschaltetem Brenner kurz den HM-SCI-3-FM triggern (im o.a. Bild des Gerätes fehlt dieser Taster noch)…

IMAG1317

Natürlich lässt sich dies bei Bedarf auch automatisieren, z.B. über einen HomeMatic-Schaltaktor für Batteriebetrieb, den man nach einem Reboot der CCU kurz den Eingang des HM-SCI-3-FM schalten lässt.

Zur Datenaufzeichnung wird mit diesem Programm…

Ölverbrauch

… beim Einschalten des Brenners das folgende Skript ausgeführt…

var EinZeit= dom.GetObject("Brenner letzte Einschaltzeit");
EinZeit.State(system.Date("%F %T")); !Speichern der Einschaltzeit

… und beim Ausschalten des Brenners…

Ölverbrauch

… dieses Skript…

var AusZeit= dom.GetObject("Brenner letzte Ausschaltzeit");
var EinZeit= dom.GetObject("Brenner letzte Einschaltzeit");
var TankGes= dom.GetObject("Brenner Tankinhalt bei letzter Fuellung").Value();
var KumTankAkt= dom.GetObject("Brenner Tankinhalt aktuell");
var KumZeitF= dom.GetObject("Brenner Betriebsstunden seit letzter Fuellung");
var KumVerbrauchF= dom.GetObject("Brenner Verbrauch seit letzter Fuellung");
var KumZeitJ= dom.GetObject("Brenner Betriebsstunden laufendes Kalenderjahr");
var KumVerbrauchJ= dom.GetObject("Brenner Verbrauch laufendes Kalenderjahr");
var KumZeitM= dom.GetObject("Brenner Betriebsstunden laufender Monat");
var KumVerbrauchM= dom.GetObject("Brenner Verbrauch laufender Monat");
var KumZeitW= dom.GetObject("Brenner Betriebsstunden laufende Woche");
var KumVerbrauchW= dom.GetObject("Brenner Verbrauch laufende Woche");
var KumZeitT= dom.GetObject("Brenner Betriebsstunden heute");
var KumVerbrauchT= dom.GetObject("Brenner Verbrauch heute");

! Speichern der Ausschaltzeit
AusZeit.State(system.Date("%F %T"));

! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
time t = EinZeit.State().ToTime();

! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();

! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
var x = t.ToInteger();

! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
var x1 = t1.ToInteger();

!Die Differenz ist die Einschaltdauer in Stunden umgerechnet
var x0 = 0.01*(x1-x)/36;

! Die Einschaltdauer seit der letzten Füllung kumulieren = Betriebsstunden seit der letzten Füllung
var gelaufenF = x0 + KumZeitF.State();

! Die Betriebsstunden seit der letzten Füllung in die Systemvariable einstellen
KumZeitF.State (gelaufenF);

! Berechnung von Verbrauch in Liter mit 1,87 kg/h seit der letzten Füllung
var verbrauchtF = gelaufenF * 1.87 * 1.197;

! Verbrauch seit der letzten Füllung in die Systemvariable einstellen
KumVerbrauchF.State (verbrauchtF);

! Berechnung Tankinhalts in Litern
var tankinhalt = TankGes - verbrauchtF;

! Tankinhalt in die Systemvariable einstellen
KumTankAkt.State (tankinhalt);

! Die Einschaltdauer im laufenden Kalenderjahr kumulieren = Betriebsstunden
var gelaufenJ = x0 + KumZeitJ.State();

! Die Betriebsstunden im laufenden Kalenderjahr in die Systemvariable einstellen
KumZeitJ.State (gelaufenJ);

! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalenderjahr
var verbrauchtJ = gelaufenJ * 1.87 * 1.197;

! Verbrauch im laufenden Kalenderjahr in die Systemvariable einstellen
KumVerbrauchJ.State (verbrauchtJ);

! Die Einschaltdauer im laufenden Kalendermonat kumulieren = Betriebsstunden
var gelaufenM = x0 + KumZeitM.State();

! Die Betriebsstunden im laufenden Kalendermonat in die Systemvariable einstellen
KumZeitM.State (gelaufenM);

! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalendermonat
var verbrauchtM = gelaufenM * 1.87 * 1.197;

! Verbrauch im laufenden Kalendermonat in die Systemvariable einstellen
KumVerbrauchM.State (verbrauchtM);

! Die Einschaltdauer in der laufenden Kalenderwoche kumulieren = Betriebsstunden
var gelaufenW = x0 + KumZeitW.State();

! Die Betriebsstunden in der laufenden Kalenderwoche in die Systemvariable einstellen
KumZeitW.State (gelaufenW);

! Berechnung von Verbrauch in Liter mit 1,87 kg/h in der laufenden Kalenderwoche
var verbrauchtW = gelaufenW * 1.87 * 1.197;

! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
KumVerbrauchW.State (verbrauchtW);

! Die Einschaltdauer heute kumulieren = Betriebsstunden
var gelaufenT = x0 + KumZeitT.State();

! Die Betriebsstunden heute in die Systemvariable einstellen
KumZeitT.State (gelaufenT);

! Berechnung von Verbrauch in Liter mit 1,87 kg/h heute
var verbrauchtT = gelaufenT * 1.87 * 1.197;

! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
KumVerbrauchT.State (verbrauchtT);

Das Ausschaltskript berechnet aus den Betriebsstunden (h ) den Verbrauch (V ) mit einer Düse der Leistung (P ) von 1.87 kg/h bei einem Betriebsdruck von 10 bar nach der folgenden Formel:


V = h * P * Umrechnungsfaktor \quad kg \quad in \quad l \quad fuer \quad Heizoel \quad (=1.197)

Wichtiger Hinweis:

Das Skript muss – sofern nicht zufällig die gleiche Düse und der gleiche Betriebsdruck verwendet werden – auf die eigenen Werte angepasst werden, sonst wird der Zähler den Ölverbrauch nicht korrekt berechnen.

Hierbei bitte daran denken, die Werte in allen Zeitraumzählern anzupassen (Konstante „1.87 * 1.197“ in den Zeilen 41, 59, 71, 83 und 95).

Wer diese Konstante öfter mal anpasst, kann sich dafür alternativ auch eine Systemvariable anlegen.


Hinweis:

Beim Einschalten und während des laufenden Brenners bleibt die Anzeige des Zählers unverändert…

Ölverbrauch

Ölverbrauch

Erst beim Ausschalten des Brenners wird das Ausschaltskript getriggert, das die Zählerstände aktualisiert…

Ölverbrauch

Ölverbrauch

In meiner aio NEO Ansicht, ist der Zähler in die Statusübersicht der Heizungsanlage integriert…

Ölverbrauch

In der Darstellung des CCU-Historian lassen sich die aufgezeichneten Daten anschaulich auswerten…

CCUH heute V2

CCUH Tank


Update August 2017

Es wurde von Nutzern des Zählers immer mal wieder der Wunsch geäußert, die Zählervariablen runden zu können. Aufgrund der Einschränkungen in HomeMatic-Skript war das bisher nur über Umwege möglich.

Mit der CCU2 Firmware 2.29.18 wurde neben anderen mathematischen Funktionen die Funktion „Round(p)“ eingeführt, die den momentanen Wert zur nächstliegenden Zahl mit der Genauigkeit p rundet. Damit ist es sehr einfach möglich, die Ausgaben des Zählers auf beliebige Stellen nach dem Komma zu runden.

Hier das Ausschaltskript mit Rundung auf zwei Stellen hinter dem Komma, wer mehr oder weniger Stellen möchte, verändert einfach die Zahl p in der Funktion „Round(p)“…

var AusZeit= dom.GetObject("Brenner letzte Ausschaltzeit");
var EinZeit= dom.GetObject("Brenner letzte Einschaltzeit");
var TankGes= dom.GetObject("Brenner Tankinhalt bei letzter Fuellung").Value();
var KumTankAkt= dom.GetObject("Brenner Tankinhalt aktuell");
var KumZeitF= dom.GetObject("Brenner Betriebsstunden seit letzter Fuellung");
var KumVerbrauchF= dom.GetObject("Brenner Verbrauch seit letzter Fuellung");
var KumZeitJ= dom.GetObject("Brenner Betriebsstunden laufendes Kalenderjahr");
var KumVerbrauchJ= dom.GetObject("Brenner Verbrauch laufendes Kalenderjahr");
var KumZeitM= dom.GetObject("Brenner Betriebsstunden laufender Monat");
var KumVerbrauchM= dom.GetObject("Brenner Verbrauch laufender Monat");
var KumZeitW= dom.GetObject("Brenner Betriebsstunden laufende Woche");
var KumVerbrauchW= dom.GetObject("Brenner Verbrauch laufende Woche");
var KumZeitT= dom.GetObject("Brenner Betriebsstunden heute");
var KumVerbrauchT= dom.GetObject("Brenner Verbrauch heute");

! Speichern der Ausschaltzeit
AusZeit.State(system.Date("%F %T"));

! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
time t = EinZeit.State().ToTime();

! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();

! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
var x = t.ToInteger();

! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
var x1 = t1.ToInteger();

!Die Differenz ist die Einschaltdauer in Stunden umgerechnet
var x0 = 0.01*(x1-x)/36;

! Die Einschaltdauer seit der letzten Füllung kumulieren = Betriebsstunden seit der letzten Füllung
var gelaufenF = x0 + KumZeitF.State();

! Die Betriebsstunden seit der letzten Füllung in die Systemvariable einstellen
KumZeitF.State (gelaufenF.Round(2));

! Berechnung von Verbrauch in Liter mit 1,87 kg/h seit der letzten Füllung
var verbrauchtF = gelaufenF * 1.87 * 1.197;

! Verbrauch seit der letzten Füllung in die Systemvariable einstellen
KumVerbrauchF.State (verbrauchtF.Round(2));

! Berechnung Tankinhalts in Litern
var tankinhalt = TankGes - verbrauchtF;

! Tankinhalt in die Systemvariable einstellen
KumTankAkt.State (tankinhalt.Round(2));

! Die Einschaltdauer im laufenden Kalenderjahr kumulieren = Betriebsstunden
var gelaufenJ = x0 + KumZeitJ.State();

! Die Betriebsstunden im laufenden Kalenderjahr in die Systemvariable einstellen
KumZeitJ.State (gelaufenJ.Round(2));

! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalenderjahr
var verbrauchtJ = gelaufenJ * 1.87 * 1.197;

! Verbrauch im laufenden Kalenderjahr in die Systemvariable einstellen
KumVerbrauchJ.State (verbrauchtJ.Round(2));

! Die Einschaltdauer im laufenden Kalendermonat kumulieren = Betriebsstunden
var gelaufenM = x0 + KumZeitM.State();

! Die Betriebsstunden im laufenden Kalendermonat in die Systemvariable einstellen
KumZeitM.State (gelaufenM.Round(2));

! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalendermonat
var verbrauchtM = gelaufenM * 1.87 * 1.197;

! Verbrauch im laufenden Kalendermonat in die Systemvariable einstellen
KumVerbrauchM.State (verbrauchtM.Round(2));

! Die Einschaltdauer in der laufenden Kalenderwoche kumulieren = Betriebsstunden
var gelaufenW = x0 + KumZeitW.State();

! Die Betriebsstunden in der laufenden Kalenderwoche in die Systemvariable einstellen
KumZeitW.State (gelaufenW.Round(2));

! Berechnung von Verbrauch in Liter mit 1,87 kg/h in der laufenden Kalenderwoche
var verbrauchtW = gelaufenW * 1.87 * 1.197;

! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
KumVerbrauchW.State (verbrauchtW.Round(2));

! Die Einschaltdauer heute kumulieren = Betriebsstunden
var gelaufenT = x0 + KumZeitT.State();

! Die Betriebsstunden heute in die Systemvariable einstellen
KumZeitT.State (gelaufenT.Round(2));

! Berechnung von Verbrauch in Liter mit 1,87 kg/h heute
var verbrauchtT = gelaufenT * 1.87 * 1.197;

! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
KumVerbrauchT.State (verbrauchtT.Round(2));

vorher…

Ölverbrauch

nachher..

Ölverbrauch


Bitte beachten…

Diese Skriptvariante funktioniert nur mit der CCU2 ab Firmware 2.29.18 (und wohl nicht in deren Logikschicht Version“Legacy“).

Das Einschaltskript braucht nicht verändert zu werden.



3. Reset

Der Reset des Tankungszählers kann manuell erfolgen, nachdem der Tank gefüllt wurde, z.B. mit einem Schlüsselschalter, der in das o.g. Auswertegehäuse eingebaut ist und über einen freien Kanal des HM-SCI-3-FM das Reset-Programm triggert. Alternativ kann das Reset-Programm natürlich auch über andere Wege gestartet werden…

Ölverbrauch

Das Programm setzt den Füllstand des Tanks automatisch auf 2800l. Dieser Wert sollte auf den eigenen realistischen Wert angepasst werden. Der genaue Wert nach der Tankung kann danach manuell verändert werden, z.B. über die „Setzen-Funktion“ in WebMatic…

Ölverbrauch

Ölverbrauch


Hinweis:

Ich empfehle, die Zeitraumzähler gemeinsam mit nur einem Programm/Skript zurücksetzen. Wie das geht, habe ich in dem verlinkten Tutorial gesondert erläutert.

Wer möchte, kann die Zeitraumzähler – analog zum Vorgehen beim Tankungszähler – aber auch einzeln mit einem per Zeitmodul ausgelösten Programm auf "0" zurück setzen.

Hier ein Beispiel für den Tageszähler…

Ölverbrauch

Auch der Reset-Verlauf lässt sich im CCU-Historian sehr schön verfolgen…

CCUH heute V

CCUH monat
4. Korrektur

Falls die HomeMatic CCU einmal ausfällt und ein „Not-Reboot“ durchgeführt werden muss, kommt der der Zähler mit alten Werten (Zeitpunkt der letzten automatischen Sicherung) wieder hoch. Lässt man den Zähler einfach weiterlaufen, kann es passieren, dass die gesamte Zeit, seitdem der Brenner zuletzt eingeschaltet wurde, als Betriebsdauer berechnet wird. In jedem Fall werden sich ohne Eingriff ungenaue Werte einschleichen.


Hier ein Workaround, was nach einem „Not-Reboot“ zu tun ist, damit der Zähler wieder auf die richtigen Werte kommt:

1. Die SysVar „Brenner Status“ manuell auf „Feuerung“ setzen (z.B. mit WebMatic) -> Die SysVar „Brenner letzte Einschaltzeit“ wird auf die aktuelle Zeit gesetzt

Ölverbrauch

2. Die SysVar „Brenner Status“ manuell auf „Stand-by“ setzen -> Die SysVar „Brenner letzte Ausschaltzeit“ wird auf die aktuelle Zeit gesetzt, das Script berechnet jetzt irgendwelche Werte.

Ölverbrauch

3. Bei den folgenden SysVar manuell die letzten geloggten Werte setzen. Als Quelle kann man z.B. die Aufzeichnungen des CCU-Historian nehmen. Zur Not muss man die Betriebszeiten der letzen Sicherung (Anzeige nach dem Reboot) zu Grunde legen und hochrechnen.

„Brenner Betriebsstunden heute“

„Brenner Betriebsstunden laufende Woche“

„Brenner Betriebsstunden laufender Monat“

„Brenner Betriebsstunden laufendes Kalenderjahr“

„Brenner Betriebsstunden seit letzter Fuellung“

Wenn nicht kurz vor dem Absturz getankt wurde, sollte die SysVar „Brenner Tankinhalt bei letzter Fuellung“ noch stimmen, bitte kontrollieren und ansonsten korrigieren.

Die folgenden Werte müssen nicht verändert werden, da sie anschließend automatisch korrekt errechnet werden:

„Brenner Verbrauch heute“

„Brenner Verbrauch laufende Woche“

„Brenner Verbrauch laufender Monat“

„Brenner Verbrauch laufendes Kalenderjahr“

„Brenner Verbrauch seit letzter Fuellung“

„Brenner Tankinhalt aktuell“

4. Die SysVar „Brenner Status“ manuell auf „Feuerung“ setzen.

5. Direkt im Anschluss die SysVar „Brenner Status“ manuell auf „Stand-by“ setzen.

6. Jetzt sollten alle Werte wieder stimmen.

Zum korrespondierenden Beitrag im…HomeMatic-Forum

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. Ein toller Beitrag „HomeMatic – Verbrauchs- und Betriebsstundenzähler für Ölheizungen“.
    Ich werde das versuchen umzusetzen. Mein Ölbrenner ist mit einem normalen Stecker an einer Steckdose angeschlossen, ich werde den neuen “ HomeMatic Zwischenstecker mit Leistungsmessung “ einsetzen um die Betriebszeiten zu erfassen.(habe ich gerade bestellt)
    Wie setze ich die Pushover Mitteilungen in Prowl Meldungen um, können sie mir bitte ein Beispiel dazu mailen?
    Ich nutze Prowl Meldungen z.B. wenn die Alarmanlage scharf geschaltet ist, aber wie ich einen Systemzustand als Meldung versende ist mir nicht ganz klar. Bin noch recht neu auf dem Gebiet.
    LG
    Jürgen

    • Hallo Jürgen,
      danke für das Feedback. Die Idee mit dem neuen leistungsmessenden Zwischenstecker ist sicher eine gute Alternative, wenn der Brenner über eine Steckdose angeschlossen ist. Um eine möglichst genaue Messung hinzubekommen sollte der Leistungsmesser so abgestimmt werden, dass er nur bei Betrieb der Pumpe (Ölfluss) eingeschaltet ist. Ich habe dieses Gerät zwar (noch) nicht aber das lässt sich bestimmt irgendwie einstellen.

      Über eine Rückmeldung zu den diesbezüglichen Erfahrungen würde ich mich freuen.

      Zum Umschreiben der Skripte auf Prowl kann ich leider nicht viel beitragen, da ich keine iOS-Geräte verwende und daher Prowl nicht wirklich kenne. Das müsste aber irgendwie funktionieren. Ich empfehle, hierzu mal im HomeMatic-Forum nach “prowl” und “wget” zu suchen ( http://homematic-forum.de/forum/search.php?keywords=prowl+wget ).

      Aber was spricht gegen die Nutzung von Pushover parallel zu Prowl? Ich kenne einige Apple-Nutzer, die zwischenzeitlich komplett von Prowl auf Pushover umgestiegen sind.

      Grüße
      Jens

  2. Hallo Jens.
    Danke für die schnelle Anwort, also Prowl habe ich schon für einige Meldungen auf 2 CCU´s in gebrauch, aber ich versuche mal mich mit Pushover anzufreunden.
    Also, zum Zwischenstecker, man wird genau über den gezogenen Strom informiert, d.H. die Vorwärmung, Öffnung des Ventils und wenn die Zündung ausschaltet, ist ganz interessant, ich werde das noch genauer beobachten, aber man kann ja einstellen bei welchen Werten der Brenner auf Feuerung geht. Ich habe das Gerät jetzt erst seit 1 Tag in Gebrauch.
    Ich muss mir auch die Scripte mal genauer ansehen,Betriebsstunden, heute, laufende Woche und Monat stehen auf 0, während sie für laufendes Jahr und seit letzter Füllung korrekt angezeigt werden??!!
    Na mal sehen ob ich den Fehler alleine finde, einen schönen Tag noch.
    Jürgen

  3. Hallo Jens,
    mir glühen die Augen,
    ich bekomme es einfach nicht in den Griff.
    Woran kann es liegen, das die Betriebsstunden heute,laufende Woche und laufender Monat, auf NULL stehen, aber in laufendes Kalenderjahr und seit letzter Füllung jeweils 0,53 Std. stehen. Tank aktuell, sowie seit letzter Füllung, sind auch ok, aber beim Rest tut sich nichts.
    Ich habe die scripte mehrmals eingefügt, ich weis nicht weiter, die variablen sind auch ok, die Bezeichnungen habe ich zur Sicherheit von der Webseite in die Variable kopiert, mehrmals.
    Die CCU habe ich auch schon mehrmals neu gestartet, ohne Erfolg.
    Ich hoffe du hast noch einen Tipp für mich.
    Liebe Grüße
    Jürgen

    • Hallo, ich schaue mir das mal an und melde mich. Stelle dein Problem doch auch mal im Homematic-Forum im passenden Beitag dar, da können dir die anderen User womöglich schneller helfen, bis dann.
      Jens

  4. Jürgen

    Hallo Jens,
    ich habe jetzt an der CCU einen „hardware reset“ gemacht.
    Jetzt läuft alles super.
    Vielen Dank für das tolle Script und die schnellen Antwoten.
    Einen schönen Maifeiertag.
    Jürgen

    • Hallo Jürgen,
      schön, dass es nun auch bei dir funktioniert. Manchmal bewirkt ein „Reboot“ wahre Wunder.
      Weiterhin viel Spaß und Erfolg beim Hausautomatisieren.
      Liebe Grüße
      Jens

  5. Hi,
    dieses Script reagiert erst ab einer Zeitdifferenz von 36 Sekunden Brennerlaufzeit. Ist das ausreichend genau für eine Restmengenberechnung des Öls?
    danke

    • Hallo Alexander,

      normalerweise sollten Ein- und Ausschaltskript unmittelbar nach der Änderung der SysVar ablaufen und hierzu jeweils deutlich weniger als 36 Sekunden benötigen. Beim manuellen Umschalten der SysVar, z.B. in WebMatic, kann man das sehr schön sehen.

      Ich gehe daher davon aus, dass sich die 36 Sekunden nicht auf die Skriptlaufzeit sondern auf die individuellen Gegebenheiten der Heizunsanlage bis zum Umschalten der SysVar beziehen.

      Wenn die Verzögerung von 36 Sekunden sowohl beim Ein- als auch beim Ausschalten der SysVar auftreten, hebt sich das in der Berechnung wieder auf. Sollte sie z.B. nur beim Ein- nicht aber Ausschalten auftreten, kann es helfen, zur Feinabstimmung die SysVar nicht sofort sondern um den gleichen Wert verzögert wieder auszuschalten.

      Allgemein ist es so, dass sehr kurze Brennerlaufzeiten über einen langen Betrieb zu größeren Ungenauigkeiten führen können. Da muss man selbst entscheiden, wie weit z.B. plus minus 50 Liter bei einem 3000 Liter Tank akzeptabel sind. Mein Brenner läuft immer mindestens einige Minuten, da habe ich diesbezüglich keine Probleme festgestellt. Ich habe dieses System jetzt seit knapp zwei Jahren im Betrieb und war beim letzten Tanken selbst überrascht wie genau es über die Zeit berechnet hat.

      Grüße
      Jens

  6. Coole Sache. Habe ich bei mir umgesetzt und funktioniert.
    Meiner Meinung nach sollte im berechnungsteil angefangen werden wenn einer der beiden Datum Werte 0 ist.
    Ich hatte gestern Abend innerhalb 20 Minuten plötzlich über 4000 betriebsstunden.
    Genauso würde ich die Datum Systemvars am Ende auf null setzen falls das System einen schaltzustand verpasst.
    Mfg Michael

    • Hallo Michael,

      was genau meinst du damit?

      Die Datumswerte können doch normalerweise eigentlich nicht NULL sein, da sie ja im Skript von der CCU gespeichert werden, wenn der Einschalt- bzw. Ausschaltimpuls kommt (ausgenommen natürlich, die CCU ist stehen geblieben, dann muss man den Zähler mit dem im Hinweis zum zum „Not-Reboot“ beschriebenen Vorgehen korrigieren).

      Was im normalen Betrieb theoretisch passieren kann, ist dass ein Impuls mal nicht in der CCU ankommt und daher falsche Betriebszeiten berechnet werden (bei mir ist das in den knapp drei Jahren, seit ich den Zähler nutze aber noch nicht spürbar aufgetreten). Aber auch in diesem Fall dürften die Datumswerte nicht NULL aufweisen.

      Würde mich mal interessieren, was bei dir dazu führt, dass die Datumswerte auf NULL gesetzt werden.

      Liebe Grüße Jens

  7. Franz Schuscha

    Hallo Jens,
    Vielen Dank für diesen Beitrag. Ich versuche es gerade umzusetzen nur leider wird die Ausschaltzeit nicht in die System Variable geschrieben.
    Wenn ich folgendes händisch bei „Script testen“ einfüge setzt er mir komischer Weise die Ausschaltzeit.
    var AusZeit= dom.GetObject(„Brenner letzte Ausschaltzeit“);
    ! Speichern der Ausschaltzeit
    AusZeit.State(system.Date(„%F %T“));
    Wenn ich dein ganzen Script einsetze wird nichts in die SysVar geschrieben.
    Hast du vielleicht eine Idee ?

    Mit freundlichen Grüßen
    Franz

    • Hallo Franz,
      das ist ungewöhnlich. Ich kann mir dazu nur vorstellen, dass das Skript nicht durchläuft, weil irgendwo ein Fehler reingekommen ist. Vielleicht hat sich beim Kopieren oder Editieren ein nicht sichtbarer Zeilenumbruch eingeschlichen, das gibt es schon mal.

      Ich würde das Skript mal mit dem Erweiterten Skript Parser (siehe Forum oder Homematic-Inside) testen und untersuchen, an welcher Stelle es stehen bleibt.

      Ich kann auch gerne mal ein funktionierendes Skript per Mail als Textdatei übermitteln, wenn das hilft.

      Liebe Grüße Jens

  8. Hallo Jens,
    zunächst einmal auch von mir herzlichen Dank für deine Veröffentlichungen und die viele Arbeit, die du dir für die Homematic – Community gemacht hast.
    Ich habe auf der Basis deiner Veröffentlichung und der Diskussion im Forum dein Skript in einer stark verkürzten Version im Einsatz. Die Historie der Daten (also die Wochen-, Monats- und Jahresanzeigen generiere ich über CCU-Historian, so dass ich lediglich die Tageswerte als Systemvariablen benötige. Alles funktioniert soweit gut, bis auf den Fehler, dass jeweilige Verbrauch nicht vom Heizölbestand (Brenner Tankinhalt aktuell) abgezogen wir. Könntest du mir auf die Sprünge helfen?
    Hier mein benutztes Skript:

    gelöscht von sTeRn AV
    

    Ich würde mich über eine Rückmeldung freuen!
    L.G
    Olaf

    • Hallo Olaf,

      schön, dass ich dir „hinter den Kulissen“ mit deinem speziellen Problem helfen konnte und es jetzt bei dir funktioniert.

      Liebe Grüße Jens

  9. Genau „das“ wollte ich dir auch gerade schreiben… 🙂
    Also herzlichen Dank nochmals!
    LG
    Olaf

  10. Holger Goth

    Hallo Jens,
    habe meine Gasheizung mit disem Script am laufen.
    Mir geht es darum das ich einfach weiß wann und wie oft sich mein Brenner einschaltet.
    Als Schnittstelle habe ich das Kontaktinterface :
    Homematic 092068 3-Kanal-Funk-Schließerkontakt-Interface
    Dieser Kontakt bekommt sofort die Meldung offen oder geschlossen und habe dies auch in die Scripte richtig eingefügt.
    Den Ölverbrauch habe ich natürlich entfernt um nur Zeitdaten zu erfassen.
    Jedoch hab ich auch ein Problem mit der Ein und Auschaltzeit.
    Die Erfassung des Start´s kommt etliche Sekunden zu spät und die Auschaltzeit ebenso…..
    Wird das Interface nicht im Sekundenintervall abgefragt ?
    Würde es was bringen wenn ich bei allen Scripten anstatt Auslösen bei Änderung die Option Aulösen bei Aktualisierung nehme ?
    paar Sekunden sind nicht so schlimm aber teilweise geht es in die Minutenbereiche bei mir.
    Das Interface sitzt ein paar Meter neben meiner CCU und somit eine einwandfreie Funkübertragung.
    Vlt hast du mir einen Tipp….

    Danke Gruß Holger

    • Holger Goth

      Noch als Nachtrag die Gesamt Brennerstunden heute passen.
      Als Beispiel heute Abend lief mein Brenner 1 Stunde. Was auch passt jedoch wenn ich die Ein und Auschaltzeiten vergleiche komme ich auf ca 20 bis 30 Minuten.

    • Hallo Holger,

      auch ich nutze den von dir verwendeten HM-SCI-3-FM, habe aber nicht das Phänomen, wie du es beschreibts.

      Der HM-SCI-3-FM wird nicht abgefragt sondern sendet aktiv seinen Zustand, wenn einer der angeschlossenen Kontakte seinen Zustand ändert. Dann sollte das eigentlich sofort an die CCU übertragen werden. Wenn du ausschließen kannst, dass der Anschuss am HM-SCI-3-FM möglicherweise defekt ist (keine „Wackelkontakte“ etc.), kann es entweder an der Funkstrecke liegen (auch ggf. zu nah an der CCU?, sonstige Störquellen?) oder die CCU ist eventuell solange mit irgend etwas anderem beschäftigt.

      Ich verstehe das doch richtig, dass auch schon das Umschalten der SysVar „Brennerstatus“ verzögert ist? Falls das zeitverzugslos klappt, Ein- und Ausschaltskript aber verzögert abgearbeitet werden, liegt das definitiv an Vorgängen innerhalb der CCU.

      Auslösen bei Aktualisierung statt Auslösen bei Änderung kannst du mal versuchen. Ich glaube aber nicht, dass das wirklich was bringen wird.

      Wenn die Verzögerung von Einschalten und Ausschalten immer gleich ist, ist das für die Auswertung übrigens unschädlich, weil ja immer nur die Differenz zu Grunde gelegt wird und diese dann gleich bleibt.

      Liebe Grüße Jens

      • Auch noch ein Nachtrag: Wenn alles nichts hilft, die CCU aber – wie du schreibst – im gleichen Raum ist, könntest du alternativ überlegen, an Stelle des HM-SCI-3-FM z.B. ein „Homematic 092011 Wired RS485 I/O-Modul 12 Eingänge 14 Ausgänge“ oder einen Homeduino zu verwenden.
        Grüße Jens

  11. Holger Goth

    wäre eine Überlegung wert Jens ,
    danke aber wieso stimmt dann meine Gesamtlaufzeit vom Brenner ?
    Grüße und ein schönes Wochenende….

    • Guten Morgen Holger,
      das Skript macht ja nichts anderes als die Differenz zwischen Aus- und Einschaltzeitpunkt zu berechnen und diese in den einzelnen Zeitraumzählern aufzusummieren.
      Wenn du mit dem Skript 60 Minuten und manuell maximal 30 Minuten (bei gleichem Betrachtungsfenster) ermittelt hast, wurde der entweder Zähler nicht zurück gesetzt oder mit deinem Skript stimmt etwas grundsätzlich nicht. Hast du in der Berechnung der Zeiten etwas verändert?
      Wenn du magst, kannst du mir dein Skript auch mal per Mail schicken, dann sehe ich gerne mal drüber.
      Liebe Grüße Jens

  12. Hallo Jens,
    tolle Beschreibung und Umsetzung. Meinst du, man könnte einen Fensterkontakt für diese Anwendung nutzen ? Vielleicht funktioniert sogar der optische Fensterkontakt mit der LED am Brenner ? Schonmal getestet ?

    Gruß
    Sascha

    • Hallo Sascha,
      grundätzlich kannst du jeden Sensor verwenden, die Frage ist nur, von wo und wie du den Trigger von der Heizung in den Sensor bekommst. Einen magnetischen Tür-/Fensterkontakt kann ich mir da bei keinem mir bekannten Heizungssystem vorstellen. Ob bei einer Heizung mit LED ein optischer Kontakt funktioniert, müsste man mal testen, das wäre aber meines Erachtens reiner Zufall und ich glaube eigentlich nicht, dass es funktionieren wird. Ich selbst besitze keinen solchen Sensor und kann es daher leider nicht ausprobieren.
      Liebe Grüße Jens

  13. Hi Jens,
    mit dem Fensterkontakt meinte ich diesen umzubauen um daran den Dämmerungssensor anzuschließen (https://hausautomatisierung.rainer-grundel.de/2014/07/video-zum-umbau-eines-fenstersensors/) um das als alternativ günstigere Lösung zu nehmen statt des HM-SCI-3-FM.

    Viele Grüße

    Sascha

    • Hallo Sascha,
      achso, das müsste funktionieren, der Sensor kann ja auch die beiden Zustände dauerhaft anzeigen. Du kannst dich ja mal melden, falls du es ausprobierst, ob es geklappt hat.
      Liebe Grüße Jens

  14. Hi Jens,

    habe es jetzt mit einem WeMos und einem Lichtsensor gelöst. Der WeMos schreibt direkt in die Variable „Brenner-Status“ in der CCU. Danke für das Skript, das hat sehr geholfen

    • Hallo Sascha,
      schön, dass alles funktioniert. Den WeMos D1 zum Abgriff zu nutzen ist eine gute und zeitgemäße Idee. Wäre eine Alternative, wenn mein Relaismodul mal kaputt geht.
      Liebe Grüße Jens

  15. Hallo Jens,

    ich brauche bitte deinen Rat. Habe seit Anfang des Jahres nach deinem Tutorial den Betriebsstundenzähler in Berieb genommen. Hat auch nach anfänglichen Schwierigkeiten (bei denen Du mir sehr geholfen hast auch bis jetzt wunderbar funktioniert), Jetzt habe ich auf RaspberryMatic umgestellt, seit diesem Zeitpunkt funktioniert es nicht mehr richtig. Das Ausschaltscript setzt alle Werte auf den Verbrauch der aus der letzten Einschalt und Ausschaltzeit errechnet wird/wurde. Er summiert die errechneten Betriebsstunden nicht mehr auf die Werte auf. Sonderns setzt alle Werte Betriebsstunden/Verbrauch auf den gleichen Wert. Was läuft schief?

    Ich hoffe Du kannst mir helfen.

    Vielen Dank!

    Rico

    • Hallo zusammen, ich nutze auch dieses tolle Programm seit diesem Frühjahr, vielen Dank für die tolle Vorlage. Seit einigen Tagen habe ich ein ähnliches Problem wie Rico (im Kommentar vom 18.07.17). Und zwar läuft der Brenner eine gewisse Zeit und dann wird der Wert „Brenner Betriebsstunden Heute“ auf irgendeinen Wert gesetzt (zb. 0,35 Stunden) und alle anderen Werte der Betriebsstunden + die Verbräuche werden auf den selben Wert (zb. 0,35) gesetzt. Kann uns hiermit jemand weiterhelfen? Vielen Dank! Grüße Georg

      • Hallo Georg,
        ich bin gerade dabei, mit Rico das Problem etwas einzugrenzen. Nutzt du auch einen RaspberryPi mit RasperryMatic an Stelle einer CCU?
        Grüße Jens

        • Hallo Jens, nein habe keinen Rasperry im einsatz. Nutze die CCU2 ganz normal… das einzigste was von mir geändert wurde ist das Einspielen des Updates 2.29.18 vom 20.07. Also es verhält sich folgendermaßen: Sobald der Brenner ausschaltet wird die letzte Laufzeit als alle Werte übernommen…es wird also gar nichts mehr berechnet….bis zum nächsten Brennereinsatz…dann wird diese Laufzeit übernommen….

          • Es scheint als seien die Aktivitäten zur Verbesserung der Logikschicht ursächlich, dass das Skript ab der Firmware 2.29.18 zumindest in den Logikschicht-Versionen „Standard“ und „Community“, nicht mehr läuft.

            Entgegen meines ursprünglichen Verdachtes, dass die Zeitspannenberechnung nicht mehr funktioniert, war das Problem sehr viel trivialer und es reichten einige marginale Anpassungen im Ausschaltskript, um den Zähler unter der Firmware 2.29.18 wieder zum Laufen zu bekommen.

            Bitte das o.a., aktualisierte Ausschaltskript verwenden, das Einschaltskript kann belassen werden.

            Ich habe das Skript mit einer CCU2 in den in den Logikschicht-Versionen „Standard“ und „Community“ getestet, ob damit auch das RaspberryMatic-Problem gelöst ist, müssten Anwender desselben bitte mal prüfen. Der Langzeittest mit der CCU2 steht noch aus. Falls euch etwas auffällt, meldet euch bitte.

            Grüße Jens

  16. Hallo Jens,
    habe eine CCU2 und bei mir werden mit der Firmware 2.29.18 alle Werte auf 0 + aktuelle Laufzeit gesetzt.
    Anscheinend werden die Aktuellen Werte die vor dem Berechnen in den Variablen (Laufzeit) stehen nicht eingelesen. Stehe gerade bisschen auf dem Schlauch….

    • Hallo,
      1. hat es bis zur Aktualisierung auf 2.29.18 funktioniert oder wurde der Zähler erst mit dieser Firmware neu erstellt?
      2. ist das auch bei dem geänderten Skript (s.o. im Tutorial) der Fall?
      Falls noch nicht gemacht, bitte mal das geänderte Skript ausprobieren, ansonsten sehen wir weiter.
      Grüße Jens

  17. Hallo Jens,
    Ja das oben genannte Skript geht mit der 2.29.18 auch nicht (bei mir).

    Bis vorgestern hatte ich das andere Skript mit varA- varZ Variablen. dies hatte mit der Vorletzten Firmware prima funktioniert.

    Anscheinend, werden die Variablen nicht richtig eingelesen bei der Berechnung.
    Da alle Werte dann nur den letzten Brenner Start enthalten.

    Viele Grüße,
    Fruehwi

    • Hallo Fruehwi,
      ich hatte dir vor einigen Tagen eine Mail geschickt, hast du das zwischenzeitlich mal ausprobiert?
      Grüße Jens

  18. Hallo Jens,

    vielen Dank für die Überarbeitung deines Skriptes es läuft auf dem Raspi mit RaspberryMatic wieder Problemlos.
    Nochmals vielen Dank für deine schnelle Hilfe.

    BG
    Rico

  19. Hallo Jens,

    jetzt habe ich deine Email im Spam Ordner von GMX gefunden.
    Ich habe die neue Version (mit verkürzten Variablen) von dir genommen und am nächsten Tag hat es dann funktioniert. Keine Ahnung warum das abends nicht ging… war schon spät.
    Danke für dein Unterstützung.
    Viele Grüß

Schreibe einen Kommentar

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

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.