Oh, bitte nicht die Funktionen der Items durcheinander würfeln!
Du hast ein Item, welches in der Sitemap dargestellt wird. Das ist z.B. Das Item RollerShutter3.
Du hast drei Items, welche das Rollo auf die drei definierten Positionen fahren lassen, in diesem Fall dann Logo83RolloSpeisAUF_VB1006, Logo83RolloSpeisAB_VB1010 und Logo83RolloSpeisMittelpos_VB1007.
Du hast ein weiteres Item, welches wir eingeführt haben, damit die Stoptaste als Stoptaste funktioniert, das ist das Item shutter_Speis_Dir.
Dieses Item brauchst Du aber gar nicht, wenn Du die Stoptaste nicht als Stoptaste verwendest.
weiterhin untertützt Deine Steuerung offensichtlich kein direktes Positionieren, weshalb das Item ShutterPosition gar nicht gebraucht wird. Ich hatte das nur ursprünglich integriert, weil man das "halt so macht"

wenn der Rollladen direktes Positionieren unterstützt.
Deine Rule sollte also so aussehen:
Code: Alles auswählen
rule "control Shutter3"
when
Item RollerShutter3 received command
then
switch(receivedCommand) {
case UP : {
Logo83RolloSpeisAUF_VB1006.sendCommand(ON)
RollerShutter3.postUpdate(0)
}
case DOWN: {
Logo83RolloSpeisAB_VB1010.sendCommand(ON)
RollerShutter3.postUpdate(100)
}
case STOP : {
Logo83RolloSpeisMittelpos_VB1007.sendCommand(ON)
RollerShutter3.postUpdate(50)
}
}
end
Ich habe von der Logo! keine Ahnung, könnte mir aber vorstellen, dass Du von vornherein hier ein anderes Programm implementieren könntest, welches dann direktes Positionieren erlaubt.
Abschließend noch der Hinweis: Da Du offensichtlich mehrere Rollläden in dieser Art ansteuerst, bietet es sich an, die Rule zu generalisieren. Das funktioniert aber nur gut, wenn Du die Itemnamen sinnvoll gestaltest.
Faustregel für Itemnamen: Gleichartige Items sollten gleichartige Namen haben. Die Itemnamen sollten nichts mit der Hardware zu tun haben, denn Items haben nichts mit der Hardware zu tun.
Hardware wird über die Bindings angebunden, in openHAB3 ausschließlich über Things und Channel, bei openHAB1 ausschließlich über die Konfiguration der Items (also das angegebene Binding), in openHAB2 abhängig vom Binding entweder mit der einen oder der anderen Methode.
Um die Rule generalisieren zu können, musst Du die Itemnamen voneinander ableiten können, z.B. so:
Shutter1 (für die Sitemap), Shutter1_UP (Steueritem hoch), Shutter1_DOWN (Steueritem runter) und Shutter1_MID (Steueritem Mittelposition), die Du alle in eine gemeinsame Gruppe schmeist, z.B. gShutters (NICHT typisiert, keine Funktion).
Dann kann die Rule so aussehen:
Code: Alles auswählen
rule "control Shutter"
when
Member of gShutters received command
then
gItems = gShutters.members.filter[i|i.name.contains(triggeringItem.name)]
switch(receivedCommand) {
case UP : {
gItems.filter[i|i.name.contains("UP")].head.sendCommand(ON)
triggeringItem.postUpdate(0)
}
case DOWN: {
gItems.filter[i|i.name.contains("DOWN")].head.sendCommand(ON)
triggeringItem.postUpdate(100)
}
case STOP : {
gItems.filter[i|i.name.contains("MID")].head.sendCommand(ON)
triggeringItem.postUpdate(50)
}
}
end
Diese Rule brauchst Du exakt einmal, egal, wieviele Rollläden Du verwendest. Es müssen nur alle Items in der Gruppe gShutters zusammengefasst sein und der Namenskonvention entsprechen, das heißt, das Item in der Sitemap hat einen Namen, die drei Steueritems haben den selben Namen, nur jeweils mit angehängtem _UP, _DOWN, bzw. _MID.
Man könnte auch die Steueritems in einer eigenen Gruppe zusammenfassen, um die Rule nicht zusätzlich triggern zu lassen (jedes sendCommand auf eines der Items in der Gruppe löst ja die Rule aus), die Rule läuft aber auch so fehlerfrei, denn die Steueritems erhalten ja nur den Befehl ON.