Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Heizkreisregelungen - JS

    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

    Heizkreisregelungen - JS

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

      @sound31:

      Dazu muss ich die Pumpe auch ausschalten das geht jetzt nur über das ausschalten des Scrips oder Stromlos machen. `
      Stromlos machen ist keine schlechte Lösung. Jedes Skript lässt sich auch im Reiter "Javascript" deaktivieren und nach dem Deaktivieren des Skripts kann man den Datenpunkt für die Pumpe im Reiter "Objekte" auf "Aus" ändern.

      Du solltest noch einen Datenpunkt "Heizperiode" oder "Jahreszeit" (Winter = true) vom Typ "Schalter" unter javascript.0 anlegen und darüber die Mischeransteuerung und die Pumpenansteuerung beeinflussen.

      const idHeizen = 'javascript.0.Heizperiode';
      
      ...
      var heizen = getState(idHeizen).val;
      
      function control() {
          if(timer) clearTimeout(timer);
          if ((pump1 || pump2) && heizen) {
             ...
      }
      
      // am Ende zusätzlich
      on(idHeizen, function(dp) {
          heizen = dp.state.val;
          control();
      });    
      
      
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @sound31:

        Das Script für den Mischermotor tut auch bereits Ihren Dienst. `
        Welche Laufzeit hast Du ermittelt ?

        @sound31:

        Allerdings sind manchmal beide Ausgänge angesprochen. `
        Das sollte die Bedingung

           if(!motor) {
        
        

        eigentlich verhindern.

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

          Hallo,
          > Du solltest noch einen Datenpunkt "Heizperiode" oder "Jahreszeit" (Winter = true) vom Typ "Schalter" unter javascript.0 anlegen und darüber die Mischeransteuerung und die Pumpenansteuerung beeinflussen.
          das würde heissen das nur die Pumpen abgeschalten werden und die Ventile und der Mischer weiter (auch im Sommer)

          fahren würden.

          Bei einer reinen Außentemperatur gesteuerte Abschaltung würde die Heizung auch zu laufen beginnen wenn die

          Raumtemperaturen im Sommer mal unter den Sollwert sinken würde.
          > Welche Laufzeit hast Du ermittelt ?
          Von komplett "Geschlossen" bis "Offen" sind es 110sec.

          Frage zur Mischeransteuerung:

          Da ich die Pumpe für den HK im OG ja auf eine Elektronische ändern muss, die die ich jetzt verbaut habe

          ist nicht passen für Heizkörperbetrieb (ist halt ein altes Haus).

          Sollte ich diese dauern laufen lassen oder über eine Anforderung aus dem Script heraus.

          Grüße, Andy

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

            @sound31:

            das würde heissen das nur die Pumpen abgeschalten werden und die Ventile und der Mischer weiter (auch im Sommer)

            fahren würden. `
            Nein, der Datenpunkt "Heizperiode" sollte auch bei der Ventil- und Mischeransteuerung ausgewertet werden.
            @sound31:

            Sollte ich diese dauern laufen lassen oder über eine Anforderung aus dem Script heraus. `
            Da die Pumpe selbst auf eine sehr geringe Leistung runter regelt, würde ich sie nur im Sommer (Datenpunkt "Heizperiode")abschalten.

            Im Sommer sollte ein Wartungslauf gegen das Festsitzen ergänzt werden: Pumpen täglich 1 Minute ein, FBH-Ventile wöchentlich 5 Minuten auf; bei der FBH erst die Pumpe, danach die Ventile.

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

              Denn Datenpunkt Heizperiode habe ich auch ins Script der FBH geschrieben

              danach schaut das so aus:

              var Xp = 2;
              var Tn = 3600;
              var pwm = 100; //* PWM Zeit verlängert
              const idHeizen = "javascript.0.Heizperiode"/*Heizperiode*/;
              var xid = "knx.0.Sensoren.Erdgeschoss.Temp-Sensor-Kueche-EG"/*Temp-Sensor-Kueche-EG*/;
              var wid = "javascript.0.Sollwert-Küche-EG"/*Sollwert-Küche-EG*/;
              var yid = "knx.0.Aktoren.Heizung-Technik.Ventil-FBH-Kueche-EG"/*Ventil-FBH-Kueche-EG*/;
              
              var n = 0;  // Intervallzähler
              
              var  PI = require('pi-controller');
              
              var pi = new PI(Xp, Tn); 
              pi.setOutputMax(pwm);   // default: OutputMax = 100
              
              // Abfrage für Sommer/Winter noch einfugen
              
              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 < 8 && y > 0)           // Mindesteinschaltdauer: 8 Intervalle
                  {   setState(yid, 1);
              //        setState(pump, 1);
                  }
                else if (n >= 8 && y <= n)    // Zwei Ventile werden geschalten
                  {   setState(yid, 0);
              //        setState(pump, 0);
                  }  
              }
              
              control();  // Script start
              
              setInterval(control, 30000 );  // Intervall: von 1 auf 0,5 Minuten geändert
              
              // Abschaltung
              on(idHeizen, function(dp) {
                  heizen = dp.state.val;
                  control();
              }); 
              
              

              nach dem Start des Scripts kommen zwei Warn Meldungen:

              (Ausdruck beim Start)

              08:03:46.803 [info] javascript.0 Stop script script.js.Heizung.Küche-EG.FBH-Küche-EG

              08:03:47.528 [info] javascript.0 Start javascript script.js.Heizung.Küche-EG.FBH-Küche-EG

              08:03:47.528 [warn] javascript.0 at control (script.js.Heizung.Küche-EG.FBH-Küche-EG:25:9)

              08:03:47.528 [warn] javascript.0 at script.js.Heizung.Küche-EG.FBH-Küche-EG:34:1

              08:03:47.528 [info] javascript.0 script.js.Heizung.Küche-EG.FBH-Küche-EG: registered 1 subscription and 0 schedules

              ist das so korrekt?

              Bei Script für die Regelung der Temperatur im OG genügt es ja wen die Abschaltung im
              > // 3-Punkt-Ansteuerung aus Stellsignal ist, oder?

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

                Die Warnung kommt, weil die Variable heizen nicht deklariert ist.

                var heizen = getState(idHeizen).val;
                

                Die Auswertung muss in der Funktion control() erfolgen, damit die Ventile zu bleiben.

                   if (n < 8 && y > 0 && heizen)     // Mindesteinschaltdauer: 8 Intervalle
                
                

                Beim Übergang Winter zu Sommer ist es besser, die Ventile gleich zu schließen.

                // Abschaltung
                on(idHeizen, function(dp) {
                    heizen = dp.state.val;
                    if(!heizen) setState(yid, 0);
                });
                
                
                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 last edited by

                  @sound31:

                  ei Script für die Regelung der Temperatur im OG genügt es ja wen die Abschaltung im

                  // 3-Punkt-Ansteuerung aus Stellsignal

                  ist, oder? `
                  Ja.

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

                    Anmerkung: Da die KNX-Datenpunkte zum Schalten (Ventile, Pumpen) mit 0 und 1 anstelle false/true angesteuert werden müssen, sollte der Datenpunkttyp von "boolean" in "number" (Zahl) geändert werden.

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

                      Hallo paul53,

                      da ich für die Ladung des Boilers und die Fußbodenheizung nur einen Vorlauf

                      zur verfügung habe ist dieser mit einem Ventil umschaltbar.

                      (Leider ein altes Haus)

                      Dazu muss ich allerdings die FBH Pumpe Abschalten.

                      Ist das so korrekt wie ichs in das Script eingefügt habe?

                      Das Ventil liefert eine "1" wenn es eingeschalten ist.

                      // Ansteuerung Pumpe für Fußbodenheizungen
                      
                      const idHeizen = "javascript.0.Heizperiode"/*Heizperiode*/;
                      const idladung = "knx.0.Aktoren.Heizung-Technik.Ventil-Ladung-Boiler"/*Ventil-Ladung-Boiler*/;
                      
                      var idpump1 = "knx.0.Aktoren.Heizung-Technik.Ventil-FBH-Kueche-EG"/*Ventil-FBH-Kueche-EG*/;
                      var idpump2 = "knx.0.Aktoren.Heizung-Technik.Ventil-1-FBH-Flur-EG"/*Ventil-1-FBH-Flur-EG*/;
                      var idpump = "knx.0.Aktoren.Heizung-Technik.HK-EG-Pumpe"/*HK-EG-Pumpe*/;
                      
                      // Initialisierung bei Skriptstart
                      var pump1 = getState(idpump1).val;
                      var pump2 = getState(idpump2).val;
                      var timer = null;
                      var heizen = getState(idHeizen).val;
                      var ladung = getState(idladung).val;
                      
                      function control() {
                          if(timer) clearTimeout(timer);
                          if (pump1 || pump2) {
                              timer = setTimeout(function() {
                                  setState(idpump, 1);
                              }, 180000);  // 3 Minuten Verzögerung
                          }
                          else {
                              timer = setTimeout(function() {
                                  setState(idpump, 0);
                              }, 180000);    
                         }
                      }
                      
                      // Skriptstart
                      control();
                      
                      // Auf Änderung von Pumpe1 reagieren
                      on(idpump1, function(dp) {
                          pump1 = dp.state.val;
                          control();
                      });
                      
                      // Auf Änderung von Pumpe 2 reagieren
                      on(idpump2, function(dp) {
                          pump2 = dp.state.val;
                          control();
                      });
                      
                      // Abschaltung
                      on(idHeizen, function(dp) {
                          heizen = dp.state.val;
                          control();
                      }); 
                      
                      // Abschaltung wegen Boilerladung
                      on(idladung, function(dp) {
                          heizen = dp.state.val;
                          control();
                      }); 
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        Die Variable heizen wird im Skript gesetzt aber nicht ausgewertet. Bitte ergänzen:

                            if ((pump1 || pump2) && heizen) {
                        
                        

                        @sound31:

                        ist dieser mit einem Ventil umschaltbar….Das Ventil liefert eine "1" wenn es eingeschalten ist. `
                        Ist das ein Umschaltventil und was bedeutet "eingeschaltet" ?

                        Weshalb soll die Pumpe der FBH bei Speicherladung abschalten ?

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

                          Die Pumpe der FBH ist noch eine "Alte" ohne Elektr.Lastregelung,

                          Das sollte ich lt. dem Installateur so machen damit kein Überdruck im System entsteht

                          da bei der Boilerladung der Vorlauf zur FBH unterbrochen ist.

                          Eingeschaltet heißt das Wasser lüft in Richtung Boiler

                          Ausgeschalten in Richtung FBH.

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

                            @sound31:

                            Eingeschaltet heißt das Wasser lüft in Richtung Boiler `
                            Dann solltest Du es so machen:

                            ...
                                if ((pump1 || pump2) && heizen && !ladung) {
                            ...
                            
                            // Abschaltung wegen Speicherladung
                            on(idladung, function(dp) {
                                ladung = dp.state.val;
                                if(ladung) setState(idpump, 0);  // FBH-Pumpe sofort aus, wenn Speicherladung
                                else control();
                            }); 
                            
                            1 Reply Last reply Reply Quote 0
                            • S
                              sound31 last edited by

                              Vielen Dank,

                              Schönen Abend noch.

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

                                Hallo Paul53,

                                Ich habe noch eine Frage zum Script Pumpen.

                                Bei Schalten der Boilerladung schalter die Pumpe aus aber nach 3 Minuten wider ein

                                obwohl die Ladung noch ein ist.

                                Hier das Script, vielleicht kannst du noch mal ein Auge drauf werfen, Danke.

                                // Ansteuerung Pumpe für Fußbodenheizungen
                                
                                const idHeizen = "javascript.0.Heizperiode"/*Heizperiode*/;
                                const idladung = "knx.0.Aktoren.Heizung-Technik.Ventil-Ladung-Boiler"/*Ventil-Ladung-Boiler*/;
                                
                                var idpump1 = "knx.0.Aktoren.Heizung-Technik.Ventil-FBH-Kueche-EG"/*Ventil-FBH-Kueche-EG*/;
                                var idpump2 = "knx.0.Aktoren.Heizung-Technik.Ventil-1-FBH-Flur-EG"/*Ventil-1-FBH-Flur-EG*/;
                                var idpump = "knx.0.Aktoren.Heizung-Technik.HK-EG-Pumpe"/*HK-EG-Pumpe*/;
                                
                                // Initialisierung bei Skriptstart
                                var pump1 = getState(idpump1).val;
                                var pump2 = getState(idpump2).val;
                                var timer = null;
                                var heizen = getState(idHeizen).val;
                                var ladung = getState(idladung).val;
                                
                                function control() {
                                    if(timer) clearTimeout(timer);
                                    if ((pump1 || pump2) && heizen && !ladung) {
                                        timer = setTimeout(function() {
                                            setState(idpump, 1);
                                        }, 300000);  // 3 Minuten Verzögerung
                                    }
                                    else {
                                        timer = setTimeout(function() {
                                            setState(idpump, 0);
                                        }, 180000);    
                                   }
                                }
                                
                                // Skriptstart
                                control();
                                
                                // Auf Änderung von Pumpe1 reagieren
                                on(idpump1, function(dp) {
                                    pump1 = dp.state.val;
                                    control();
                                });
                                
                                // Auf Änderung von Pumpe 2 reagieren
                                on(idpump2, function(dp) {
                                    pump2 = dp.state.val;
                                    control();
                                });
                                
                                // Abschaltung
                                on(idHeizen, function(dp) {
                                    heizen = dp.state.val;
                                    control();
                                }); 
                                
                                // Abschaltung wegen Speicherladung
                                on(idladung, function(dp) {
                                    ladung = dp.state.val;
                                    if(ladung) setState(idpump, 0);  // FBH-Pumpe sofort aus, wenn Speicherladung
                                    else control();
                                });
                                
                                
                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 last edited by

                                  @sound31:

                                  Bei Schalten der Boilerladung schalter die Pumpe aus aber nach 3 Minuten wider ein obwohl die Ladung noch ein ist. `
                                  Das kann laut Skript nicht sein, denn die Pumpe schaltet nur ein, wenn die Ladung nicht aktiv ist.

                                      if ((pump1 || pump2) && heizen && !ladung) {
                                  

                                  Liefert der Datenpunkt idLadung nur einen kurzen Impuls? Bitte prüfen

                                  // Abschaltung wegen Speicherladung
                                  on(idladung, function(dp) {
                                      ladung = dp.state.val;
                                      log('Speicherladung: ' + ladung);  // Debug
                                      if(ladung) setState(idpump, 0);  // FBH-Pumpe sofort aus, wenn Speicherladung
                                      else control();
                                  });
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    sound31 last edited by

                                    Das Ventil bleibt Eingeschalten der Datenpunkt vom KNX her ist somit "Ein"

                                    Ich habe die Zeilen Eingefügt:
                                    ` > Liefert der Datenpunkt idLadung nur einen kurzen Impuls? Bitte prüfen

                                    ` > Code:

                                    // Abschaltung wegen Speicherladung

                                    on(idladung, function(dp) {

                                    ladung = dp.state.val;

                                    log('Speicherladung: ' + ladung); // Debug

                                    if(ladung) setState(idpump, 0); // FBH-Pumpe sofort aus, wenn Speicherladung

                                    else control();

                                    });
                                    und die Einschaltzeit der Boilerrladung geändert,

                                    danach standen diese Zeilen im LOG:

                                    hm-rpc.2	2018-01-04 11:12:43.295	info	xmlrpc -> 0 devices
                                    hm-rpc.2	2018-01-04 11:12:43.287	info	xmlrpc <- listDevices ["hm-rpc.2"]
                                    javascript.0	2018-01-04 11:10:46.085	info	script.js.Heizung.Boilerladung.Boilerladung: registered 0 subscriptions and 3 schedules
                                    javascript.0	2018-01-04 11:10:46.077	info	Start javascript script.js.Heizung.Boilerladung.Boilerladung
                                    javascript.0	2018-01-04 11:10:46.064	info	Stop script script.js.Heizung.Boilerladung.Boilerladung
                                    hm-rpc.2	2018-01-04 11:09:13.278	info	xmlrpc -> 0 devices
                                    hm-rpc.2	2018-01-04 11:09:13.270	info	xmlrpc <- listDevices ["hm-rpc.2"]
                                    hm-rpc.2	2018-01-04 11:05:43.194	info	xmlrpc -> 0 devices
                                    hm-rpc.2	2018-01-04 11:05:43.182	info	xmlrpc <- listDevices ["hm-rpc.2"]
                                    hm-rpc.2	2018-01-04 11:02:13.148	info	xmlrpc -> 0 devices
                                    hm-rpc.2	2018-01-04 11:02:13.135	info	xmlrpc <- listDevices ["hm-rpc.2"]
                                    javascript.0	2018-01-04 11:01:45.660	info	script.js.Heizung.Pumpen.FBH-Pumpe: Speicherladung: 1
                                    javascript.0	2018-01-04 11:01:00.239	info	script.js.Heizung.Pumpen.FBH-Pumpe: Speicherladung: 0
                                    javascript.0	2018-01-04 11:01:00.159	info	script.js.Heizung.Pumpen.FBH-Pumpe: Speicherladung: 1
                                    javascript.0	2018-01-04 11:01:00.116	info	script.js.Heizung.Pumpen.FBH-Pumpe: Speicherladung: 0
                                    javascript.0	2018-01-04 11:01:00.113	info	script.js.Heizung.Pumpen.FBH-Pumpe: Speicherladung: 1
                                    javascript.0	2018-01-04 10:58:47.109	info	script.js.Heizung.Boilerladung.Boilerladung: registered 0 subscriptions and 3 schedules
                                    javascript.0	2018-01-04 10:58:47.098	info	Start javascript script.js.Heizung.Boilerladung.Boilerladung
                                    javascript.0	2018-01-04 10:58:47.087	info	Stop script script.js.Heizung.Boilerladung.Boilerladung
                                    hm-rpc.2	2018-01-04 10:58:43.092	info	xmlrpc -> 0 devices
                                    hm-rpc.2	2018-01-04 10:58:43.084	info	xmlrpc <- listDevices ["hm-rpc.2"]
                                    web.0	2018-01-04 10:56:30.083	info	2018-01-04T09:56:30.078Z Connected system.user.admin
                                    javascript.0	2018-01-04 10:56:08.350	info	script.js.Heizung.Pumpen.FBH-Pumpe: registered 4 subscriptions and 0 schedules
                                    javascript.0	2018-01-04 10:56:08.342	info	Start javascript script.js.Heizung.Pumpen.FBH-Pumpe
                                    javascript.0	2018-01-04 10:56:08.315	info	Stop script script.js.Heizung.Pumpen.FBH-Pumpe
                                    hm-rpc.2	2018-01-04 10:55:13.044	info	xmlrpc -> 0 devices
                                    
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      sound31 last edited by

                                      Die Pumpe schaltet aber nach 3 Minuten wider ein.

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

                                        @sound31:

                                        Die Pumpe schaltet aber nach 3 Minuten wider ein. `

                                        Und das passiert auch durch den JavaScript adapter oder könnt es irgendwo anders her ?

                                        –-----------------------

                                        Send from mobile device

                                        Das schöne ios hat Auto Korrektur zum k****

                                        Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

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

                                          @Dutchman:

                                          Und das passiert auch durch den JavaScript adapter oder könnt es irgendwo anders her ? `
                                          Auch das lässt sich durch ein zusätzliches Log feststellen

                                                  timer = setTimeout(function() {
                                                      setState(idpump, 1);
                                                      log('FBH-Pumpe Ein, Typ von Ladung: ' + typeof ladung);
                                                  }, 300000);  // 5 Minuten Verzögerung
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • Dutchman
                                            Dutchman Developer Most Active Administrators last edited by

                                            @paul53:

                                            Auch das lässt sich durch ein zusätzliches Log feststellen `

                                            man sieht es auch am object wen man mit de maus drauf stehen bleibt 🙂
                                            979_aenderung.jpg

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            937
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            47
                                            6240
                                            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