NEWS
2 Shellys in abhängigkeit "schalten"
-
Hallo zusammen, ich stethe gerade ein wenig auf den Schlauf und bräuchte mal einen Denkanstoß:
Ich habe 2 Shelly mit je einem Taster und einem Verbraucher.
Nun möchte ich, dass wenn an einem der Shellys der Zustand des Relays geändert wird, dies auch beim 2. mit (auf den gleichen Wert) geändert wird.
Wenn ich den Trigger auf den Input (welcher ja das Relay schaltet) anwende, funktioniert dies auch, leider kann ich dann über die Weboberfläche des Shellys das Skript (den Trigger) nicht auslösen.
Wenn ich jetzt den Triger direkt auf das Relay setzte, baue ich mir ja eine Schleife, da das Skript ja jeweils den Zustand des 2. Relays ändert und dies wieder den Trigger auslöst.
Ich hoffe meine Angaben sind verständlich. -
@rolly82 sagte: Wenn ich jetzt den Triger direkt auf das Relay setzte, baue ich mir ja eine Schleife,
Versuche es mal so:
Anmerkung: Die "Objekt ID" ist eine Konstante.
-
@paul53 Danke, werde ich gleich mal testen.
was besagt der Eintrag "system.adapter.javascript.0" ? -
@rolly82
Wenn Du einfach möchtest, das der eine immer tut was der andere vorgibt, dann brachst dafür nur ein Block und das ist dieser:
Sollen beide Taster jeweils den anderen Shelly mit steuern, dann den Block einfach zweimal und die Objekte tauschen
-
@rolly82 sagte: was besagt der Eintrag "system.adapter.javascript.0" ?
Wenn die Quelle der Wertänderung das Skript (die Javascript-Instanz) ist, wird kein "steuere" ausgeführt und somit die Trigger-Schleife verhindert.
-
@paul53 Danke für die Erklärung. Das Skript funktioniert nun so wie gewünscht
-
@jan1 said in 2 Shellys in abhängigkeit "schalten":
@rolly82
Wenn Du einfach möchtest, das der eine immer tut was der andere vorgibt, dann brachst dafür nur ein Block und das ist dieser:
Sollen beide Taster jeweils den anderen Shelly mit steuern, dann den Block einfach zweimal und die Objekte tauschen
Läuft das nicht in eine Rekursion?
-
@lxffm sagte in 2 Shellys in abhängigkeit "schalten":
Rekursion
Nein, warum auch?
Nicht mal wenn Du das ein zweites mal mit getauschten Objekten einfügst. -
@jan1 sagte in 2 Shellys in abhängigkeit "schalten":
@lxffm sagte in 2 Shellys in abhängigkeit "schalten":
Rekursion
Nein, warum auch?
Nicht mal wenn Du das ein zweites mal mit getauschten Objekten einfügst.Ist bei einem „binde Objekt“ nicht automatisch die Bindung in beiden Richtungen drin? Ich meine, mich an sowas erinnern zu können…
Gruss, Jürgen
-
@jan1 said in 2 Shellys in abhängigkeit "schalten":
@lxffm sagte in 2 Shellys in abhängigkeit "schalten":
Rekursion
Nein, warum auch?
Nicht mal wenn Du das ein zweites mal mit getauschten Objekten einfügst.Naja ich dachte, es müsste ja quasi durchweg aufeinander triggern weil ja ständig ein Objekt das andere angleicht und vice versa. In Excel würde man Zirkelbezug sagen.
-
@wildbill said in 2 Shellys in abhängigkeit "schalten":
@jan1 sagte in 2 Shellys in abhängigkeit "schalten":
@lxffm sagte in 2 Shellys in abhängigkeit "schalten":
Rekursion
Nein, warum auch?
Nicht mal wenn Du das ein zweites mal mit getauschten Objekten einfügst.Ist bei einem „binde Objekt“ nicht automatisch die Bindung in beiden Richtungen drin? Ich meine, mich an sowas erinnern zu können…
Gruss, Jürgen
Habe es gerade ausprobiert. Bind ist immer nur Quelle => Ziel. Zwei binds untereinander funktionieren. Ich bilde mir ein das es den cpu load iobroker.js-con hochtreibt das muss ich aber nochmal beobachten.
-
@lxffm sagte: Läuft das nicht in eine Rekursion?
Da nur auf Änderungen getriggert wird, sollte es nicht passieren. Durch Laufzeiteffekte kann es trotzdem manchmal passieren, dass es in ein Trigger-Endlosschleife läuft.
-
@paul53 said in 2 Shellys in abhängigkeit "schalten":
@lxffm sagte: Läuft das nicht in eine Rekursion?
Da nur auf Änderungen getriggert wird, sollte es nicht passieren. Durch Laufzeiteffekte kann es trotzdem manchmal passieren, dass es in ein Trigger-Endlosschleife läuft.
Die Frage bezog sich auf ein doppel-bind. Da gibt es ja keinen Trigger. Die beiden Blöcke kannst du ja zum binden einfach in ein Script packen. Da gibt es quasi keinen Trigger, bzw. man kann den internen Trigger nicht kontrollieren.
Er reagiert allerdings nur auf changed das habe ich getestet.
-
@lxffm sagte: Da gibt es ja keinen Trigger.
Die Blöcke "bind" enthalten einen Trigger:
on({id: 'Object ID 1', change: "ne"}, function (obj) { setState('Object ID 2', obj.state.val); });
@lxffm sagte in 2 Shellys in abhängigkeit "schalten":
doppel-bind.
Wenn bei beiden Blöcken der Haken bei "nur Änderungen" entfernt wird, entsteht mit Sicherheit eine Trigger-Endlosschleife.
-
@paul53
Ich hatte das lange mit und ohne Haken für ne Wechselschaltung im Einsatz, nie Probleme.
Mit Haken ist es von der Logik, aber sicherer.