-
Autor
Zielsetzung: war das automatische Lichtein/ausschalten des Flurlicht in Abhängikeit eines Sensors.
Das Flurlicht in Wechselschaltung wurde mit einem Shelly1 erweitert. wenn die Automatik ausfällt, funktioniert die Schaltung weiter.
Auf einen AutoOFF Timer wurde deshalb verzichtet
Als Sensor Hardware nutzt ich einen Zigbee Presence Melder von Xioami, dieser ist an ioBroker mittels eines ConbeeII Funkstick angemeldet, mal YT durchsuchen.
Es ginge auch ein Shelly D/W denn es geht ja um einen Trigger der die Action auslöst. Dieser ist dann im "falls Objekt" Baustein zu wählen.
Der Melder ist im deconz Adaper zu finden, der Wert duration ist 40 Sekunden, solange bleibt der Melder auf true nach einer Erfassung.
Der Shelly Adapter ist installiert.
Objekt ist der "presence Eintrag, sein Wert wird erfasst, wenn Wahr wird der Switch (Shelly1 /Relay0/Switch) auf Wahr gesetzt
Wird nun innerhalb einer Wartezeit wieder getriggert bleibt das Licht an ansonsten wird das Licht wieder ausgeschaltet. Das Licht bleibt im kürzesten Fall die 40s + 20s Wartezeit an und wird bei jeder Bewegung innerhalb der Wartezeit verlängert.
Export als Blockly
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="wo@m|fL`n/t$,A7/nt.P" x="-405" y="71">
<field name="OID">deconz.0.Sensors.3.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">
<value name="IF0">
<block type="logic_compare" id="1gW-;g@^pp),3(r{gQ_2">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="wxU4vg3G:b1K@HrbLDPD">
<field name="ATTR">val</field>
<field name="OID">deconz.0.Sensors.3.presence</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id=",{V7{`+vmy)]$/=Vh|`T">
<field name="BOOL">TRUE</field>
</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.0.SHSW-1#68C63AFA6125#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>
</block>
</statement>
<next>
<block type="timeouts_wait" id="=fN^(E;oxCmSZTwxGufD">
<field name="DELAY">20</field>
<field name="UNIT">sec</field>
<next>
<block type="controls_if" id="w$[.R_2BM:Yv,ffhO-uo">
<value name="IF0">
<block type="logic_compare" id="e_dG(bb2L|!5I$*`CA0_">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="sLSoV^C:n~{fr`iO=fAT">
<field name="ATTR">val</field>
<field name="OID">deconz.0.Sensors.3.presence</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="NR(]4^FS9qmpAOYU[?lg">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="}/HAt|cjcWM%7PJ}-;57">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">shelly.0.SHSW-1#68C63AFA6125#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>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>
Alles anzeigen
Export als Script
on({id: "deconz.0.Sensors.3.presence"/*Presence 3 presence*/, change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("deconz.0.Sensors.3.presence").val == true) {
setState("shelly.0.SHSW-1#68C63AFA6125#1.Relay0.Switch"/*Switch*/, true);
}
await wait(20000);
if (getState("deconz.0.Sensors.3.presence").val == false) {
setState("shelly.0.SHSW-1#68C63AFA6125#1.Relay0.Switch"/*Switch*/, false);
}
});
Alles anzeigen
Zugegeben ein einfaches Script, aber wir fangen mal klein an