hallo zusammen,
ich habe meine rollos (3 stück) mit shelly 2 und tasmota firmenware aufgerüstet. nun möchte ich das ganze noch intelligent machen. das skript dafür habe ich eigentlich soweit fertig und funktioniert auch.
1. im zeitfenster von 21:30 und 5:30 uhr soll er die rollos automatisch runterfahren wenn 30 minuten keine bewegung mehr wahr auf der etage/wohnzimmer. hierführ frage ich zur zeit drei bewegungsmelder ab, soll aber noch erhöht werden z.b. in der küche und esszimmer.
2. die rollos werden automatisch um 7:30 uhr wieder hoch gefahren.
3. sollte jemand im zeitfenster 5:30 und 7:30 auf der etage vom "bewegungsmelder flur" erfasst werden werden die rollos da schon hochgefahren.
soweit gut, für das skript im punkt 1 habe ich einen datenpunkt angelegt "wz_rollos_bm_status" dort wird eingetragen wenn einer der bewegungsmelder auf "true" stand. jetzt kommt das problem die xiaomi bewegungsmelder stellen sich ja stumm wenn sie bewegung erfasst haben. damit funktioniert das ganze nicht zuverlässig so wie ich es jetzt in meinem skript habe.
meine idee ist jetzt dass das skript die bewegungsmelder prüft und dann ein timer aktiviert wird und bevor der datenpunkt auf "false" geschaltet wird nochmals eine prüfung machen ob sich zwischenzeitig ein bewegungsmelder mit "true" gemeldet hat. hier ist mein wissen mit blockly leider nicht gut genug um eine solche routine zusammen zu stellen.
ich bekomme irgendwann noch einen türkontakt für die terassentür und eine xiaomi deckenlampe. diese will ich dann noch als weiteres kriterium mit einfügen, also wenn fenster offen und im wohnzimmer noch licht brennt (hoffe dass ich dieses bei der lampe abfragen kann).
wäre echt klasse wenn mir hier jemand weiter helfen könnte oder noch eine andere idee hat wie ich die rollos intelligent bekomme.
gruss
ralph
nachtrag: habe das skript gekürzt auf einen bewegungsmelder, die 10000 zeichen
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="on_ext" id="tz;D9#.+4p*3?FtR{4?(" x="223" y="-122">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id=";T`833RRx:ZOmW)gCmQR">
<field name="oid">mihome.0.devices.sensor_motion_aq2_158d00029c019e.state</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="Y38R}w(/ZJE-Xao,=188">
<value name="IF0">
<block type="logic_compare" id="i~{LKE2GRq!=CghO?bh=">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="_fg-3w|dQ,TjU6qZT6q9">
<field name="ATTR">val</field>
<field name="OID">mihome.0.devices.sensor_motion_aq2_158d00029c019e.state</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="U(B.w*RkUPwV?ml,DFE1">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="U-;ov8(is!)A;b,}CWbu">
<mutation delay_input="false"></mutation>
<field name="OID">Werte_zwischenspeicher.0.wz_rollos_bm_status</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="%Ec]*qy?NG)BDdt@t]Z-">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
<next>
<block type="comment" id="?g=#:O9,]UNw|6z3S/7z">
<field name="COMMENT">Wert zurück setzen</field>
<next>
<block type="controls_if" id="muP@A+k6JgyFmNX-Q/{B">
<value name="IF0">
<block type="logic_compare" id="qoO1CG_~v(ABV#(Xz_+K">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="/zdz!YCIQIy/j!l0k;+f">
<field name="ATTR">val</field>
<field name="OID">Werte_zwischenspeicher.0.wz_rollos_bm_status</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="0Sh!Q~.?)GU)l#nuG._]">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="timeouts_settimeout" id="yT7V@4Sxyq3i;(e|dHse">
<field name="NAME">timeout</field>
<field name="DELAY">30</field>
<field name="UNIT">min</field>
<statement name="STATEMENT">
<block type="controls_if" id="Vml9up1B;C*BcTeInL6`">
<value name="IF0">
<block type="logic_compare" id="}NP3w[pPR?u3CR=mMT51">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="Y]_](K)]hbQTT=}o/[_8">
<field name="ATTR">val</field>
<field name="OID">mihome.0.devices.sensor_motion_aq2_158d00029c019e.state</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="or8HFzjqu6Ty(6xB7v%(">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="4D=/-E8ZdEOPz-~,.hvJ">
<mutation delay_input="false"></mutation>
<field name="OID">Werte_zwischenspeicher.0.wz_rollos_bm_status</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="BA,EHGS8Xz-F+,ztyZIT">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>
Alles anzeigen