Regel wenn ein Gruppemember ON ist

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Regel wenn ein Gruppemember ON ist

Beitrag von peter-pan »

Ich bin mir nicht sicher, was du genau meinst, aber schau mal weiter vorne, da hat Udo dir ein schönes Beispiel mit einer Lambda-Funktion gezeigt. Diese könntest du ggf. etwas modifiziert für deinen Zwecke umgestalten, falls deine Gruppen-Items nicht durch einen verlinkten Channel oder andere Rules verändert werden. Deshalb fürchte ich wird es ohne Dummy-Items nicht gehen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Regel wenn ein Gruppemember ON ist

Beitrag von udo1toni »

Piko hat geschrieben: 3. Apr 2020 20:29 Ja aber dann müsste ich für jeden Shelly eine rule machen.

Ich dachte da an etwas eleganteres. So aller Gruppe Shelly und da werden alle Werte umgewandelt. Bzw. Jeder Wert der sich ändert.

Vielleicht hat da ja noch jemand ne Idee.
Das ist sehr einfach, ein paar kleine Regeln müssen allerdings eingehalten werden. Im Groben:
Du definierst zwei Gruppenitems, ich nenne sie mal gIn und gOut. In der einen Gruppe werden alle Ankommenden Items gruppiert, in der anderen Gruppe alle abgehenden Items. Weiterhin muss sich der Name des abgehenden Items aus dem ankommenden Item ableiten lassen. Beispiel:

Code: Alles auswählen

Group gIn
Group gOut
Switch sIn_1 (gIn)
Switch sIn_2 (gIn)
Switch sOut_1 (gOut)
Switch sOut_2 (gOut)
Nun reicht eine Rule:

Code: Alles auswählen

rule "in und out"
when
    Member of gIn changed
then
    gOut.members.filter[ i|
        i.name.split("_").get(1)==triggeringItem.name.split("_").get(1) 
    ].head.sendCommand(triggeringItem.state)
end
Im Beispiel ist also jeweils der zweite Teil des Itemnamens identisch, der erste Teil des Namens unterscheidet sich, ist aber innerhalb der Gruppe gleich.

Im Beispiel wird einfach nur die Änderung des einen Items an das andere Item weitergegeben, man kan aber leicht beliebig komplexe Manipulationen einbinden.

Die Rule triggert, sobald einer der Member der Gruppe gIn sich ändert.
Welches Item das ist, ist in triggeringItem gespeichert.
In der Rule wird die Gruppe gOut gefiltert auf die Items, welche im zweiten Teil des Namens identisch zum triggernden Item sind. Theoretisch könnte das auf mehrere Items zutreffen, das Ergebnis dieses Filters ist also immer eine Liste, die auch kein Element enthalten könnte. Wir interessieren uns hier für das erste Element der Liste (.head) (und da wir die Gruppen selbst gefüllt haben, wissen wir auch, dass dies immer das einzige Item der Liste ist.)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Piko
Beiträge: 93
Registriert: 26. Nov 2019 19:05
Answers: 0

Re: Regel wenn ein Gruppemember ON ist

Beitrag von Piko »

EDIT :

Hab den Fehler selbst gefunden. Wenn man nicht schreiben kann sollte man es lassen. Hatte einen Tippfehler in den Items.


Also bitte vergessen

Antworten