NEWS
Brenner Zustand abgreifen
-
@cainam
Moin,wie @klassisch schon schreibt, ich würde auch ein 230V Relais/Optpkoppler parallel zum Ventil schalten und dann das ganze mit einem Wemos D1 mini über Sonoff oder Mqtt auswerten. Billig, einfach und sehr unanfällig.
-
Also ich hab das mit einem POW gelöst der einfach in der Zuleitung zum Brenner hängt. Über die Leistung werte ich dann den Status des Brenner aus. zB.
P < 80W ---> Brenner ist AUS
P > 150W --> Brenner ist EIN
P > 250W --> Brenner im ZÜNDVORGANG
Läuft seit Jahren absolut zuverlässig. Der so berechnete Ölverbrauch ist ca. 3-5mm identisch mit dem gemessenen Ölstand im Tank ...
-
@Einstein67 sagte in Brenner Zustand abgreifen:
Der so berechnete Ölverbrauch ist ca. 3-5mm identisch mit dem gemessenen Ölstand im Tank ...
Klasse, woher hast Du die Düsenkonstanten und den Druck? Oder kalibrierst Du das Ganze nach dem Service / Düsentausch.
Stromaufnahme ist auch eine Methode. Mit dem neuen Hauptzähler sieht das so aus
Mit dem S0-Zähler im Heizraum so
-
@cainam annst du nicht direkt die Heizungsstuerung auslesen?
Was ist das für eine Heizung? Eventuell ist da eine Lösung möglich. -
@cainam sagte in Brenner Zustand abgreifen:
@klassisch
hmm... gehts oder nichtklar geht das - solange der Shelly1 ("SW"-Eingang u. 230V natürlich) und das "Brennersignal" auf dem selben Potential (bzw. der selben Phase) liegen, was hier aber ja gegeben wäre. Und das nichts mit dem oben verlinkten "i3" zu tun. Ist dann halt nur bissel blöd, dass dann immer ein angezogenes Relais mitgeschleppt wird...
wie hast du es denn aktuell gelöst?
ich benutze besagten Pin am Brennerstecker, der über eine passende Schaltung inkl. Optokoppler auf einen Wemos D1 mini mit Tasmota geht.
Falls Interesse an der Schaltung besteht: https://github.com/jlegen/Smartheizer (das Ding steuert bei mir auch noch WW, und ich kann "remote" die Absenkung meiner uralt-Regelung schalten)da steht doch etwas bei GPI05...
-
-
-
@watcherkb So wie ich das sehe könnte das Sonoff den Brenner aber auch schalten oder? Das könnte doch zu Problemen kommen wenn der Offline ist....
-
@JLeg said in Brenner Zustand abgreifen:
B4 ist sogar extra
Was meinst du mit B4? vom Shelly oder bei der Heizung?
Hinten hat es ja so ein Steuergerät (rot) kann man das evt. da direkt abgreifen? Shelly EM am Blauen (Steuergerät zu Pumpe) oder Grünen (geht zum Brenner)
Weiter habe ich noch in der Heizungsanleitung folgendes gefunden..
..
und bei der Version mit dem 230v relais würde dann die verkabelung so aussehen??:
-
@cainam sagte in Brenner Zustand abgreifen:
@JLeg said in Brenner Zustand abgreifen:
B4 ist sogar extra
Was meinst du mit B4? vom Shelly oder bei der Heizung?
Hinten hat es ja so ein Steuergerät (rot) kann man das evt. da direkt abgreifen? Shelly EM am Blauen
das "Steuergerät" ist der (genormte) Stecker vom Brenner!
Den kann man abziehen - dann ist der Brenner stromlos. Am Gegenstück des Steckers am Brenner kann man dann normalerweise einfach eine Klappe aufmachen, und sich dort am Anschluss B4 (und N natürlich) z.B. einen Shelly1 (SW und N) anklemmen. Den Ausgang des Shellys lässt man dann natürlich unbeschaltet. Du willst ja nichts schalten, sondern nur mitbekommen, wenn/dass der Brenner läuft. Und das würdest du dann einfach im Shelly-Objekt im iobroker sehen - wenn der Shelly nämlich "true" beim "Switch" stehen hat...
-
@JLeg said in Brenner Zustand abgreifen:
@cainam sagte in Brenner Zustand abgreifen:
@JLeg said in Brenner Zustand abgreifen:
B4 ist sogar extra
Was meinst du mit B4? vom Shelly oder bei der Heizung?
Hinten hat es ja so ein Steuergerät (rot) kann man das evt. da direkt abgreifen? Shelly EM am Blauen
das "Steuergerät" ist der (genormte) Stecker vom Brenner!
Den kann man abziehen - dann ist der Brenner stromlos. Am Gegenstück des Steckers am Brenner kann man dann normalerweise einfach eine Klappe aufmachen, und sich dort am Anschluss B4 (und N natürlich) z.B. einen Shelly1 (SW und N) anklemmen. Den Ausgang des Shellys lässt man dann natürlich unbeschaltet. Du willst ja nichts schalten, sondern nur mitbekommen, wenn/dass der Brenner läuft. Und das würdest du dann einfach im Shelly-Objekt im iobroker sehen - wenn der Shelly nämlich "true" beim "Switch" stehen hat...
Aber der Shelly1 bräuchte ja auch noch ein L? wo nimmst du das her?
B4 = da wo 4-N steht? -
@cainam sagte in Brenner Zustand abgreifen:
@JLeg said in Brenner Zustand abgreifen:
@cainam sagte in Brenner Zustand abgreifen:
@JLeg said in Brenner Zustand abgreifen:
B4 ist sogar extra
Was meinst du mit B4? vom Shelly oder bei der Heizung?
Hinten hat es ja so ein Steuergerät (rot) kann man das evt. da direkt abgreifen? Shelly EM am Blauen
das "Steuergerät" ist der (genormte) Stecker vom Brenner!
Den kann man abziehen - dann ist der Brenner stromlos. Am Gegenstück des Steckers am Brenner kann man dann normalerweise einfach eine Klappe aufmachen, und sich dort am Anschluss B4 (und N natürlich) z.B. einen Shelly1 (SW und N) anklemmen. Den Ausgang des Shellys lässt man dann natürlich unbeschaltet. Du willst ja nichts schalten, sondern nur mitbekommen, wenn/dass der Brenner läuft. Und das würdest du dann einfach im Shelly-Objekt im iobroker sehen - wenn der Shelly nämlich "true" beim "Switch" stehen hat...
Aber der Shelly1 bräuchte ja auch noch ein L? wo nimmst du das her?
B4 = da wo 4-N steht?ja, dachte das sei klar
- der Shelly braucht natürlich grundsätzlich auch Saft, also "L" und "N". Bei deinem Stecker ist "L" da, wo die "12" steht - du solltest aber prüfen, ob dort dauerhaft "L" anliegt, oder nur wenn das Ding läuft, in dem Fall muss "L" von woanders her genommen werden (z.B. von der Regelung - die hat üblicherweise auch ein "Klemmbrett").
Also Saft für Shelly: "L" und "N" am Shelly ("I" ist glaube ich nur nötig, wenn auch was zum Schalten am Shelly hängen soll); Anschluss Shelly "SW" an "B4" vom Brenner.Ansonsten hier aber angesichts der "Fragen" hier: Es handelt sich um 230V, also lebensgefährlich => lass' das lieber eine Fachkraft machen...
-
@Einstein67 said in Brenner Zustand abgreifen:
Also ich hab das mit einem POW gelöst der einfach in der Zuleitung zum Brenner hängt. Über die Leistung werte ich dann den Status des Brenner aus. zB.
Damit der brenner nicht versehentlich ausgeschalten wird kann man den POW anschliessen und die beiden L miteinander verbinden, so kann er nicht schalten... oder geht das nicht, gleiche frage für Shelly 1PM?
-
@cainam said in Brenner Zustand abgreifen:
@Einstein67 said in Brenner Zustand abgreifen:
Also ich hab das mit einem POW gelöst der einfach in der Zuleitung zum Brenner hängt. Über die Leistung werte ich dann den Status des Brenner aus. zB.
Damit der brenner nicht versehentlich ausgeschalten wird kann man den POW anschliessen und die beiden L miteinander verbinden, so kann er nicht schalten... oder geht das nicht, gleiche frage für Shelly 1PM?
Hmmm, wo ist das Problem wenn der Brenner mal geschalten wird? Auch die Schaltuhr, das Thermostat und die Sicherheitseinrichtungen, schalten (zumindest bei meinem 40 Jahre alten Brötje Brenner) einfach die 230V für den Feuerungsautomaten weg.
Ein versehentliches schalten kann bei Tasmota mit "poweronstate 4" verhindert werden. Ich aktiviere das aber nur während des Zündvorganges mit einer Rule.
on ENERGY#Power>230 do poweronstate 4 endon on ENERGY#Power<220 do poweronstate 3 endon
Wenn du die beiden L verbindest, kann der Strom nicht mehr gemessen werden.
-
@cainam sagte in Brenner Zustand abgreifen:
@Einstein67 said in Brenner Zustand abgreifen:
Also ich hab das mit einem POW gelöst der einfach in der Zuleitung zum Brenner hängt. Über die Leistung werte ich dann den Status des Brenner aus. zB.
Damit der brenner nicht versehentlich ausgeschalten wird kann man den POW anschliessen und die beiden L miteinander verbinden, so kann er nicht schalten... oder geht das nicht, gleiche frage für Shelly 1PM?
egal ob Shelly1 oder 1POW - die Schaltausgänge (= das Relais) willst du hier gar nicht benutzen. Es ist also völlig egal, ob der Shelly schaltet oder nicht, da der Brenner nicht am Schaltausgang dran hängen wird/soll/muss/braucht/darf!
Der Shelly würde bei deiner Lösung ausschliesslich in Form seines "SW" Schalt_einganges_ benutzt, um die ganz normal von der Regelung geschalteten Brennerstarts am Schalteingang zu erfassen.
Den Schalteingangszustand kann man dann ganz normal im iobroker-Objekt abfragen.
Bei Tasmota könnte man dann auch noch verhindern, dass das Relais des Shelly unnötig "klackt", bei Shelly-Firmware weiss ich das nicht. Ist aber für die Funktion "Brennerlaufzeit erfassen" völlig egal. -
Leider warte ich immer noch auf meine bestellten WEMOS...
Habe heute hinten bei der Heizung mal aufgeschraubt... da sollte ich das doch einfach abgreifen können oder? welche Info würded ihr sonst noch abgreifen/ist wichtig?
Weiss jemand wo ich einen Schaltplan finde vom Buderus Ecomat 4000 - auf der Homepage habe ich nichts gefunden. es scheint aber so die Klemme 11 hat strom wenn brenner läuft sonst nicht... 10 + 12 immer - 4 +8 nie!? Interessant zum wissen welche ich alles mit dem Strommesser abgreifen soll...
-
@cainam wie dort bereits angemerkt nutze ich
- Brenner Störungsmeldung: Mit Abstand das wichtigste aber auch das am wenigsten genutzte Signal. Wenn dieses Signal ansteht besteht sofortiger Handlungsbedarf, besonders im Winter. Also gibt es eine Mail und per gmx Mailforwarding noch eine SMS. Das mit der SMS stammt noch aus alten, smartphone-freien Zeiten
- Brenner Magnetventil Brennstoffeinspitzung: Sehr nützliches und mit Abstand das meistgenutzte Signal. Daraus kann man den Verbrauch ersehen und auch Fehlstarts erkennen und registrieren. Wenn sich die Fehlstarts häufen, ist es Zeit für eine präventive Wartung
- Heizung Umwälzpumpe: Nice to have. Zusammen mit der anderen Pumpe kann man so in etwas das Verhältnis zwischen Heizverbrauch und Warmwasserverbrauch abschätzen
- Warmwasser Speicher-Ladepumpe: Nice to have. Zusammen mit der anderen Pumpe kann man so in etwas das Verhältnis zwischen Heizverbrauch und Warmwasserverbrauch abschätzen
Wo diese Anschlüsse bei Deiner Heizung sind, kann ich allerdings nicht beantworten.
-
@JLeg Sali, ich habe genau das gemacht... doch der Shelly wechselt den Schalterstatus nicht... Einstellungen habe ich "Toggle Switch" angewählt....
-
Hier meine "Hardware"-Lösung:
Ich wollte ebenfalls (bereits bevor ich ioBroker eingesetzt habe) den Brenner-Zustand loggen.
Da ich in Sachen Heizungstechnik Laie bin, bzw. keinen Eingriff in die Heizungselektronik vornehmen wollte, habe ich folgende Lösung realisiert.
Ich weiß, daß in unserer Öl-Heizung ein sog. Flammen-Wächter verbaut ist.
Dieser hat die Aufgabe, die Flammen in der Brennerkammer zu "beobachten" und im Falle einer Störung entspr. abzuschalten.
Warum also nicht einen zweiten Flammenwächter verwenden, der nur die Zustände "Flammen in Brennerkammer vorhanden", oder "Keine Flammen in Brennerkammer" zu erfassen.
Dazu habe ich mir ein sog. IR Flammensensor-Modul für Arduino besorgt:
An dem Modul habe ich die IR-Diode mit einem Kabel verlängert und die Diode einfach neben den vorhandenen Flammenwächter gesteckt (das weisse Kabel).
Fremdlicht kann hier nicht eindringen, weil noch eine Abdeckhaube über den kpl. Brenner gestülpt ist, die ich nur für das Foto abgenommen habe:
Das Modul habe ich dann mit einer NodeMCU (ESP8266) "verheiratet" und die NodeMCU sendet seither jede Minute per WLAN den Brennerzustand ( an/aus).Ich wollte das gerne haben, um mögl. alle Zustände meiner Solarthermie-Anlage zu visualisieren:
In dieser Grafik kann man erkennen, wann der Brenner angesprungen ist (rote Balken am unteren Bildrand).
Die obere rote Kurve zeigt den Temperaturverlauf des Warmwasser-Speichers.
Die erste Aufheizung erfolgte hier ca. um 09:20 Uhr, die zweite gegen 13:35 Uhr, wobei man auch sieht, daß da der Brenner angesprungen ist.Der Brenner springt natürlich auch an, um das Haus zu beheizen, das kann man an den Zeitpunkten der roten Balken erkennen, wo keine Aufheizung des Warmwasser-Speichers erfolgte.
Wie gesagt, ich habe das bereits vor meiner ioBroker-Zeit gebastelt und die Grafik wird seither alle 5 Min. auf einem Windows-PC mittels gnuplot erstellt und auf meine Wetterstations-Seite übertragen.
Das näher zu erläutern würde hier aber zu weit führen.Ich wollte hier nur zeigen, daß man auch ohne elekrischen Eingriff in die Heizung dort Daten abgreifen kann.
Gruß
Jörg -
So, abgreifen tue ich es mit einem Shelly EM - bisher scheint das zu funktionieren.
Mein Code für die Berechnungen (Hab es in Blockly gemacht, aber keine ahnung wie ich das reinkopiere):
Was meint ihr dazu? Fehler?
var GelaufenD, Betriebsstunden_Brenner, gelaufenF, GelaufenM, GelaufenJ, Tankinhalt, Einschaltsdauer_in_ms, Einschaltzeit, Einschaltdauer_in_h, Ausschaltzeit, Verbrauch_KG_h, kg_in_l_umrechnungsfaktor; // Beschreibe diese Funktion … async function Einschaltdauer() { // Addieren zu vorhanden Einschaltsdauer_in_ms = Ausschaltzeit - Einschaltzeit; Einschaltdauer_in_h = Einschaltsdauer_in_ms / 3600000; } // Beschreibe diese Funktion … async function laufender_Tag_aktuallisieren() { GelaufenD = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_heute").val + Einschaltdauer_in_h; setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_heute"/*Brenner_Betriebsstunden_heute*/, GelaufenD, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_heute"/*Brenner_Verbrauch_heute*/, (GelaufenD * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true); } // Beschreibe diese Funktion … async function Betriebsstunden_aktuallisieren() { Betriebsstunden_Brenner = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebstunden_Total").val + Einschaltdauer_in_h; setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebstunden_Total"/*Brenner_Betriebstunden_Total*/, Betriebsstunden_Brenner, true); } // Beschreibe diese Funktion … async function Seit_letzter_Fuellung_aktualisieren() { gelaufenF = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_seit_letzter_Fuellung").val + Einschaltdauer_in_h; setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_seit_letzter_Fuellung"/*Brenner_Betriebsstunden_seit_letzter_Fuellung*/, gelaufenF, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_seit_letzter_Fuellung"/*Brenner_Verbrauch_seit_letzter_Fuellung*/, (gelaufenF * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true); } // Beschreibe diese Funktion … async function laufender_Monat_aktuallisieren() { GelaufenM = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufender_Monat").val + Einschaltdauer_in_h; setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufender_Monat"/*Brenner_Betriebsstunden_laufender_Monat*/, GelaufenM, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufender_Monat"/*Brenner_Verbrauch_laufender_Monat*/, (GelaufenM * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true); } // Beschreibe diese Funktion … async function laufendes_Jahr_aktuallisieren() { GelaufenJ = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufendes_Kalenderjahr").val + Einschaltdauer_in_h; setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufendes_Kalenderjahr"/*Brenner_Betriebsstunden_laufendes_Kalenderjahr*/, GelaufenJ, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufendes_Kalenderjahr"/*Brenner_Verbrauch_laufendes_Kalenderjahr*/, (GelaufenJ * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true); } // Beschreibe diese Funktion … async function Tankinhalt2() { Tankinhalt = getState("EigeneDatenpunkte.0.Heizung.Tankinhalt_nach_letzter_fuellung").val - getState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_seit_letzter_Fuellung").val; setState("EigeneDatenpunkte.0.Heizung.Tankinhalt_aktuell"/*Tankinhalt_aktuell*/, Tankinhalt, true); } // Beschreibe diese Funktion … async function Telegrammeldung() { sendTo("telegram", "send", { text: (['Brenner ist gelaufen für: ',Math.round(Einschaltdauer_in_h*100)/100,'\n','Verbrauch: ',Math.round((Einschaltdauer_in_h * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor)*100)/100,'\n','Total Betriebsstunden heute: ',Math.round(GelaufenD*100)/100].join('')) }); console.debug("telegram: " + (['Brenner ist gelaufen für: ',Math.round(Einschaltdauer_in_h*100)/100,'\n','Verbrauch: ',Math.round((Einschaltdauer_in_h * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor)*100)/100,'\n','Total Betriebsstunden heute: ',Math.round(GelaufenD*100)/100].join(''))); } // Shellystatus an BrennerStatus übergeben on({id: "shelly.0.SHEM#062243#1.Emeter0.Power"/*Power*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") >= 150) { setState("EigeneDatenpunkte.0.Heizung.Brenner_Status"/*Brenner_Status*/, true); } if ((obj.state ? obj.state.val : "") < 150) { setState("EigeneDatenpunkte.0.Heizung.Brenner_Status"/*Brenner_Status*/, false); } }); schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}', async function () { setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_heute"/*Brenner_Betriebsstunden_heute*/, 0, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_verbrauch_heute", 0, true); }); on({id: "EigeneDatenpunkte.0.Heizung.Brenner_Status"/*Brenner_Status*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Brenner Ein if ((obj.state ? obj.state.val : "") == true) { Einschaltzeit = (new Date().getTime()); setState("EigeneDatenpunkte.0.Heizung.Brenner_last_on"/*Brenner_last_on*/, formatDate(getDateObject(Einschaltzeit), "JJJJ.MM.TT SS:mm:ss.sss"), true); } // Brenner aus if ((obj.state ? obj.state.val : "") == false) { // Variabeln setzen Verbrauch_KG_h = 1.68; kg_in_l_umrechnungsfaktor = 1.197; // Kommentar Ausschaltzeit = (new Date().getTime()); setState("EigeneDatenpunkte.0.Heizung.Brenner_last_off"/*Brenner_last_off*/, formatDate(getDateObject(Ausschaltzeit), "JJJJ.MM.TT SS:mm:ss.sss"), true); await Einschaltdauer(); await Seit_letzter_Fuellung_aktualisieren(); await Tankinhalt2(); await laufendes_Jahr_aktuallisieren(); await laufender_Monat_aktuallisieren(); await laufender_Tag_aktuallisieren(); await Betriebsstunden_aktuallisieren(); await Telegrammeldung(); } }); schedule("0 0 30 * *", async function () { setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufender_Monat"/*Brenner_Betriebsstunden_laufender_Monat*/, 0, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufender_Monat"/*Brenner_Verbrauch_laufender_Monat*/, 0, true); }); schedule("0 0 31 12 *", async function () { setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufendes_Kalenderjahr"/*Brenner_Betriebsstunden_laufendes_Kalenderjahr*/, 0, true); setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufendes_Kalenderjahr"/*Brenner_Verbrauch_laufendes_Kalenderjahr*/, 0, true); });