So, ich habe nun meine Badezimmerschaltung mit 3 Shellys und einem Mini-NodeMCU (als Taster) fertig und dank euch das Script nun angepasst. Läuft soweit! Allerdings denke ich das ich da ein ganz schönes Monster gebastelt habe. Augenscheinlich kann man Und/Oder Bausteine mit "nur" zwei externen Eingängen versehen, allein schon daher ist das sehr unübersichtlich.
Funktionieren sollte das alles wie folgt:
Mit dem Taster trigger ich eine Art Flip/Flop den DP "Badzimmer". Dieser dient mir als eine Art "Hilfsmerker" um den Zustand der Badezimmerbeleuchtung wiederzugeben. Allerdings hat Alexa Zugriff auf die drei Aktoren und EGAL was Alexa dann aus- oder eingeschaltet haben sollte, wenn dann der Taster betätigt wird soll alles AUS (egal was DP Badezimmer sagt) und evtl eben nur der DP Badezimmer wieder auf false gesetzt werden.
Gehts auch einfacher? (BTW: "Dummy" ist noch vom Testen drin, normalerweise ist hier der Taster vom ESP8266)!
db4.jpg
Spoiler
<xml xmlns="http://www.w3.org/1999/xhtml">
<variables>
<variable type="undefined" id="timeout">timeout</variable>
</variables>
<block type="on" id="(xmol1QeSd*S%s)d.qG`" x="-583" y="-144">
<field name="OID">Meine_Geräte.0.Dummy</field>
<field name="CONDITION">true</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="comment" id="MgA8O8iBvhIK;H0w)).`">
<field name="COMMENT">Logikauswertung </field>
<next>
<block type="controls_if" id="G(6}e`MX3/fK@K!-YkaI">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_operation" id="3LaHOh9F@Ia-h782Uf8L" inline="false">
<field name="OP">OR</field>
<value name="A">
<block type="logic_operation" id="jF!Ze0P/VZfW,uD}?x#K" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="%h!#GJG_KG9a_QRZ}=HB">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="dFj(uabfq0WdA1r@2E^v">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte_Zustände.0.Badezimmer</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="Q)xQ{3%+!_g2#Kl.^Mhc">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_operation" id="KzfU@JKg63w:o;QGD-ZY" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="nn{%sFviZFLC`x`H^rMB">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="2#5}n|WR##X%@}=}(,i}">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Decke</field>
</block>
</value>
<value name="B">
<block type="get_value" id="Qg}=lhfb5/[1ZeWTN.],">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="hIQ)bY,/w$sq#d/q[KXv">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="Y:cBp6LwQU!155=ghpAx">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Toilette</field>
</block>
</value>
<value name="B">
<block type="get_value" id="lJtPCH:O,M(50qiLl60t">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_operation" id="[r*aR#NBC91xDwJ@;Vjb" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id=":n|uMq(hc2P,?!IfnW+*">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id=".^Cad9mF`hxi^m[lsa+]">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte_Zustände.0.Badezimmer</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="*Zzd%Jo.*fAJ+]!w2AdK">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_operation" id="mE8WRSkif(BKNn{`ic#m" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_operation" id="Z37awy@{TS+qd.gd,1k*" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="]ukDM3T_-NYKq#cL#TkG">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="tU:4a$?|;@5:D)Q@a:*0">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Decke</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="pg`SU?.;:~+TKav={gwU">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id=".p0Z623K8h2awg4yA,JG">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="$4iCk3j6MC?w6q5~Mb,|">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Toilette</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="/(o2D3{Bn3+L9y;KxJj0">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="RS;`3V$P%XAOT^U|;PGB">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="`T~vNSm_zZ9p^Hnl)AR.">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="eXX~tf!srs`b|_po3hJ1">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="comment" id="b_zq2i^w!b4hFs*cGmPe">
<field name="COMMENT">Wenn zwischendurch Alexa ein Aktor aus oder eingeschaltet hat, dann auf jeden Fall alles vorrangig AUSSCHALTEN!</field>
<next>
<block type="control" id="lH[`4eTj0h4dX`-~Jo:p">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte_Zustände.0.Badezimmer</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="nR*;?!`4UlA00!/snt#-">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_operation" id="2AFX#h$fl{+Epd`M46X9" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="GY[URCWddjm!aH;Y[rSz">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="u$MACYZF5;!I:[caN]4+">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Decke</field>
</block>
</value>
<value name="B">
<block type="get_value" id="]w_Dc}jQ3+#IuUI5^#a2">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="X(mfj^Zo2r5I0_ci7N*G">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="7yat2Odp~Zs0+L`,S!rq">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Toilette</field>
</block>
</value>
<value name="B">
<block type="get_value" id=".lF[z2|Ud|OLN8S_jvOt">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="comment" id="Vi$)|4V^7wwWh*R;mAmr">
<field name="COMMENT">Ohne Alexa einfach nur FlipFlop</field>
<next>
<block type="toggle" id="OO?4W7_~IbwFhLG9$(jO">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte_Zustände.0.Badezimmer</field>
<field name="WITH_DELAY">FALSE</field>
</block>
</next>
</block>
</statement>
<next>
<block type="timeouts_settimeout" id="hG:lZ=#@;*?wt-k2mjlr">
<field name="NAME">timeout</field>
<field name="DELAY">50</field>
<field name="UNIT">ms</field>
<statement name="STATEMENT">
<block type="comment" id="`8#u7JOJM4`bqC$3sf3j">
<field name="COMMENT">Übergabe an Peripherie</field>
<next>
<block type="controls_if" id="=priJJ`nFW^C{E]L*hdZ">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="~gyz)SfYf~oF~1Snt@A`">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="Y`8)hrKGhfy^/=:aTv)J">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte_Zustände.0.Badezimmer</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="SpW6)YbnY;=15#J7A[V2">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="lg``PS|gB){2RnQEQD!z">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte.0.Bad_Decke</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="o:{MV+(0fquMeBb=hKEL">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="control" id="4;6wEe?_Up#,r?7Oq;fw">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="^SZGJj`@sGPs_J!dO/S[">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="control" id="=wj%9c04t*c4J3YWe*=r">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte.0.Bad_Toilette</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id=":@_OK#wygdOi#7O8ez]J">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="^W@lu{U-Ld:eC1S,VMn;">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="w`3PhBlO1dGQ5L~GvpHg">
<field name="ATTR">val</field>
<field name="OID">Meine_Geräte_Zustände.0.Badezimmer</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="GYCc9|wJ0]s~YUit#{eC">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="control" id="H[V3M8egf63yQ(6Y.v9E">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte.0.Bad_Decke</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="N2w~9N}.|T7fAYccob{^">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="PUVs!WMD![EM,9ZJ6|ri">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte.0.Bad_Dusche</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="~MS[ea6e1Zw.i1aOpeEF">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="sP,NMs1DCeJl%}4d@o?0">
<mutation delay_input="false"></mutation>
<field name="OID">Meine_Geräte.0.Bad_Toilette</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="F1y@NDcSU`h00GZ;AA_D">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>