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
    212

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    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.
  • S Offline
    S Offline
    simpixo
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen

    Da ich leider nicht so viel Ahnung vom programmieren habe, geht die Frage an euch ob jemand Hilfestellung geben kann [emoji12]

    Ich habe hier ein nettes Projekt im Homematic Forum gefunden, das würde ich gern mit ioBroker umsetzen wollen. Ich habe aber keine Ahnung wie ich da vorgehen könnte

    Das Projekt aus dem Homematic Forum speilt sich auf der CCU ab, das möchte ich nicht, es soll alles auf dem ioBroker postiert werden

    Schaut euch mal das Projekt an und sagt mir ob es möglich ist das ganze auf ioBroker zu Portieren, den von der Idee finde ich es super!

    Ich denke es würde auf ein SCRIPT hinauslaufen

    ` > Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

    https://homematic-forum.de/forum/viewtopic.php?t=24890 `

    Ich wäre für jede Hilfe sehr dankbar

    Gruß

    Adrian

    Gesendet von iPad mit Tapatalk Pro

    1 Antwort Letzte Antwort
    0
    • apollon77A Online
      apollon77A Online
      apollon77
      schrieb am zuletzt editiert von
      #2

      Coole Nummer … sowas wollte ich demnächst auch angehen ... bin aber nicht bös wenn jemand anders vorher interesse hat :-)

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        simpixo
        schrieb am zuletzt editiert von
        #3

        Ja ich würde ja gern, aber leider bin ich nicht so tief in der Materie drin! [emoji20]

        Aber hier sind so unglaublich fähige Leute im Forum die machen das während sie schlafen [emoji12][emoji23][emoji6]

        Gruß

        Adrian

        Gesendet von iPhone mit Tapatalk Pro

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

          Vorschlag:

          // PI-Regler Fussbodenheizung mit PWM-Ansteuerung
          
          // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
          var raum = name.split(".")[2];
          
          // P-Band in K, Nachstellzeit in s, PWM-Periode in Intervallen (Minuten)
          var Xp = 2;
          var Tn = 3600;
          var pwm = 60;
          
          var xid = getIdByName(raum + ".Temperatur");
          var wid = getIdByName(raum + ".Sollwert");
          var yid = getIdByName(raum + ".Heizventil");
          var n = 0;  // Intervallzähler
          
          var  PI = require('pi-controller');
          
          var pi = new PI(Xp, Tn); 
          pi.setOutputMax(pwm);   // 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
            n++;
            if (n >= pwm) n = 0;
            if (n < 4 && y > 0) setState(yid, true);  // Mindesteinschaltdauer: 4 Intervalle
            else if (n >= 4 && y <= n) setState(yid, false);
          }  
          
          control();  // Script start
          
          setInterval(control, 60000 );  // Intervall: 1 Minute
          
          

          Das Modul "pi-controller" muss in der Konfiguration der JS-Instanz unter "Zusätzliche NPM-Module" eingetragen 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
          • S Offline
            S Offline
            simpixo
            schrieb am zuletzt editiert von
            #5

            @paul53:

            Vorschlag:

            // PI-Regler Fussbodenheizung mit PWM-Ansteuerung
            
            // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
            var raum = name.split(".")[2];
            
            // P-Band in K, Nachstellzeit in s, PWM-Periode in Intervallen (Minuten)
            var Xp = 2;
            var Tn = 3600;
            var pwm = 60;
            
            var xid = getIdByName(raum + ".Temperatur");
            var wid = getIdByName(raum + ".Sollwert");
            var yid = getIdByName(raum + ".Heizventil");
            var n = 0;  // Intervallzähler
            
            var  PI = require('pi-controller');
            
            var pi = new PI(Xp, Tn); 
            pi.setOutputMax(pwm);   // 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
              n++;
              if (n >= pwm) n = 0;
              if (n < 4 && y > 0) setState(yid, true);  // Mindesteinschaltdauer: 4 Intervalle
              else if (n >= 4 && y <= n) setState(yid, false);
            }  
            
            control();  // Script start
            
            setInterval(control, 60000 );  // Intervall: 1 Minute
            
            

            Das Modul "pi-controller" muss in der Konfiguration der JS-Instanz unter "Zusätzliche NPM-Module" eingetragen werden. `

            Danke Paul53 [emoji1360]

            Deine Scripte verstehe ich nie richtig [emoji2] nehme ich hier mit dem Thermostat und mit dem Aussenfühler Einfluss auf das Heizverhalten der Fußbodenheizung!? Oder läuft hier alles automatisiert ab!?

            Denn mir fehlen die DP der Aktoren in deinem Script [emoji848]

            Gruß

            Adrian

            Gesendet von iPhone mit Tapatalk Pro

            1 Antwort Letzte Antwort
            0
            • Jey CeeJ Online
              Jey CeeJ Online
              Jey Cee
              Developer
              schrieb am zuletzt editiert von
              #6

              Wenn ich nichts übersehe wird das Raum weise erledigt. Dazu muss Name bei Name.split mit dem Raumnamen Belegt sein.

              Mehr ist es nicht.

              Gesendet von meinem m8 mit Tapatalk

              Persönlicher Support
              Spenden -> paypal.me/J3YC33

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

                @simpixo:

                nehme ich hier mit dem Thermostat und mit dem Aussenfühler Einfluss auf das Heizverhalten der Fußbodenheizung!? `
                Mit dem Thermostat (Ist- und Sollwert) werden die Heizkreise eines Raumes gesteuert.
                @simpixo:

                Denn mir fehlen die DP der Aktoren in deinem Script `
                Wirklich ?

                var yid = getIdByName(raum + ".Heizventil");
                ...
                  if (n < 4 && y > 0) setState(yid, true);  // Mindesteinschaltdauer: 4 Intervalle
                  else if (n >= 4 && y <= n) setState(yid, false);
                
                

                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
                • S Offline
                  S Offline
                  simpixo
                  schrieb am zuletzt editiert von
                  #8

                  @paul53:

                  var yid = getIdByName(raum + ".Heizventil");
                  ```` `  
                  

                  Danke Paul53

                  muss ich hier die ID des Thermostat eintragen?
                  > var yid = getIdByName(raum + ".****Heizventil****");

                  Oder wie muss das Ganze aufgebaut werden damit es funktioniert.

                  Ich sag ja nicht ohne ein Grund das ich deine Scripte nicht so ganz verstehe :o bei den anderen sind immer die Aktoren ID´s irgendwo im Script verwurschtelt :-) bei dir halt nicht

                  Danke schon mal

                  Gruß

                  Adrian

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

                    Meine Skripte sind so aufgebaut, dass ich mit Datenpunktnamen (common.name) arbeite, die ich im Reiter "Objekte" den Datenpunkten vergeben habe. Beispiel: Ist der Themostat im Raum "Wohnzimmer", gibt es in Javascript die Gruppe "Wohnzimmer" unter der die Skripte für das Wohnzimmer erstellt werden und die Datenpunkte haben die Namen

                    "Wohnzimmer.Temperatur" = Istwert-Datenpunkt Thermostat

                    "Wohnzimmer.Sollwert" = Sollwert-Datenpunkt Thermostat

                    "Wohnzimmer.Heizventil" = Schaltaktordatenpunkt für den thermoelektrischen Stellantrieb

                    Wenn Du nicht mit Namen arbeiten möchtest, kannst Du auch die Datenpunkt-ID zuweisen:

                    ...
                    var xid = 'hm-rpc.0.MEQ1234567.1.TEMPERATURE';
                    var wid = 'hm-rpc.0.MEQ1234567.2.SET_TEMPERATURE';
                    var yid = 'hm-rpc.0.MEQ2345678.1.STATE';
                    ...
                    

                    Um nur dann an den Aktor zu senden, wenn sich der Zustand ändern soll, sollte noch eine zusätzliche Abfrage erfolgen:

                    ...
                      var aktor = getState(yid).val;
                      if (n < 4 && y > 0 && !aktor) setState(yid, true);  // Mindesteinschaltdauer: 4 Intervalle
                      else if (n >= 4 && y <= n && aktor) setState(yid, false);
                    } 
                    ...
                    

                    Das ist in dem ursprünglichen Skript nicht anthalten, da ich einen "Umweg" über einen Javascript-Datenpunkt mache.

                    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
                    • T Offline
                      T Offline
                      tempestas
                      schrieb am zuletzt editiert von
                      #10

                      Oh, unverhohlene Werbung, wie erfrischend.

                      Spam Bots sind was feines :lol:

                      Entsprechenden werbepost gelöscht, Homoran (Mod)

                      <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                      1 Antwort Letzte Antwort
                      0
                      • apollon77A Online
                        apollon77A Online
                        apollon77
                        schrieb am zuletzt editiert von
                        #11

                        @paul53: kannst du die Parameter die ne das Skript etwas erklären ?! Was stellt der alles sicher?

                        Stellt der sicher das rechtzeitig ausgeschaltet wird damit es nicht übersteuert? Schaltet es frühzeitig an damit es nicht auskühlt wenn die Temperatur absinkt?

                        Will das auch gerade umsetzen …

                        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #12

                          @apollon77:

                          Stellt der sicher das rechtzeitig ausgeschaltet wird damit es nicht übersteuert? Schaltet es frühzeitig an damit es nicht auskühlt wenn die Temperatur absinkt? `
                          Das ist kein 2-Punkt-Regler, sondern ein PI-Regler. Wenn die Regelabweichung gering wird, ändert sich das Tastverhältnis (Einschalt- zu Ausschaltdauer), wobei die Periodendauer eine Stunde beträgt. Ist Istwert = Sollwert bleibt das Tastverhältnis konstant.

                          Die hohe Trägheit der FBH macht eine Periodendauer der PWM von einer Stunde möglich. Eine kürzere Periodendauer verringert die Lebensdauer der Relais, da diese nur eine begrenzte Anzahl von Schaltspielen vertragen (gilt nicht für Solid state relais).

                          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
                          • apollon77A Online
                            apollon77A Online
                            apollon77
                            schrieb am zuletzt editiert von
                            #13

                            Ok, verstehe nur Bahnhof. Muss mich also erstmal einlesen was genau ein pi Regler ist und wie der funktioniert …

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Antwort Letzte Antwort
                            0
                            • Q Offline
                              Q Offline
                              quorle
                              schrieb am zuletzt editiert von
                              #14

                              Muss mich hier auch einmal einklinken.

                              Könnte man das Script so umschreiben, damit man HM-CC-RT-DN (Heizkörperthermostate) damit steuern könnte?

                              Ich regle momentan meine Räume mittels Heizplan. Jetzt würde ich aber zusätzlich noch eine eigene Regelung mit einbinden.

                              Funktionsweise:

                              • Dein Script holt sich die aktuelle Solltemperatur vom Heizplanscript

                              • Dein Script holt sich die IST-Temp vom externen Sensor

                              • Dein Script errechnet die einzustellende Temperatur ( damit der Heizthermostat intern das Ventil öffnen und schließen kann ) und sendet diese an den Thermostat

                              • Die Logik vom Heizplanscript soll nicht berührt werden

                              Da ich keine Wandthermostate benutze ( die ja diese Regellogik integriert haben ) könnte es doch auch eine PI-Regelung, jedoch müsste diese einzustellende Temperatur ausgeben und keine einzustellende Ventilöffnung

                              Wäre dies denn möglich?

                              So sieht dein Script aktuell bei mir aus und ist auf einen State zur Ausgabe gelegt:

                              ! ````
                              // 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
                                setState(yid, y);
                              }
                              ! 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;
                                 }

                              
                              ****Die Ausgabe auf den State (PI-Regler-Schlafzimmer):****
                              
                              0.9246725000000009 %
                              1 Antwort Letzte Antwort
                              0
                              • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          866

                                          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