Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. PV Vario Heizer 0,5 - 3,5kW Blocky Script

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    PV Vario Heizer 0,5 - 3,5kW Blocky Script

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

      @paul53 Danke fürs raus suchen.
      Seit Tagen hab ich sowas gesucht aber nicht gefunden.
      Hab das mal folgendermaßen angepasst

      var Stufe, delayon, delayoff;
      
      // Beschreibe diese Funktion …
      async function Warmwasser() {
       setState('0_userdata.0.Datenpunkte.Relais_500W' /* Relais 500W */, (Stufe == 1 || Stufe == 3 || Stufe == 7));
       setState('0_userdata.0.Datenpunkte.Relais_1000W' /* Relais 1000W */, (Stufe == 2 || Stufe == 6 || Stufe == 7));
       setState('0_userdata.0.Datenpunkte.Relais_2000W' /* Relais 2000W */, (Stufe == 4 || Stufe == 5 || Stufe == 6 || Stufe == 7));
       await wait(3000);
      }
      
      
      Stufe = (getState('0_userdata.0.Datenpunkte.Relais_500W').val ? 1 : 0) + (getState('0_userdata.0.Datenpunkte.Relais_1000W').val ? 2 : 0) + (getState('0_userdata.0.Datenpunkte.Relais_2000W').val ? 4 : 0);
      on({ id: [].concat(['0_userdata.0.Datenpunkte.Einspeisung']), change: 'ne' }, async (obj) => {
       let value = obj.state.val;
       let oldValue = obj.oldState.val;
       if (getState('0_userdata.0.Datenpunkte.Einspeisung').val > 600) {
         (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
       } else if (!delayon) {
         delayon = setTimeout(async () => {
           delayon = null;
           if (Stufe < 7) {
             Stufe = (typeof Stufe === 'number' ? Stufe : 0) + 1;
             await Warmwasser();
             (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
           }
         }, 5000);
       }
       if (getState('0_userdata.0.Datenpunkte.Einspeisung').val < 10) {
         (() => { if (delayoff) { clearTimeout(delayoff); delayoff = null; }})();
       } else if (!delayoff) {
         delayoff = setTimeout(async () => {
           delayoff = null;
           if (Stufe < 0) {
             Stufe = (typeof Stufe === 'number' ? Stufe : 0) + -1;
             await Warmwasser();
             (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
           }
         }, 5000);
       }
      });
      
      Stufe == 7;
      

      Kann ich das jetzt irgendwie testen, da aktuell ja keine Einspeisung stattfindet?

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

        @markusm sagte: Hab das mal folgendermaßen angepasst

        Das passt so nicht richtig mit den 7 Stufen (Zeilen 5, 6).
        Zeile 42 ist kontraproduktiv, da sie die Berechnung in Zeile 12 überschreibt.
        5 s sind zu kurz, um kleine Wolken bzw. Wolkenlücken zu überbrücken.
        Der Vergleich in Zeile 33 ist falsch herum.

        @markusm sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

        Kann ich das jetzt irgendwie testen, da aktuell ja keine Einspeisung stattfindet?

        Nicht wirklich, da es vernünftig nur mit der tatsächlichen Rückwirkung des Heizstabes auf die Einspeisung zu testen ist.

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

          @paul53 Zeile 42 habe ich entfernt, die lag da ausversehen noch rum.

          Die 5 Sekunden hatte ich eingestellt, da ich selbst über Datenpunkte die aktuelle Einspeisung simulieren wollte. Nur schalten die "Schalter Datenpunkte" nicht mehr ab.

          Hier noch mal in korrigiert:

          var Stufe, delayon, delayoff;
          
          // Beschreibe diese Funktion …
          async function Warmwasser() {
           setState('0_userdata.0.Datenpunkte.Relais_500W' /* Relais 500W */, (Stufe == 1 || Stufe == 3 || Stufe == 7));
           setState('0_userdata.0.Datenpunkte.Relais_1000W' /* Relais 1000W */, (Stufe == 2 || Stufe == 6 || Stufe == 7));
           setState('0_userdata.0.Datenpunkte.Relais_2000W' /* Relais 2000W */, (Stufe == 4 || Stufe == 5 || Stufe == 6 || Stufe == 7));
           await wait(10000);
          }
          
          
          Stufe = (getState('0_userdata.0.Datenpunkte.Relais_500W').val ? 1 : 0) + (getState('0_userdata.0.Datenpunkte.Relais_1000W').val ? 2 : 0) + (getState('0_userdata.0.Datenpunkte.Relais_2000W').val ? 4 : 0);
          on({ id: [].concat(['0_userdata.0.Datenpunkte.Einspeisung']), change: 'ne' }, async (obj) => {
           let value = obj.state.val;
           let oldValue = obj.oldState.val;
           if (getState('0_userdata.0.Datenpunkte.Einspeisung').val > 600) {
             (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
           } else if (!delayon) {
             delayon = setTimeout(async () => {
               delayon = null;
               if (Stufe < 7) {
                 Stufe = (typeof Stufe === 'number' ? Stufe : 0) + 1;
                 await Warmwasser();
                 (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
               }
             }, 120000);
           }
           if (getState('0_userdata.0.Datenpunkte.Einspeisung').val < 10) {
             (() => { if (delayoff) { clearTimeout(delayoff); delayoff = null; }})();
           } else if (!delayoff) {
             delayoff = setTimeout(async () => {
               delayoff = null;
               if (Stufe > 0) {
                 Stufe = (typeof Stufe === 'number' ? Stufe : 0) + -1;
                 await Warmwasser();
                 (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
               }
             }, 120000);
           }
          });
          

          Als Blocky:


          Screenshot 2023-11-13 175552.png

          Danke auf jeden fall für deine Hilfe. Ich setze das Projekt dann in Zukunft mal um und werde berichten.

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

            @markusm sagte: Als Blocky:

            Die Vergleiche mit dem Einspeisewert sind falsch herum.
            Bei 500 W fehlt Stufe 5.
            Bei 1000 W fehlt Stufe 3.
            Ganz unten (links) wird der falsche Timer gestoppt.

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

              @paul53

              var Stufe, delayon, delayoff;
              
              // Beschreibe diese Funktion …
              async function Warmwasser() {
               setState('0_userdata.0.Datenpunkte.Relais_500W' /* Relais 500W */, (Stufe == 1 || Stufe == 3 || Stufe == 5 || Stufe == 7));
               setState('0_userdata.0.Datenpunkte.Relais_1000W' /* Relais 1000W */, (Stufe == 2 || Stufe == 3 || Stufe == 6 || Stufe == 7));
               setState('0_userdata.0.Datenpunkte.Relais_2000W' /* Relais 2000W */, (Stufe == 4 || Stufe == 5 || Stufe == 6 || Stufe == 7));
               await wait(10000);
              }
              
              
              Stufe = (getState('0_userdata.0.Datenpunkte.Relais_500W').val ? 1 : 0) + (getState('0_userdata.0.Datenpunkte.Relais_1000W').val ? 2 : 0) + (getState('0_userdata.0.Datenpunkte.Relais_2000W').val ? 4 : 0);
              on({ id: [].concat(['0_userdata.0.Datenpunkte.Einspeisung']), change: 'ne' }, async (obj) => {
               let value = obj.state.val;
               let oldValue = obj.oldState.val;
               if (getState('0_userdata.0.Datenpunkte.Einspeisung').val > 600) {
                 (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
               } else if (!delayon) {
                 delayon = setTimeout(async () => {
                   delayon = null;
                   if (Stufe < 7) {
                     Stufe = (typeof Stufe === 'number' ? Stufe : 0) + 1;
                     await Warmwasser();
                     (() => { if (delayon) { clearTimeout(delayon); delayon = null; }})();
                   }
                 }, 120000);
               }
               if (getState('0_userdata.0.Datenpunkte.Einspeisung').val < 10) {
                 (() => { if (delayoff) { clearTimeout(delayoff); delayoff = null; }})();
               } else if (!delayoff) {
                 delayoff = setTimeout(async () => {
                   delayoff = null;
                   if (Stufe > 0) {
                     Stufe = (typeof Stufe === 'number' ? Stufe : 0) + -1;
                     await Warmwasser();
                     (() => { if (delayoff) { clearTimeout(delayoff); delayoff = null; }})();
                   }
                 }, 120000);
               }
              });
              

              Habe die Stufen ergänzt.
              Die Einspeisung ist bei mir positiv, da Netzbezug negativ.
              Oder meinst du damit was anders ?
              Timer hab ich auch schon entdeckt.

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

                @markusm sagte: Die Einspeisung ist bei mir positiv

                Ja, deshalb ist der Vergleich falsch herum: Bei Einspeisung >= Grenzwert muss der sonst-Zweig ausgeführt werden (bei < Grenzwert wird nur der Timer gestoppt).

                Blockly_temp.JPG

                1 Reply Last reply Reply Quote 0
                • P
                  Petrelke last edited by

                  Hallo zusammen,
                  ich bin Blockly anfänger und habe dieses Blockly nachgebaut, es regelt aber nur einmal rauf und nicht in Abhängigkeit der Einspeisung. Gibt es schon ein lauffähiges Blockly ?

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

                    @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                    habe dieses Blockly nachgebaut,

                    welches?
                    zeigen!

                    @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                    Gibt es schon ein lauffähiges Blockly ?

                    ja!
                    Deswegen die Frage was du daraus gemacht hast

                    P 1 Reply Last reply Reply Quote 1
                    • P
                      Petrelke @Homoran last edited by

                      @homoran said in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                      @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                      habe dieses Blockly nachgebaut,

                      welches?
                      zeigen!

                      @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                      Gibt es schon ein lauffähiges Blockly ?

                      ja!
                      Deswegen die Frage was du daraus gemacht hast

                      e5ea0350-787c-4906-b486-33114abc1862-grafik.png

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

                        @petrelke
                        3 mal Name "Schalter", die sich nicht unterscheiden lassen. Was steuern die Aktoren?
                        Was enthält der DP "Power"?
                        Die Vergleiche mit "Power" sind falsch herum!

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          Petrelke @paul53 last edited by

                          @paul53 Schalter sind 3 unterschiedliche Variablen 500W 1000W 2000W von Shellys.
                          Power ist die Einspeiseleistung aber als positiver Wert.
                          Was meinst du damit, die Vergleiche mit Power sind falsch herum?

                          Homoran paul53 3 Replies Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @Petrelke last edited by

                            @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                            Schalter sind 3 unterschiedliche Variablen 500W 1000W 2000W von Shellys.

                            das sind doch States, keine Variablen.

                            Gib den States doch eindeutige Namen, damit man die Zuordnung prüfen kann.

                            P 1 Reply Last reply Reply Quote 0
                            • P
                              Petrelke @Homoran last edited by

                              @homoran die 3 Stufen 500/1000/2000W sind Variablen des Tys State.
                              Für eindeutige Namen müsste ich Alias Namen anlegen, oder gibt es eine andere Möglichkeit.

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

                                @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                                die 3 Stufen 500/1000/2000W sind Variablen des Tys State.

                                Also Datenpunkte, keine Variablen.

                                @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                                Für eindeutige Namen müsste ich Alias Namen anlegen, oder gibt es eine andere Möglichkeit.

                                Natürlich!
                                du sollst ja nicht die ID, sondern nur den Namen ändern.

                                P 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Petrelke last edited by paul53

                                  @petrelke sagte: 500W 1000W 2000W von Shellys.

                                  Dann hat eine Stufe 500 W Leistung. Dafür ist die Hysterese zu gering. Erhöhe den Einschaltgrenzwert auf 600.

                                  @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                                  Power ist die Einspeiseleistung aber als positiver Wert.

                                  Wie verhält sich der DP-Wert, wenn nichts eingespeist wird?

                                  @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                                  Was meinst du damit, die Vergleiche mit Power sind falsch herum?

                                  Wenn die Einspeiseleistung größer als der Einschaltgrenzwert ist, muss der sonst-Zweig ausgeführt werden.

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    Petrelke @Homoran last edited by

                                    @homoran 1cbefd7a-822e-488e-8904-3896f1d303f5-grafik.png
                                    Habe es ein wenig angepasst zum besseren Verständnis.
                                    Power ist zum testen ein Heizlüfter. Es geht aber immer noch nicht.
                                    Wenn Power 0W dann kommt Stufe 500W.
                                    Wenn Power 1000W dann geht Stufe 500W aus.

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

                                      sind denn nicht immer noch

                                      @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                                      die Vergleiche mit Power sind falsch herum?

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

                                        @petrelke sagte: Habe es ein wenig angepasst zum besseren Verständnis.

                                        Die Vergleiche sind immer noch falsch herum und die Hysterese ist zu klein.

                                        Blockly_temp.JPG

                                        P 1 Reply Last reply Reply Quote 0
                                        • P
                                          Petrelke @paul53 last edited by

                                          @paul53 ed3f4104-bcb7-427a-899d-9a08efb3c958-grafik.png
                                          Wenn ich bei Power 1000W vorgebe laufen alle 7Stufen durch, wenn ich 0W vorgebe schaltet nur die Stufe 500W aus.

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

                                            @petrelke sagte: Wenn ich bei Power 1000W vorgebe laufen alle 7Stufen durch

                                            Das ist richtig, wenn erneut getriggert wird, da die Rückwirkung eines Verbrauchers auf den Trigger-DP fehlt.

                                            @petrelke sagte in PV Vario Heizer 0,5 - 3,5kW Blocky Script:

                                            wenn ich 0W vorgebe schaltet nur die Stufe 500W aus.

                                            Bei welcher Stufe beginnend? Es müssten die Stufen rückwärts gezählt werden, aber nur, wenn erneut getriggert wird. Deshalb meine Frage oben:

                                            Wie verhält sich der DP-Wert, wenn nichts eingespeist wird?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            957
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            33
                                            976
                                            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