NEWS
Monitor mit Bewegungmelder koppeln.. sporadisches Verhalten
-
Hallo zusammen,
ich habe bei mir im Flur einen Bewegungsmelder und Steuere darüber einen Sonoff S20 der dann einen Monitor ein und auschaltet.
jetzt hab ich das problem das irgentwie mein Blockly nicht richtig funktioniert.
hat jemand eine idee wo da der fehler liegt ?
Der Monitor geht auch an und bleibt auch an... solte er auch (5min) aber wenn der Bewegungsmelder wieder ein Bewegung erkannt hat, schaltet er den Monitor wieder aus. -
@rubi007 sagte in Monitor mit Bewegungmelder koppeln.. sporadisches Verhalten:
einen Bewegungsmelder
und welchen?
du hast wurde geändert beim Trigger, gehe davon aus, das dein BWM(xiaomi) für 120sek auf true bleibt und dann der DP wieder auf false schaltet. Dadurch schaltet entsprechend dein Script. Also müsstest du auf "wahr" triggern -
@crunchip nein, ich habe den von der HomeMatic HM-Sec-MDIR-2
-
@rubi007 probiere es doch so zu lösen:
Entweder Variante 1 oder 2
-
@rubi007 sagte:
wenn der Bewegungsmelder wieder ein Bewegung erkannt hat, schaltet er den Monitor wieder aus.
Es können mehrere Timer laufen, denn es fehlt "stop timeout". Vorschlag:
Wert findet man unter "Trigger".
-
jetzt habe ich es so gemacht... und nur so funktioniert es
aber wie kann ich es ermöglichen, das wenn ich jetzt in dem 1 min Countdown wieder eine Bewegung erkannt wird das er wieder den Counter zurücksetzt? -
@rubi007 ich muss dich da leider enttäuschen, auch der Programmaufbau wird nicht so funktionieren wie du das gern möchtest. wie @paul53 schon schrieb, fehlt dir der "stop timeout". Jedesmal wenn in deinem Programm eine Bewegung erkannt wird, wird ein neuer "timeout" gestartet, dadurch können mehrere "timeout" parallel laufen, daher musst du zuvor immer sicherstellen das du beim einschalten des Monitors den letzten aktiven "timeout" stoppst, auch wenn vielleicht keiner mehr läuft.
Als Vorschlag hätte ich zwei Varianten die du versuchen könntest:
Variante 1: Ohne "timeout"
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="?$ZL{)2ZrU?V0x83{lJr" x="788" y="88"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="yNzDiLRx@jk{)/w0~Cos"> <field name="oid">default</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="55;}3SEt7To9QDNn.i-U"> <field name="COMMENT">Monitor ein sofern eine Bewegung erkannt wurde</field> <next> <block type="controls_if" id="XZPE*IGWxQ`/sWhiD}Xx"> <value name="IF0"> <block type="on_source" id="J!lUX,GiUaSJG{KpdSa1"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="comment" id="`/A6sHRbn2{Mm/N%[}TS"> <field name="COMMENT">Setzt die Ausschaltung des Monitors zurück</field> <next> <block type="timeouts_cleartimeout" id="2We4E#4F|OuN=fF.{=S^"> <field name="NAME">timeout</field> <next> <block type="comment" id="QPJZHFFLVWWdD^30~t-z"> <field name="COMMENT">Schaltet den Monitor ein</field> <next> <block type="control" id="DMK?M;{W-jB3taA4pJwW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="f^=Yz[wvo?-{z:[jOx.I"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="comment" id=",c5Mk?0Lz$bDcZZW:M4s"> <field name="COMMENT">Schaltet den Monitor verzögert aus</field> <next> <block type="control" id="wBbgV9}phr{qN,Wb[W=r"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="logic_boolean" id="1o-AG]v?Bkte.o(-Mx3)"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block>
Variante 2: mit "timeout"
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="rjD}^APo;r]YUqQk-blt">bMonitorAktive</variable> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="variables_set" id="#9h-kqI5nfnuZlt/l*4C" x="188" y="87"> <field name="VAR" id="rjD}^APo;r]YUqQk-blt">bMonitorAktive</field> <value name="VALUE"> <block type="logic_boolean" id="!3Z$-zWwoQ=ZGpb]3j1X"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="on_ext" id="N7^~#LguXF_yn-04ID7q"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="n#ZEudDIMVwSJ8qXT2U#"> <field name="oid">default</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="Kh[tf*j4$PtvL+4}!Ii}"> <field name="COMMENT">Monitor ein sofern eine Bewegung erkannt wurde</field> <next> <block type="controls_if" id="(J:oJ{ITDHHQS5Xbwx5P"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="on_source" id="pfb.JnNTJ1{5e3J-`gA-"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="comment" id="-ZQTeQVbJOjphyyeVzU+"> <field name="COMMENT">Setzt die Ausschaltung des Monitors zurück</field> <next> <block type="timeouts_cleartimeout" id="_SX;*L-/BZkqSx,B?ajG"> <field name="NAME">timeout</field> <next> <block type="comment" id="`ZPq`N,m0b0(m#rFXY;P"> <field name="COMMENT">Schaltet den Monitor ein, sofern dieser noch nicht läuft</field> <next> <block type="controls_if" id="wF=yD+empyUk?7mki!Q7"> <value name="IF0"> <block type="logic_negate" id="b]6H?*sX?0CdSZJV:m~k"> <value name="BOOL"> <block type="variables_get" id="t4^O{|o:IuHl}lcu;99o"> <field name="VAR" id="rjD}^APo;r]YUqQk-blt">bMonitorAktive</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="Y`{_yb@d`EI^Z9dPpIJ7"> <field name="VAR" id="rjD}^APo;r]YUqQk-blt">bMonitorAktive</field> <value name="VALUE"> <block type="logic_boolean" id="(Wt.nRsGi4hi7h!XI]^M"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="[uU2Q9LTC2s~AIVQg[sI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="qx(j|HSE;GI-N{Ditw_G"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="variables_get" id="^@|psTCOIlRjfOCM~$^}"> <field name="VAR" id="rjD}^APo;r]YUqQk-blt">bMonitorAktive</field> </block> </value> <statement name="DO1"> <block type="comment" id="2O4omiHfjGl1@+.T]861"> <field name="COMMENT">wird nur ausgeführt, wenn Monitor zuvor eingeschaltet war</field> <next> <block type="timeouts_settimeout" id="YAf/_]q(Cc-pp4sH$Yas"> <field name="NAME">timeout</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="u;msjChQOxMPizhJH*,k"> <field name="VAR" id="rjD}^APo;r]YUqQk-blt">bMonitorAktive</field> <value name="VALUE"> <block type="logic_boolean" id="}(cCAEV9BGe+:2F+A=t["> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="^HPkihaU6gf!(OfrFlg/"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="MdG#WVkn,C.KY/5(*2WH"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
@ferris sagte:
Variante 1: Ohne "timeout"
Woher nimmst Du die Variable timeout für "stop timeout" ?
Der Haken bei "löschen falls läuft" ist wichtig. -
@paul53 sagte:
Woher nimmst Du die Variable timeout für "stop timeout" ?
Ach verdammt, das ist noch ein Fehler im Programmablauf den ich vergessen habe zu löschen. Die Variable "timeout" wird für die Variante 1 nicht benötig und sollte gelöscht werden.
Der Haken bei "löschen falls läuft" ist wichtig.
ja, ganz genau, sonst würde weiterhin der von @rubi007 beschriebene Fehler auftreten.
Variante 1 nochmal korrigiert:
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="?$ZL{)2ZrU?V0x83{lJr" x="838" y="213"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="yNzDiLRx@jk{)/w0~Cos"> <field name="oid">default</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="55;}3SEt7To9QDNn.i-U"> <field name="COMMENT">Monitor ein sofern eine Bewegung erkannt wurde</field> <next> <block type="controls_if" id="XZPE*IGWxQ`/sWhiD}Xx"> <value name="IF0"> <block type="on_source" id="J!lUX,GiUaSJG{KpdSa1"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="comment" id="QPJZHFFLVWWdD^30~t-z"> <field name="COMMENT">Schaltet den Monitor ein</field> <next> <block type="control" id="DMK?M;{W-jB3taA4pJwW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="f^=Yz[wvo?-{z:[jOx.I"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="comment" id=",c5Mk?0Lz$bDcZZW:M4s"> <field name="COMMENT">Schaltet den Monitor verzögert aus</field> <next> <block type="control" id="wBbgV9}phr{qN,Wb[W=r"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="logic_boolean" id="1o-AG]v?Bkte.o(-Mx3)"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block>