Wenn ein Schalter auf ON dann zwei weitere auch Schalten (solved)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
netZr0t
Beiträge: 56
Registriert: 9. Jan 2018 10:22
Answers: 0

Wenn ein Schalter auf ON dann zwei weitere auch Schalten (solved)

Beitrag von netZr0t »

Hi,

muss nach langer Zeit mal wieder die Experten zu Rate ziehen.
Ich habe im Flur nur ein Licht, aber drei Schalter, die ursprünglich klassisch über Kreuzschaltung verkabelt waren.
Diese Schalter habe ich jetzt durch Sonoff Touch Schalter ersetzt, die alle einfach parallel verkabelt sind.

Das heisst, ich kann zwar von jedem Schalter einschalten, aber natuerlich nicht mehr von einem anderen aus, solange noch ein Schalter an ist.
Ich habe die Schalter in einer Gruppe

Code: Alles auswählen

Group:Switch:OR(ON, OFF) gEGFlur	"Flurlicht"
Switch Flurlicht1 "Flurlicht1" <light> (gEGFlur) ["Lighting"] { channel="mqtt:topic:T0EU2C_FLUR1:switch1" }
Switch Flurlicht2 "Flurlicht2" <light> (gEGFlur) ["Lighting"] { channel="mqtt:topic:T0EU2C_FLUR2:switch1" }
Switch Flurlicht3 "Flurlicht3" <light> (gEGFlur) ["Lighting"] { channel="mqtt:topic:T0EU2C_HTUER1:switch1" }
Der Gruppenschalter funktioniert auch wie er soll, wenn ich aber an den Lichtschaltern schalte beeinflusst das den Gruppenschalter nicht.

muss man das mit einer Rule machen ?

Ich habe das mal so ausprobiert, funktioniert aber auch nicht

Code: Alles auswählen

rule "EGGruppenschaltung SW1 ON"
when
  Item Flurlicht1 received command ON
then
    Flurlicht2.sendCommand(ON)
    Flurlicht3.sendCommand(ON)
end

rule "EGGruppenschaltung SW1 OFF"
when
  Item Flurlicht1 received command OFF
then
    Flurlicht2.sendCommand(OFF)
    Flurlicht3.sendCommand(OFF)
end

Bitte um Erleuchtung
Zuletzt geändert von netZr0t am 23. Feb 2020 08:44, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Wenn ein Schalter auf ON dann zwei weitere auch Schalten

Beitrag von udo1toni »

So darfst Du das nicht machen. Stattdessen solltest Du die Lampe nur von einem Schalter schalten lassen und die anderen Sonoff Touch nur verwenden, um den Schaltbefehl weiterzuleiten. Die Verschaltung (damit die Taster wie die Kreuzschaltung funktionieren) musst Du dann über mqtt erledigen.
Anschließend reicht eine Rule:

Code: Alles auswählen

// globale Variablen immer zu Beginn der Datei definieren!
var Boolean bFlur = false

rule "Flurlicht"
when
    Member of gEGFlur received command
then
    if(bFlur) return;
    bFlur = true
    gEGFlur.members.forEach[i | 
        if(i.state != receivedCommand)
            i.sendCommand(receivedCommand)
    ]
    Thread::sleep(300)
    bFlur = false
end
Die Rule triggert bei jedem Schaltbefehl. Falls die globale Variable bFlur true ist, wird die Rule sofort abgebrochen. Falls die Rule weiter läuft, wird die Variable auf true gesetzt (damit wird also verhindert, dass die Rule sich immer weiter selbst triggert).
Anschließend wird an jeden Member der Gruppe der gleiche Befehl gesendet, falls das Item einen anderen Status hat.
Danach wartet die Rule noch einen kurzen Moment und setzt abschließend die Variable wieder auf false.
Die Wartezeit ist der Tatsache geschuldet, dass es schon mal einen Moment dauert, bis der Status eines Items dem Befehl gefolgt ist.
Ließe man die Lock-Variable weg, würde der Code mehrfach gleichzeitig ausgeführt, bis sich alles beruhigt hat.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
netZr0t
Beiträge: 56
Registriert: 9. Jan 2018 10:22
Answers: 0

Re: Wenn ein Schalter auf ON dann zwei weitere auch Schalten

Beitrag von netZr0t »

Super, vielen Dank, werde das am Wochende ausprobieren.

Gesendet von meinem MI 9 mit Tapatalk


Benutzeravatar
netZr0t
Beiträge: 56
Registriert: 9. Jan 2018 10:22
Answers: 0

Re: Wenn ein Schalter auf ON dann zwei weitere auch Schalten

Beitrag von netZr0t »

Servus,

habe mich da heute nochmal dran gemacht. Ich habe die Phasenduchschaltung bei Flurlicht2 und Flurlicht3 weggeklemmt.
Wenn ich softwaremaessig (UI) einen Schalter betätige schaltet er die anderen beiden mit. Das ist ja schon mal genau das was sie tuen sollen.
Leider funktioniert das nicht wenn ich einen Schalter physikalisch betätige. Das log sagt eigentlich genau das was ich will, aber es passiert nichts.

Flurlicht2 changed from OFF to ON
gEGFlur changed from OFF to ON through Flurlicht2

Was genau meintest du was ich auf MQTT Seite machen soll ?

Gruss

Torsten

PS: der Thread:sleep(300) muss glaube ich Thread.sleep(300) heissen

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Wenn ein Schalter auf ON dann zwei weitere auch Schalten

Beitrag von udo1toni »

Es muss Thread::sleep(300) heißen (zwei Doppelpunkte)

Offensichtlich generiert der Tastendruck kein Kommando. Schade. Dann halt so:

Code: Alles auswählen

// globale Variablen immer zu Beginn der Datei definieren!
var Boolean bFlur = false

rule "Flurlicht"
when
    Member of gEGFlur changed
then
    if(bFlur) return;
    bFlur = true
    gEGFlur.members.forEach[i | 
        if(i.state != triggeringItem.state)
            i.sendCommand(triggeringItem.state)
    ]
    Thread::sleep(300)
    bFlur = false
end
Gesendet von meinem SM-G973F mit Tapatalk
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
netZr0t
Beiträge: 56
Registriert: 9. Jan 2018 10:22
Answers: 0

Re: Wenn ein Schalter auf ON dann zwei weitere auch Schalten

Beitrag von netZr0t »

Perfekt. Works like a charme !
Danke Dir wie immer für die Expertise.
Ich glaube ich muss mich mal mit JAVA Auseinandersetzen. Ich verstehe zwar was du da machst, aber den Syntax check ich nicht

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Wenn ein Schalter auf ON dann zwei weitere auch Schalten (solved)

Beitrag von udo1toni »

:) Immer gerne. Das ist allerdings kein Java ;) sondern XTend. Da das in Java entwickelt wird/wurde, gibt es eine größere Menge an Ähnlichkeiten, im Grunde ist es aber ziemlich anders...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten