Mehrere Switche synchronisieren (Wechselschalter)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von Oekel »

Moin,

ich glaube dass ich mir eine ungewollte Schleife durch einen falschen Trigger oder fehlende Abfrage im Script gebastelt habe.

Ziel des ganzen soll ein "Wechselschalter" (die "", weil es später auch mit 3,4,5... Schaltern funktionieren soll)

Mein Vorgehen:
Ich packe Alle Schalter vom Typ Switch in eine gemeinsame semantische Gruppe.
Dann formuliere ich den Trigger wie folgt (siehe auch Anhänge zum schnelleren Lesen mit Blockly):

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      groupName: lights_bath0
    type: core.GroupStateChangeTrigger

Code: Alles auswählen

var switchMirrow, switchShower;

var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);

var dtf = Java.type("java.time.format.DateTimeFormatter");

var zdt = Java.type("java.time.ZonedDateTime");

function getZonedDateTime (datetime) {
  return zdt.parse(datetime + ' 00:00:00 +00:00', dtf.ofPattern('yyyy-MM-dd HH:mm:ss z'))
}

var persistence = Java.type('org.openhab.core.persistence.extensions.PersistenceExtensions');


switchMirrow = 'ZWaveNode012FSG213SingleSwitch2_Switch1';
switchShower = 'ZWaveNode011FGS213SingleSwitch2_Switch2';
logger.info(itemRegistry.getItem(switchMirrow).getState());
logger.info(itemRegistry.getItem(switchShower).getState());
if (persistence.lastUpdate(itemRegistry.getItem(switchMirrow)) > persistence.lastUpdate(itemRegistry.getItem(switchShower))) {
  events.sendCommand(switchShower, itemRegistry.getItem(switchMirrow).getState());
} else {
  events.sendCommand(switchMirrow, itemRegistry.getItem(switchShower).getState());
}
Könnt ihr mir eine Empfehlung geben? Aus der Logik heraus, müsste ich meines Erachtens filtern welcher der Schalter das Event getriggert hat, um diesen dann nicht erneut zu verändern (so dass er die anderen Schalter ihn wiederum auslösen)

Ich glaube sogar, dass ich in eine Endlosschleife gelange, wenn ich statt ">" ein ">=" verwenden würde :oops:

PS: Noch schöner wäre es natürlich, wenn man es ganz ohne Rule mittels des semantischen Modells abbilden könnte, aber ich denke das geht nicht, oder?
von udo1toni » 9. Jan 2022 20:27
ok, es ergibt sich die nächste Frage... Ist das Relais tatsächlich in Gebrauch (also ein Verbraucher daran angeschlossen) oder ist das "Abfall"?

Wenn das Relais von einem der Taster den eigentlichen Verbraucher schaltet, was ist dann mit den anderen Relais?
Ich bin mir nicht sicher, was alles bei ZWave geht, aber es böte sich dann vermutlich an, die Taster auf ZWave-Ebene zu synchronisieren. openHAB bekommt dann nur "einen" Taster überhaupt zu Gesicht.
Streng genommen wäre es sogar so, dass openHAB nicht mal den Taster nutzt, sondern das Relais, also den Ausgang. openHAB erfährt, wenn das Relais anzieht, genauso wie wenn es abfällt. Umgekehrt sendet openHAB den Befehl, das Relais ein- oder auszuschalten.

Wenn die Hardware die Unterscheidung verschiedener Tastendrücke erlaubt (Einfachklick, Doppelklick, Dreifachklick, Drücken und halten, Loslassen) wird es vermutlich einen Channel geben, über den für jedes dieser Ereignisse ein anderer Code gesendet wird. Man kann dann in openHAB eine Rule anlegen, die auf diese Ereignisse reagiert und beliebige Prozesse startet.

Es ist übrigens auch möglich, dass Du Taster und Relais logisch voneinander trennen kannst. Kommt natürlich auf die Hardware an, was diese unterstützt. Mit ZWave kenne ich mich überhaupt nicht aus, aber die Funktionen an dieser Stelle sind ja erst mal unabhängig von der Art der Kommunikation.
Gehe zur vollständigen Antwort
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von udo1toni »

Warum überhaupt Schalter?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von Oekel »

udo1toni hat geschrieben: 8. Jan 2022 15:32 Warum überhaupt Schalter?
Du meinst warum mein SmartHome Schalter hat?
Also ich Mag es in Layern der Abstraktion zu denken.
Ich habe alle meine (mini)Server sowie die Switche (Poe) separat abgesichert (sogar eigener FI)
Sollte nun also die Ethernetverbindung zum Pi gekappt werden (ebenfalls über Poe)
So läuft 95% meines Hauses weiterhin wie man es erwarten würde.

Ebenso werde ich es später mit STT (cloud) handhaben. Sprich OH ist bei mir komplett offline tauglich und Sprachgefehle sind ein optionales Extra.

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

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von udo1toni »

