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. [Frage] Fußbodenheizung steuern mit ioBroker

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    164

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    12
    1
    568

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.8k

[Frage] Fußbodenheizung steuern mit ioBroker

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
30 Beiträge 6 Kommentatoren 8.4k 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #15

    @quorle:

    Könnte man das Script so umschreiben, damit man HM-CC-RT-DN (Heizkörperthermostate) damit steuern könnte? `
    Nein, die Ventilstellung kann man nicht beeinflussen, sondern nur anzeigen. Der HKT regelt mit einem internen PI-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 Antwort Letzte Antwort
    0
    • Q Offline
      Q Offline
      quorle
      schrieb am zuletzt editiert von
      #16

      Ok, das man die Ventilstellung des Thermostates nicht beeinflussen kann wusste ich, darum wollte ich ja dem Thermostat immer die errechnete Temperatur senden.

      Man muss den dem PI-Regler so umschreiben können, dass er in Temperaturschritten regelt und ermittelt?

      Oder gibt es etwas anderes, dass meine Bedürfnisse vielleicht erledigen könnte?

      Nachtrag:

      Verbessert mich, wenn ich unrecht habe.

      bei einer Solltemp vom: 21°C

      und

      einer IST-Temp von: 20,4

      zeigt das Script in der State momentan (aufgerundet): 0,6

      Die Ausgabe des Scriptes ist ja 0-100% ?

      Sprich, wenn eine 1 ansteht, sollte dass Ventil 100% offen sein?

      Oder liege ich hier falsch?

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #17

        @quorle:

        Man muss den dem PI-Regler so umschreiben können, dass er in Temperaturschritten regelt und ermittelt? `
        Den Istwert kann man nicht beeinflussen, sondern nur den Sollwert. Aber der wird ja durch den Thermostaten vorgegeben.
        @quorle:

        Die Ausgabe auf den State (PI-Regler-Schlafzimmer):

        0.9246725000000009 % `
        Das sind keine Prozent, da
        @quorle:

        pi.setOutputMax(1.0);   // default: OutputMax = 100
        ```` `  
        

        Für Prozentausgabe muss der Befehl auskommentiert oder gelöscht 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 Antwort Letzte Antwort
        0
        • Q Offline
          Q Offline
          quorle
          schrieb am zuletzt editiert von
          #18

          erst einmal vielen Dank für die Hilfe, die man braucht wenn man nicht programmieren kann :lol:

          Die Prozentausgabe klappt schon einmal ganz gut.

          Jetzt würde ich noch einen anderen Ansatz mit in mein persönliches Script packen wollen.

          1.

          • Die Prozentausgabe auf 2 Nachkommastellen reduzieren

          2.

          • Einen Dreisatz einbinden und auf eine State schreiben lassen. Ich habe schon einiges versucht und auch im Internet gesucht, jedoch möchte es einfach nicht klappen.

          • Der Dreisatz sollte so aussehen: 5/100*die prozentausgabe in Prozent

          • und das Ergebnis dann auf einen State legen

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #19

            Zu 1.

            setState(yid, Math.round(100 * y) / 100;
            
            

            Zu 2.

            var sw_korrektur = 5 * (y - 50) / 100;  // +/- 2,5 Grad
            

            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 Antwort Letzte Antwort
            0
            • Q Offline
              Q Offline
              quorle
              schrieb am zuletzt editiert von
              #20

              Ich bin wirklich zu doof für JavaScript.

              Egal an welche Stelle ich die scriptzeilen einfüge, kommt am state nichts an. In der log steht so auch nichts.

              „Zu doof für JavaScript“ :cry:

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • Q Offline
                  Q Offline
                  quorle
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • Q Offline
                      Q Offline
                      quorle
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • Q Offline
                          Q Offline
                          quorle
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • Q Offline
                              Q Offline
                              quorle
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                0
                                • paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von
                                  #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 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

                                  504

                                  Online

                                  32.5k

                                  Benutzer

                                  81.8k

                                  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