Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Sieger/Buderus Heiztherme auslesen Billiglösung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sieger/Buderus Heiztherme auslesen Billiglösung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Chaot
      Chaot last edited by

      Ich habe ein kleines Projekt zusammengezimmert das mich viel Recherchezeit gekostet hat.

      Jetzt möchte ich das hier dokumentieren um vielleicht dem Nächsten eine lange Suche zu ersparen.

      Ich habe folgende Heizungsanlage:

      Sieger Gas Brennwerttherme BK15

      Sieger Thermostat eSR73 (Platine innen sagt Buderus RC30)

      Keiner konnte mir wirklich sagen welches Protokoll verwendet wird oder was ich dazu verwenden könnte.

      Also habe ich zunächst bbqkees gefunden der hier:

      http://www.domoticz.com/forum/viewtopic … 38&t=14132

      seine Adapterplatine vorstellt.

      Ursprünglich hatte er das in einem Arduino Projekt und nur für Buderus getestet:

      https://github.com/bbqkees/Nefit-Buderu ... o-Domoticz

      Leider konnte er mir zunächst auch nicht sagen ob es für das Sieger System funktionieren würde.

      Also habe ich mal "auf gut Glück" seine Platine bestellt.

      Ich habe dann sehr lange überlegt wie ich den Arduino in meinen ioBroker einbinden könnte.

      Durch diese Verzögerung ist dann dieses Projekt erschienen:

      https://github.com/proddy/EMS-ESP-Boiler

      und ich habe mich entschlossen die ganze Geschichte auf einen Wemos D1 Mini zu packen und den dann per MQTT Adapter in den ioBroker einzubinden.

      Leider scheint bei proddy die Integration in Espurna nicht richtig zu funktionieren, aber mit der Headless Variante hat das Ganze einwandfrei funktioniert.

      Ich bekomme die Boilerdaten als JSON Objekt in den ioBroker übertragen.

      Das Format sieht so aus:

      {"wWSelTemp":"30","wWActivated":"on","wWCurTmp":"45.5","wWHeat":"off","curFlowTemp":"43.4","retTemp":"43.2","burnGas":"on","heatPmp":"on","fanWork":"on","ignWork":"on","wWCirc":"off","selBurnPow":"100","curBurnPow":"0","sysPress":"0.9","boilTemp":"44.0","pumpMod":"55"}
      

      Mir fehlen aktuell noch ein paar Daten, aber das liegt daran das ich in der Firmware den Datenbus für das Thermostat falsch ausgewählt habe.

      Um die Daten in VIS umzusetzen habe ich mir das JSON zerlegt. Einfach weil es für mich eben leichter ist die Daten direkt einzeln als Datenpunkt abzubilden.

      Dazu war ein kleines Script nötig das ich mit kompetenter Hilfe von @paul53 erstellen konnte:

      //Script zur Zerlegung der JSON Daten in einzelne Datenpunkte
      //Idee: Chaot
      // Umsetzung: paul53
      
      var json = "mqtt.0.home.boiler.boiler_data"/*BoilerDaten*/;
      var Vorl = "javascript.0.Heizung.Vorlauf"/*Vorlauf*/;
      var Rueckl = "javascript.0.Heizung.Ruecklauf"/*Ruecklauf*/;
      var WWist = "javascript.0.Heizung.WarmwasserIst"/*Warmwasser Ist*/;
      var WWsoll = "javascript.0.Heizung.WarmwasserSoll"/*Warmwasser Soll*/;
      var Druck = "javascript.0.Heizung.Systemdruck"/*Systemdruck*/;
      var WWAn = "javascript.0.Heizung.WarmwasserAn"/*Warmwasser aktiv*/;
      var Run = "javascript.0.Heizung.Laufzeit"/*Laufzeit*/;
      var Heizzeit = "javascript.0.Heizung.Heizzeit"/*Heizzeit*/;
      
      on(json, function(dp) {
         var obj = JSON.parse(dp.state.val);
         setState(Vorl, parseFloat(obj.curFlowTemp));
         setState(Rueckl, parseFloat(obj.retTemp));
         setState(WWist, parseFloat(obj.wWCurTmp));
         setState(WWsoll, parseFloat(obj.wWSelTemp));
         setState(Druck, parseFloat(obj.sysPress));
         setState(WWAn, obj.wWActivated);
         setState(Run, parseFloat(obj.burnWorkMin));
         setState(Heizzeit, parseFloat(obj.heatWorkMin));
      });
      

      Somit habe ich jetzt meine Datenpunkt einzeln und kann sie beliebig in VIS darstellen.

      Das ganze Projekt sollte in der Form auch an einer Buderus, Junkers oder Bosch Heizungsanlage funktionieren. Für die war das ja auch ursprünglich vorgesehen.

      Ich habe eben nur mal versucht ob es für eine Sieger nicht doch möglich ist und dabei auch Glück gehabt.

      Von Sieger original kommt die Aussage das es NICHT möglich wäre :lol:

      ToDo:

      Aktuell ist noch der falsche Thermostat in der Firmware

      Die Daten für burnWorkMin und heatWorkMin kommen noch nicht. Muss ich noch etwas suchen.

      Ich freue mich jederzeit auf eure Kommentare oder Verbesserungsvorschläge.

      1 Reply Last reply Reply Quote 0
      • A
        Analogiker last edited by

        Super. Werde ich so nachbauen. Vielen Dank fürs teilen

        Gesendet von iPhone mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • S
          Space_Teddy last edited by

          hallo Chaot,

          ich interessiere mich auch für eine EMS Bus Lösung für die Sieger BK15, da mich die Kombination Buderus KM50 noch nicht ganz so glücklich macht.

          Gibt es eine fertige Platine zu kaufen, oder einen funktionierenden Code für einen ESP8266 oer ESp32.

          Besten Dank

          mfg.

          Chris

          1 Reply Last reply Reply Quote 0
          • A
            Analogiker last edited by

            Hi,

            die Platine gibt es in der Beschreibung des Projektes von bbqkees. Der Code Ems-esp-Boiler (Variante ohne GUI) läuft super auf einem d1mini.

            Gruß

            Gesendet von iPhone mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • Dutchman
              Dutchman Developer Most Active Administrators last edited by

              Ist ja cool, ich baue gerade einen Adapter für opentherm der etwas vergleichbares macht aber Dan für opentherm Protokoll!

              https://github.com/DutchmanNL/ioBroker.opentherm

              Man könnte eventuell den Datensatz der hier reinkommt über denselben Adapter Verarbeiten, das könnte ich einbauen wen Interesse besteht

              Sent from my iPhone using Tapatalk

              1 Reply Last reply Reply Quote 0
              • S
                Space_Teddy last edited by

                Hi Analogiker,

                ei super, dann werde ich mir die Leiterplatte schon mal bestellen. Leider gerade ausverkauft, aber laut Homepage legt er immer wieder mal ein batch auf.

                Mein Endziel wird aber sein, das ich mit einem Raspberry die Daten aufnehme und an einen server schicke.

                1 Reply Last reply Reply Quote 0
                • A
                  Analogiker last edited by

                  @Dutchman:

                  Ist ja cool, ich baue gerade einen Adapter für opentherm der etwas vergleichbares macht aber Dan für opentherm Protokoll!

                  https://github.com/DutchmanNL/ioBroker.opentherm

                  Man könnte eventuell den Datensatz der hier reinkommt über denselben Adapter Verarbeiten, das könnte ich einbauen wen Interesse besteht

                  Sent from my iPhone using Tapatalk `
                  Hallo, wenn ich das richtig verstehe wird’s nicht so einfach. In der hier gezeigten Lösung wird ein in MQTT geschachteltes Json Fragment versendet. Ein Skript parat dann das Json in einzelne Datenpunkte in iobroker. Das würdest du in deinen Adapter einbauen?

                  Die Lösung (Json in MQTT) ist nicht so schön wegen der Größenbeschränkung von MQTT. Ich bin in meiner Variante schon hingegangen und habe einige Werte entfernt, damit ich dann die Außentemperatur abgreifen konnte.

                  Es würde mE (ich bin ehr ein Leihe) nur Sinn machen, wenn die ioFrameworkseite generischer gehalten wäre, sodass zwei angestimmte Projekte direkt kompatibel sind.

                  Gruß

                  Gesendet von iPhone mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • Chaot
                    Chaot last edited by

                    @Space_Teddy

                    Im Grunde ist die Sieger Therme eine Buderus. Aber das scheint offiziell keiner zuzugeben.

                    Von daher hätte ich versuchen können mit dem Buderus Adapter zu arbeiten.

                    Aber zum Versuch knapp 200 € auszugeben war mir dann doch etwas heftig und ich habe mir eine billige Alternative gesucht.

                    Dabei bin ich bei einer kleinen Platine und einem Wemos gelandet.

                    Die Platine ist nicht zwingend nötig, da es auch mit einer lose aufgebauten Schaltung funktionieren würde, aber die paar Euros habe ich dann doch ausgegeben.

                    Platine ist von hier:

                    https://hotgoodies.nl/shop/ems/

                    Software dafür ist entweder von hier:

                    https://github.com/bbqkees/Nefit-Buderu … o-Domoticz

                    oder auf einem Wemos mini von hier:

                    https://github.com/proddy/EMS-ESP#building-the-firmware

                    Zusammen mit der vorgefertigten Platine komme ich dann auf knappe 30 € für die ganze Geschichte.

                    Die Daten kommen über den MQTT Adapter in den ioBroker und lassen sich von dort aus Auswerten.

                    Allerdings war bei mir noch die Besonderheit das scheinbar der Adapter die Hardware nicht richtig erkannt hat und zunächst keine Daten geliefert hat.

                    Dazu musste ich über Putty (Telnet) auf den Wemos zugreifen und

                    autodetect
                    

                    ausführen.

                    Nach ein paar Momenten waren dann die Daten verfügbar.

                    Die Daten kommen als JSON String.

                    Da ich mich damit kaum auskenne um die vernünftig in VIS zu verarbeiten habe ich die dann mit Hilfe von Paul53 die Daten in einzelne Datenpunkte zerlegt

                    Anlage:

                    //Script zur Zerlegung der JSON Daten in einzelne Datenpunkte
                    //Idee: Chaot
                    // Umsetzung: paul53
                    
                    var json = "mqtt.0.home.ems-esp.boiler_data"/*BoilerDaten*/;
                    var Vorl = "javascript.0.Heizung.Vorlauf"/*Vorlauf*/;
                    var Rueckl = "javascript.0.Heizung.Ruecklauf"/*Ruecklauf*/;
                    var WWist = "javascript.0.Heizung.WarmwasserIst"/*Warmwasser Ist*/;
                    var WWsoll = "javascript.0.Heizung.WarmwasserSoll"/*Warmwasser Soll*/;
                    var Druck = "javascript.0.Heizung.Systemdruck"/*Systemdruck*/;
                    var WWAn = "javascript.0.Heizung.WarmwasserAn"/*Warmwasser aktiv*/;
                    var WWFlow = "javascript.0.Heizung.WarmwasserDurchfluss"/*Warmwasser Durchfluss*/;
                    var GasAn = "javascript.0.Heizung.GasAn"/*Gas aktiv*/;
                    var Leistung = "javascript.0.Heizung.Leistung"/*Leistung*/;
                    var OutTemp = "javascript.0.Heizung.OutTemp"/*Aussentemperatur*/;
                    var BoilTemp = "javascript.0.Heizung.BoilTemp"/*Boilertemperatur*/;
                    
                    on(json, function(dp) {
                       var obj = JSON.parse(dp.state.val);
                       setState(Vorl, parseFloat(obj.curFlowTemp));
                       setState(Rueckl, parseFloat(obj.retTemp));
                       setState(WWist, parseFloat(obj.wWCurTmp));
                       setState(WWsoll, parseFloat(obj.wWSelTemp));
                       setState(Druck, parseFloat(obj.sysPress));
                       setState(WWAn, obj.wWActivated);
                       setState(WWFlow, obj.wWCurFlow);
                       setState(GasAn, obj.burnGas);
                       setState(Leistung, obj.curBurnPow);
                       setState(OutTemp, obj.outdoorTemp);
                       setState(BoilTemp, obj.boilTemp);
                    });
                    

                    Raumthermostat:

                    var json = "mqtt.0.home.ems-esp.thermostat_data"/*ThermostatDaten*/;
                    var SelTemp = "javascript.0.Heizung.SelTemp"/*Solltemperatur*/;
                    var CurrTemp = "javascript.0.Heizung.CurrTemp"/*Isttemperatur*/;
                    var Mode = "javascript.0.Heizung.Mode"/*Modus*/;
                    
                    on(json, function(dp) {
                       var obj = JSON.parse(dp.state.val);
                       setState(CurrTemp, parseFloat(obj.thermostat_currtemp));
                       setState(SelTemp, parseFloat(obj.thermostat_seltemp));
                       setState(Mode, parseFloat(obj.thermostat_mode));
                    
                    });
                    
                    
                    1 Reply Last reply Reply Quote 1
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    749
                    Online

                    31.9k
                    Users

                    80.1k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    4164
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo