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. Blockly
  5. Heizungsregelung --- timeout?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    532

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Heizungsregelung --- timeout?

Geplant Angeheftet Gesperrt Verschoben Blockly
16 Beiträge 2 Kommentatoren 1.2k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P paul53

    @samyd sagte: PI-Regler für die Heizung einzusetzen, aber das ist mir irgendwie dann doch zu komplex.

    Was ist daran zu komplex?
    Komplex ist es eher, die vielen Timer in den Griff zu bekommen und deren Mehrfachstart zu verhindern.

    S Offline
    S Offline
    SamyD
    schrieb am zuletzt editiert von
    #3

    @paul53: Ich habe es hiermit mal probiert, finde das schon recht interessant:

    793a179d-9812-4a5c-8db2-37d5be0a3973-image.png

    Leider habe ich das bis dato nicht geschafft richtig einzustellen.
    Meine Heizung lässt sich nur in 0,5°C-Schritten zwischen 5°C - 30°C steuern.

    paul53P 1 Antwort Letzte Antwort
    0
    • S SamyD

      @paul53: Ich habe es hiermit mal probiert, finde das schon recht interessant:

      793a179d-9812-4a5c-8db2-37d5be0a3973-image.png

      Leider habe ich das bis dato nicht geschafft richtig einzustellen.
      Meine Heizung lässt sich nur in 0,5°C-Schritten zwischen 5°C - 30°C steuern.

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #4

      @samyd sagte: Meine Heizung lässt sich nur in 0,5°C-Schritten zwischen 5°C - 30°C steuern.

      Die 0,5 Grad Schritte erhält man durch

      runde(output * 2) / 2
      

      Bild_2021-11-14_181140.png

      Der Stellbereich beträgt 30 - 5 = 25 (für Berechnung von p). Es muss außerdem lauten

      setze output auf 15 + p + i
      

      Der Trigger-Datenpunkt enthält Einspeisung - Bezug (kann negativ 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

      S 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @samyd sagte: Meine Heizung lässt sich nur in 0,5°C-Schritten zwischen 5°C - 30°C steuern.

        Die 0,5 Grad Schritte erhält man durch

        runde(output * 2) / 2
        

        Bild_2021-11-14_181140.png

        Der Stellbereich beträgt 30 - 5 = 25 (für Berechnung von p). Es muss außerdem lauten

        setze output auf 15 + p + i
        

        Der Trigger-Datenpunkt enthält Einspeisung - Bezug (kann negativ werden)?

        S Offline
        S Offline
        SamyD
        schrieb am zuletzt editiert von
        #5

        @paul53 : Super, Danke!!! Habs gleichmal übernommen, kann ich aber erst morgen testen, wenn ich wieder Strom auf der PV-Anlage habe.

        Den Trigger habe ich direkt auf die Einspeisung gelegt, ist bei mir immer positiv. Ist das so richtig?

        Ist es richtig, dass Tn die Nachstellzeit für den Sollwert ist?
        Wie binde ich ein, dass die Heizung sich ausschaltet, wenn keine Einspeisung über eine gewisse Zeit erfolgt?

        paul53P 1 Antwort Letzte Antwort
        0
        • S SamyD

          @paul53 : Super, Danke!!! Habs gleichmal übernommen, kann ich aber erst morgen testen, wenn ich wieder Strom auf der PV-Anlage habe.

          Den Trigger habe ich direkt auf die Einspeisung gelegt, ist bei mir immer positiv. Ist das so richtig?

          Ist es richtig, dass Tn die Nachstellzeit für den Sollwert ist?
          Wie binde ich ein, dass die Heizung sich ausschaltet, wenn keine Einspeisung über eine gewisse Zeit erfolgt?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #6

          @samyd sagte: Einspeisung gelegt, ist bei mir immer positiv. Ist das so richtig?

          Nein, der Wert muss auch negativ werden, da sich sonst der I-Anteil des Reglers nur in eine Richtung (größer) bewegen kann. Ziehe den Bezug ab.

          Bild_2021-11-14_185414.png

          ... oder einen festen Zielwert

          Bild_2021-11-14_190345.png

          @samyd sagte in Heizungsregelung --- timeout?:

          Ist es richtig, dass Tn die Nachstellzeit für den Sollwert ist?

          Ja.

          @samyd sagte in Heizungsregelung --- timeout?:

          Wie binde ich ein, dass die Heizung sich ausschaltet, wenn keine Einspeisung über eine gewisse Zeit erfolgt?

          Bei einem Sollwert von 5°C ist die Heizung praktisch aus.

          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

          S 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @samyd sagte: Einspeisung gelegt, ist bei mir immer positiv. Ist das so richtig?

            Nein, der Wert muss auch negativ werden, da sich sonst der I-Anteil des Reglers nur in eine Richtung (größer) bewegen kann. Ziehe den Bezug ab.

            Bild_2021-11-14_185414.png

            ... oder einen festen Zielwert

            Bild_2021-11-14_190345.png

            @samyd sagte in Heizungsregelung --- timeout?:

            Ist es richtig, dass Tn die Nachstellzeit für den Sollwert ist?

            Ja.

            @samyd sagte in Heizungsregelung --- timeout?:

            Wie binde ich ein, dass die Heizung sich ausschaltet, wenn keine Einspeisung über eine gewisse Zeit erfolgt?

            Bei einem Sollwert von 5°C ist die Heizung praktisch aus.

            S Offline
            S Offline
            SamyD
            schrieb am zuletzt editiert von
            #7

            @paul53 : Ich habe das Objekt jetzt vom Smartmeter genommen, hier ist Bezug und Einspeisung enthalten.

            Bei einem positiven Wert sollte der Regler hoch fahren, bei einem negativen Wert runter regeln, richtig? Dann sollte bei Bezug der Wert negativ sein und bei Einspeisung negativ??
            0d023815-5f37-4bac-aa51-ee49dce11a36-image.png

            Das mit der Nachstellzeit klappt noch nicht ganz. Der Output läuft zu schnell, vermutlich wird die Reaktion der Heizung (Stromaufnahme) nicht hinter her kommen.

            paul53P 1 Antwort Letzte Antwort
            0
            • S SamyD

              @paul53 : Ich habe das Objekt jetzt vom Smartmeter genommen, hier ist Bezug und Einspeisung enthalten.

              Bei einem positiven Wert sollte der Regler hoch fahren, bei einem negativen Wert runter regeln, richtig? Dann sollte bei Bezug der Wert negativ sein und bei Einspeisung negativ??
              0d023815-5f37-4bac-aa51-ee49dce11a36-image.png

              Das mit der Nachstellzeit klappt noch nicht ganz. Der Output läuft zu schnell, vermutlich wird die Reaktion der Heizung (Stromaufnahme) nicht hinter her kommen.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #8

              @samyd sagte: hier ist Bezug und Einspeisung enthalten.

              Bezug - Einspeisung?

              Ändere den Trigger auf "wurde aktualisiert", damit der I-Anteil kontinuierlich hoch-/runter läuft, auch wenn der Trigger-Wert konstant ist.

              @samyd sagte in Heizungsregelung --- timeout?:

              Das mit der Nachstellzeit klappt noch nicht ganz. Der Output läuft zu schnell

              Ja, 2 Minuten sind recht wenig für thermische Prozesse.

              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

              S 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @samyd sagte: hier ist Bezug und Einspeisung enthalten.

                Bezug - Einspeisung?

                Ändere den Trigger auf "wurde aktualisiert", damit der I-Anteil kontinuierlich hoch-/runter läuft, auch wenn der Trigger-Wert konstant ist.

                @samyd sagte in Heizungsregelung --- timeout?:

                Das mit der Nachstellzeit klappt noch nicht ganz. Der Output läuft zu schnell

                Ja, 2 Minuten sind recht wenig für thermische Prozesse.

                S Offline
                S Offline
                SamyD
                schrieb am zuletzt editiert von
                #9

                @paul53 : das mit Tn scheint irgendwie nicht ganz zu klappen?! Der Regler läuft bei der Trigger-Aktualisierung zu schnell hoch bzw. runter und das nach ein paar Sekunden. Anscheinend regelt er nicht entsprechend der Einstellung bei Tn??

                paul53P 1 Antwort Letzte Antwort
                0
                • S SamyD

                  @paul53 : das mit Tn scheint irgendwie nicht ganz zu klappen?! Der Regler läuft bei der Trigger-Aktualisierung zu schnell hoch bzw. runter und das nach ein paar Sekunden. Anscheinend regelt er nicht entsprechend der Einstellung bei Tn??

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #10

                  @samyd sagte: Der Regler läuft bei der Trigger-Aktualisierung zu schnell hoch bzw. runter und das nach ein paar Sekunden. Anscheinend regelt er nicht entsprechend der Einstellung bei Tn??

                  Mit welchem Zyklus wird getriggert?
                  Wenn Tn keinen Einfluss hat, ist sicherlich noch ein Fehler enthalten. Poste mal den Blockly-Export in Code tags.

                  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
                    SamyD
                    schrieb am zuletzt editiert von
                    #11

                    @paul53 : Es wird alle 6 Sekunden getriggert.

                    f7a58b20-3cc6-4dfe-9271-dd9925dcc70d-image.png

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • S SamyD

                      @paul53 : Es wird alle 6 Sekunden getriggert.

                      f7a58b20-3cc6-4dfe-9271-dd9925dcc70d-image.png

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #12

                      @samyd
                      Das ist nicht der Export. Poste bitte die Javascript-Ansicht ohne die letzte Zeile in Code tags. Etwa so:

                      var i, Xp, Tn, p, lasti, output;
                      
                      
                      i = 0;
                      Xp = 1600;
                      Tn = 300;
                      // Einspeisung - Bezug
                      on({id: 'default', change: "any"}, async function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        p = parseFloat((parseFloat(25) / Xp)) * (parseFloat((obj.state ? obj.state.val : "")) - 200);
                        lasti = i;
                        i = (typeof i == 'number' ? i : 0) + parseFloat(p) * (parseFloat((parseFloat((obj.state ? obj.state.ts : "")) - (obj.oldState ? obj.oldState.ts : ""))) / (parseFloat(1000) * Tn));
                        output = parseFloat(Math.round(parseFloat((parseFloat(15) + parseFloat(p) + i)) * 2)) / 2;
                        if (output > 30) {
                          output = 30;
                          i = lasti;
                        }
                        if (output < 5) {
                          output = 5;
                          i = lasti;
                        }
                        if (output != getState("0_userdata.0.Blockly.Soll_Temperatur").val) {
                          setState("0_userdata.0.Blockly.Soll_Temperatur"/*Sollwert*/, output);
                        }
                      });
                      

                      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

                      S 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @samyd
                        Das ist nicht der Export. Poste bitte die Javascript-Ansicht ohne die letzte Zeile in Code tags. Etwa so:

                        var i, Xp, Tn, p, lasti, output;
                        
                        
                        i = 0;
                        Xp = 1600;
                        Tn = 300;
                        // Einspeisung - Bezug
                        on({id: 'default', change: "any"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          p = parseFloat((parseFloat(25) / Xp)) * (parseFloat((obj.state ? obj.state.val : "")) - 200);
                          lasti = i;
                          i = (typeof i == 'number' ? i : 0) + parseFloat(p) * (parseFloat((parseFloat((obj.state ? obj.state.ts : "")) - (obj.oldState ? obj.oldState.ts : ""))) / (parseFloat(1000) * Tn));
                          output = parseFloat(Math.round(parseFloat((parseFloat(15) + parseFloat(p) + i)) * 2)) / 2;
                          if (output > 30) {
                            output = 30;
                            i = lasti;
                          }
                          if (output < 5) {
                            output = 5;
                            i = lasti;
                          }
                          if (output != getState("0_userdata.0.Blockly.Soll_Temperatur").val) {
                            setState("0_userdata.0.Blockly.Soll_Temperatur"/*Sollwert*/, output);
                          }
                        });
                        
                        S Offline
                        S Offline
                        SamyD
                        schrieb am zuletzt editiert von
                        #13

                        @paul53 : sorry

                        @paul53 :

                        var i, Xp, Tn, p, lasti, output;
                        
                        
                        i = 0;
                        Xp = 1600;
                        Tn = 120;
                        // Einspeisung/Bezug
                        on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "any"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          p = parseFloat((parseFloat(25) / Xp)) * (parseFloat(getState("javascript.0.variables.Einspeisung").val) - getState("javascript.0.variables.Netzbezug").val);
                          lasti = i;
                          i = (typeof i == 'number' ? i : 0) + parseFloat(p) * (parseFloat((parseFloat((obj.state ? obj.state.ts : "")) - (obj.oldState ? obj.oldState.ts : ""))) / (parseFloat(1000) * Tn));
                          output = parseFloat(Math.round(parseFloat((parseFloat(15) + parseFloat(p) + i)) * 2)) / 2;
                          if (output > 30) {
                            output = 30;
                            i = lasti;
                          }
                          if (output < 5) {
                            output = 5;
                            i = lasti;
                            setState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.mode"/*mode*/, ('' + 'OFF'));
                          }
                          if (output != getState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.setpoint_temperature").val) {
                            setState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.setpoint_temperature"/*setpoint_temperature*/, output);
                            console.warn(output);
                          }
                        });
                        
                        paul53P 1 Antwort Letzte Antwort
                        0
                        • S SamyD

                          @paul53 : sorry

                          @paul53 :

                          var i, Xp, Tn, p, lasti, output;
                          
                          
                          i = 0;
                          Xp = 1600;
                          Tn = 120;
                          // Einspeisung/Bezug
                          on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "any"}, async function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            p = parseFloat((parseFloat(25) / Xp)) * (parseFloat(getState("javascript.0.variables.Einspeisung").val) - getState("javascript.0.variables.Netzbezug").val);
                            lasti = i;
                            i = (typeof i == 'number' ? i : 0) + parseFloat(p) * (parseFloat((parseFloat((obj.state ? obj.state.ts : "")) - (obj.oldState ? obj.oldState.ts : ""))) / (parseFloat(1000) * Tn));
                            output = parseFloat(Math.round(parseFloat((parseFloat(15) + parseFloat(p) + i)) * 2)) / 2;
                            if (output > 30) {
                              output = 30;
                              i = lasti;
                            }
                            if (output < 5) {
                              output = 5;
                              i = lasti;
                              setState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.mode"/*mode*/, ('' + 'OFF'));
                            }
                            if (output != getState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.setpoint_temperature").val) {
                              setState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.setpoint_temperature"/*setpoint_temperature*/, output);
                              console.warn(output);
                            }
                          });
                          
                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #14

                          @samyd
                          Kein Fehler zu finden. Erhöhe mal Tn auf 600.

                          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

                          S 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @samyd
                            Kein Fehler zu finden. Erhöhe mal Tn auf 600.

                            S Offline
                            S Offline
                            SamyD
                            schrieb am zuletzt editiert von
                            #15

                            @paul53 : Tn steht auf 600, regelt aber immer noch krass hin und her...

                            2f26edbc-6ae5-4713-baa3-88832b1c9e82-image.png

                            paul53P 1 Antwort Letzte Antwort
                            0
                            • S SamyD

                              @paul53 : Tn steht auf 600, regelt aber immer noch krass hin und her...

                              2f26edbc-6ae5-4713-baa3-88832b1c9e82-image.png

                              paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #16

                              @samyd sagte: regelt aber immer noch krass hin und her...

                              Dann muss die Leistung (Einspeisung - Bezug) stark schwanken, so dass diese Schwankungen des Ausgangs durch den P-Anteil bedingt sind. Da hilft nur, Xp zu vergrößern.

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              744

                              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