Hi all,
I’m finally going to take the plunge and start converting my xtend rules to JSR233. I’d like to start with a lighting preset rule that relies heavily on groups but I’m not clear on how to use Jython to work with groups. The rule is:
rule "Dev Lighting Preset Selection"
when
Member of gLightingPresetSetting received update
then
var GroupItem triggeringRoomGroup
logInfo("dev", "NG3: Lighting preset triggered.")
logInfo("dev", "NG3: Lighting preset triggeringItem = (" + triggeringItem.name + ") " + "has state (" + triggeringItem.state + ")." )
// gRoomGroup = "gRoom" as GroupItem
gRoom.members.forEach[roomGroup|
if (roomGroup instanceof GroupItem)
{
roomGroup.members.forEach[roomMember|
if (roomMember.name == triggeringItem.name)
{
triggeringRoomGroup = roomGroup
logInfo("dev", "NG3: Triggering item was (" + triggeringItem.name + "), in room group (" + triggeringRoomGroup.name + ")")
}
]
}]
// Loop through all items in the room group to get items in room with required values, e.g. motion lighting timeout, lighting luminance threshold, etc
triggeringRoomGroup.members.forEach[roomItem|
gLighting.members.forEach[lightingMember|
if (roomItem.name == lightingMember.name)
{
val lightingPresetName = lightingMember.name + "_gLightingPreset" + triggeringItem.state
val lightingPresetItemName = gLightingPreset.members.findFirst[ i | i.name == lightingPresetName ]
logInfo("dev", "NG3: Lighting item name is (" + lightingMember.name + ") in room group (" + triggeringRoomGroup.name + ") with state (" + lightingMember.state + ").")
logInfo("dev", "NG3: Lighting preset item name is (" + lightingPresetItemName.name + ") with state (" + lightingPresetItemName.state + ").")
if (lightingPresetItemName.state != NULL) {
// logInfo("dev", "NG3: setting lighting item to preset value...")
lightingMember.sendCommand(lightingPresetItemName.state)
// logInfo("dev", "NG3: set lighting item to preset value.")
}
else {
lightingMember.sendCommand(OFF)
}
// Thread::sleep(100)
}
]
]
end
I like this rule because it allows me to move lights between rooms (I sometimes do this with Hue bulbs) and all I need to do is change the room group that the lights are in and that moves them between room presets.
Could someone point me at some examples of working with groups in Jython please? I feel like my google skills are lacking today and I must be missing something obvious.
Thanks!