In that case, this script may be useful for you. It’s highly personalized for my implementation, but a rule for your wallmote would be similar. My minimotes use the older version of SCENE_ACTIVATION (no decimals), but that should be easily adapted.
from core.rules import rule
from core.triggers import when
rooms = {
"Minimote_1": {"device": "gDS_FamilyRoom_Bulb", "level": 0},# family room
"Minimote_2": {"device": "US_MasterBedroom_Dimmer", "level": 0},# bedroom
"Minimote_3": {"device": "DS_MasterBedroom_Dimmer", "level": 0}# guest bedroom
}
brightness = {
0 : "0",
1 : "1",
2 : "25",
3 : "98"
}
@rule("Minimote: Minimote")
@when("Member of gMinimote received update")
def minimote(event):
minimote.log.info("{0}: Scene {1}".format(event.itemName,event.itemState))
if event.itemState == DecimalType(1):
if event.itemName in ["Minimote_1", "Minimote_2", "Minimote_3"]:
if items["Wakeup_Alarm"] == ON:
events.sendCommand("Wakeup_Alarm_Snooze","ON")
minimote.log.info("{}: Scene 1: Button 1 (pressed): Turned on snooze".format(event.itemName))
else:
rooms[event.itemName]["level"] = rooms[event.itemName]["level"] + 1 if rooms[event.itemName]["level"] < 3 else 0
events.sendCommand(rooms[event.itemName]["device"], brightness[rooms[event.itemName]["level"]])
minimote.log.info("{}: Scene 1: Button 1 (pressed): brightness [{}]".format(event.itemName, brightness[rooms[event.itemName]["level"]]))
elif event.itemName == "Minimote_4":
events.sendCommand("GarageDetached_Door","OFF" if items["GarageDetached_Door"] == "ON" else "ON")
minimote.log.info("Minimote 4: Scene 1: Button 1 (pressed): Toggle detached garage door")
elif event.itemState == DecimalType(2):
if event.itemName == "Minimote_1":
events.sendCommand("Outlet6","OFF" if items["Outlet6"] == ON else "ON")
minimote.log.info("Minimote 1: Scene 2: Button 1 (held): Toggle family room TV outlet")
elif event.itemName == "Minimote_2":
events.sendCommand("Outlet2","OFF" if items["Outlet2"] == ON else "ON")
minimote.log.info("Minimote 2: Scene 2: Button 1 (held): Toggle bedroom TV outlet")
elif event.itemName == "Minimote_3":
events.sendCommand("Outlet5","OFF" if items["Outlet5"] == ON else "ON")
minimote.log.info("Minimote 3: Scene 2: Button 1 (held): Toggle guest bedroom TV outlet")
elif event.itemName == "Minimote_4":
events.sendCommand("GarageAttached_Door","OFF" if items["GarageAttached_Door"] == ON else "ON")
minimote.log.info("Minimote 4: Scene 2: Button 1 (held): Toggle attached garage door")
elif event.itemState == DecimalType(3):
if items["Wakeup_Alarm"] == ON:
events.sendCommand("Wakeup_Alarm_Snooze","ON")
minimote.log.info("Minimote: Scene 3: Button 2 (pressed): Turned on snooze")
else:
events.sendCommand("gBackLight","98" if items["gBackLight"] == DecimalType(0) else "0")
minimote.log.info("Minimote: Scene 3: Button 2 (pressed): Toggle Back patio lights")
elif event.itemState == DecimalType(4):
events.sendCommand("Audio_Notification","Beer is being requested. Repeat, beer is being requested... PLEASE!")
minimote.log.info("Minimote: Scene 4: Button 2 (held): Request beer")
elif event.itemState == DecimalType(5):
if items["Wakeup_Alarm"] == ON:
events.sendCommand("Wakeup_Alarm_Snooze","ON")
minimote.log.info("Minimote: Scene 5: Button 3 (pressed): Turned on snooze")
else:
events.sendCommand("gOutsideLight","98" if items["gOutsideLight"] == DecimalType(0) else "0")
minimote.log.info("Minimote: Scene 5: Button 3 (pressed): Toggle outside lights")
elif event.itemState == DecimalType(6):
if items["gSiren"] == ON:
events.sendCommand("gSiren","OFF")
elif items["gSiren"] == OFF:
events.sendCommand("gSiren","ON")
events.sendCommand("SMS_Notification","WARNING! Sirens turned on with Minimote!")
minimote.log.info("Minimote: Scene 6: Button 3 (held): Toggle sirens")
elif event.itemState == DecimalType(7):
if event.itemName == "Minimote_1":
if items["Wakeup_Alarm"] == ON:
events.sendCommand("DS_FamilyRoom_Speaker_Volume", "25" if items["DS_FamilyRoom_Speaker_Volume"] == "0" else "0")
elif items["DS_FamilyRoom_Speaker_Stop"] == ON:
events.sendCommand("DS_FamilyRoom_Speaker_PlayURI", "HouseShuffle")
else:
events.sendCommand("DS_FamilyRoom_Speaker_Stop", "ON")
minimote.log.info("Minimote 1: Scene 7: Button 4 (pressed): Family Room Mute/unmute Wakeup_Alarm, play house shuffle, or stop")
elif event.itemName == "Minimote_2":
if items["Wakeup_Alarm"] == ON:
events.sendCommand("US_MasterBathroom_Speaker_Volume", "25" if items["US_MasterBathroom_Speaker_Volume"] == "0" else "0")
elif items["US_MasterBathroom_Speaker_Stop"] == ON:
events.sendCommand("US_MasterBathroom_Speaker_PlayURI", "HouseShuffle")
else:
events.sendCommand("US_MasterBathroom_Speaker_Stop", "ON")
minimote.log.info("Minimote 2: Scene 7: Button 4 (pressed): Bedroom Mute/unmute Wakeup_Alarm, play house shuffle, or stop")
elif event.itemName == "Minimote_3":
if items["Wakeup_Alarm"] == ON:
events.sendCommand("DS_MasterBathroom_Speaker_Volume", "25" if items["DS_MasterBathroom_Speaker_Volume"] == "0" else "0")
elif items["DS_MasterBathroom_Speaker_Stop"] == ON:
events.sendCommand("DS_MasterBathroom_Speaker_PlayURI", "HouseShuffle")
else:
events.sendCommand("DS_MasterBathroom_Speaker_Stop", "ON")
minimote.log.info("Minimote 3: Scene 7: Button 4 (pressed): Guest bedroom Mute/unmute Wakeup_Alarm, play house shuffle, or stop")
elif event.itemName == "Minimote_4":
events.sendCommand("Audio_Notification","Your assistance is being requested outside.")
minimote.log.info("Minimote 4: Scene 7: Button 4 (pressed)")
elif event.itemState == DecimalType(8):
if event.itemName in ["Minimote_1", "Minimote_2", "Minimote_3"]:
events.sendCommand("HouseShuffle_Advance","ON")
minimote.log.info("Minimote 1,2,3: Scene 8: Button 4 (held): Advanced house shuffle")
elif event.itemName == "Minimote_4":
events.sendCommand("Audio_Notification","WARNING! Your assistance is being urgently requested outside. WARNING! Your assistance is being urgently requested outside.")
minimote.log.info("Minimote 4: Scene 8: Button 4 (held)")