I think I understand. I have copied your rule and added my values to it. It looks like this:
import org.eclipse.smarthome.model.script.ScriptServiceUtil
rule "Lock: Update lock states after alarm_raw event"
when
Member of gLockRaw received update
then
val actionItem = ScriptServiceUtil.getItemRegistry.getItem(triggeringItem.name.toString.replace("_Alarm_Raw",""))
logInfo("Rules", "Lock: Alarm events: {}=[{}]",actionItem.name,triggeringItem.state.toString)
val StringBuilder message = new StringBuilder(actionItem.name)
switch (transform("JSONPATH","$.type",triggeringItem.state.toString)) {
case "ACCESS_CONTROL" : {
switch (transform("JSONPATH", "$.event", triggeringItem.state.toString)) {
case "21", case "18", case "24" : {
actionItem.postUpdate(ON)
message.append(" updated to ON (locked)")
}
case "22", case "19" : {
actionItem.postUpdate(OFF)
message.append(" updated to OFF (unlocked)")
}
// case "6" : {
// actionItem.postUpdate(OFF)
// message.append(" was unlocked with")
// switch (transform("JSONPATH", "$.code", triggeringItem.state.toString)) {
// case "1" : {
// message.append(" Scott's code")
// }
// case "2" : {
// message.append(" Lisa's code")
// }
// }
// }
case "26", case "17", case "23" : {
actionItem.postUpdate(OFF)// jammed could mean unlocked, so I do this for safety... you may want to send an alert here too
message.append(" is jammed, so setting lock to OFF (unlocked)")
}
// case "26", case "17", case "23" : {
// message.append(" keypad is disabled due to too many failed codes")
// }
default : {
message.append(" unknown door lock Event, ").append(triggeringItem.state.toString)
}
}
if (transform("JSONPATH", "$.event", triggeringItem.previousState(true).state.toString) == "26" && transform("JSONPATH", "$.event", triggeringItem.state.toString) != "26") {
message.append(" and is no longer jammed")
}
}
// case "BURGLAR" : {
// //gSiren.sendCommand(ON)
// message.append(" has detected an intruder")
// }
case "POWER_MANAGEMENT" : {
message.append(" received a Power Management alarm, ").append(triggeringItem.state.toString)
}
default : {
message.append(" received and unknown Type in alarmRawParser, ").append(triggeringItem.state.toString)
}
}
logInfo("Rules", "Lock: Alarm events: {}", message.toString)
end
I turned the code I feel I donât need into text.
I then created a lock.map under /etc/openhab2/transform, and copied
OFF=Unlocked
ON=Locked
undefined=Unknown
-=Unknown
NULL=Unknown
into it. The lock still ill does not update with manual activation. Any thoughts?