I have the same bug (OH3).
The only temporary solution I found is a dirty one, and I’m not sure if it is a good idea… but it seems to work quite ok for my setup for now.
I use a [ where=“0” ] bus_automation Thing and relative Rollershutter Item. This seems to move all the rollershutters, while using the OH group was always “forgetting” a rollershutter or two behind.
The con is that this command does not update the single rollershutters positions after they are moved. In order to update the positions, i have set a rule to listen to the commands given to the where=0 item and send the same command to all rollershutters individually. This way most of the times the positions are updated. The ugly part is that every time 2 consecutive commands are fired: so the rollershutters start to move (where=0 item command), then after 1,2,3,… seconds the single items receive the command from the rule with the result that the rollershutters stop and then start moving again.
Before this I also tried using a timer to give the commands to the rollershutters delayed from one another, but with mixed results, so not a reliable solution in my case.
.things
bus_automation Generale_tapp "Generale Tapparelle" @ "Ingresso" [ where="0" ]
bus_automation Cucina_tapp1 "Tapparella 1 Cucina" @ "Cucina" [ where="91" ]
bus_automation Cucina_tapp2 "Tapparella 2 Cucina" @ "Cucina" [ where="94" ]
...
.items
Rollershutter iGenerale_tapp "Generale Tapparelle" <rollershutter> (gGenerale) [ "Blinds" ] { channel="openwebnet:bus_automation:mybridge:Generale_tapp:shutter", ga="Blinds" [ name="Tutte le tapparelle" ] }
Rollershutter iCucina_tapp1 "Tapparella 1 Cucina [chiusa: %d%%]" <rollershutter> (gCucina, gTapparelle, gTCucina) [ "Blinds" ] { channel="openwebnet:bus_automation:mybridge:Cucina_tapp1:shutter", autoupdate="true", ga="Blinds" [ roomHint="Cucina", name="Tapparella 1" ] }
Rollershutter iCucina_tapp2 "Tapparella 2 Cucina [chiusa: %d%%]" <rollershutter> (gCucina, gTapparelle, gTCucina) [ "Blinds" ] { channel="openwebnet:bus_automation:mybridge:Cucina_tapp2:shutter", autoupdate="true", ga="Blinds" [ roomHint="Cucina", name="Tapparella 2" ] }
...
Group:Rollershutter:OR(UP, DOWN) gTapparelle "Tutte le tapparelle" <rollershutter> (gAppartamento)
.rules
rule "Traccia comando a iGenerale_tapp e aggiorna lo stato di tutti i membri di gTapparelle"
when
Item iGenerale_tapp received command
then
logWarn("bticino.rules", ">>>>> iGenerale_tapp received command: " + receivedCommand)
// preparo un timer per aggiornare i vari item dopo 30 secondi (quindi di sicuro dopo che le tapparelle si sono spostate)
createTimer(now.plusSeconds(30)) [ |
gTapparelle.members.forEach[ item |
item.sendCommand("REFRESH")
//item.sendCommand( RefreshType.REFRESH )
]
]
// fornisco lo stesso comando ai vari item per forzare l'aggiornamento dello status
gTapparelle.members.forEach[ item |
item.sendCommand(receivedCommand)
Thread::sleep(1000)
]
end
About the item.sendCommand("REFRESH")
part - TBH I’m not sure if it is working, I left it there just-in-case.