Ich wollte schon immer das Badezimmerlicht automatisieren, nur leider ist die Presence Erfassung nicht so leicht, und wenn Wer unbeweglich auf dem Lokus sitzt, geht Dem irgendwann das Licht aus und es muss "gewedelt" werden um dem Bewegungsmelder (weiter als BWM bezeichenet) seine Anwesendheit zu zeigen, das gleiche gilt natürlich für die Dusche, da der Vorhang den Melder blockiert.
Material:
1x Shelly Plus1 hinter dem Lichtschalter (geht auch mit "ohne" Plus)
1x Aquara Door and Window Sensor , oder ein Shelly D/W2 an dem ein Riegelschaltkontakt an den Reedkontakt gelötet wird.
1x Aquara Motion Sensor, oder ein Shelly Motion
Also ich hab den BWM an das Türblatt geklebt, beim "bewegen" der Tür wird die Auslösung gestartet.
In die Riegelaufnahme im Türrahmen hab ich den Aquara Sensor eingebaut und einen kleinen Magneten in den Schlossriegel eingebohrt.
Einbau.png Fertig.png Magnet.png
Das Blockly ist recht einfach aufgebaut:
Der Triggerblock erwartet eine Änderung egal welche vom BWM
Der "Falls" Prüfblock ist erfüllt wenn der BWM "wahr" ODER der Magnetsensor "false" (Zustand wenn die Tür von innen verriegelt wird) meldet.
Das Licht wird eingeschaltet durch ein WAHR an den Shelly..../Relay0/Switch, ein möglicherweise laufender Timer wird gestoppt.
Keine Bewegung oder die entriegeltet Tür führt zum Starten des Timer, der dann den Switch wieder mit FALSE nach 30s ausschaltet.
Spoiler anzeigen
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable type="timeout" id="Licht Aus">Licht Aus</variable>
</variables>
<block type="on" id="wo@m|fL`n/t$,A7/nt.P" x="-513" y="12">
<field name="OID">deconz.0.Sensors.5.presence</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="wiw9bz9,Tc=mN;Hh~Zsg">
<mutation else="1"></mutation>
<value name="IF0">
<block type="logic_operation" id="~x`]zj|pp;Q3?0.?v4Lu" inline="false">
<field name="OP">OR</field>
<value name="A">
<block type="logic_compare" id="z-q=*5Gg~j3Gn]N~5xBB">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value_var" id=":M{vVdF*a`9TaTB#F{g2">
<field name="ATTR">val</field>
<value name="OID">
<shadow type="text" id="s5@m5.bE9Or#vhwX{K=j">
<field name="TEXT"></field>
</shadow>
<block type="field_oid" id="CbVsy):,F(01tjxKMgX+">
<field name="oid">deconz.0.Sensors.5.presence</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="O5N3:4IX^Tm0y3qs*z@]">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="xfWy?f,*}GqF+*FDLc5w">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value_var" id="uD/%)V)iLyNmpQk:;(EJ">
<field name="ATTR">val</field>
<value name="OID">
<shadow type="text">
<field name="TEXT"></field>
</shadow>
<block type="field_oid" id="co4H+NnWWvFd$XpStQ3U">
<field name="oid">deconz.0.Sensors.7.open</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="iS-i9n[I]=OiKO9#IzA+">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="Q9gK`s6q}ZOjhs9.r3MH">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">shelly.1.shellyplus1#a8032abdb6c0#1.Relay0.Switch</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="TcZ6mK9]DRil!huMM)q7">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="timeouts_cleartimeout" id="oYzzAHTksc:W(Y#d:Cyb">
<field name="NAME">Licht Aus</field>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block type="timeouts_settimeout" id="2n:4.indg0]^|P9yq,`j">
<field name="NAME">Licht Aus</field>
<field name="DELAY">30</field>
<field name="UNIT">sec</field>
<statement name="STATEMENT">
<block type="control" id="}/HAt|cjcWM%7PJ}-;57">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">shelly.1.shellyplus1#a8032abdb6c0#1.Relay0.Switch</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="L2Ow#|XO4k|-1t9Aex6E">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Alles anzeigen