NEWS
[gelöst] Luftfeuchtewarnung mit Pushnachricht per Blockly Skript
-
Moin Leute,
ich habe mir einen kleinen Skript per Blockly gebaut (mein erster), der mir ein Pushnachricht aufs Handy schickt wenn die rF einen bestimmten Wert überschreitet.
Da der DHT11 an meiner Tasmota Steckdose aber stark schwankende Werte ausgibt, möchte ich eine Zeitliche Beschränkung einbauen.
bsw:
WENN rF - länger als 5 min - >65% - DANN Pushnachricht
Ich habe bereits vergeblich versucht, mit Hilfe dieses Beitrags weiter zu kommen: http://forum.iobroker.net/viewtopic.php?f=21&t=8451
Es geht wirklich nur um die zeitliche Komponente "länger als X min", der Rest klappt.
Ich hänge mal mein Blockly ohne Zeit und meinen Versuch mit Zeit an.
Ich bin wirklich noch blutiger Anfänger, also habt ein Nachsehen mit mir
5102_v1.png
5102_v2.png -
Hallo rootmind
Versuche es mal so.
Export
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="kLonBeQvG.KoJMmg5%g?" x="63" y="-37"><field name="COMMENT">Bei Scriptstart</field>
<next><block type="variables_set" id="Pj5V(Ve-sQXt#H8f[bt]"><field name="VAR">TimerON</field>
<value name="VALUE"><block type="logic_boolean" id="]WFL-ZnNxE/v2RXB4UHG"><field name="BOOL">FALSE</field></block></value>
<next><block type="comment" id="j:I##5S+:@EuY2#4su|0"><field name="COMMENT">Triggern</field>
<next><block type="on" id="Rz_^/6UMyR`.jKuwYC/;"><field name="OID">Object ID</field>
<field name="CONDITION">ne</field><statement name="STATEMENT"><block type="controls_if" id="qg)MFPZiPopCBCag,Qw`"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="1{tFJ^dTId:s@?xo7l-7"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="pxTUdhbX1nMny=?`Y_Wy"><field name="OP">GT</field> <value name="A"><block type="on_source" id="4n{f!HO-B;r2/C_ISfdX"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="math_number" id="}CLZzqM|BL):B`y9zc+N"><field name="NUM">65</field></block></value></block></value> <value name="B"><block type="logic_compare" id="L.652iTHGuM#qdn=4T#4"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="AO%V:YX8hktmOJiCS(dO"><field name="VAR">TimerON</field></block></value> <value name="B"><block type="logic_boolean" id="5}ZO[L|%oq9(B5)#^t5a"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="=}B;+/^XnW8=d;@NY,*!"><field name="VAR">TimerON</field> <value name="VALUE"><block type="logic_boolean" id="kXSwR2Fp|#.cU@d^0tK_"><field name="BOOL">TRUE</field></block></value> <next><block type="timeouts_settimeout" id="i-Me`lvJ^^/d|=^zM7EQ"><field name="NAME">timeout</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="variables_set" id="r#Oc#qx`m7nhjarn3!!3"><field name="VAR">TimerON</field> <value name="VALUE"><block type="logic_boolean" id="VA9pP,2@B_W*u=69l7Ry"><field name="BOOL">FALSE</field></block></value> <next><block type="controls_if" id="]TOjv7p1q6]OOX!,[0+c"><value name="IF0"><block type="logic_compare" id="NKil.zte:s%BDB9hgT^O"><field name="OP">GT</field> <value name="A"><block type="get_value" id="eVv7Q9D|mUk7a5`d%9Me"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="math_number" id="ZSBCUW_g+*8w=~cw,/Q]"><field name="NUM">65</field></block></value></block></value> <statement name="DO0"><block type="sendto_custom" id="HT6/)}/l,%bhL1QuMpaf"><mutation items="parameter1" with_statement="false"></mutation> <field name="INSTANCE">pushover.0</field> <field name="COMMAND">send</field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"><shadow type="text" id="S|!z/4J7aPPV^_K#UvKt"></shadow></value></block></statement></block></next></block></statement></block></next></block></statement> <value name="IF1"><block type="logic_operation" id="@[mrh5:qnRb5)ED]F8C0"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="/0_@Ih+c*`|C-Zbpe3?3"><field name="OP">LT</field> <value name="A"><block type="on_source" id="O{xPoAT7jT(3zU0zI-xE"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="math_number" id="PTIgd{PC(!Wwv}5GJv8f"><field name="NUM">65</field></block></value></block></value> <value name="B"><block type="logic_compare" id="@x8J#So2CReiO(Rl+Ba4"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="_1z4g|86,5kTpInM}_KA"><field name="VAR">TimerON</field></block></value> <value name="B"><block type="logic_boolean" id=":^k4~vU/YLkes=8{7,N5"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO1"><block type="comment" id="5Q@[jeZSrJW#_3;JECR`"><field name="COMMENT">Falls der Wert wieder runter geht</field> <next><block type="variables_set" id="10#}9f#Fm0DYCErWj2h?"><field name="VAR">TimerON</field> <value name="VALUE"><block type="logic_boolean" id="|O/EaAEb4A(0E1TQF,ct"><field name="BOOL">FALSE</field></block></value> <next><block type="timeouts_cleartimeout" id="joxc-0(y74~by_}/@|F["><field name="NAME">timeout</field></block></next></block></next></block></statement></block></statement></block></next></block></next></block></next></block></xml>
! ````
Bei der Abfrage in dem Timer, kannst Du nicht den "Wert" nehmen den Du in der ersten Abfrage genommen hast.
Da muss man den aktuellen Wert des Aktors abfragen.
Grüße
-
Vielen Dank rantanplan für die schnelle Hilfe.
Auch wenn ich nur teilweise verstehe was du da zusammengebaut hast, habe ich mich mal
an den Nachbau gemacht. Testweise habe ich den Schwellenwert auf 40% runtergesetzt,
doch leider erfolgt keine Ausgabe
Vielleicht kann ja jemand den Fehler erkennen.
Das ganze sieht bei mir jetzt so aus:
5102_v3.png -
Setz doch mal ein paar debug Bausteine rein, die dir z.B. den Inhalt der Variablen herausgeben.
Zusätzlich noch ein paar mehr oder weniger sinnvolle Texte enthalten, damit du weißt wo sich das Skript gerade befindet,.
Gruß
rainer
-
Vielleicht kann ja jemand den Fehler erkennen. `
Hatte ich doch extra geschrieben.IN dem Timer MUSST Du den aktuellen Wert abfragen.
Also den Baustein "Wert von …." nehmen.
So wie ich es gemacht habe. Das hat schon seinen Sinn.
Der Trigger-Baustein "Wert" erhält seinen Inhalt, wenn der Trigger triggert.
Das muss nicht mit dem Ende des Timers übereinstimmen.
Grüße
-
Vielen Dank nochmal, mit der Änderung auf "Wert von…" klappts [emoji41]
Gesendet von meinem Pixel 2 mit Tapatalk