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

NEWS

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

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Blockly: Anhebung der Warmwassertemperatur bei PV_Überschuss

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
33 Beiträge 6 Kommentatoren 3.1k Aufrufe
  • Ä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.
  • rantanplanR Online
    rantanplanR Online
    rantanplan
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      RappiRN
      Most Active
      schrieb am zuletzt editiert von
      #20

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

      Enrico

      1 Antwort Letzte Antwort
      0
      • rantanplanR Online
        rantanplanR Online
        rantanplan
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • R Offline
          R Offline
          RappiRN
          Most Active
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • wendy2702W Online
            wendy2702W Online
            wendy2702
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • wendy2702W Online
                wendy2702W Online
                wendy2702
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • rantanplanR Online
                  rantanplanR Online
                  rantanplan
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • wendy2702W Online
                    wendy2702W Online
                    wendy2702
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • rantanplanR Online
                      rantanplanR Online
                      rantanplan
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • wendy2702W Online
                        wendy2702W Online
                        wendy2702
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • rantanplanR Online
                          rantanplanR Online
                          rantanplan
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • AlCalzoneA Offline
                            AlCalzoneA Offline
                            AlCalzone
                            Developer
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • wendy2702W Online
                              wendy2702W Online
                              wendy2702
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • wendy2702W Online
                                wendy2702W Online
                                wendy2702
                                schrieb am zuletzt editiert von
                                #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 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

                                716

                                Online

                                32.7k

                                Benutzer

                                82.4k

                                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