NEWS
[Gelöst] Baustein Pause mit einer Variablen steuern
-
Hallo,
ich möchte den Baustein Pause mit einer Variablen steuern.
Wie kann man dies erreichen?VG
Krodon
-
@krodon sagte in Baustein Pause mit einer Variablen steuern:
Wie kann man dies erreichen?
Das geht in Blockly nur mit 'nem Timeout.
Dazu müsste man aber Dein Script kennen, um zu sehen wie das umgebaut werden müsste. -
dies ist mein Script
Gibt es eine Möglichkeit die Variable script_running als boolean zu definieren?<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</variable> <variable id="(=l36|pgI.qU@9m`_g{7">TEMP_IN</variable> <variable id="9[2US%SGL2N^b(Tsy@=k">TEMP_OUT</variable> <variable id="a+ZYj4Kr@=r(ib}8V-RT">Script_running</variable> <variable id="[O^98u=12`NV3^mcfFE:">MAX_TEMP_IN</variable> <variable id="$c@6D|Va{@3kobMVymNy">MIN_TEMP_OUT</variable> </variables> <block type="variables_set" id="(bK#~LAKp!_EP)Ws^^l_" x="-262" y="-362"> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> <value name="VALUE"> <block type="text" id="km~-|R/fos6_Gheu$%c~"> <field name="TEXT">alias.0.Wohnzimmer.Schalter.Kontakt_Kueche_Fenster.ON</field> </block> </value> <next> <block type="variables_set" id="wyOUF0y/|U;pg#]4R!YP"> <field name="VAR" id="(=l36|pgI.qU@9m`_g{7">TEMP_IN</field> <value name="VALUE"> <block type="text" id="#oAb]pfPJ{{|.c~u8)=K"> <field name="TEXT">alias.0.Wohnzimmer.Temperatur.Temp_Wohnzimmer.TEMP</field> </block> </value> <next> <block type="variables_set" id="D6rXsQ`ePbC:AB(/`r[7"> <field name="VAR" id="9[2US%SGL2N^b(Tsy@=k">TEMP_OUT</field> <value name="VALUE"> <block type="text" id="k;Va6;*1O5LA7z92@k$L"> <field name="TEXT">alias.0.Aussen.Temperatur.Temp_Fenster.TEMP</field> </block> </value> <next> <block type="variables_set" id="0oA_3=Gn4y43Wf=A9`w,"> <field name="VAR" id="[O^98u=12`NV3^mcfFE:">MAX_TEMP_IN</field> <value name="VALUE"> <block type="text" id="b9nkllR]8}+},GOXcB5@"> <field name="TEXT">23</field> </block> </value> <next> <block type="variables_set" id="i39yu{Gr)c!xl@aAmC1*"> <field name="VAR" id="$c@6D|Va{@3kobMVymNy">MIN_TEMP_OUT</field> <value name="VALUE"> <block type="text" id="N7K,([3zJ*NAbyEXC[dN"> <field name="TEXT">16</field> </block> </value> <next> <block type="variables_set" id="P7T.+TmPZ*X4drYa?~VG"> <field name="VAR" id="a+ZYj4Kr@=r(ib}8V-RT">Script_running</field> <value name="VALUE"> <block type="text" id="OwEz`qZSWb[J1:;*!=}6"> <field name="TEXT">falsch</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="on_ext" id="$4/MN_pz^U-;!d)8%yDU" x="-237" y="-162"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Gn-_;~j$[,n@8vuf~a`I"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="k;1ybUt@g0AO/ab}4QKW"> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="ur?id6zQaR!Ei8;+Vf?/"> <value name="IF0"> <block type="logic_compare" id=",$uK#8vl!t1)K,$2AR;9"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="VWr|)0F4d-3qOSb0[el8"> <field name="VAR" id="a+ZYj4Kr@=r(ib}8V-RT">Script_running</field> </block> </value> <value name="B"> <block type="text" id="1cEM+9V:n-8U/e-k?7RV"> <field name="TEXT">falsch</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="(3-ExzSRdCJUCVUL1yFu"> <field name="VAR" id="a+ZYj4Kr@=r(ib}8V-RT">Script_running</field> <value name="VALUE"> <block type="text" id="W@kE%#dpG|Z$#GgIGVk2"> <field name="TEXT">wahr</field> </block> </value> <next> <block type="controls_if" id=",VVj5Az/P2G!YmUsX9]{"> <value name="IF0"> <block type="logic_multi_and" id="=Ek2waq5uw8%92]F,g;~"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="AND0"> <block type="logic_compare" id="xSM.Bql~N2K}rn)%)/,G"> <field name="OP">LT</field> <value name="A"> <block type="get_value_var" id="~yOi`ZI`NujfpU@cyd:B"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id=".3*L#hftMoY`X3N;ou_u"> <field name="oid">mihome.0.devices.weather_v1_158d0002310462.temperature</field> </shadow> <block type="variables_get" id="@%VqmJ6h`38XN6_3?]X!"> <field name="VAR" id="9[2US%SGL2N^b(Tsy@=k">TEMP_OUT</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="MF)j?tyg=U17v;FerXy]"> <field name="VAR" id="$c@6D|Va{@3kobMVymNy">MIN_TEMP_OUT</field> </block> </value> </block> </value> <value name="AND1"> <block type="logic_compare" id="Pwd8]!,HA2u^gKJyNgX/"> <field name="OP">LT</field> <value name="A"> <block type="get_value_var" id="ZL{YT8csafVb)(;D;sXX"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="D%QC2+BEGr;A%ekS~8h)"> <field name="oid">alias.0.Wohnzimmer.Schalter.Kontakt_Fenster_Küche.ACTUAL</field> </shadow> <block type="variables_get" id="jVhvzFhwJrxYEm[JBk2E"> <field name="VAR" id="(=l36|pgI.qU@9m`_g{7">TEMP_IN</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="nb$wCPL],9Np?}S+4fM("> <field name="VAR" id="[O^98u=12`NV3^mcfFE:">MAX_TEMP_IN</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_wait" id="?]pZR%Z~PUBG!?%u?0[}"> <field name="DELAY">5</field> <field name="UNIT">min</field> <next> <block type="controls_whileUntil" id="PTF^y^/3qZAQG[3DrvLs"> <field name="MODE">UNTIL</field> <value name="BOOL"> <block type="logic_compare" id="t~HOS]G;*YYCn*Tw_O0_"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id=",Hn_)4G{C%1L+Qk)NVPF"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="f]!+q3AXx`Hl^vmagbYG"> <field name="oid">mihome.0.devices.magnet_158d0002e21c0e.state</field> </shadow> <block type="variables_get" id="jzJ42MkDl:,STHl.XFj="> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="LWUFu(hFBM-M^:7:Zbzk"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO"> <block type="control" id="y1I:CN#mnyK?xQslwKmz"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0P30774060J6E.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="o4QUZ8o{Dd7W~pLsEJ}!"> <field name="NUM">80</field> </block> </value> <next> <block type="control" id="y8qt+Sn]4%=ym@kmHNiH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0P30774060J6E.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="4DkqD65C%=L*i1:B/n~@"> <field name="TEXT">Bitte Fenster schließen</field> </block> </value> <next> <block type="control" id=")Rl5BviN2iR?6k[SWA0B"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0P30774060J6E.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=".!de4|q[~q{rg9g/C@WK"> <field name="NUM">40</field> </block> </value> <next> <block type="timeouts_wait" id="1P#yvWbPD9p}|WBP6M[%"> <field name="DELAY">1</field> <field name="UNIT">min</field> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> <next> <block type="variables_set" id="*=QR*A,NW6Py=?G`7OH]"> <field name="VAR" id="a+ZYj4Kr@=r(ib}8V-RT">Script_running</field> <value name="VALUE"> <block type="text" id="k1NXT(4#gtm7h(-0B2?4"> <field name="TEXT">falsch</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> <block type="on_ext" id="2TeFI;fS|`P[[(hMljxY" collapsed="true" x="-937" y="-87"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">lt</field> <field name="ACK_CONDITION"></field> <comment pinned="false" h="80" w="160">Alias TEMP muss schreibbar sein</comment> <value name="OID0"> <shadow type="field_oid" id="f0zx9abiQNfYY:w@FO:P"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="0A-JQR+kcy=M|]Tp}/C_"> <field name="VAR" id="(=l36|pgI.qU@9m`_g{7">TEMP_IN</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="vbxR--$:i]v!l5A3}b,4"> <value name="IF0"> <block type="logic_compare" id="7EEIjHyKOp}Rv]aVhY:H"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id=",T{rZDiy6H/^6po[[N%_"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="5bRyLyc(yj4^saydS2!B"> <field name="oid">mihome.0.devices.weather_v1_158d0002310462.temperature</field> </shadow> <block type="variables_get" id="`}+(6Fu^rWtoneOA70qI"> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="*0M]Z9Xu[R5!G9F9MeJ]"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="yV4]?}$O`b[E,KRxlTpJ"> <value name="IF0"> <block type="logic_compare" id="CrfQ(1.x@EmsI`z@`vc`"> <field name="OP">LT</field> <value name="A"> <block type="get_value_var" id="tTD!h^Rddb*|kopW^gg+"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="(}^*-%5hMx=r_0zujJ-3"> <field name="oid">alias.0.Wohnzimmer.Schalter.Kontakt_Fenster_Küche.ACTUAL</field> </shadow> <block type="variables_get" id="SacPFj|/z!ao|({dn(TW"> <field name="VAR" id="(=l36|pgI.qU@9m`_g{7">TEMP_IN</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="9dgz2CIw0-^FeZ4bo2WW"> <field name="VAR" id="[O^98u=12`NV3^mcfFE:">MAX_TEMP_IN</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="oQfdX1I`#dHSJr8;{)Ao" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="VNRF6*mw^oFvyUeYzm]@"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="B}crz!JV#.K#5xkMO2K+"> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="M6O1!)7Ab%%w2RM:7#Sp"> <field name="BOOL">TRUE</field> </shadow> <block type="logic_boolean" id="zc~QTQ7kS8;_c1U0Hwo1"> <field name="BOOL">FALSE</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="IhWHJ|^{Biyq@WCBRA1f"> <field name="NUM">1000</field> </shadow> </value> <value name="EXPIRE"> <shadow type="math_number" id="(Lm4k?kCkMSNkSR[i.yM"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="cUy,!NT:g2he;%_%^-,h" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="VNRF6*mw^oFvyUeYzm]@"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="QUz$cqW-_#,AYwg$+*gO"> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="M6O1!)7Ab%%w2RM:7#Sp"> <field name="BOOL">TRUE</field> </shadow> <block type="logic_boolean" id="UTG|E,|gA}%o}rtC|7=U"> <field name="BOOL">TRUE</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="!o37Rk35f%K,?u|pNC3e"> <field name="NUM">1000</field> </shadow> </value> <value name="EXPIRE"> <shadow type="math_number" id="NmW6^+o]0,_{!%fC^tU2"> <field name="NUM">0</field> </shadow> </value> <next> <block type="controls_whileUntil" id="u_v~Sb`V;64WPx9F_OsF"> <field name="MODE">UNTIL</field> <comment pinned="false" h="80" w="160">Verhindern, dass Alarm neu getriggert wird</comment> <value name="BOOL"> <block type="logic_compare" id="/Kv7+2}@ykIpEp:sZC~G"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="z6W|D:2|B`K53pfEHLST"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="D%QC2+BEGr;A%ekS~8h)"> <field name="oid">alias.0.Wohnzimmer.Schalter.Kontakt_Fenster_Küche.ACTUAL</field> </shadow> <block type="variables_get" id=")6~C)cCPf#?J,bC;dN5K"> <field name="VAR" id="A~cp$k8}GMY@D5blL%X4">Sensor_OPEN</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="u@,6NLdTXUBNn{RAD)$w"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </xml>
VG
Krodon
-
@krodon sagte in Baustein Pause mit einer Variablen steuern:
Gibt es eine Möglichkeit die Variable script_running als boolean zu definieren?
Javascript ist nicht typisiert. Der Typ einer Variablen wird durch die Verwendung definiert.
Da Du da einen String reinstopfst, ist das dann eine Variable vom Typ String.Steck da einen bool'schen Wert rein.
-
@krodon sagte in Baustein Pause mit einer Variablen steuern:
die Variable script_running als boolean zu definieren?
wie schon @Codierknecht schrieb.
Du hattest die falschen Bausteine, nämlich Text statt bool -
@codierknecht das hatte ich zuerst probiert, dann hatte ich aber ein warning das ein string erwartet wird. Soll ich die Variable neu definieren und gleich boolean zuweisen?
VG
Krodon
P.S. nun bekomme ich sie nicht mehr
-
@krodon Diese Art Skript ist eindeutig nicht günstig. Die Verwendung der Pause macht da keinerlei Sinn.
Statt dessen sollte das so aussehen:
Dann kannst du dir das mit dem 'Skript running' sparen.
Warum ?
Generell ist es in einem 'Ereignis-getriebenen' System wie dem ioBroker wenig Sinnvoll regelmässig nachzuschauen ob eine Bedingung erfüllt ist. Das ist was Du in der 'Wiederhole-Bis' Schleife machst. Besser ist es, einfach das Ereignis vom System zu holen - sprich über den Trigger.
Dazu kommt das Du auf 'ist wahr' Triggerst - das ist der ungünstigste aller Trigger, da dieser nicht auf eine Statusänderung sondern auf eine Statusaktualisierung reagiert.In Kombination macht das die Nutzung eines Triggers auf 'wurde geändert' vorteilhaft. Beim Wechsel von
falsch
aufwahr
willst Du deine Meldungs-Geschichte starten. Beim Wechsel vonwahr
auffalsch
willst du sie anhalten.Da man 'mache solange' nicht von aussen anhalten kann bietet sich statt dessen das Intervall an. Mach das alle x Minuten bis irgendwer dir sagt das Schluss ist. irgendwer kann in diesem fall von Innerhalb des Intervalls oder von Ausserhalb des Intervalls kommen. In deinem Fall ist von Aussen ideal - der Sensor ist da ja das steuernde Gerät.
Bleibt noch die Verzögerung um 5 Minuten - dafür ist der Timeout.
A.
-
@asgothian Danke!
Die Erklärung hat mir sehr geholfen. Nun sehe ich den Trigger anders.
So kann ich auch eine Variable für Pause einsetzen. (Die ursprüngliche Frage)
VGKrodon
-
@asgothian hat sich erledigt!
-
Manchmal sieht man den Wald vor lauter Bäumen nicht. In den Block Pause kann man auch den Namen der Variablen eintragen
VG
Krodon