Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ausführung eines Blocks nur alle 15 Minuten - wie?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ausführung eines Blocks nur alle 15 Minuten - wie?

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

      @paul53 Ah, OK. Und in der ersten Zeile, wo explizit der "Wert" des auslösenden Objektes angefragt wird, bezieht sich auf den Inhalt?
      16685b5e-078b-4ac2-a7df-8263e75021c0-image.png

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

        @wofried sagte: "Wert" des auslösenden Objektes angefragt wird, bezieht sich auf den Inhalt?

        Ja, es ist der Wert des Trigger-Datenpunktes.

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

          @paul53 Ist Dein Skript wirklich der Aufgabenstellung entsprechend?

          Ich habe sie so verstanden, dass alle 15 Minuten überprüft werden soll, ob der Überschuss ausreichend ist, die Wärmepumpe zu betreiben. Wenn ja, soll die WP sofort angeschaltet werden.
          Im Eingeschalteten Zustand soll dann entsprechend alle 15 min geschaut werden, ob der Überschuss soweit abgesunken ist, dass die Wärmepumpe sofort angeschaltet werden sollte.

          Geschehen in Deinem Skript die Schaltvorgänge nicht mit einer Verzögerung von 30 min - oder habe ich die Funktion des verwendeten "ausführen ... in ... " Blocks falsch verstanden?

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

            @martinp sagte: Ist Dein Skript wirklich der Aufgabenstellung entsprechend?

            Nein, denn

            @paul53 sagte in Ausführung eines Blocks nur alle 15 Minuten - wie?:

            Das sind dann sehr zufällige Werte (kleine Wolke / Wolkenlücke).

            Das Skript schaltet die WP ein, wenn 30 Minuten lang der Überschuss mind. 3000 W beträgt; sie schaltet aus, wenn der Überschuss 30 Minuten lang unter 1000 W bleibt. Die 30 Minuten kann man natürlich auf 15 Minuten verringern, was sicherlich sinnvoll ist.
            Dieses Vorgehen verhindert, dass bei bewölktem Himmel die WP durch zufällige Werte ständig ein- und ausschaltet. Eine kleine Wolke oder eine kleine Wolkenlücke führt nicht zum Schalten der WP.

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

              @paul53 muss man schauen, ob das zum Anwendungsfall passt.
              Will man eher auch an durchwachsenen Tagen warmes Poolwasser haben, oder eher nur mit Solarstrom laden.

              T W 2 Replies Last reply Reply Quote 0
              • T
                ticaki Developer @MartinP last edited by ticaki

                @martinp

                Das hier ist meine Solaranlage 10 kwp, letzten 7 Tage, 20, 40, 70 Perzentil. Meinen 2,5kw Heizstab ohne Fremdstrom laufen zu lassen, wäre nur möglich wenn ich auch Sekunden als Schaltfequenz akzeptieren würde, aber dann wären die Relais wohl in nem Monat hinüber.

                Bildschirmfoto 2023-07-30 um 12.23.21.png

                Heizstabverbrauch(der ist bei der Einspeisung ja schon abgezogen)
                Bildschirmfoto 2023-07-30 um 12.29.33.png
                Anmerkung: am 28/7 hat meine Zwangserhitzung gegriffen, weil Wasser zu lange zu kalt um Legionellen abzutöten

                1 Reply Last reply Reply Quote 0
                • W
                  WoFried @MartinP last edited by

                  @martinp Ich hab den Intervall tatsächlich erstmal auf 15 Minuten reduziert. Das passt glaube ich besser. Dann ist auch das "Risiko" nicht so hoch, dass mir die WP mal 30 Minuten lang mit max. 1.5kW an der Batterie nuckelt.
                  Ich muss sicherlich auch noch ein wenig mit den Einspeisewerte experimentieren. Ich hatte erstmal noch zusätzlich 1kW Luft gelassen, damit im Haus auch nochmal ein Herd und/oder Waschmaschine angeschmissen werden kann, ohne dass es gleich an die Batterie geht.

                  Und was das warme Wasser angeht, da sind 12m³ in einem in den Boden eingelassenen, unten und rundherum richtig gut isolierten Pool, der nahezu auch die komplette badefreie Zeit, tagsüber und nachts mit einer Solarfolie abgedeckt ist. Selbst an kalten Tagen verliert der nur ca. 1 - 1.5 Grad. Klar, wenn ich dann mal eine Serie bewölkter Tage habe, wird der kälter, aber dann ist das so.

                  Ich werde das Skript erstmal kopieren mit verkürzten Zeiten und als Ersatz für meine PV, mit dem Heizungsregler meiner Homematic arbeiten. Dann mit Pushover die Reaktion abschicken und ich sollte recht schnell merken, ob das so für mich passt.

                  @paul53 und alle Anderen: Gibt es eigentlich irgendwo Blockly eLearning Einheiten? Ich würde gerne mehr dazulernen, hab nämlich das Kontrukt der Verzögerung überhaupt nicht geblickt, warum z.B. das Stop über dem eigentlichen Ausführen steht.

                  9a46910f-4a09-4267-b7ef-55f9c1cfc095-image.png

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

                    @wofried sagte: warum z.B. das Stop über dem eigentlichen Ausführen steht.

                    Weil es in der Reihenfolge eleganter ist: Man kann "sonst falls" für die Sperre "nicht Verzögerung delayOn" nutzen.

                    EDIT: Vergleich mit anderer Reihenfolge:

                    Blockly_temp.JPG

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

                      @paul53 Eine Frage hätte ich noch dazu. Bekommt man auch diese Warnung weg?
                      0d5b56ec-9cc3-4a46-9b9b-ce51c760b450-image.png
                      Das Skript läuft zwar wie es soll...
                      126f0051-4bb6-4efb-a840-13b446f267c6-image.png
                      ... aber ich habe bei jedem Auslösen die Meldung im Log.

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

                        @wofried sagte: Bekommt man auch diese Warnung weg?

                        Poste bitte den kompletten erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

                        Schon mal: Die Abfrage der "waermepumpenautomatik" muss innerhalb des Triggers erfolgen.

                        Blockly_temp.JPG

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

                          @paul53 OK, hier mal der Code

                          
                          var ueberschuss, delayOn, delayOff;
                          
                          
                          if (getState('0_userdata.0.waermepumpenautomatik').val) {
                            on({id: [].concat(['fusionsolar.0.NE=yyyyyyyyy.xxxxxxxxxx.kpi.realtime.activePower']), change: "ne"}, async function (obj) {
                              let value = obj.state.val;
                              let oldValue = obj.oldState.val;
                              ueberschuss = (obj.state ? obj.state.val : "");
                              if (ueberschuss <= 1500) {
                                (function () {if (delayOn) {clearTimeout(delayOn); delayOn = null;}})();
                              } else if (!delayOn) {
                                delayOn = setTimeout(async function () {
                                  if (!getState("tuya.0.xxxxxxxxxxxxxxx.1").val) {
                                    setState("tuya.0.xxxxxxxxxxxxxxx.1"/*switch*/, true);
                                    setState("0_userdata.0.up_aktiv"/*up_aktiv*/, true);
                                    sendTo("pushover", "send", {
                                       message: 'WP AN',
                                       sound: "magic"
                                    });
                                  }
                                }, 600000);
                              }
                              if (ueberschuss >= 0) {
                                (function () {if (delayOff) {clearTimeout(delayOff); delayOff = null;}})();
                              } else if (!delayOff) {
                                delayOff = setTimeout(async function () {
                                  if (getState("tuya.0.xxxxxxxxxxxxx.1").val) {
                                    setState("tuya.0.xxxxxxxxxxxxx.1"/*switch*/, false);
                                    sendTo("pushover", "send", {
                                       message: 'WP AUS',
                                       sound: "falling"
                                    });
                                  }
                                  if (getState("0_userdata.0.up_zeit_an").val) {
                                    setState("0_userdata.0.up_aktiv"/*up_aktiv*/, true);
                                  } else {
                                    setStateDelayed("0_userdata.0.up_aktiv"/*up_aktiv*/, false, 60000, false);
                                  }
                                }, 600000);
                              }
                            });
                          }
                          
                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @WoFried last edited by

                            @wofried
                            Im Skript ist kein Grund für die Warnung zu erkennen.

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

                              @paul53 Alles gut, dann lasse ich es so. Ist ja nur eine Warnung. Danke.

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

                                @wofried sagte: dann lasse ich es so.

                                Die Abfrage von "0_userdata.0.waermepumpenautomatik" muss nach innerhalb des Trigger-Blocks verlegt werden - wie gezeigt! Die Abfrage wirkt sonst nur bei Skriptstart.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                579
                                Online

                                32.0k
                                Users

                                80.5k
                                Topics

                                1.3m
                                Posts

                                4
                                22
                                1646
                                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