NEWS
Wechselschaltung in software realisieren -> Endlosscshleife
-
Moin,
ich hab hier ein doofes Problem:
Ich hab hier einen Shelly, der steuert eine Lampe im Flur.
In einem weiteren teil des Flures ist eine weitere Lampe mit eigenem Schalter, diese lichter sind nicht verbunden oder ähnliches.
Auch möchte ich mir Stemmarbeiten diesbezüglich sparen.Meine Idee war es nun, diese beiden Lampen via Trigger zu syncen:
- Versuch:
on({ id: [].concat(['shelly.0.xxx.Relay0.Switch']).concat(['zigbee.0.yyy.state']), change: "ne" }, async function (obj) { setState('shelly.0.xxx.Relay0.Switch', obj.state.val);//Flur EG setState("zigbee.0.yyy.state", obj.state.val); log(obj.state.val); });
- Versuch
on({ id: [].concat(['shelly.0.xxx.Relay0.Switch']), change: "ne" }, async function (obj) { setState("zigbee.0.yyy.state", obj.state.val); }); on({ id: [].concat(['zigbee.0.yyy.state']), change: "ne" }, async function (obj) { setState('shelly.0.xxx.Relay0.Switch', obj.state.val);//Flur EG });
Beide Versuche führen in eine Endlosschleife wenn der Zigbee mal etwas träger ist und man vorher wieder ausschaltet.
Wie kann ich das verhindern? Einen Entpreller?
on({ id: [].concat(['shelly.0xxx.Relay0.Switch']).concat(['zigbee.0.yyy.state']), change: "ne" }, async function (obj) { if (!Entpreller) { setState('shelly.0.xxx.Relay0.Switch', obj.state.val);//Flur EG setState("zigbee.0.yyy.state", obj.state.val); } Entpreller = setTimeout(function () { Entpreller = false; }, 500); });
führt dazu, dass dann das licht wieder an ist, wenn dem zigbee n paar sekunden später einfällt sich dann kurz an und sofort wieder auszuschalten, der entpreller lässt dann den zweiten Impuls nicht durch, und verhindert somit die Endlosschleife, aber das licht geht wieder an.
LG
Nils -
@jmeister79 sagte: beiden Lampen via Trigger zu syncen:
Versuche es mal so:
-
@jmeister79 Das ist ein SCHALTER, hinter dem der Shelly montiert ist?
-
@martinp ja sowohl vor dem shelly als auch vor dem zigbee ist ein schalter
-
@jmeister79 Und die beiden Relais sollen parallel sowohl die Lampe am Shelly, als auch die Lampe am zigbee schalten?
Ausgangszustand Lampen aus.
Shelly Schalter wechselt seinen Zustand -> Beide Lampen ein
Shelly Schalter wechselt seinen Zustand -> Beide Lampen aus
Shelly Schalter wechselt seinen Zustand -> Beide Lampen ein
Zigbee Schalter wechselt seinen Zustand -> Beide Lampen aus
Shelly Schalter wechselt seinen Zustand -> Beide Lampen ein
Mit dem Risiko, dass nichts mehr funktioniert, wenn der iobroker ausfällt, könnte man die Schalter-Funktion von der Relais Funktion trennen (Beim Shelly über den Haken bei "Detached Switch"), und die Ansteuerung der Relais alleine Iobroker überlassen...
Dann hat das Skript die Funktion: "Wenn einer der beiden Schalter den Zustand ändert, toggle den Zustand der Relais"...
-
@martinp ja verstehe was du meisnt, geht aber auch nciht wirklich, es ist der doofe zigbee schalter.
evtl lasse ich nur schalten wenn das ack flag true ist, dann weiß ich sicher dass die hardware geschaltet hat.
edit:
klappt auch nicht, da er dann mit ne nicht reagiert wenn die geschichte aus dem visu geschaltet wird -
@jmeister79 sagte: mit ne nicht reagiert wenn die geschichte aus dem visu geschaltet wird
Hast du mal meinen Vorschlag versucht?
-
@paul53 Ich kenne mich mit den Shelly Unterbau-Modulen nicht aus. Wenn man den Shelly per Schalter einschaltet, und per Remote ausschaltet - schaltet die nächste Wippenbetätigung den Shelly wieder ein, oder bleibt die Schalterstellung für EIN und AUS erhalten, und man muss von EIN nach AUS und dann wieder von AUS nach EIN schalten, um das Licht wieder anzumachen...?
Ich würde aus dem Bauch heraus vermuten, dass es Ersteres ist...
Beim Zigbee Schalter weiß man natürlich nicht, wie der sich verhält...
-
@paul53 ja, hat leider auch nicht geklappt
-
@martinp die haben alle taster davor.
Das priblem ust ja wie gesagt, dass wenn der zigbee Schalter zu langsam ist und man bevor er sein signal bekommt an und wieder aus bzw aus und wieder an schaltet. Kommt es vor dass er innerhalb von ms beide signale bekommt, da die im zigbeen adapter aufgelaufen sind.
Er setzt die dann sofort nacheinander um und löst damit eine endlosschleife aus. Dieses problem muss es ja in allen asynchronen Systemen geben. Ich stehe jetzt leuder total auf dem achlauch wie man das lösen könnte
-
@jmeister79 Mit Tastern ist das ja noch einfacher ... Gibt es extra Datenpunkte für den Taster im Zigbee Device und im Shelly?
Dann könnte man sich eine Variable definieren, die setzt man initial auf 0, Wenn der Shelly Taster betätigt wird, wird die Variable auf 1 gesetzt, und wenn der Zigbee Taster betätigt wird auf 2.
Wechselt dann beim Shelly Switch der Zustand, wird der Zigbee Switch abgeglichen, aber nur wenn die Variable auf 1 steht (manuelle Betätigung durch Shelly), Variable danach wieder auf 0 setzen
Wechselt dann beim Zigbee Switch der Zustand, wird der Shelly Switch abgeglichen, aber nur wenn die Variable auf 2 steht (manuelle Betätigung durch Zigbee), Variable danach wieder auf 0 setzen
Die Intention des Scripts von @paul53 ist wahrscheinlich ähnlich, aber ich weiß nicht warum das nicht funktioniert...
Ob das funktioniert, hängt aber davon ab, ob immer ZUERST der Taster gemeldet wird, und DANN der Zustand des Switches...
-
@jmeister79 sagte: aus und wieder an schaltet. Kommt es vor dass er innerhalb von ms beide signale bekommt, da die im zigbeen adapter aufgelaufen sind.
Wenn Zigbee langsamer ist als man hin- und herschaltet, sollte man die Zigbee-Taste vom Zigbee-Aktor entkoppeln und die Taste im ioBroker auswerten (toggle). Etwa so:
-
@paul53
Ja das hatte ich auch gedacht. Ist sicherlich auch der richtige weg. Leider ist der iob mir. Icht stabil genug um alle switches zu detatchen. Dann steh ich im fehlerfall ohne licht da, deswegen bin ich überall auf shellys gegangen. -
@jmeister79 sagte: Leider ist der iob mir. Icht stabil genug um alle switches zu detatchen.
Es betrifft ja nur den Zigbee-Taster, wenn ioBroker ausfällt.
Bei mir läuft ioBroker seit Jahren absolut stabil. -
@paul53 ja natürlich läuft er seit jahren supersrabil etc. Bis er es dann nicht tut und dann steht man ohne Licht da. Seines ein schiefes Update oder ne kaputte ssd oder n defekter CPU ider ne kaputte Fritzbox oder k kaputter shelly, das system ist einfach zu komplex um sichb100% darauf zu verlassen. Darum ist es bei mir ein nice to have und das haus sollte auch funktionieren wenn der iobroker map husten hat und ich grad im Hansapark sitze. ;-).
Ich werf den ZigBee raus und ersetze ihn gegen nen Shelly, nichtsdestoweniger ist auch bei den Shellys sowas möglich. Also sollte ich diesbezüglich entweder diese Möglichkeit ausschließen oder auf diese Schaltung verzichten.
Ich hatte nur gedacht, dass ich einfach grad aufm Schlauch stehe, ist ja bei mir öfters der fall ne.