Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]Brennerfreigabe nach Wärmebedarfsanforderung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    915

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst]Brennerfreigabe nach Wärmebedarfsanforderung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 2 Kommentatoren 1.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Offline
    K Offline
    Kulturfolger
    schrieb am zuletzt editiert von
    #1

    Hallo,

    Leider bin ich nicht in der Lage hier ein Script zu finden für meine Anwendung, wobei ich mir absolut sicher bin, dass jemand schon eine solche Steuerung gebaut hat. Ich nutze IoBroker plus HomeMatic RPC plus Wolf (Heizung) und möchte, sobald mindestens ein Ventil mehr als 20 Prozent geöffnet ist, den Brenner der Therme zum heizen freigeben. Dazu habe ich einmal die Ventile mit dem VALVE_STATE und als Schalter eine kleine Platine, die mit STATE die Brennerfreigabe simuliert.

    PS: Der Grund ist es, ich möchte unnötige Brennerstarts vermeiden gegen geschlossene Ventile.

    Für jede Hilfe bin ich äußerst dankbar, da es mir doch sehr schwer fällt hier Fuß zu fassen,

    Ingo

    HomeMatic-Ventile:

    hm-rpc.0.MEQ0575574.4.VALVE_STATE

    hm-rpc.0.MEQ0575593.4.VALVE_STATE

    HomeMatic-Schalter:

    hm-rpc.0.NEQ1631642.1.STATE

    1 Antwort Letzte Antwort
    0
    • G Offline
      G Offline
      gst666
      schrieb am zuletzt editiert von
      #2

      Hallo Kulturfolger,

      nicht für jedes Problem gibt es ein fertiges Skript. Aber warum verschwendest Du überhaupt die Zeit, ein solches zu suchen.Selber machen ist bei so einer kleinen Aufgabenstellung angesagt.

      Am besten machen wir das jetzt mal zusammen. Dazu tun wir das ganze in eine Funktion. Wie soll sie heißen? Ich würde vorschlagen, wir nehmen den Namen aus Deiner Überschrift. Der Rumpf einer solchen Funktion würde dann lauten:

      function Brennerfreigabe() {
      }
      
      

      Was soll die Funktion machen?

      wenn hm-rpc.0.MEQ0575574.4.VALVE_STATE>20 oder hm-rpc.0.MEQ0575593.4.VALVE_STATE > 20

      dann Brenner freigeben, sonst Brenner sperren

      Also können wir das mal eben in Code umsetzen:

      function Brennerfreigabe() {
          if ((getState("hm-rpc.0.MEQ0575574.4.VALVE_STATE").val>20) || (getState("hm-rpc.0.MEQ0575574.4.VALVE_STATE").val>20)) {
              setState("hm-rpc.0.NEQ1631642.1.STATE",true);
          } else {
              setState("hm-rpc.0.NEQ1631642.1.STATE",false);
          }
      }
      
      

      So wars das? Nö. Die Funktion wird ja nie aufgerufen. Du könntest nun außerhalb der Funktion die Funktion mit

      Brennerfreigabe();
      
      

      Glücklich machen wird Dich das auch nicht, da die Funktion genau 1x ausgeführt wird. Man könnte jetzt mittels Timers die Funktion immer wieder aufrufen. Es geht aber auch eleganter. Eigentlich willst Du die Funktion nur dann aufrufen, wenn sich der Ventilstatus geändert hat. Das kannst du mit einem Eventhandler machen:

      on("hm-rpc.0.MEQ0575574.4.VALVE_STATE", function (obj) {
          Brennerfreigabe();
      } 
      
      

      Jedesmal wenn sich der Status des Ventils ändert, wird die Funktion Brennerfreigabe aufgerufen. Natürlich musst Du das für das andere Ventil auch machen.

      Das fertige Skript sollte dann so aussehen:

      function Brennerfreigabe() {
          if ((getState("hm-rpc.0.MEQ0575574.4.VALVE_STATE").val>20) || (getState("hm-rpc.0.MEQ0575574.4.VALVE_STATE").val>20)) {
              setState("hm-rpc.0.NEQ1631642.1.STATE",true);
          } else {
              setState("hm-rpc.0.NEQ1631642.1.STATE",false);
          }
      }
      
      Brennerfreigabe();
      on("hm-rpc.0.MEQ0575574.4.VALVE_STATE", function (obj) {
          Brennerfreigabe();
      }
      on("hm-rpc.0\. MEQ0575593.4.VALVE_STATE", function (obj) {
          Brennerfreigabe();
      } 
      
      

      Hier noch ein Hinweis: Die Funktion Brennerfreigabe wird bewusst einmal bei Start des Skripts aufgerufen, damit sichergestellt wird, das wenn bei Start des Skripts die Heizung angeht, wenn beide Ventile schon über 20% geöffnet sind.

      Das Skript habe ich nicht getestet. Ich habe hoffentlich keine Tipp-Fehler eingebaut. Wie Du siehst, es ist nicht schwer ein Progrämmchen zu zaubern. Wichtiger und schwieriger ist es sich über die Logik im Klaren zu werden.

      Nächstes Mal ist hoffentlich selber machen angesagt.

      1 Antwort Letzte Antwort
      0
      • K Offline
        K Offline
        Kulturfolger
        schrieb am zuletzt editiert von
        #3

        Hallo gst666,

        Du glaubst nicht wie unendlich dankbar ich dir bin. Was Du schreibst ist exakt was ich benötige, aber mir in Java-Script nicht erdenken konnte. Es klappte leider nur beim Start vom Script einmal, denke es liegt daran das der Eventhandler ein True/False erwartet, die Ventile arbeiten allerdings Stufenlos von 0-100%.

        Im folgenden habe ich versucht es so anzupassen, dass nur die Heizung geschaltet wird, wenn der Zustand zum vorherigen abweicht.

        createState('Brennerfreigabe.status', 0);
        
        schedule("* * * * *",
            function () {
                if ((getState("hm-rpc.0.MEQ0575574.4.VALVE_STATE").val>30) || 
                    (getState("hm-rpc.0.MEQ0575593.4.VALVE_STATE").val>30) || 
                    (getState("hm-rpc.0.NEQ0882643.4.VALVE_STATE").val>30) || 
                    (getState("hm-rpc.0.NEQ0882653.4.VALVE_STATE").val>30) || 
                    (getState("hm-rpc.0.NEQ0882704.4.VALVE_STATE").val>30))
                        {
                            if ((getState("hm-rpc.0.NEQ1631642.1.STATE").val===false))
                                {
                                    setState("hm-rpc.0.NEQ1631642.1.STATE",true);
                                    setState("Brennerfreigabe.status", true); 
                                }
                        }
                    else
                            {
                                if ((getState("hm-rpc.0.NEQ1631642.1.STATE").val===true))
                                    {
                                        setState("hm-rpc.0.NEQ1631642.1.STATE",false);
                                        setState("Brennerfreigabe.status", false); 
                                    }
                            }
                        }
                );
        
        
        1 Antwort Letzte Antwort
        0
        • G Offline
          G Offline
          gst666
          schrieb am zuletzt editiert von
          #4

          Grundsätzlich solltest Du überlegen, was Du mit der Anlage machst. Kann man die Leistung vielleicht herabrüsten? Alternativ kommt natürlich eine andere Therme in Betracht. Vielleicht ist ein großer Wärmespeicher eine Option. So wie das für mich aussieht, kommst Du nicht wirklich auf einen grünen Zweig. Zu häufige Heizungsstarts führen zu Energieverlusten.

          1 Antwort Letzte Antwort
          0
          • K Offline
            K Offline
            Kulturfolger
            schrieb am zuletzt editiert von
            #5

            Tja, wem sagst Du das. Mein Vermieter hat die ausgesucht und eingebaut, nachdem das Vorgängergerät vom 1996 kaputt ging. Diese Wolf-Therme war angeben auf 20 Prozent zu modulieren, aber ist von der Firmware auf 26 Prozent begrenzt. Weniger geht nicht. In Foren munkelt man wohl würde die Therme durchbrennen, da bei so geringem Luftdurchsatz der Brennraumdeckel durchschmort.

            Wenn es mein Haus wäre, dann hätte ich da eine 5KW Therme eingebaut und zum duschen den kleinsten Schichtspeicher eingebaut den es gibt. Das ist von Anfang an ein Baufehler gewesen auf Kombitherme ohne Speicher zu setzen , das Haus hat 75qm auf zwei Etagen und ist extrem gut gedämmt, bis auf die Mäuselöcher in der Zwischendecke.

            Ich bin grad dabei das Kabel an den Steuereingang anzuschließen, dabei bin ich durch das Menü und seit dem 5 Dezember 2015 hat die Kiste über 40.000 Brennerstarts durchgeführt. Dabei bin ich schon dran gewesen und habe selber im Fachmannbereich alles auf minimale Leistung im Heizbetrieb gestellt sowie die Default Taktsperre von 7 Minuten auf 25 Minuten verlängert. Durch komplette Innendämmung in beiden Etagen (Biegeweiche Vorsatzschalung) kann die Wohnung keine Energie speichern und so schwankt die Innentemperatur direkt mit der Temperatur der Heizkörper.

            == UPDATE 1 ==

            Tja, was soll ich sagen, die Wolf Therme reagiert auf den Impuls nicht. Er wird am Eingang E1 erkannt, aber im Betriebsmodus BOB Betrieb ohne Brenner wird trotzdem gezündet.

            Also das ganze nun über die Busschnittstelle ISM8 … nur da holpert der Code ein wenig. Kulturfolger können kein Java...

            schedule("* * * * *",
                function () {
                    if ((getState("hm-rpc.0.MEQ0575574.4.VALVE_STATE").val>30) ||
                        (getState("hm-rpc.0.MEQ0575593.4.VALVE_STATE").val>30) || 
                        (getState("hm-rpc.0.NEQ0882643.4.VALVE_STATE").val>30) || 
                        (getState("hm-rpc.0.NEQ0882653.4.VALVE_STATE").val>30) || 
                        (getState("hm-rpc.0.NEQ0882704.4.VALVE_STATE").val>30))
                            {
                                if ((getState("wolf.0.bm1.57")!="Heizbetrieb"))
                                    {
                                        setState("wolf.0.bm1.57", "Heizbetrieb");
                                        setState("Brennerfreigabe.status", 1); 
                                        log('Heizung an'); 
                                    }
                            }
                        else
                                {
                                    if ((getState("wolf.0.bm1.57")!="Standby"))
                                        {
                                            setState("wolf.0.bm1.57", "Standby");
                                            setState("Brennerfreigabe.status", 0); 
                                            log('Heizung aus');
                                        }
                                }
                            }
                    );
            
            

            Ein Fehler kommt im Log:

            Wrong type of wolf.0.bm1.57: "string". Please fix, while deprecated and will not work in next versions.
            

            == UPDATE2 ==

            Es klappt besser als ich gedacht habe, im ersten Bild sieht man wie ab 30 Prozent eingeschaltet wird. Im zweiten Bild wie dieser Prozess sich immer wiederholt die Nacht hindurch. Im dritten Bild sieht man die daraus resultierende Temperatur am Wandthermometer, die der Ventilstellung nun folgt. Kein Vergleich zu vorher.

            Okay, was versuche ich jetzt umzusetzen? :P

            Danke nochmal an die schnelle Hilfe,

            Ingo
            1945_1.jpg
            1945_2.jpg
            1945_3.jpg

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            371

            Online

            32.6k

            Benutzer

            82.2k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe