NEWS
Fehler? Screenon/off Blockly
-
Hallo,
ich habe ein Tablet welches üper fhem Adapter mir:
"microphone_detect" true/false
oder auch "motion_detect" true/false gibt.
Per ScreenOn/ScreenOff schalte ich dann Bildschirm AN/AUS.Nun überwache ich oben ja auf änderung der beiden Objekte.
Screen OFF soll dann gesendet werden wenn micro oder kameramotion für "5 Minuten" beide false sind ...
Sollte micro oder kameramotion in der Zeit auf true gehen soll der timer gestoppt werden und DIREKT screenON geschickt werden.Irgendwie funktioniert das sganze eher "schlecht". Ist da ein fehler drin ?
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout">timeout</variable> </variables> <block type="on_ext" id="f6_w*q@te8q$i*51z}2J" x="-88" y="-587"> <mutation items="2"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="9#z.u!^dhIjKbtU_D*yr"> <field name="oid">fhem.0.Winconnect_TABLET.motion_detect</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="`.CEgG0/$fKj?N!_wCc["> <field name="oid">fhem.0.Winconnect_TABLET.microphone_detect</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id=":VHx:]:BGzy(A:7]~I+w"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="N6;]|H_jO(sDQQ?w52lZ" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="pj`/H5z68f;xM`?eDV3$"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="0.Xs)xQ6xl2G^6aBn]e/"> <field name="ATTR">val</field> <field name="OID">fhem.0.Winconnect_TABLET.microphone_detect</field> </block> </value> <value name="B"> <block type="logic_boolean" id="7C*p(Qe9wod#4?7abHtr"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="3{-8!s{yg(*$S~_8AD{e"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="^8^A[#.X{_}[^Eia1`rU"> <field name="ATTR">val</field> <field name="OID">fhem.0.Winconnect_TABLET.motion_detect</field> </block> </value> <value name="B"> <block type="logic_boolean" id="qTvxnI]aKwVF}7Zy]|wV"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="#iucy%Ky:=;TlEMoUHSr"> <mutation delay_input="false"></mutation> <field name="OID">fhem.0.Winconnect_TABLET.screenOn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="(y$QJ%}%%$vAdf5*ZLjj"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="timeouts_cleartimeout" id="7+j,l)s1JP1bl)R8,$xp"> <field name="NAME">timeout</field> <next> <block type="timeouts_settimeout" id="};aAZH_7zq#J)m;6=;Fw"> <field name="NAME">timeout</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="9Sk_zDud9We/@B^SxUiu"> <mutation delay_input="false"></mutation> <field name="OID">fhem.0.Winconnect_TABLET.screenOff</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="uZwvsea:q?ap;@j=yy[Q"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
Bin zwar auch kein Blockly Profi, aber für mein Verständnis schaltet dein Script bei Bewegung oder Geräusch den Bildschirm an. Direkt danach wird ein 5-Min-Timer gestartet, der den Bildschirm dann wieder ausschaltet. Ich würde zum ausschalten erst nochmal auf "false" prüfen und das dann in den Timeout packen. Den "stop timeout" Block würde ich ganz oben hinsetzten, so dass bei erneuter Bewegung der Timer neu gestartet wird. Korrigiert mich wenn das falsch ist
-
hmm aber ich will ja das ich diesen 5 Minuten Puffer habe wenn in den 5 Minuten kein true von mikro oder Kamera gekommen ist dann ScreenOff. Der timer soll ja sofort gestoppt werden wenn irgendwo true kommt.
Es kommt ja oft vor das man noch im Raum ist aber eben nicht von der Kamera erfasst wird oder "laut" ist.
-
Das stop muss unter den oberen Teil, damit der timeout auch bei Bewegung und so gestoppt wird.
Enrico
-
@RappiRN Vielen Dank das klingt logisch