Problemstellung:
Vor ein paar Tagen habe ich den Motion bekommen und musste ihn natürlich gleich auf Herz und Nieren prüfen. Zunächst habe ich ihn provisorisch im EG Flur installiert. Hier bekommt er somit die meisten Bewegungen im ganzen Haus mit. Da ich soviel wie möglich akku sparen wollte habe ich operation modus auf "dark" gestellt und die Luxschwelle auf 10 Lux gesetzt. So nun kommt wie es kommen musste. Es wurde dunkel und ich gehe in den Flur und zack licht geht an. Cool dachte ich mir, das funzt ja wirklich gut. Die Blindtime steht auf 60s. Also habe ich mich länger als 60s im Flur aufgehalten und auf einmal geht das licht aus. Was soll das dachte ich mir noch und zückte das Handy und wählte mich auf den shelly per browser. Also nochmal in den Flur und siehe da, trotz Bewegung zählt der counter runter und licht geht aus. Da durch das Licht der Lampen, der Luxwert meiner Darkschwelle überschritten wird erkennt der shelly keinerlei Bewegung mehr. Ich frage mich echt, wer bei shelly auf so eine bekloppte logik gekommen ist....
Lösung:
Ich habe ein kleines Blockly geschrieben, auf dem die Variable des Motions getriggert wird. Wird nun eine Bewegung im modus dark erkannt, wird wie gewünscht das licht eingeschaltet. Mit einem kurzen Zeitversatz von 1s wird zusätzlich ein http request an den motion gesendet. Hierbei schalte ich vom Modus dark auf den modus any um. Nun wird wie gewünscht alle bewegungen erkannt und dementsprechend die Laufzeit verlängert.
Folgt keine Bewegung mehr, schaltet das Script das LIcht wieder aus und 1s später wird per request wieder auf modus dark umgeschalten.
Ihr könnt natürlich jede andere Kombination der einzelnen Modi wählen. Einfach nur im Text beim request die letzte Zahl anpassen.
0 = Any
1 = Dark
2 = Twilight
3 = Bright
Natürlich muss euere IP-Adresse des Shellys angepasst werden.
<block xmlns="http://www.w3.org/1999/xhtml" type="on" id="D|N`4kxmOl0=W^SEn(*~" x="112.66668701171875" y="-312.6666717529297">
<field name="OID">shelly.0.SHMOS-01#60A4239A5D4A#1.sensor.motion</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="N?xYIbNeelWBY#wsjqjK">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="q(hrMv^v/vr2.i_CC~-R">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="$dP-|zjsr5mJ8=UhRt3a">
<field name="ATTR">val</field>
<field name="OID">shelly.0.SHMOS-01#60A4239A5D4A#1.sensor.motion</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="02kHRgvfw=y.+P/h--=R">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="R/SO5$F9qI/dpRbAdKU0">
<mutation delay_input="false"></mutation>
<field name="OID">shelly.0.SHSW-25#F40164#1.Relay0.Switch</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="ZozMANq|,5/pO?qDk}y%">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="timeouts_settimeout" id="_WvIq]hX`1Y#GbcsOh9w">
<field name="NAME">timeout</field>
<field name="DELAY">1</field>
<field name="UNIT">sec</field>
<statement name="STATEMENT">
<block type="request" id="UO6$?K3DR6~1aV6:EYfo">
<mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="AgN~+xHz|b)MmQbOP3pe">
<field name="TEXT">http://192.168.xxx.xxx/settings?motion_operating_mode=0</field>
</shadow>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="l]XfnY0/48wjdqxKkfXF">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="whYU|Mn]+tdbs[az;dy@">
<field name="ATTR">val</field>
<field name="OID">shelly.0.SHMOS-01#60A4239A5D4A#1.sensor.motion</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="`dMxBN%=/9`kcf.dn{4$">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="control" id="Q0_CDp]=1b-4kbAeY1DA">
<mutation delay_input="false"></mutation>
<field name="OID">shelly.0.SHSW-25#F40164#1.Relay0.Switch</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="|Jxg9=J#n{,lvU[AO.oi">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="timeouts_settimeout" id="n[4ot]KfUVj]}x|o:pDw">
<field name="NAME">timeout2</field>
<field name="DELAY">1</field>
<field name="UNIT">sec</field>
<statement name="STATEMENT">
<block type="request" id="6Yp.qgW)#JkmQRvDpuCH">
<mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="URL">
<shadow type="text" id="ln(d!_k.$YWaa/^.`ct4">
<field name="TEXT">http://192.168.xxx.xxx/settings?motion_operating_mode=1</field>
</shadow>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
Alles anzeigen