Wechselschaltung mit 2 HM Unterputzdimmern

Hallo,

habe in einem Raum zwei Lichtschalter und zwei Deckenlampen in unterschiedlichen Stromkreisen beide mit HM Unterputzdimmern versehen. Nun möchte ich gerne am LS 1 das Licht einschalten, ausschalten oder einen Dimmwert einstellen und diesen Zustand auch an LS 2 übergeben oder umgekehrt.

Mit einem LS als Master geht das auch.

Ich nehme die „Working“ Variable vom LS1 als Auslösekriterium und lese dann den Levelwert am LS 1 aus, nun übergebe ich den an den LS 2. Soweit so gut. Übernehme ich diese Vorgehensweise für den anderen LS werden sie sich ja in einer Endlosschleife aufhängen…

Mein Gedanke: Man müsste feststellen können welcher LS Master ist und welcher in der jeweiligen Situation Slave ist…
Eine Korrektur des Wertes durch den aktuellen Slave (Ist ja abhängig davon welchen LS ich zu erst nutze) sollte für x Sec gesperrt sein damit keine Endlosschleife auftritt ich aber wenn ich am anderen Ende des Raumes bin das Licht dennoch mit dem zuvor als Master definierten LS ausschalten kann.

Hat jemand da eine Lösung für mich, ein Script wäre auch toll, mein PHP ist noch nicht ganz soo gut… :slight_smile:

Hat sich noch keiner mit diesem Problem auseinander gesetzt… oder gestaltet es sich wirklich so schwierig das zu lösen…? :frowning:

ich habe keine Unterputzdimmer im Einsatz aber folgende Idee:

Wenn du die Trigger auf Wertänderung setzt, dann dürfte es keine Endlosschleife werden, denn LS1 hat den Wert bereits, so dass durch die Aktualisierujng vom Trigger LS2 ( der bekommt ja nen anderen Dimmwert) das Script in LS1 nicht erneut ausgeführt werden sollte.

Somit musst du das nicht mal im Script berücksichtigen…

Da habe ich doch das gleiche Problem, das der eine Wert den anderen beinflusst so das ich wieder eine Endlosschleife habe.
Ich müsste also eine Begrenzung einbauen… Etwas wie:

Wurde der Zustand inerhalb der letzten 3s geändert brich das Sript ab…

Mann kann doch bestimmt die Zeit, an der eine Variable geändert wird, auslesen und mit der aktuellen Zeit vergleichen…?!

  1. version Trigger auf Wertänderung-> triggert nur wenn der updatewert UNTERSCHIEDLICH vom bisherigen Wert ist

  2. Version Trigger auf Wertaktualisierung -> Triggert immer bei update

LS1 -> setzt auf 50% -> trigger 1.version für LS2 -> setzt LS2 auf 50% -> trigger 1.version für LS1 -> setzt LS1 auf 50% -> keine Wertänderung, also auch kein scriptstart

Hoffe so wird es klarer

Das funktioniert doch aber nur wenn LS1 immer der Master ist. Ich möchte aber an LS1 das Licht einschalten, beide Lampen sollen an gehen und dann mit LS2 wieder beide ausschalten.

Wenn ich den Raum von der anderen Seite betrete sollte es natürlich auch in umgekerter Reihenfolge gehen…

Momentan habe ich es mit 2 Scripten probiert die sich jeweils auf den jeweiligen LS x als Master beziehen. Jeder script hat ein eigenes Auslösekriterium, beeinflusst dabei aber leider den des anderen Scriptes.

Also brauch ich entweder ein Script das hier beide Möglichkeiten abdeckt oder eine begrenzung für die Scripte damit es zu keiner Endlosschleife kommt…

Oder habe ich deinen Lösungsansatz föllig falsch interpretiert…?

Mein beschriebenes Verfahren funktioniert doch in beiden Richtungen.

Die Trigger sind entscheidend…

BTW: Vielleicht kann das jemand anderes auch nochmal überdenken…

Also in meinem Kopf funktioniert das so. Es gibt ja keinen Master, denn alle Wertänderungen werden unabhängig betrachtet. Ich finde, dass es passt.

Also irgendwie versteh ich das nicht oder wir reden vielleicht aneinander vorbei…

Ich habe ein Skript für den LS1, getriggert durch Variablenänderung des „Level“ Wertes LS1.
Beim Auslösen von LS1 wird nun dessen Wert an den LS2 übergeben.

<?
$DimmwertSpielen = GetValuefloat (24396 /*[- Angelegte Datenbank von My Home -\Kinderzimmer\Licht\Dimmer Spielecke\LEVEL]*/);

HM_WriteValueFloat(53027 /*[- Angelegte Datenbank von My Home -\Kinderzimmer\Licht\Dimmer Deckenlampe (Schlafen)]*/, "LEVEL", $DimmwertSpielen);

?>

Wenn ich jetzt ein in der Funktion identisches Skript für LS2 schreibe,

<?
$DimmwertSchlafen = GetValuefloat (20791 /*[- Angelegte Datenbank von My Home -\Kinderzimmer\Licht\Dimmer Deckenlampe (Schlafen)\LEVEL]*/);

HM_WriteValueFloat(59760 /*[- Angelegte Datenbank von My Home -\Kinderzimmer\Licht\Dimmer Spielecke]*/, "LEVEL", $DimmwertSchlafen);

?>

löst dieses ja schon dadurch aus, das dass 1. Skript einen neuen Wert in die Variable „Level“ des LS2 schreibt… damit erfülle ich dann wieder das auslöse Kriterium für Skript 1… schwups steck ich in einen Schleife… :frowning:

der Trigger sollte nicht auf der Lampe sondern auf dem Schalter liegen und bei jeder Änderung nicht nur die Lamope sondern auch den anderen schalter mit dem Level wert versorgen…

Der Unterputzdimmer ist doch gleichzeitig die Lampe…??
Der Dimmer bekommt den Schaltimpuls ja über einen Taster…

Oder stelle ich mich grad besonders blöd an…?! :-/

Leider noch immer keine Lösung… :frowning: