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. Blockly: Anhebung der Warmwassertemperatur bei PV_Überschuss

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    129

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    166

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

Blockly: Anhebung der Warmwassertemperatur bei PV_Überschuss

Scheduled Pinned Locked Moved Skripten / Logik
33 Posts 6 Posters 3.3k Views
  • 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.
  • AlCalzoneA Offline
    AlCalzoneA Offline
    AlCalzone
    Developer
    wrote on last edited by
    #24

    Das sollte per einfachen Timeouts gehen, bin mir aber nicht sicher wie man das Überprüfen auf existierenden Timeout per Blockly macht. Eventuell musst du doch auf JS zurückgreifen:

    Trigger Einspeisung > 3800:
        Wenn timeout1 nicht läuft UND Variable == true:
            setze timeout1 (3 Minuten):
                (optional: Wenn Einspeisung immer noch > 3800 => ) Variable auf false
    
    Trigger Einspeisung < = 3800:
        Lösche Timeout1
    
    Trigger Bezug > 500:
        Wenn timeout2 nicht läuft UND Variable == false:
            setze timeout2 (4 Minuten):
                (optional: Wenn Bezug immer noch > 500 => ) Variable auf true
    
    Trigger Bezug <= 500:
        Lösche timeout 2            
    
    

    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

    1 Reply Last reply
    0
    • wendy2702W Offline
      wendy2702W Offline
      wendy2702
      wrote on last edited by
      #25

      Danke.

      Wie man einen laufenden Timer prüft weiß ich weder in Blockly noch in JS :mrgreen: :roll:

      Verstehe ich das richtig das bei einem Timeout auch nach/während Ablauf des Timeouts nochmal geschaut wird ob die Bedingung erfüllt wird?

      Bitte keine Fragen per PN, die gehören ins Forum!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      1 Reply Last reply
      0
      • rantanplanR Offline
        rantanplanR Offline
        rantanplan
        wrote on last edited by
        #26

        @wendy2702:

        Wie man einen laufenden Timer prüft weiß ich weder in Blockly noch in JS :mrgreen: :roll: `
        Bei Blockly geht das leider nur "von-hinten-durch-die-Brust-ins-Auge".

        Aber es geht mit Hilfsvariablen und Funktionen.

        Das Prinzip sieht so aus.
        147_beispiel.png

        ! <xml xmlns="http://www.w3.org/1999/xhtml"><block type="controls_if" id="1`C*nVG*,{-|Lp?VmSwx" x="-462" y="88"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="Plk9G8)TLiPXC@eABo_C"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="+5X]9~{)G=:u.i(=A!r?"><field name="VAR">Timer1_run</field></block></value> <value name="B"><block type="logic_boolean" id="B?J7s{_=*DYG1=a|Z`*X"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="procedures_callnoreturn" id="Xt;tr~EEGP7Z!qY/_,*="><mutation name="Timer1_aus"></mutation></block></statement> <statement name="ELSE"><block type="procedures_callnoreturn" id="@TNnC-{V5eFmpW1M#6I]"><mutation name="Timer1_an"></mutation></block></statement></block> <block type="procedures_defnoreturn" id="rr(PCWc?1ajHH/.cj=dP" x="-662" y="213"><field name="NAME">Timer1_an</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="comment" id="6Wiz2h{]@5Qt~dZeq/1c"><field name="COMMENT">Nicht unbediengt notwendig</field> <next><block type="comment" id="*B#%vZhKWB#YvyWGb@_8"><field name="COMMENT">aber zur Sicherheit vorher stoppen</field> <next><block type="procedures_callnoreturn" id="Ic_aL)K0]jz2|(9dCaAi"><mutation name="Timer1_aus"></mutation> <next><block type="comment" id="+2h2v5.9*tq{X[og(Jt:"><field name="COMMENT">Hier Timer starten</field> <next><block type="variables_set" id="VAOo8~nNu.wCN,f#_-.v"><field name="VAR">Timer1_run</field> <value name="VALUE"><block type="logic_boolean" id="#ziRr0t*:Tgk#;KIdJHs"><field name="BOOL">TRUE</field></block></value> <next><block type="timeouts_settimeout" id=".MiD.cWd79}v-vvIkfW*"><field name="NAME">Timer1</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"><block type="comment" id="rTm5sz;*zDYM[3A?WQZX"><field name="COMMENT">Hier irgendwas machen</field> <next><block type="comment" id="g,x3tK[DUIw+#u6,S!L-"><field name="COMMENT">Danach die die Timer Hilfsvariable auf unwahr</field> <next><block type="variables_set" id="nDg,=+3j|+u}r%mES%Oc"><field name="VAR">Timer1_run</field> <value name="VALUE"><block type="logic_boolean" id="cMECEt0RqU-o5N|uq.WK"><field name="BOOL">FALSE</field></block></value> <next><block type="comment" id="qC1UF]Y6BmOxU(8Gy[)v"><field name="COMMENT">ACHTUNG!!!!!!!</field> <next><block type="comment" id="idALyk(O6L4;7Z#,)4lu"><field name="COMMENT">Dieser innere Teil des Timers wird NICHT</field> <next><block type="comment" id="rs%y:7?bmTYs3dD:AYj?"><field name="COMMENT">ausgeführt wenn der Timer von "aussen"</field> <next><block type="comment" id="wdC+0L;(Uf^Ees{GtRy/"><field name="COMMENT">gestoppt wird.</field> <next><block type="comment" id="vJ@bN3v7UO;d#3VpPjcl"><field name="COMMENT">Deshalb alles in Funktionen packen!</field></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></statement></block> <block type="procedures_defnoreturn" id="MlKJiSJ?rI=ucz^r9BWt" x="-262" y="263"><field name="NAME">Timer1_aus</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="comment" id=",!NuTDD5kay3}E{OA)@_"><field name="COMMENT">Timer stoppen und Hilfsvariable auf false</field> <next><block type="timeouts_cleartimeout" id="7*IIi^GXEuB0x3kLF|l8"><field name="NAME">Timer1</field> <next><block type="variables_set" id="49xT4jIbI_FW|=,g|=Yq"><field name="VAR">Timer1_run</field> <value name="VALUE"><block type="logic_boolean" id="tIBJ3x9-s@UPoQ|Yv~to"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></statement></block></xml> !

        Grüße

        Rantanplan

        CCU3 / MS Server 2019(VM) / Scripten mit Blockly

        1 Reply Last reply
        0
        • wendy2702W Offline
          wendy2702W Offline
          wendy2702
          wrote on last edited by
          #27

          :shock:

          Danke!

          Aber an welche Stelle käme den jetzt da was von meinem Script rein?

          Müsste ich hier

          999_planlos.jpg

          Meine Abfrage z.B. der Einspeisung einfügen ?

          Sorry… ich überblicke das Gesamtkonzept irgendwie noch nicht. :oops:

          Bitte keine Fragen per PN, die gehören ins Forum!

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          1 Reply Last reply
          0
          • rantanplanR Offline
            rantanplanR Offline
            rantanplan
            wrote on last edited by
            #28

            @wendy2702:

            Aber an welche Stelle käme den jetzt da was von meinem Script rein?

            Sorry… ich überblicke das Gesamtkonzept irgendwie noch nicht. :oops: `

            Hauptsächlich geht es um die Möglichkeit in Blockly abfragen zu können ob in Timer läuft oder nicht.

            Ich habe mal ein kleines Beispiel von Dir genommen.

            In diesem Beispiel wäre der Umstand nicht notwendig, soll aber das Prinzip verdeutlichen.

            Hier Dein Beispiel.
            147_umschaltung_ww_neu_1.jpg

            Hier auf Timer-Abfrage angepasst. (Deine Datenpunkte habe ich leider nicht)
            147_beispiel.png

            Grüße

            Rantanplan

            CCU3 / MS Server 2019(VM) / Scripten mit Blockly

            1 Reply Last reply
            0
            • wendy2702W Offline
              wendy2702W Offline
              wendy2702
              wrote on last edited by
              #29

              @rantanplan:

              Ich habe mal ein kleines Beispiel von Dir genommen.

              In diesem Beispiel wäre der Umstand nicht notwendig, soll aber das Prinzip verdeutlichen. `

              Ok.

              Das bedeutet das ich die Abfrage Timer läuft oder Nicht eigentlich für meine Anforderung nicht zwingend benötige!?

              Wie löse ich dann das Überprüfen z.B. der Einspeisung >3800 für Zeitraum x bevor Variable auf "true" ?

              Oder habe ich dich falsch verstanden?

              Bitte keine Fragen per PN, die gehören ins Forum!

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              1 Reply Last reply
              0
              • rantanplanR Offline
                rantanplanR Offline
                rantanplan
                wrote on last edited by
                #30

                @wendy2702:

                Das bedeutet das ich die Abfrage Timer läuft oder Nicht eigentlich für meine Anforderung nicht zwingend benötige!? `

                Jaein.

                Ich habe jetzt nicht Deine ganze Anforderung im Blick.

                Ob Du wissen musst ob ein Timer läuft oder nicht liegt in Deinem ermessen.

                Du triggerst den Datenpunkt "Wirkenergie_Bezug" und wenn der Wert größer 500 ist, startest Du einen Timer von 30 Sek.

                Gehen wir mal davon aus, dass der "Wirkenergie_Bezug" sich jede Sekunde ändert und größer 500 ist.

                Problem 1 bei Timern.

                Timer starten OHNE ihn vorher zu beenden.

                1. Start 30 Sek.

                2. Start 30 Sek.

                3. Start 30 Sek. (bleiben wir bei 3x starten in 3 Sek.)

                NUN LAUFEN DREI TIMER AB.

                nach 30 Sek. "Einspeisung" auf unwahr

                nach 31 Sek. "Einspeisung" auf unwahr

                nach 32 Sek. "Einspeisung" auf unwahr

                Problem 2 bei Timern.

                Timer starten UND ihn vorher beenden.

                10:00:30 TimerStart 30 Sek. (der Timer sollte nun um 10:01:00 enden)

                10:00:31 TimerStop / TimerStart (jetzt endet der Timer um 10:01:01)

                10:00:32 TimerStop / TimerStart (jetzt endet der Timer um 10:01:02)

                usw., usw…......

                Das heißt wenn ein Timer gestoppt und wieder gestartet wird, verschiebt sich das Timer-Ereignis immer weiter nach hinten.

                Im schlimmsten Fall tritt das Timer-Ereignis NIE ein. (je nach dem was wie oft getriggert wird.)

                Wenn man nun vorher abfragen kann ob ein Timer bereits aktiv ist, kann man das verhindern.

                10:00:30 TimerStart 30 Sek. (Variable Aktiv=wahr)

                10:30:31 Falls Aktiv=wahr mache NICHTS

                10:30:32 Falls Aktiv=wahr machte NICHTS

                ...

                ...

                10:01:00 Timer-Ereignis wird zur vorgesehenen Zeit ausgeführt.

                10:01:01 Das Spiel fängt von vorne an.

                @wendy2702:

                Wie löse ich dann das Überprüfen z.B. der Einspeisung >3800 für Zeitraum x bevor Variable auf "true" ? `
                Das sagt mir jetzt nichts.

                Vielleicht hilft Dir mein Erklärungsversuch weiter.

                Grüße

                Rantanplan

                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                1 Reply Last reply
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  wrote on last edited by
                  #31

                  @wendy2702:

                  Wie löse ich dann das Überprüfen z.B. der Einspeisung >3800 für Zeitraum x bevor Variable auf "true" ? `

                  Dafür war das Timer-Konstrukt gedacht, das ich oben beschrieben habe.

                  Starte Timer wenn die Bedingung erstmalig erfüllt ist und breche den Timer ab, wenn sie es nicht mehr ist. Sobald der Timer triggert, war die Einspeisung für den Zeitraum des Timers > 3800.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Reply Last reply
                  0
                  • wendy2702W Offline
                    wendy2702W Offline
                    wendy2702
                    wrote on last edited by
                    #32

                    OK.

                    Danke.

                    Ich werde mal versuchen mir Danke eurer Erklärungen etwas zusammen zu bauen.

                    Feedback folgt wenn ich fertig bin und das Wetter wieder mit spielt.

                    Bitte keine Fragen per PN, die gehören ins Forum!

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    1 Reply Last reply
                    0
                    • wendy2702W Offline
                      wendy2702W Offline
                      wendy2702
                      wrote on last edited by
                      #33

                      Hallo zusammen,

                      ich habe jetzt mal versucht das nach zu bauen und ein paar Tage laufen lassen aber es funktioniert nicht so 100%.

                      Wenn ich das Blockly starte wird die Variable "Einspeisung_3800" auf false gesetzt. Steigt die Einspeisung dann über den Wert von 4200 wechselt das auch nach true und ich bekomme eine Telegramm nachricht "Einspeisung >4200".

                      Das Umschalten zurück wenn Bezug > 250 (zum testen eingestellt) geht nicht. Habe ich hier etwas falsch zusammen gebaut?

                      999_einspeisung_umschaltung.jpg

                      999_telegramm_einspeisung.jpg

                      Bitte keine Fragen per PN, die gehören ins Forum!

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      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

                      357

                      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