NEWS
Oder Schaltung für Taster funktioniert nicht
-
Hallo zusammen,
ich will ein paar Lampen über 2 Taster schalten (Die Taster hängen an Shelly1). Scheine aber die "oder" Funktion irgendwie nicht zu begreifen (mit nur einem Taster ging es noch). Kann mal jemand gucken was ich falsch mache?
on({id: getState("shelly.0.SHSW-1#93B982#1.Relay0.Input").val || getState("shelly.0.SHSW-1#98CDAC2DBD7C#1.Relay0.Input").val, val: true}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("shelly.0.SHCB-1#98CDAC1E8F42#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E8F42#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E8F42#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1E5505#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E5505#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E5505#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1E96F6#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E96F6#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E96F6#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1E36E6#1.lights.mode"/*mode*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E36E6#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E36E6#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1F625A#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1F625A#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1F625A#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); });
-
@uhu01 sagte in Oder Schaltung für Taster funktioniert nicht:
Hallo zusammen,
ich will ein paar Lampen über 2 Taster schalten (Die Taster hängen an Shelly1). Scheine aber die "oder" Funktion irgendwie nicht zu begreifen (mit nur einem Taster ging es noch). Kann mal jemand gucken was ich falsch mache?
on({id: getState("shelly.0.SHSW-1#93B982#1.Relay0.Input").val || getState("shelly.0.SHSW-1#98CDAC2DBD7C#1.Relay0.Input").val, val: true}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("shelly.0.SHCB-1#98CDAC1E8F42#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E8F42#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E8F42#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1E5505#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E5505#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E5505#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1E96F6#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E96F6#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E96F6#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1E36E6#1.lights.mode"/*mode*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1E36E6#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1E36E6#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); setState("shelly.0.SHCB-1#98CDAC1F625A#1.lights.mode"/*Modus*/, 'White'); getState("shelly.0.SHCB-1#98CDAC1F625A#1.lights.Switch", function (err, state) { setState("shelly.0.SHCB-1#98CDAC1F625A#1.lights.Switch"/*Switch*/, state ? !state.val : true); }); });
Das kann nicht gehen.
Der Trigger erwartet einen Datenpunkt, keine Logik.
So wird ein Schuh draus:
Wobei ich das triggern auf "ist wahr" fraglich finde - dazu müsste aber mehr über die gewünschte Logik bekannt sein.
A.
-
@asgothian Danke für die promte Aufklärung!
Die Logik ist im Prinzip wie bei einer Wechselschaltung. Egal welcher der beiden Taster gedrückt wird, es soll immer die Lampe(n) geschaltet werden. Deshalb hatte ich an die "oder" Logik gedacht.
Der Status "True" steht in dem Objekt. Da kann ich aber sicherlich auch "geändert" nutzen. Am Liebsten wäre mit tatsächlich das Event des Shelly auszuwerten, in dem dann ein Text ala "Short(1x)" steht. das wollte ich mir aber lieber für später aufheben, wenn ich ein wenig mehr Durchblick habe.
Wie bekomme ich denn an den "IF-Block" die 2. Eingangsbedingung? Einen Block wo schon 2 dran sind finde ich nicht.
-
Ein if brauchst du nicht. Sofern die Shelly dp normal
falsch
sind und nur bei der Bestätigung aufwahr
gehen reicht ein Trigger aufist grösser als vorher
um nur beim Wechselnfalsch
aufwahr
zu triggern.Der Block den ich gepostet habe hat originär nur 1 Objekt angelegt. Durch das Zahnrad auf blauem Grund kannst du das erweitern auf mehrere. Der enthaltene code wird ausgeführt egal welcher der beiden Datenpunkte die Triggerbedingung erfüllt.
A.
-
@asgothian
Funktioniert. Danke! -
@uhu01
Kann die Shelly FW kein Websend? Mit Tasmota machst so was ganz ohne Script über Websend und ner Rule. Geht das mit der original FW nicht?Sieht dann so aus:
Rule1 on Power1#State=1 do websend [192.168.100.35:80,admin:joker] POWER1 ON endon on Power1#State=0 do websend [192.168.100.35:80,admin:joker] POWER1 OFF endon
Also recht übersichtliche und das bei jede Schalter mit jeweils der IP eines andern Schalter der im Verbund arbeiten soll.
Läuft bei mir seit Jahren stabil. -
@jan1 said in Oder Schaltung für Taster funktioniert nicht:
@uhu01
Kann die Shelly FW kein Websend? Mit Tasmota machst so was ganz ohne Script über Websend und ner Rule. Geht das mit der original FW nicht?Sieht dann so aus:
Rule1 on Power1#State=1 do websend [192.168.100.35:80,admin:joker] POWER1 ON endon on Power1#State=0 do websend [192.168.100.35:80,admin:joker] POWER1 OFF endon
Also recht übersichtliche und das bei jede Schalter mit jeweils der IP eines andern Schalter der im Verbund arbeiten soll.
Läuft bei mir seit Jahren stabil.Es gibt "Webhooks". Ich vermute mal, dass das das gleiche ist. Die erste Generation, welche ich noch viel im Einsatz habe kann aber nur 5 je Aktor. Da ich 5 Leuchten dran habe wären die also alle schon für an/aus aufgebraucht. Da wollte ich lieber gleich die langfristiger Lösung nutzen. Davon ab sind das RGBW Leuchtmittel und ich will dann noch verschiedene andere Spielereien damit umsetzen, die dann wahrscheinlich nicht mehr so leicht per Webhook funktionieren.
Habe jetzt beispielsweise auch eine Xiaomi-Leuchte über die Longpress Aktion des Shelly mit dazugenommen. Denke das geht mit Bordmitteln nur bedingt.
-
@uhu01
War auch nur eine Idee