Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Bibliothek Scripte und Lösungen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Bibliothek Scripte und Lösungen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Hallo paul,

      DANKE, habe es (hoffentlich richtig) geändert

      Gruß

      Rainer

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

        @Homoran:

        habe es (hoffentlich richtig) geändert `
        Ja.

        Anbei noch ein PI-Regler-Skript für Raumheizung, in dem das npm-Modul "pi-controller" verwendet wird:

        // PI-Regler Raumheizung
        // Datenpunkt-IDs eintragen !
        const xid = '...'; // Istwert
        const wid = '...'; // Sollwert
        const yid = '...'; // Heizventil
        
        // P-Band in K, Nachstellzeit in s
        const Xp = 4;
        const Tn = 600;
        
        var x = getState(xid).val;  // Istwert in °C
        var w = getState(wid).val;  // Sollwert in °C
        
        const  PI = require('pi-controller'); // als zusätzliches NPM-Modul in JS-Config eintragen
        const pi = new PI(Xp, Tn); 
        pi.setOutputMax(100);   // default: OutputMax = 100
        
        function control() {
          var y = pi.Control(w - x);  // Stellsignal
          setState(yid, y);
        }
        
        control();  // Script start
        
        on(xid, function(dp) {
          x = dp.state.val;
          control();
        });
        
        on(wid, function(dp) {
          w = dp.state.val;
          control();
        });
        
        if (Tn) setInterval(control, 250 * Tn );
        
        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          Siehe da:

          http://www.iobroker.net/?page_id=3725&lang=de

          Gruß

          Rainer

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

            Du bist ja schnell 8-)

            Eine Homematic-Zentrale ist nicht unbedingt Voraussetzung. Mann kann die Werte aus beliebigen Funk-Raumthermostaten holen, sofern es dazu eine Schnittstelle zu ioBroker gibt. Den Sollwert kann man auch intern per JS-Programm vorgeben (so mache ich es).

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

              Das Script, das Du "Offset Heizung / Feuchteberechnung" genannt hast, hat nichts mit Heizung zu tun. Nenne es besser "Offset Sensorwerte / Taupunktberechnung".

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                Danke,

                http://www.iobroker.net/?page_id=3651&lang=de

                1 Reply Last reply Reply Quote 0
                • B
                  Beatz last edited by

                  An alle hier Mitwirkenden ein großes Dankeschön. Diese Übersicht ist klasse.

                  Auf der Webseite ist mir aufgefallen, dass das Skript zur Prüfung der Zeit nur das Datum prüft und die Funktion isTimeInRange nicht mehr enthalten ist. Vermutlich wurde nur die Erweiterung von pix einbezogen. Die Version zur Prüfung der Zeit wäre hier: http://forum.iobroker.net/viewtopic.php … 1072#p8484

                  Außerdem würde ich im Bereich Zeitsteuerung noch ein kleines Skript vorstellen, dass ich viel verwende. Das folgende Skript prüft ob aktuell Wochenende (Samstag oder Sonntag) ist und bietet sich an, als globales Skript eingerichtet zu werden. Kein Hexenwerk, dafür praktisch.

                  /* VERWENDUNG
                      if (isWeekend() ) { log("Es ist Wochenende); }
                  */
                  
                  function isWeekend() {
                      var d = new Date();
                      var n = d.getDay();
                      var weekend = false;
                      weekend = (n === 0 || n == 6) ? true : false;
                      return weekend;
                  }
                  
                  1 Reply Last reply Reply Quote 0
                  • M
                    MarcJ last edited by

                    Hallo zusammen,

                    ich habe unsere Heizung selbst gebaut und regle alle Pumpen und Ventile auch selbst (zumeinst über ioBroker-Logiken). Nun habe ich für den Mischerkreis der Fußbodenheizung (also Mischerventil für Rücklauf- und Vorlaufmischung) den PI-Regler von hier genommen. Da ich das Ventil zwischen 0-100% ansteure, brauche ich keine PWM. Hier mal das Script:

                    // PI-Regler Raumheizung
                    
                    // P-Band in K, Nachstellzeit in s
                    //In der angegebenen Zeit Tn (in sec.) wird die Stellgrößenänderung, 
                    //die der P-Anteil (xp oder pb) bewirkt, noch einmal aufaddiert. 
                    //Somit besteht ein festes Verhältnis zwischen dem P- und I-Anteil. 
                    //Wird der P-Anteil (xp) geändert, so bedeutet das auch ein 
                    //geändertes Zeitverhalten, bei einem gleichbleibenden Wert von Tn.
                    var Xp = 2; /7/
                    var Tn = 800; /8000/
                    
                    var xid = "owfs.0.wires.FBH_Mischer_Ausgang"/FBH Mischer Ausgang/;
                    var wid = "Meine_Objekte.0.Heizung.Heizungswasser.Heizungswasser_VL_Soll_aus_Formel"/Heizungswasser_VL_Soll_aus_Formel/;
                    var yid = "javascript.0.HKL.PI_Heizungsmischer"/HKL.PI_Heizungsmischer/;
                    
                    var PI = require('pi-controller');
                    
                    var pi = new PI(Xp, Tn); 
                    pi.setOutputMax(100);// 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, 6000); /60000/
                    }
                    else {
                        if (timer) {
                            clearInterval(timer);
                            timer = null;
                        }
                    }
                    

                    Nun ist das Problem, dass nach einigen Minuten der KNX-Adapter nicht mehr funktioniert, da zu viele Werte gesendet werden. Im Log sehe ich auch, dass das PI-Script alle paar ms ein Update sendet.

                    2643_log_pi.jpeg

                    Leider bin ich kein Spezialist bei JavaScript (bin eher der blockly-Typ), daher bräuchte ich euer Rat: Erkennst da jemand was, was man ändern muss, damit nicht ständig die vielen Werte gesendet werden? Komischerweise läuft das Script die ersten ca. 10 Minuten gut, und ab dann fängt es an viel Werte zu aktualisieren.

                    Vielen Dank und Grüße Marc

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

                      Kann es sein, dass der Istwert sich zu schnell ändert ? Logge ihn mal.

                      on(xid, function(dp) {
                         log('Mischer-Ausgang: ' + dp.state.val);
                      });
                      

                      und/oder kommentiere mal die Datenpunkt-Trigger aus.

                      // on(xid, control);
                      // on(wid, control);
                      

                      Das Skript hast Du hoffentlich nicht unter der Gruppe global erstellt ?

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

                        Hallo Experten,

                        ich plane mit dem PI-Regler Script die Vorlauftemperatur meines FBH Mischers zu regeln.

                        Als 3 Punkt Regelung möchte ich einen Siemens DN20, 230V, Stellmotor Antrieb SSA31.1 verwenden. Der Antrieb hat zum ein-/ausfahren jeweils 1 Anschluss 230V (Y1,Y2).

                        https://www.downloads.siemens.com/downl … &id1=10765

                        Ich habe aktuell keine Homematic Komponenten und plane daher mit 2 Sonoff Schaltern das Signal zum Antrieb zu zu geben. Ist das sinnvoll und ist das npm Modul "pi-controller" dazu geeignet? Wenn ja, wie müsste das Script in dem folgenden Bereich ergänzt werden?

                        __var yid =id.des.sonoff.auf

                        var zid =id.des.sonoff.zu

                        var y = pi.Control(w - x); // Stellsignal auf

                        setState(yid, y);

                        var z = pi.Control(w - x); // Stellsignal zu

                        setState(zid, z);__

                        Was bewirkt "pi.Control" genau?

                        /frank

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        931
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        13
                        34
                        12865
                        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