Nein. Warum Schalter? Ich habe im ganzen Haus Taster. Ich habe 2005 auf knx gesetzt und es keine Sekunde bereut (nicht mal, als der Estrichleger sagte, dass er noch nie so viele Kabel auf einem Haufen gesehen habe).
In knx ist es üblich, Taster zu verbauen. Ob diese dann als Schalter (ein Taster für EIN, ein anderer Taster für AUS) oder als reiner Taster (derselbe Taster schaltet abwechselnd EIN und AUS) genutzt werden, hängt von der Parametrierung ab. Wechsel- und Kreuzschaltung (Wechselschaltung mit mehr als zwei Schaltern...) werden über die Parametrierung gelöst. Wpohlgemerkt, in knx gibt es keinen TOGGLE Befehl, es gibt nur eindeutige Anweisungen, also AN oder AUS. Der Taster nutzt dann einen Rückkanel, über den der Schaltaktor dem Taster mitteilt, welche Schaltstellung er hat. entsprechend weiß jeder Taster dann, ob er als nächstes AN oder AUS senden muss, wenn er gedrückt wird.

Die Frage ist also nun, was machen Deine Schalter? Schalten sie, oder sind es in Wirklichkeit Taster? Und falls es Taster sind: senden sie unterschiedliche Telegramme oder immer das gleiche Telegramm?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von Oekel »

udo1toni hat geschrieben: 8. Jan 2022 23:00 Und falls es Taster sind: senden sie unterschiedliche Telegramme oder immer das gleiche Telegramm?
Ja jetzt wird es vermutlich kniffelig in mein Setup zu blicken.
Das Schalterprogramm besteht tatsächlich aus Tastern. Die ZWave Module dahinter (meist Fibaro) triggern ein Relai im selbigen Gehäuse und wenn ich es richtig seh, dann wird der neue Zustand dieses Relais/Schalter übermittelt.

Ich habe bislang nicht viel über die Parametrisierung dieser Hardware rausgefunden/verstanden (wollte auch noch den Doppel- Dreifachklich auswerten etc.)

Wenn ich dich richtig verstehe, dann muss ich die Hardware dazu überreden das Relais unter keinen Umständen sofort zu schalten, sondern den Response vom Broker abzuwarten?

Ich weiß nicht, ob das machbar ist aber mit Sicherheit verliere ich somti den "BackUpLayer" falls OH in 0,001% mal nicht erreichbar sein sollte ;)
Falls dir da etwas zur Erklärung/Diagnose einfällt, bin in offen für jeden Ratschlag.

So langsam merke ich wie riesig dieses Softwarepaket ist...

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

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von udo1toni »

ok, es ergibt sich die nächste Frage... Ist das Relais tatsächlich in Gebrauch (also ein Verbraucher daran angeschlossen) oder ist das "Abfall"?

Wenn das Relais von einem der Taster den eigentlichen Verbraucher schaltet, was ist dann mit den anderen Relais?
Ich bin mir nicht sicher, was alles bei ZWave geht, aber es böte sich dann vermutlich an, die Taster auf ZWave-Ebene zu synchronisieren. openHAB bekommt dann nur "einen" Taster überhaupt zu Gesicht.
Streng genommen wäre es sogar so, dass openHAB nicht mal den Taster nutzt, sondern das Relais, also den Ausgang. openHAB erfährt, wenn das Relais anzieht, genauso wie wenn es abfällt. Umgekehrt sendet openHAB den Befehl, das Relais ein- oder auszuschalten.

Wenn die Hardware die Unterscheidung verschiedener Tastendrücke erlaubt (Einfachklick, Doppelklick, Dreifachklick, Drücken und halten, Loslassen) wird es vermutlich einen Channel geben, über den für jedes dieser Ereignisse ein anderer Code gesendet wird. Man kann dann in openHAB eine Rule anlegen, die auf diese Ereignisse reagiert und beliebige Prozesse startet.

Es ist übrigens auch möglich, dass Du Taster und Relais logisch voneinander trennen kannst. Kommt natürlich auf die Hardware an, was diese unterstützt. Mit ZWave kenne ich mich überhaupt nicht aus, aber die Funktionen an dieser Stelle sind ja erst mal unabhängig von der Art der Kommunikation.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von Oekel »

