Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Frage] zwei Trigger erlaubt?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Frage] zwei Trigger erlaubt?

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

      Hallo,
      ich habe folgende Konstellation. Ein Skrip soll laufen, wenn ein Datenpunkt geändert wird (in dem Fall, wenn der DP "Pool Modus" geändert wird). Spätestens um 10:00 Uhr soll das Skript aber auch laufen, falls der DP schon vor 10:00 Uhr geändert wurde und sich dann nicht mehr ändert und somit das Skript nicht mehr anstößt. Darf ich da einen Trigger im Trigger machen?
      Grüße Andreas

      Edit: darf ich dann noch mit dem Baustein "Wert" und "vorheriger Wert" arbeiten?

      trigger im trigger.JPG

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        @weimaraner sagte in [Frage] zwei Trigger erlaubt?:

        Darf ich da einen Trigger im Trigger machen?

        Nein. So erzeugst du jeden Tag im 10 eine neue Kopie des inneren Triggers, der dann jeden Tag 1x mehr ausgeführt wird als am Vortag.

        Was du machen kannst, ist die eigentliche Logik in eine Funktion kapseln, die beiden Trigger auf oberster Ebene anordnen (nicht schachteln) und darin jeweils nur die Funktion aufrufen.
        Etwas schwieriger wird es dadurch, dass du die Werte des Objekts verwendest. Die müsstest du an die Funktion übergeben, damit es mit den beiden verschiedenen Triggern funktioniert.

        Habe gerade kein Blockly zur Hand, vielleicht findet sich ja jemand, der im Detail helfen kann.

        W 1 Reply Last reply Reply Quote 0
        • W
          weimaraner @AlCalzone last edited by

          @AlCalzone ...und das geht auch nicht?

          Trigger.JPG

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

            @weimaraner sagte:

            das geht auch nicht?

            Nein.

            @weimaraner sagte in [Frage] zwei Trigger erlaubt?:

            darf ich dann noch mit dem Baustein "Wert" und "vorheriger Wert" arbeiten?

            Beim Zeittrigger um 10:00 Uhr steht "vorheriger Wert" nicht zur Verfügung. Man kann ihn aber in einer Funktion auswerten, wenn er in einer Variable gespeichert ist.

            Blockly_Trigger_Schedule.JPG

            1 Reply Last reply Reply Quote 0
            • W
              weimaraner last edited by

              @paul53
              Uihhh, jetzt raucht der Kopf... 😧
              Mir ist noch der Gedanke gekommen, einen zweiten Trigger zu platzieren, der die Poolheizung startet, wenn der DP "PoolModus" vor 10:00 schon auf true gegangen ist, dann meine Variable "Count" mit bedient und falls es danach bewölkt wird, dann greift mein ursprünglicher Trigger "Objekt wurde geändert" und meine Variable "Count" wird von dort gestoppt und wieder gestartet, wenn es wieder sonnig wird.
              Ein bißchen "unschlank" das ganze, aber ich kann es verstehen. ☺

              Das müßte doch funktionieren?

              zweiter trigger.JPG

              <xml xmlns="http://www.w3.org/1999/xhtml">
              <block type="variables_set" id="D2~QA]~?;gr_1n-Ktx0G" x="-437" y="-37">
              <field name="VAR">count</field>
              <value name="VALUE">
              <block type="math_number" id="%v~(g}=cGnp2(oT2)aV7">
              <field name="NUM">0</field>
              </block>
              </value>
              <next>
              <block type="comment" id="seoWv[;Tmy#dN{YzIQU.">
              <field name="COMMENT">Trigger auf Wärme ab 10:00</field>
              <next>
              <block type="on" id="ip;%W;Ld10n)kG3:D.tE">
              <field name="OID">eigene_Variablen.0.Pool_Variablen.Pool_Modus</field>
              <field name="CONDITION">ne</field>
              <field name="ACK_CONDITION"></field>
              <statement name="STATEMENT">
              <block type="controls_if" id="yIy69RSYt}J;UQ!;[f!"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="ut?9Q^d+[ZcmZ8amvHya" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="8~ssTTJY/|-[98OGjG:g" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="time_compare" id="4|2eb2,6mp#R#]LKMun">
              <mutation end_time="false"></mutation>
              <field name="OPTION">></field>
              <field name="START_TIME">10:00</field>
              </block>
              </value>
              <value name="B">
              <block type="time_compare" id="Wu-?qhMoZw~[X~+JwKE">
              <mutation end_time="false"></mutation>
              <field name="OPTION"><</field>
              <field name="START_TIME">15:59</field>
              </block>
              </value>
              </block>
              </value>
              <value name="B">
              <block type="logic_compare" id="e~(6MJbygF0W}=a)J6iq">
              <field name="OP">EQ</field>
              <value name="A">
              <block type="on_source" id="E]DP+~6jLs|Gb6mBzQe"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="3xn]PLudQI_60tu4pi/1"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="5yGKq%OF!W!nJ)uVT#X4"> <value name="IF0"> <block type="logic_operation" id=")enx5FSu2o8K{0VQ,zQ" inline="false">
              <field name="OP">AND</field>
              <value name="A">
              <block type="logic_compare" id="(gTgGXl/S?)B(N8858CU">
              <field name="OP">EQ</field>
              <value name="A">
              <block type="on_source" id="s~aI/bm#ykjg?SES@UMH">
              <field name="ATTR">oldState.val</field>
              </block>
              </value>
              <value name="B">
              <block type="logic_boolean" id="|?v86|DTE}#qoSgbkNp:">
              <field name="BOOL">FALSE</field>
              </block>
              </value>
              </block>
              </value>
              <value name="B">
              <block type="logic_compare" id="^;Vc5:!.#AzoO#;wwsmn">
              <field name="OP">LT</field>
              <value name="A">
              <block type="variables_get" id="@.X?64%}=t:}:!]a6zyr">
              <field name="VAR">count</field>
              </block>
              </value>
              <value name="B">
              <block type="math_number" id="^uvui(D#|dyEv!gf]ayX">
              <field name="NUM">180</field>
              </block>
              </value>
              </block>
              </value>
              </block>
              </value>
              <statement name="DO0">
              <block type="control" id="Em!a%)??dR
              gRJ%K/D0(">
              <mutation delay_input="false"></mutation>
              <field name="OID">broadlink2.0.SP:BroadLink-Poolpumpe</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="logic_boolean" id="DHHfvpt?TvLw5Q^Ku63"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_setinterval" id="c+DNWACepNepN[g[I!.x"> <field name="NAME">Intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="math_change" id="X9QzF3@1d66E*?EfO=Y8"> <field name="VAR">count</field> <value name="DELTA"> <shadow type="math_number" id="]+Bv/5f,~Rz:pZHtloDf"> <field name="NUM">1</field> </shadow> </value> <next> <block type="control" id="t;cl_sjxgFM5#Rnb%Rv3"> <mutation delay_input="false"></mutation> <field name="OID">eigene_Variablen.0.Pool_Variablen.Pool_Heizung_Restlaufzeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="31X)],@[C}#zu([Xm#I">
              <field name="VAR">count</field>
              </block>
              </value>
              <next>
              <block type="controls_if" id="hhOS?gGcOWYQqc;1J(V">
              <value name="IF0">
              <block type="logic_compare" id="Q;[{(RhebZnqPnUBh:}f">
              <field name="OP">GTE</field>
              <value name="A">
              <block type="variables_get" id="a.K}xjr!OEUbSVbdCn_"> <field name="VAR">count</field> </block> </value> <value name="B"> <block type="math_number" id=";[IW_zjCWb}hp-(8p5?">
              <field name="NUM">180</field>
              </block>
              </value>
              </block>
              </value>
              <statement name="DO0">
              <block type="control" id="4MM_9CjkHNgWPl%Swpr">
              <mutation delay_input="false"></mutation>
              <field name="OID">broadlink2.0.SP:BroadLink-Poolpumpe</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="logic_boolean" id="%hCbamjc}n*@sD{dNS?"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_clearinterval" id="9rf**5K?,~_gIz.Wg-(H"> <field name="NAME">Intervall</field> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="controls_if" id="r_bwSaXDi@3neZWM-SSL"> <value name="IF0"> <block type="time_compare" id="]bqjVjh#9Im8J16Fn(@">
              <mutation end_time="false"></mutation>
              <field name="OPTION"><</field>
              <field name="START_TIME">16:00</field>
              </block>
              </value>
              <statement name="DO0">
              <block type="control" id="5EFq?2[DZnvI|eKjHXkR">
              <mutation delay_input="false"></mutation>
              <field name="OID">broadlink2.0.SP:BroadLink-Poolpumpe</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="logic_boolean" id="Jp.-+m=h^xmhY|Jd{Xt"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_clearinterval" id="}FFq:5x|,?%k+yTM*8Fc"> <field name="NAME">Intervall</field> <next> <block type="timeouts_clearinterval" id="-st;+@PGS2xC1n_/?eD">
              <field name="NAME">Intervall2</field>
              </block>
              </next>
              </block>
              </next>
              </block>
              </statement>
              </block>
              </statement>
              </block>
              </statement>
              <next>
              <block type="comment" id="}5BXP4cOY7hGm1wL|swE">
              <field name="COMMENT">Trigger ab 10:00 wenn es schon warm war</field>
              <next>
              <block type="schedule" id="TqH/.@Q%9kzyoeWywU(e">
              <field name="SCHEDULE">0 10 * * *</field>
              <statement name="STATEMENT">
              <block type="controls_if" id="lq+6t-m(F)YLCTC2K#hp">
              <value name="IF0">
              <block type="logic_compare" id="}xse(=)Ip/Ts_0I4257u">
              <field name="OP">EQ</field>
              <value name="A">
              <block type="get_value" id="k+!*msQ}b;NOO^|NK4_"> <field name="ATTR">val</field> <field name="OID">eigene_Variablen.0.Pool_Variablen.Pool_Modus</field> </block> </value> <value name="B"> <block type="logic_boolean" id="U2dHT?kVqr_zr]Z!XBR">
              <field name="BOOL">TRUE</field>
              </block>
              </value>
              </block>
              </value>
              <statement name="DO0">
              <block type="control" id="1YSh;]A-5/YGev6yVq,n">
              <mutation delay_input="false"></mutation>
              <field name="OID">broadlink2.0.SP:BroadLink-Poolpumpe</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="logic_boolean" id="Q+M+Pb+A(w+n|.]Z706%">
              <field name="BOOL">TRUE</field>
              </block>
              </value>
              <next>
              <block type="timeouts_setinterval" id="7pV?9mEYV,^4y6k@/KJx">
              <field name="NAME">Intervall2</field>
              <field name="INTERVAL">1</field>
              <field name="UNIT">min</field>
              <statement name="STATEMENT">
              <block type="math_change" id="Ji!GUZ2}P=xMbVO019gv">
              <field name="VAR">count</field>
              <value name="DELTA">
              <shadow type="math_number" id="aYBTW+WrkwBI1gTh4/Xs">
              <field name="NUM">1</field>
              </shadow>
              </value>
              <next>
              <block type="control" id="zNC4[Ytqig^exdo
              -Chb">
              <mutation delay_input="false"></mutation>
              <field name="OID">eigene_Variablen.0.Pool_Variablen.Pool_Heizung_Restlaufzeit</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="variables_get" id="3j3zn,IMSiq
              AAh:*9a|">
              <field name="VAR">count</field>
              </block>
              </value>
              <next>
              <block type="controls_if" id="L3.atG}#H?lm(!r.:KU=">
              <value name="IF0">
              <block type="logic_compare" id="CYA|Z?@pdL;kb+zN;]g"> <field name="OP">GTE</field> <value name="A"> <block type="variables_get" id=":(n%3R95VAjn;;3SLf]">
              <field name="VAR">count</field>
              </block>
              </value>
              <value name="B">
              <block type="math_number" id="Z^r~lDBVj;gNmQwRJIQo">
              <field name="NUM">180</field>
              </block>
              </value>
              </block>
              </value>
              <statement name="DO0">
              <block type="control" id="%KbcswkjmnWZV2{#J)yD">
              <mutation delay_input="false"></mutation>
              <field name="OID">broadlink2.0.SP:BroadLink-Poolpumpe</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="logic_boolean" id="3Y%d[bD:T|,Y/BnY5))V">
              <field name="BOOL">FALSE</field>
              </block>
              </value>
              <next>
              <block type="timeouts_clearinterval" id="BwkTxD3={Y}C)xbCy)f}">
              <field name="NAME">Intervall2</field>
              </block>
              </next>
              </block>
              </statement>
              </block>
              </next>
              </block>
              </next>
              </block>
              </statement>
              </block>
              </next>
              </block>
              </statement>
              </block>
              </statement>
              <next>
              <block type="schedule" id="mlpDIa|H7SC!-f2-I3Y"> <field name="SCHEDULE">0 0 * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="fONhV+#aPNW|o3Io1Yt@"> <field name="VAR">count</field> <value name="VALUE"> <block type="math_number" id="@8FN=@{_L4Q)CTUO]sJ">
              <field name="NUM">0</field>
              </block>
              </value>
              <next>
              <block type="control" id="f+wJCkS|CU!v:/QNh3M[">
              <mutation delay_input="false"></mutation>
              <field name="OID">eigene_Variablen.0.Pool_Variablen.Pool_Heizung_Restlaufzeit</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
              <block type="variables_get" id="BrIw[Cf1zEZCJDk:VXK0">
              <field name="VAR">count</field>
              </block>
              </value>
              </block>
              </next>
              </block>
              </statement>
              </block>
              </next>
              </block>
              </next>
              </block>
              </next>
              </block>
              </next>
              </block>
              </next>
              </block>
              </xml>

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

                @weimaraner sagte:

                Das müßte doch funktionieren?

                Im Prinzip ja, nur vermisse ich ein Rücksetzen von count auf 0.
                Die Abfrage auf "vorheriger Wert" ist überflüssig, da auf Wertänderung getriggert wird und der Datenpunkt nur 2 Werte (false/true) annehmen kann.

                @weimaraner sagte in [Frage] zwei Trigger erlaubt?:

                Ein bißchen "unschlank" das ganze

                Ja, deshalb packt gleiche Abläufe in eine Funktion. Dann braucht man auch nur ein Intervall.

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

                  Danke schön, für deine Hilfe und Antwort.

                  @paul53 sagte in [Frage] zwei Trigger erlaubt?:

                  Im Prinzip ja, nur vermisse ich ein Rücksetzen von count auf 0.

                  Das Rücksetzen war im screenshot nicht zu sehen. Das erfolgt 00:00 Uhr mit extra Trigger
                  Grüße Andreas

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

                    @weimaraner sagte:

                    erfolgt 00:00 Uhr mit extra Trigger

                    Weshalb nicht um 10:00 Uhr ? Etwa so

                    Blockly_Trigger_Schedule_Poolpumpe.JPG

                    1 Reply Last reply Reply Quote 1
                    • W
                      weimaraner last edited by

                      Oh Mann! Klasse!!!
                      👍
                      Das baue ich nach (und habe es verstanden 😇 )
                      Danke und Grüße
                      Andreas

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      876
                      Online

                      31.9k
                      Users

                      80.2k
                      Topics

                      1.3m
                      Posts

                      blockly
                      3
                      9
                      842
                      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