Its been working great for me. If it helps this is my rule that updates the lock status from the alarm raw event for all my locks.
rule "Lock: Update lock states after alarm_raw event"
when
Item Lock_DiningRoom_DeckDoor_AlarmRaw changed
or
Item Lock_FrontRoom_FrontDoor_AlarmRaw changed
or
Item Lock_DiningRoom_GarageDoor_AlarmRaw changed
or
Item Lock_Garage_RVPadDoor_AlarmRaw changed
or
Item Lock_LivingRoom_BasementDoor_AlarmRaw changed
then
//Take use item name of triggering event to determin the name of the Lock Item
val actionItem = gAll_Locks.members.findFirst[ item | item.name.toString == triggeringItem.name.toString.replace("_AlarmRaw","_DoorLock") ]
//Process the JSON from the raw alarm to get the Type and Value
val actionType = transform("JSONPATH", "$.type",triggeringItem.state.toString)
val actionTypeValue = transform("JSONPATH", "$.value", triggeringItem.state.toString)
//Log the values
logDebug("RULE_SYSTEM", "DiningRoom Deck Door Event Triggered")
logDebug("RULE_SYSTEM", "Lock: Alarm events: Item Name: {}, Item State: [{}]",actionItem.name.toString,triggeringItem.state.toString)
logDebug("RULE_SYSTEM", "Lock: Alarm events: TFormed State: {}, StateValue: {}", actionType, actionTypeValue)
/* Alarm types and levels from the documentation
Alarm Type Alarm Level Notification Event
021 001 Lock Secured using Keyed cylinder or inside thumb-turn
023 001 Lock Secured by Controller – Bolt Jammed (Not fully extended)
024 001 Lock Secured by Controller – Successful (Fully extended)
026 001 Lock Auto Secured – Bolt Jammed (Not fully extended)
027 001 Lock Auto Secured – Successful (Fully extended)
017 001 Lock Secured at Keypad – Bolt Jammed (Not fully extended)
018 000 or User-ID#* Lock Secured at Keypad – Successful (Fully extended)
019 User-ID#* Lock Un-Secured by User (User-ID) at Keypad
022 001 Lock Un-Secured using Keyed cylinder or inside thumb-turn
025 001 Lock Un-Secured by Controller – Successful (Fully retracted)
161 001 Failed User Code attempt at Keypad
167 001 Low battery level
168 001 Critical battery level
169 001 Battery level too low to operate lock
112 User-ID#* New User Code (User-ID#) added to the lock
032 001 All User Codes deleted from lock
162 User-ID#* Attempted access by user (User-ID#) outside of scheduled
* User-ID# values: 001 to 030
Rule inspired by this but modified to work with our locks
https://community.openhab.org/t/zwave-yale-yrd220-lock/34180/5
*/
switch (actionType) {
//Locking actions
case "17": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Secured at Keypad – Bolt Jammed (Not fully extended)", actionItem.name)
}
case "18": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Secured at Keypad by User [{}] – Successful (Fully extended)", actionItem.name, actionTypeValue)
}
case "21": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Secured using Keyed cylinder or inside thumb-turn", actionItem.name)
}
case "23": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Secured by Controller – Bolt Jammed (Not fully extended)", actionItem.name)
}
case "24": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Secured by Controller – Successful (Fully extended)", actionItem.name)
}
case "26": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Auto Secured – Bolt Jammed (Not fully extended)", actionItem.name)
}
case "27": {
actionItem.postUpdate(ON)
logDebug("RULE_SYSTEM", "{} Lock Auto Secured – Successful (Fully extended)", actionItem.name)
}
//Unlocking actions
case "19": {
actionItem.postUpdate(OFF)
logDebug("RULE_SYSTEM", "{} Lock Un-Secured by User ({}}) at Keypad", actionItem.name, actionTypeValue)
}
case "22": {
actionItem.postUpdate(OFF)
logDebug("RULE_SYSTEM", "{} Lock Un-Secured using Keyed cylinder or inside thumb-turn", actionItem.name)
}
case "25": {
actionItem.postUpdate(OFF)
logDebug("RULE_SYSTEM", "{} Lock Un-Secured by Controller – Successful (Fully retracted)", actionItem.name)
}
//Misc Informational actions (No Locking\Unlocking with these)
case "161": {
logDebug("RULE_SYSTEM", "{} Failed User Code attempt at Keypad", actionItem.name)
}
case "167": {
logDebug("RULE_SYSTEM", "{} Low battery level", actionItem.name)
}
case "168": {
logDebug("RULE_SYSTEM", "{} Critical battery level", actionItem.name)
}
case "169": {
logDebug("RULE_SYSTEM", "{} Battery level too low to operate lock ", actionItem.name)
}
default : {
val String message = "Unknown door lock Event, " + triggeringItem.state.toString
logDebug("RULE_SYSTEM", "Lock: Alarm events: {}",message)
//SMS_Notification.sendCommand(message)
}
}
end