Seite 2 von 2

Re: Reale Behanghöhe im Item anzeigen (HmIP-FROLL)

Verfasst: 1. Jun 2026 18:40
von rbeudel
Das habe ich auch nicht hinbekommen. In der Sitemap habe ich so wie Du beide Items nebeneinader Dargestellt. Für die neue UI gibt es Widgets bei der Beide Kanäle angegeben werden können. Dort wird die Behnghöhe zumindest bildlich Dargestellt

Re: Reale Behanghöhe im Item anzeigen (HmIP-FROLL)

Verfasst: 9. Jun 2026 00:26
von udo1toni
Grundsätzlich gibt es immer zwei Möglichkeiten:
1. direkt verlinken
Ein Rollershutter Item, beide Channel sind direkt mit diesem Item verlinkt. Dabei ist zu beachten: Es bekommen beide Channel den Steuerbefehl, wenn openHAB ein sendCommand sendet. Wenn beide Channel tatsächlich ein Status Update senden, gewinnt der letzte empfangene Wert.
2. indirekt (über ein paar Rules) verlinken (das geht immer).
Dazu brauchst Du drei Items, nämlich je eines für die beiden Channel und ein drittes, ungebundenes.
Welchen Itemtyp Du verwendest, ist dabei individuell. Das ungebundene Item wird später in der Sitemap (bzw. UI) verwendet, es bietet sich also an, dieses als Rollershutter Item anzulegen. Die beiden anderen legst Du passend zu den beiden Channeln an. Nehmen wir an, die Items heißen RS_UI, RS_Control und RS_State, dann braucht es noch ein paar Rules:

Code: Alles auswählen

rule "update RS state"
when
    Item RS_State changed
then
    if(!(newState instanceof Number)) return; // Status keine Zahl, Abbruch
    RS_UI.postUpdate(newState) // speichere neuen Status in RS_UI
end

rule "control RS"
when
    Item RS_UI received command
then
    RS_Control.sendCommand(receivedCommand)
end
Falls der Channel nur bestimmte Befehle annimmt, kannst Du die zweite Rule auch aufwändiger bauen :) und bestimmte Befehle umschreiben oder ausfiltern.

Außerdem kann man mit den beiden Rules auch sehr leicht ein reziprokes Verhalten erreichen:
aus UP mach DOWN und umgekehrt; Bei Zahlenwerten nimm a = 100 - b

Wenn man mehrere gleichartige Antriebe hat, kann man die Itemnamen geschickt wählen (ähnlich dem Beispiel), dei Items in Gruppen zusammenfassen und dann die Rules so schreiben, dass sie jeweils auf Member of Groupitem reagieren. Dann kommt man mit je einer Rule für alle Channel aus und ide Rule wird nur unwesentlich komplexer:

Code: Alles auswählen

rule "einer Rule für alle RS Controls"
when
    Member of gRS_UI received command // z.B. RS_UI_raum1
then
    val raum = triggeringItem.name.split("_").get(2) // z.B. "raum1"
    val control = gRS_Control.members.filter[i|i.name.endsWith(raum)].head
    control.sendCommand(receivedCommand)
end
Die Gegenrichtung kann man in ähnlicher Form gestalten.