Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] Fußbodenheizung steuern mit ioBroker

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    774

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

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

[Frage] Fußbodenheizung steuern mit ioBroker

Scheduled Pinned Locked Moved Skripten / Logik
30 Posts 6 Posters 8.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #21

    Auf welchem Datenpunkt erwartest Du die Ausgabe ? Du musst erst einen Datenpunkt für den korrigierten Sollwert erzeugen (z.B. im Reiter "Objekte" unter javascript.0). Dann mit setState am Ende der Funktion den Wert setzen:

    var sw_korrektur = 5 * (y - 50) / 100;  // +/- 2,5 Grad
    setState('javascript.0.Sollwert_korrigiert', w + sw_korrektur);
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Reply Last reply
    0
    • Q Offline
      Q Offline
      quorle
      wrote on last edited by
      #22

      Also den State hab ich schon länger erstellt.

      In den Objekten sieht es bei mir dann so aus:

      5278_objekte.png

      Nun wird der Ausgang vom PI-Regler in Prozent und mit 2 Nachkommastellen angezeigt –> schon einmal sehr gut.

      Aber die Ausgabe der korregierten Sollwerttemperatur ist nicht mir 2 Nachkommastellen.

      Mein Script sieht jetzt so aus:

      // PI-Regler Raumheizung
      
      // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
      //var raum = name.split(".")[2];
      
      // P-Band in K, Nachstellzeit in s
      var Xp = 4;
      var Tn = 600;
      
      var xid = 'hm-rpc.3.CUX1200003.1.TEMPERATURE';
      var wid = 'hm-rpc.1.OEQ1712335.4.SET_TEMPERATURE';
      var yid = 'javascript.0.PI-Regler-Schlafzimmer';
      
      var  PI = require('pi-controller');
      
      var pi = new PI(Xp, Tn); 
      //pi.setOutputMax(1.0);   // default: OutputMax = 100
      
      function control() {
        var x = getState(xid).val;  // Istwert in °C
        var w = getState(wid).val;  // Sollwert in °C
        var y = pi.Control(w - x);  // Stellsignal
        var sw_korrektur = 6 * (y - 50) / 100;  // +/- 2,5 Grad
        setState(yid, y);
        setState(yid, Math.round(100 * y) / 100); // Ergebnis vom PI-Regler auf 2 Nachkommastellen
        setState('javascript.0.Ausgabe_Temp_von_PI-Regler', w + sw_korrektur); // Ausgabe korregierte Sollwerttemp für Regler
      
      }
      
      control();  // Script start
      on(xid, control);
      on(wid, control);
      
      var timer = null;
      if (Tn) {
         timer = setInterval(control, 250 * Tn );
      }
      else {
         if (timer) {
            clearInterval(timer);
            timer = null;
         }
      }
      
      
      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #23

        @quorle:

        Aber die Ausgabe der korregierten Sollwerttemperatur ist nicht mir 2 Nachkommastellen. `
        Lösche bitte den Befehl

          setState(yid, y);
        

        Eine Nachkommastelle genügt auch:

          setState('javascript.0.Ausgabe_Temp_von_PI-Regler', Math.round(10 * (w + sw_korrektur)) / 10); // Ausgabe korrigierte Sollwerttemp für Regler
        
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • Q Offline
          Q Offline
          quorle
          wrote on last edited by
          #24

          @paul53:

          @quorle:

          Aber die Ausgabe der korregierten Sollwerttemperatur ist nicht mir 2 Nachkommastellen. `
          Lösche bitte den Befehl

            setState(yid, y);
          

          Eine Nachkommastelle genügt auch:

            setState('javascript.0.Ausgabe_Temp_von_PI-Regler', Math.round(10 * (w + sw_korrektur)) / 10); // Ausgabe korrigierte Sollwerttemp für Regler
          
          ```` `  
          

          Woooow :o Super, danke ;) jetzt läuft es. Da sieht man einmal, dass ich mich in die Welt des Javascript noch sehr viel einlesen muss. Ich kann nur Danke sagen.

          Aber jetzt noch eine Frage, kann ich die States unter "Objekte" auch in verschieden Ordner packe?

          Sprich:

          Javascript.0 –> Heizung --> und dann einzelne Ordner für Raumnamen erzeugen?

          Sollte doch auch gehen?

          Und das Script muss unter Common laufen?

          Und kann man vielleicht noch den korregierten Sollwert nur alle 5 Minuten auf einen weiteren State setzen lassen, so dass dieser dann an den Regler gesendet wird?

          1 Reply Last reply
          0
          • paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #25

            @quorle:

            kann ich die States unter "Objekte" auch in verschieden Ordner packe?

            Javascript.0 –> Heizung --> und dann einzelne Ordner für Raumnamen erzeugen? `
            Ja. Wenn Du die Datenpunkte im Reiter "Objekte" anlegst, dann javascript.0 selektieren und den Namen entsprechend vergeben, wobei Punkte im Namen (in der ID) die Ordnerstruktur erzeugen. Beispiel:

            Der Name Heizung.Kueche.Ausgabe_Temp_von_PI-Regler erzeugt die ID javascript.0.Heizung.Kueche.Ausgabe_Temp_von_PI-Regler mit dem Ordner Heizung und dem Unterordner Kueche.
            @quorle:

            Und das Script muss unter Common laufen? `
            Nein, Du kannst z.B. eine Gruppe Heizung anlegen und darunter eine Untergruppe mit dem Raumnamen. In dieser Untergruppe erstellst Du dann die raumbezogenen Skripte. Nur unter der Gruppe global kann man keine normalen Skripte erstellen. global ist für häufig verwendete eigene Funktionen vorgesehen.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Reply Last reply
            0
            • Q Offline
              Q Offline
              quorle
              wrote on last edited by
              #26

              Langsam verstehe ich das ganze schon besser, also das mit den Strukturen.

              Und kann man vielleicht noch den korregierten Sollwert nur alle 5 Minuten auf einen weiteren State setzen lassen, so dass dieser dann an den Regler gesendet wird? Das man eine "variable" Zeit vorgeben kann?

              1 Reply Last reply
              0
              • paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #27

                @quorle:

                den korregierten Sollwert nur alle 5 Minuten auf einen weiteren State setzen lassen, so dass dieser dann an den Regler gesendet wird? `
                An welchen Regler soll er gesendet werden ?

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Reply Last reply
                0
                • Q Offline
                  Q Offline
                  quorle
                  wrote on last edited by
                  #28

                  Guten Morgen.

                  Also ich nutze auch noch das Script " http://forum.iobroker.net/viewtopic.php?f=21&t=10096 " von dem aus meine ganzen Temperatur Sollwerte kommen.

                  Nun müsste ich das Script " Integrierte Heizungsthermostatsteuerung " anpassen, dass es die Vorgabe für den Temp Sollwert auf eine State schickt und mit dem Script " Fußbodenheizung steuern mit ioBroker " würde ich den neuen Temp Sollwert auf den Regler senden. Sagen wir einmal alle 5-10 Minuten ( vielleicht könnte man das variabel gestalten ).

                  Der Reglereingang heißt: hm-rpc.1.OEQ1712335.4.SET_TEMPERATURE

                  Aber ich glaube, dass es jetzt etwas zu kompliziert wird. Bin mir jetzt auch nicht sicher, ob ich das ganze bis ins letzte Detail jetzt zu Ende gedacht habe. Oder ob mir nicht wieder irgendwas neues einfällt :shock:

                  Wobei das ganze noch nicht so funktioniert, denn heute früh errechnete er eine " korrigierte " Sollwertvorgabe von 12 °C , wenn diese Temp ja auf den Heizregler geschrieben werden würde, dann würde dieser ja das Ventil öffnen, obwohl die Vorgabe ( 14,5 °C ) erreicht war.

                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #29

                    @quorle:

                    In den Objekten sieht es bei mir dann so aus:

                    Keine Datenpunkte unter javascript.0.scriptEnabled erstellen !

                    @quorle:

                    Also ich nutze auch noch das Script " http://forum.iobroker.net/viewtopic.php?f=21&t=10096 " von dem aus meine ganzen Temperatur Sollwerte kommen.

                    Das Skript musst Du so anpassen, dass es den Sollwert nicht an den Thermostaten sendet, sondern in einen virtuellen Datenpunkt schreibt (z.B. "javascript.0.Heizung.Schlafzimmer.Solltemperatur"). Außerdem muss die Nachstellzeit des PI-Reglers (Script) erhöht werden.

                    // PI-Regler Raumheizung für Kaskade Raumsensor - HKT-Temperatur
                    
                    // P-Band in K, Nachstellzeit in s
                    const Xp = 4;
                    const Tn = 2400; // 40 Minuten
                    
                    const xid = 'hm-rpc.3.CUX1200003.1.TEMPERATURE';
                    const wid = 'javascript.0.Heizung.Schlafzimmer.Solltemperatur';
                    const yid = 'hm-rpc.1.OEQ1712335.4.MANU_MODE';
                    
                    const  PI = require('pi-controller');
                    
                    var pi = new PI(Xp, Tn);
                    pi.setOutputMax(5.0);   // default: OutputMax = 100
                    
                    function control() {
                      var x = getState(xid).val;  // Istwert in °C
                      var w = getState(wid).val;  // Sollwert in °C
                      var y = pi.Control(w - x) - 2;  // +3 / -2 Grad
                      y = Math.round(2 * (w + y)) / 2;  // Auflösung 0,5 Grad (Thermostat)
                      setState(yid, y);
                    }
                    
                    control();  // Script start
                    // on() auskommentiert, denn es soll nur alle 10 Minuten an Thermostat gesendet werden
                    // on(xid, control);
                    // on(wid, control);
                    
                    var timer = null;
                    if (Tn) {
                       timer = setInterval(control, 250 * Tn );
                    }
                    else {
                       if (timer) {
                          clearInterval(timer);
                          timer = null;
                       }
                    }
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Reply Last reply
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #30

                      @quorle:

                      Wobei das ganze noch nicht so funktioniert, `
                      Das kann noch nicht funktionieren, denn es existiert noch kein geschlossener Regelkreis. Der I-Anteil des PI-Reglers (Script) läuft ständig bis zu den Grenzen (+/- 3 Grad) weiter, solange eine Regelabweichung besteht.
                      @quorle:

                      heute früh errechnete er eine " korrigierte " Sollwertvorgabe von 12 °C , wenn diese Temp ja auf den Heizregler geschrieben werden würde, dann würde dieser ja das Ventil öffnen, obwohl die Vorgabe ( 14,5 °C ) erreicht war. `
                      Bei Istwert 14,5°C und (korrigierter) Sollwert 12°C schließt das Ventil.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      628

                      Online

                      32.8k

                      Users

                      82.7k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe