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. Heizkreisregelungen - JS

NEWS

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

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

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

Heizkreisregelungen - JS

Scheduled Pinned Locked Moved Skripten / Logik
47 Posts 4 Posters 8.5k Views 1 Watching
  • 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.
  • S Offline
    S Offline
    sound31
    wrote on last edited by
    #27

    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
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #28

      @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.

      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
      • S Offline
        S Offline
        sound31
        wrote on last edited by
        #29

        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
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #30

          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);
          });
          
          

          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
            #31

            @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.

            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
              #32

              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.

              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
              • S Offline
                S Offline
                sound31
                wrote on last edited by
                #33

                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
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #34

                  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 ?

                  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
                  • S Offline
                    S Offline
                    sound31
                    wrote on last edited by
                    #35

                    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
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #36

                      @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();
                      }); 
                      

                      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
                      • S Offline
                        S Offline
                        sound31
                        wrote on last edited by
                        #37

                        Vielen Dank,

                        Schönen Abend noch.

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          sound31
                          wrote on last edited by
                          #38

                          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
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #39

                            @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();
                            });
                            

                            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
                            • S Offline
                              S Offline
                              sound31
                              wrote on last edited by
                              #40

                              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
                              0
                              • S Offline
                                S Offline
                                sound31
                                wrote on last edited by
                                #41

                                Die Pumpe schaltet aber nach 3 Minuten wider ein.

                                1 Reply Last reply
                                0
                                • DutchmanD Offline
                                  DutchmanD Offline
                                  Dutchman
                                  Developer Most Active Administrators
                                  wrote on last edited by
                                  #42

                                  @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
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by
                                    #43

                                    @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
                                    
                                    

                                    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
                                    • DutchmanD Offline
                                      DutchmanD Offline
                                      Dutchman
                                      Developer Most Active Administrators
                                      wrote on last edited by
                                      #44

                                      @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
                                      0
                                      • S Offline
                                        S Offline
                                        sound31
                                        wrote on last edited by
                                        #45

                                        Aus der Anforderung zur Ladung kommt es nicht obwohl mir dieser Eintrag

                                        etwas verdächtig vorkommt:

                                        Warum hier innerhalb nicht mal einer Sekunde 4x geschalten wird??
                                        4002_screenshot.6.jpg
                                        Ich werde mir mal das Script zur Ladung des Boilers nochmals ansehen

                                        ob es von dort kommt.

                                        1 Reply Last reply
                                        0
                                        • paul53P paul53

                                          Hier noch ein Skript (nicht getestet) zur Ansteuerung des 3-Punkt-Antriebs (Mischer)

                                          // 3-Punkt-Ansteuerung aus Stellsignal
                                          
                                          const Laufzeit = 150;  // Laufzeit des Stellantriebs in s
                                          const Stellmax = 100;  // max. Stellsignal (%)
                                          const minMove = 2;     // mindest Positionsänderung des Antriebs (in %)
                                          const idy = 'javascript.0...';  // Datenpunkt-ID Stellsignal
                                          const idAuf = '...';  // Datenpunkt-ID Antrieb Richtung Auf
                                          const idZu = '...';   // Datenpunkt-ID Antrieb Richtung Zu
                                          
                                          var faktor = 1000 * Laufzeit / Stellmax;  // Faktor ms/%
                                          var lastPos = 0;   // letzte Position (Stellsignal)
                                          var motor = true;  // Indikator: Antrieb in Bewegung
                                          
                                          function move(pos) {
                                          	if(!motor) {
                                          		if(pos - lastPos > minMove) {
                                          			setState(idAuf, true);
                                          			motor = true;
                                          			if(timer) clearTimeout(timer);
                                          			timer = setTimeout(function() {
                                          				setState(idAuf, false);
                                          				motor = false;
                                          			}, faktor * (pos - lastPos));
                                          			lastPos = pos;
                                          		}
                                          		else if(lastPos - pos > minMove) {
                                          			setState(idZu, true);
                                          			motor = true;
                                          			var deltaPos = lastPos - pos;
                                          			if(pos === 0) deltaPos = deltaPos + 10;  // Synchronistation "Zu"
                                          			if(timer) clearTimeout(timer);
                                          			timer = setTimeout(function() {
                                          				setState(idZu, false);
                                          				motor = false;
                                          			}, faktor * deltaPos);
                                          			lastPos = pos;
                                          		}	
                                          	}
                                          }
                                          
                                          on(idy, function(dp) {
                                          	move(dp.state.val);
                                          });
                                          
                                          // Bei Skriptstart fährt Antrieb erst auf Position 0 (Zu)
                                          setState(idAuf, false); 
                                          setState(idZu, true);
                                          var timer = setTimeout(function() {
                                              setState(idZu, false);
                                              motor = false;
                                              move(getState(idy).val); // Fahren in Sollposition
                                          }, 1000 * (Laufzeit + 10));
                                          

                                          EDIT: Skriptstart erweitert auf Fahren in Sollposition

                                          S Offline
                                          S Offline
                                          SilSchm
                                          wrote on last edited by
                                          #46

                                          @paul53 Hallo Paul 53, ich habe das PI-Regler-Script für die Vorlauftemperatur in Verbindung mit dem 3-Punkt-Mischer-Script getestet. Es funktioniert soweit super. Vielen Dank für die tolle Umsetzung für eine Idee, die ich schon länger hatte aber nicht umzusetzen wusste. Eine Sache habe ich gefunden, wobei meine Javascript Kenntnisse nicht reichen, um den Fehler zu finden. Wenn das Stellsignal vom PI-Regler 100 % beträgt, fährt beim Start des Mischer-Scripts nach der Initialisierungsfahrt der Mischer nicht wieder auf. Das Stellsignal ist 100 und der Mischer fährt nicht mehr. Wenn ich kurz manuell das Stellsignal auf einen Wert unter 100 setze, fährt der Mischer auf und die Regelung funktioniert wieder super. Das tritt jedesmal nach der Initialisierung auf, wenn 100 % als Stellsignal anliegen. Hast du evtl. eine Idee?

                                          MfG Silvio

                                          paul53P 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

                                          268

                                          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