Hallo, ich hoffe hier kann mir jemand helfen und zwar geht es um Tasmota und zwar nicht um die RULES sondern um das Scripting...
Kurz zum Hintergrund, was ich vorhabe:
Die Lichtsteuerung im Keller läuft aktuell über einen Sonoff 4CH R2. Somit kann ich 4 Relais und 4 Taster im Keller bedienen. Das funktioniert echt prima.
Da ich aber mehrere Taster "Kreuzschaltung" habe sowie auch Türkontakte möchte ich nicht noch mehrere ESP's etc. verbauen. Darum habe ich mir einen Sonoff 4CH "aufgebohrt" und ihm ein MCP23017 Expender gesponsort. Das funktioniert auch alles Prima und ich habe neben den 4 üblichen Eingängen noch 16 weitere dazubekommen.
Wie oben erwähnt habe ich mehrere Schalter, oben und unten im Kellerbereich (Treppenauf/abgang) Diese möchte ich gesondert schalten. Heißt, wenn ich oben das Licht für unten aus mache, so soll der gesamte Kellerbereich ausgeschaltet werden. Über diverse Türkontakte und Bewegungsmelder soll ebenfalls das Licht gesteuert werden. Da mir die Rules da zu "einfach" sind in der handhabe möchte ich dieses einfach über das Scripting realisieren. Dies erweist aber Porbleme und ich hoffe ihr könnt mir dabei helfen.
Mein Script sieht aktuell wie folgt aus: (Kurzform)
>D
p:MPC0=0
p:MPC1=0
>B
->sensor29 0,2,1
->sensor29 1,2,1
>T
MPC0=MCP230XX#D0
MPC1=MCP230XX#D1
>E
if upd[MPC0]>0
then
=>power1 2
print MPC0 %MPC0%
endif
if upd[MPC1]>0
then
print MPC1 %MPC1%
=>power2 2
endif
Wenn Port 0 geschaltet wird, soll power1 togglen.
Wenn Port 1 geschaltet wird, soll power2 togglen.
Es togglen aber immer beide, warum!?
13:54:28 RSL: stat/tasmota_E5E868/RESULT = {"Time":"2020-08-31T13:54:28","MCP230XX_INT":{"D1":0,"MS":4514}}
13:54:28 Script: performs "power1 2"
13:54:28 RSL: stat/tasmota_E5E868/RESULT = {"POWER1":"ON"}
13:54:28 RSL: stat/tasmota_E5E868/POWER1 = ON
13:54:28 MPC0 1.00
13:54:28 MPC1 1.00
13:54:28 Script: performs "power2 2"
13:54:28 RSL: stat/tasmota_E5E868/RESULT = {"POWER2":"OFF"}
13:54:28 RSL: stat/tasmota_E5E868/POWER2 = OFF
13:54:33 RSL: stat/tasmota_E5E868/RESULT = {"Time":"2020-08-31T13:54:33","MCP230XX_INT":{"D1":1,"MS":5004}}
13:54:33 Script: performs "power1 2"
13:54:33 RSL: stat/tasmota_E5E868/RESULT = {"POWER1":"OFF"}
13:54:33 RSL: stat/tasmota_E5E868/POWER1 = OFF
13:54:33 MPC0 1.00
13:54:33 MPC1 0.00
13:54:33 Script: performs "power2 2"
13:54:33 RSL: stat/tasmota_E5E868/RESULT = {"POWER2":"ON"}
13:54:33 RSL: stat/tasmota_E5E868/POWER2 = ON
13:54:42 RSL: stat/tasmota_E5E868/RESULT = {"Time":"2020-08-31T13:54:42","MCP230XX_INT":{"D0":0,"MS":18323}}
13:54:42 Script: performs "power1 2"
13:54:42 RSL: stat/tasmota_E5E868/RESULT = {"POWER1":"ON"}
13:54:42 RSL: stat/tasmota_E5E868/POWER1 = ON
13:54:42 MPC0 1.00
13:54:42 MPC1 1.00
13:54:42 Script: performs "power2 2"
13:54:42 RSL: stat/tasmota_E5E868/RESULT = {"POWER2":"OFF"}
13:54:42 RSL: stat/tasmota_E5E868/POWER2 = OFF
Würde mich freuen, wenn ihr da eine Lösung habt. Oder habt ihr andere Beispiele, welche das einfache ausführen EINES Befehls ermöglicht? Es werden immer beide durchgereicht