udo1toni hat geschrieben: 9. Jan 2022 20:27 ok, es ergibt sich die nächste Frage... Ist das Relais tatsächlich in Gebrauch (also ein Verbraucher daran angeschlossen) oder ist das "Abfall"?
Nein es hängt tatsächlich jeweils eine Lampe (am ersten) dran, da ich ursprüngliche Schalter 1:1: mit diesem Modul+Taster getauscht habe.
Taster 2,3,... Bilden jedoch so etwas ab, wo ich tatsächlich nur den Input nutze.
udo1toni hat geschrieben: 9. Jan 2022 20:27 es böte sich dann vermutlich an, die Taster auf ZWave-Ebene zu synchronisieren. openHAB bekommt dann nur "einen" Taster überhaupt zu Gesicht.
Streng genommen wäre es sogar so, dass openHAB nicht mal den Taster nutzt, sondern das Relais, also den Ausgang. openHAB erfährt, wenn das Relais anzieht, genauso wie wenn es abfällt. Umgekehrt sendet openHAB den Befehl, das Relais ein- oder auszuschalten.
Genau so ist es. Jedoch habe ich diese Art der Synchronisation noch nicht verstanden (Anhand der Konfiguration des FIBARO FGS213, um mal den Namen auch zu nennen, sieht es fast danach aus)
Falls es also ein Fibaro-Experte an dieser Stelle ließt, wäre ich für jede Hersteller spezifische Info dankbar.
udo1toni hat geschrieben: 9. Jan 2022 20:27 Wenn die Hardware die Unterscheidung verschiedener Tastendrücke erlaubt (Einfachklick, Doppelklick, Dreifachklick, Drücken und halten, Loslassen) wird es vermutlich einen Channel geben, über den für jedes dieser Ereignisse ein anderer Code gesendet wird. Man kann dann in openHAB eine Rule anlegen, die auf diese Ereignisse reagiert und beliebige Prozesse startet.
Ja vermutlich, aber noch mal eine andere Baustelle ;)
udo1toni hat geschrieben: 9. Jan 2022 20:27 Es ist übrigens auch möglich, dass Du Taster und Relais logisch voneinander trennen kannst. Kommt natürlich auf die Hardware an, was diese unterstützt. Mit ZWave kenne ich mich überhaupt nicht aus, aber die Funktionen an dieser Stelle sind ja erst mal unabhängig von der Art der Kommunikation.
Kannst du das noch etwa genauer erläutern? Klinkt sehr interessant und da ich OH Stück für Stück kennen lernen möchte wäre das ein Thema wo ich tiefer einsteigen könnte. (Channels des FGS213 sind übringens, Switch, Batterielevel, Meter(Watt)...)

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von sihui »

Oekel hat geschrieben: 11. Jan 2022 11:18 FIBARO FGS213
Ich kann nicht so ganz folgen was du jetzt eigentlich genau wissen willst.

Die Fibaro Geräte beherrschen den Channel scene_number, den verknüpfst du sinnigerweise mit einem Number Itemtype.
Wenn du alle möglichen Kombinationen erhalten willst musst du die Konfigurationsparameter auf 15 einstellen (beim FGS213 müssten das Parameter 28 und 29 sein, bitte im Handbuch nachschauen).
Bei Einfach-, Doppel-, Dreifach, langem-, kurzem Klick (abhängig natürlich vom jeweiligen Gerät) wird eine Zahl erzeugt.
Diese Zahl wertest du in einer Rule aus und machst dann das, was du als sinnvoll erachtest:

Code: Alles auswählen

Item DeinFGS213 received update xx
Für deinen FGS213 stehen diese Codes in der Herstellerdoku:

https://manuals.fibaro.com/de/switch-2/

Alternativ schaltet man das Zwave Binding auf DEBUG und löst das jeweilig gewünschte Klicken aus, dann siehst du direkt im Log welche Nummer zu welchem Schaltbefehl gehört.

Edit: diese Nummern gehören zum Beispiel zum FGS223 mit 2 Relais:
Switch 1: 1xclick=1.0 ,2xclick=1.3, 3xclick=1.4, press and hold=1.1
Switch 2: 1xclick=2.0 ,2xclick=2.3, 3xclick=2.4, press and hold=2.1
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von Oekel »

sihui hat geschrieben: 11. Jan 2022 12:31
Oekel hat geschrieben: 11. Jan 2022 11:18 FIBARO FGS213
Ich kann nicht so ganz folgen was du jetzt eigentlich genau wissen willst.

Die Fibaro Geräte beherrschen den Channel scene_number, den verknüpfst du sinnigerweise mit einem Number Itemtype.
Deine Beschreibung bezieht sich nun aber erst mal nur auf die verschiedenen Drückvariationen, richtig?
Was ich noch ergründen möchte, ob ich zwei (oder mehr) Fibaros (ohne OH) synchronisiert werden können (siehe
udo1toni hat geschrieben:
), damit ich im OH nur einen Schalter auswerten/betrachten muss.

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Mehrere Switche synchronisieren (Wechselschalter)

Beitrag von sihui »

Oekel hat geschrieben: 11. Jan 2022 12:51 Was ich noch ergründen möchte, ob ich zwei (oder mehr) Fibaros (ohne OH) synchronisiert werden können
Ja, das geht auch. Und zwar heißt das Zauberwort "Direkte Assoziation".
Damit die Fibaro mit openHAB kommunizieren können muss die Association Group 1 (normalerweise Lifeline genannt) auf den Controller zeigen.
Willst du Zwave Geräte direkt kommunizieren lassen, müssen die Association Groups >1 entsprechend auf das jeweilige Gerät gesetzt werden.

Am Beispiel eines FGS223 (bei mir nur für openHAB konfiguriert):
assoc.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Antworten