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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    2
    1
    32

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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.4k

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
    #10

    Dein zweiter Trigger (Wirkenergie_Bezug > 500) setzt jedesmal einen State verzögert, wenn er ausgelöst wird. Eine mehrfache Änderung der Wirkenergie jenseits von 500 sorgt nun dafür, dass jeweils 30s nach dieser Änderung der State Einspeisung_3800 gesetzt wird, auch wenn dies gar nicht mehr nötig und sinnvoll ist. Du fängst das zwar eigentlich ab, aber möglicherweise verwirrt der mehrfache Timeout irgendwas.

    Enricos Vorschlag sieht wie folgt aus (in Pseudocode):

    Wenn Wirkenergie_Bezug > 500:
        timeout1 löschen
        timeout1 erstellen mit 30s Verzögerung:
            Einspeisung_3800 auf unwahr setzen
    
    Wenn Wirkenergie_Einspeisung > 3800:
        timeout1 löschen (damit die Variable nicht unnötig mit unwahr überschrieben wird)
        Einspeisung_3800 auf wahr setzen
    
    Rest wie gehabt
    
    

    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
      #11

      OK.

      Meint ihr so!?

      999_umschaltung_ww_neu.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
      • R Offline
        R Offline
        RappiRN
        Most Active
        wrote on last edited by
        #12

        So in etwa, bin mir jetzt nicht ganz sicher bei dem unteren Stop, ob so, wie du den gelegt hast, oder in den timeout rein nach dem steuere.

        Auf jeden Fall sollte der timeout so immer sicher beendet werden. Probiers doch mal aus. :D

        Enrico

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

          So hat es nicht funktioniert. Bei Bezug >500 wurde nicht wieder auf "unwahr" gewechselt.

          Habe es mal so geändert:

          999_umschaltung_ww_neu_1.jpg

          Das erste steuere nur um nach Script neustart den DP sicher auf false zu setzen.

          Jetzt mal ein paar Wolken abwarten.

          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
          • R Offline
            R Offline
            RappiRN
            Most Active
            wrote on last edited by
            #14

            Du hast bei 500 auch ein größer als drin, dann klappt das nicht. Entweder machst du da ein kleiner als rein, oder du verwendest als Hysterese einen Wert von vielleicht kleiner als 1500 dann würde das Abschalten der Erwärmung auch wieder Sinn machen.

            Enrico

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

              Hi Enrico,

              Kann es sein das du was verwechselt? Bei den >500 schaue ich ja auf den Bezug (vom Netzbetreiber) und bei den >3800 auf meine Einspeisung. Oder habe ich noch einen Gedanken Fehler.

              Mirko

              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
              • R Offline
                R Offline
                RappiRN
                Most Active
                wrote on last edited by
                #16

                Hast Recht, ich hab mich da verwirren lassen! :?

                Enrico

                1 Reply Last reply
                0
                • R Offline
                  R Offline
                  RappiRN
                  Most Active
                  wrote on last edited by
                  #17

                  Setz doch mal noch zwei debug-Blöcke ein. Einen in den timeout und einen einen unter falls (beim unteren Teil) um zu sehen, was bzw. ob da was passiert. Kannst du denn ausschließen, dass die Einspeisung in den 30sec timeout nicht wieder über 3800 gegangen ist? Wenn nicht, du weißt ja, debug-Blöcke wirken manchmal Wunder! :D

                  Enrico

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

                    Gute Idee. Werde ich morgen machen.

                    Die 30sekunden sind jetzt nur zum testen. Will das eigentlich so auf 5 Minuten stellen damit das nicht hin und her schaltet.

                    Gesendet von iPhone mit Tapatalk Pro

                    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
                      #19

                      Hallo wendy2702

                      In Deinem Blockly oben, hättest Du bei den Verzögerungen, eigentlich nur ein Häkchen bei "löschen falls lauft" setzen müssen.

                      Grüße

                      Rantanplan

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

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        RappiRN
                        Most Active
                        wrote on last edited by
                        #20

                        Damit kannst du den Timer aber nicht stoppen, wenn der obere Trigger reagiert, oder sehe ich das falsch?

                        Enrico

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

                          @RappiRN:

                          Damit kannst du den Timer aber nicht stoppen, wenn der obere Trigger reagiert, oder sehe ich das falsch? `

                          Ich meinte dieses Blockly viewtopic.php?p=157237#p156903

                          So im "Überflug" sehe ich da keine Zusammenhänge der Verzögerungen.

                          Grüße

                          Rantanplan

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

                          1 Reply Last reply
                          0
                          • R Offline
                            R Offline
                            RappiRN
                            Most Active
                            wrote on last edited by
                            #22

                            Die Verzögerungen sollen verhindern, das bei kurzem Wolkendurchzug immer wieder hin- und hergeschaltet wird.

                            Der Zusammenhang ist in dem Fall die Variable, die mit dem einen Trigger auf wahr und mit dem anderen auf unwahr geschaltet werden soll.

                            Enrico

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

                              Hi,

                              Danke das ihr euch meinem Problem annehmt!

                              Richtig, mit den/der Verzögerung wollte ich das hin und her schalten verhindern wenn mal kurz ne Wolke kommt.

                              Eigentlich hätte ich es irgendwann gerne so das der Wert Einspeisung z.B. Für 3 minuten größer als 3800 ist und dann erst die Variable auf „true“ gesetzt wird und damit WW Temperatur auf 60 Grad.

                              Andersherum dann wenn der Wert für Bezug z.B: länger als 4 Minuten >500 die variable wieder auf „false“ und damit WW Temperatur auf 45 Grad.

                              Kann ich das mit Timeout / Verzögerungen erreichen oder erfordert das komplexere Programmierung?

                              Danke und Gruß

                              Mirko

                              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
                              • 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

                                          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

                                          481

                                          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