Seite 1 von 1

Groupitem vs Proxyitem

Verfasst: 27. Nov 2023 06:34
von Janm
Hallo zusammen,

Ich habe bisher mit Proxyitems gearbeitet, immer dann wenn ich z.B. mehrere LED-Spots also Gruppe schalten will/wollte.

https://community.openhab.org/t/design- ... item/15991

Ist das mit Openhab 4 eigentlich noch state of the Art oder gibt es eine elegantere Lösung für ein solches Szenario?

Ich muss dazu sagen, dass ich mich bisher noch nicht weiter damit beschäftigt habe, ..."das haben wir schon immer so gemacht" ;)

Viele Grüße

Jan

Re: Groupitem vs Proxyitem

Verfasst: 27. Nov 2023 12:18
von peter-pan
Hast du hier schon mal geschaut ?

Da steht :

Code: Alles auswählen

Groups do not only aggregate information from individual member Items, they can also accept commands. Sending a command to a Group causes the command to be sent to all Group members. An example of this is shown by the second group above; sending a single ON or OFF command to that group turns all lights in the group on or off.
Und so wie ich das verstehe, bedeutet das auch das man über einen Group-Switch auch schalten kann. Ich denke aber es müssen immer die gleichen Arten von Geräten (Schaltern) sein. Hab's aber schon lange nicht mehr in dieser Form genutzt. Also blanke Theorie ;)

Re: Groupitem vs Proxyitem

Verfasst: 27. Nov 2023 22:39
von udo1toni
Selbstverständlich kann man mit einem Group Item auch alle Member befehligen, und tatsächlich ist das nicht auf gleiche Itemarten beschränkt, allerdings braucht es dann eine Rule.
Wenn man hingegen einfach nur mehrere gleichartige Items identisch steuern möchte (also z.B. lauter Switch Items immer gleich auf ON oder auf OFF oder auch mehrere Dimmer Items auf die gleiche Helligkeit), dann sollte es ausreichen, das Group Item auf die gleiche ITemart zu bringen, also z.B. Group:Dimmer oder auch Group:Rollershutter, damit das Group Item den korrekten Befehlssatz kennt und an die Member weiterreichen kann.

Wenn dies nicht direkt funktioniert, geht es wie erwähnt mit einer Rule:

Code: Alles auswählen

rule "Gruppen Befehl weiterleiten"
when
    Item gMyGroup received command
then
    gMyGroup.members.forEach[i|
        i.sendCommand(receivedCommand)
    ]
end
Und da hier die Gruppe Item für Item durchlaufen wird, kann man sogar noch eingreifen und gezielt das zu sendende Kommando manipulieren.
Die Rule kann ebenso über die UI erstellt werden, es braucht aber schon ein paar Zeilen Code, direkt über eine einfache Action geht es nicht.