Schlage BE469 Zwave (non plus) locks terrible at reporting lock status (don't report or varying delays from short to loooong)

Yup it does update immediately. I never see my front door left unlocked which is what my automations are about. If someone unlocks the door, it better lock in 3 minutes. 3 minutes is the leeway I added in case you are bringing things back and forth from the car :joy:

1 Like

I also have these locks. They report immediately. The difference with me though is that are attached to my ring alarm zwave network. They’ve been great locks tbh. I was going to move them to my regular z-wave at some point but haven’t yet.

Edit: correction. Mine are zwave plus. Didn’t realize they came both ways. I’ll C my way out of this A B conversation now. :joy:

2 Likes

@calisro I have had them for 7 years or more now so mine are older, and they have been a torture mostly to include/exclude. I believe the zwave plus version has features like NWI (network wide inclusion), much faster speed, S2 encryption (instead of the horrible S0), so I am glad to hear those work well. Given matter will bee out soon, and I believe Schlage was working on updated locks, I am waiting to replace them with the latest and greatest given the cost.

2 Likes

While the refresh helped I am still running into messages arriving late or in the incorrect order. I need to redo my node red flows as they only work when the messages arrive with little delay and in the right order. Unfortunately that is an area I still struggle with. Not too sure on the best way to code this as there is no consistency with with the messages arrives. I was assuming that the door messages are always fast but lately it seems not to be the case. Wasn’t the DSC alarm panel integration local? (that is what provides door status)

After revising the code that generates the alerts I was still getting alerts out of order. For example I open the patio door to let the dog out and nothing plays. I close the door mere seconds later and it says “door closed”. Then after a few more seconds it says “door open”. Luckily I had the debug turned on and caught this:

The commands sent to Alexa were in the right order however the first one (door open) was delayed until the second one was done playing.

[{"id":"b0d1fa2ab662fe12","type":"change","z":"22924e93ed954a8e","name":"Set Global Variables","rules":[{"t":"set","p":"patio_door_lock_state","pt":"global","to":"lock_state","tot":"msg"},{"t":"set","p":"patio_door_state","pt":"global","to":"door_state","tot":"msg"},{"t":"set","p":"patio_door_last_change","pt":"global","to":"lock","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1300,"y":660,"wires":[["ffb557443cf6ac84"]]},{"id":"51842ffcd3eb0fe2","type":"server-state-changed","z":"22924e93ed954a8e","name":"Patio Door Lock","server":"6f1799ba.17e938","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"lock.patio_door_lock","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":660,"wires":[["0ae9f5252ba6bdd1"]]},{"id":"40d3cf850b754332","type":"api-current-state","z":"22924e93ed954a8e","name":"Patio Door - state?","server":"6f1799ba.17e938","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.patio_door","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"door_state","propertyType":"msg","value":"","valueType":"entityState"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":550,"y":660,"wires":[["b0d1fa2ab662fe12"]]},{"id":"b50c67b2697af741","type":"server-state-changed","z":"22924e93ed954a8e","name":"Patio Door","server":"6f1799ba.17e938","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.patio_door","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":160,"y":780,"wires":[["18ef463b782a2e89","6d5e223249201ff9"]]},{"id":"71cb21e6ed6b55b9","type":"api-current-state","z":"22924e93ed954a8e","name":"Patio Door Lock - state?","server":"6f1799ba.17e938","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"lock.patio_door_lock","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"lock_state","propertyType":"msg","value":"","valueType":"entityState"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1050,"y":780,"wires":[["4fe487d897eb59a6"]]},{"id":"0ae9f5252ba6bdd1","type":"change","z":"22924e93ed954a8e","name":"Lock State","rules":[{"t":"set","p":"lock_state","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":660,"wires":[["40d3cf850b754332"]]},{"id":"18ef463b782a2e89","type":"change","z":"22924e93ed954a8e","name":"Door State","rules":[{"t":"set","p":"door_state","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":780,"wires":[["35c2665c425b457e"]]},{"id":"d02f9864197d1e25","type":"api-call-service","z":"22924e93ed954a8e","name":"Patio Door Lock >> refresh","server":"6f1799ba.17e938","version":5,"debugenabled":false,"domain":"zwave_js","service":"refresh_value","areaId":[],"deviceId":[],"entityId":["lock.patio_door_lock"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":780,"y":780,"wires":[["71cb21e6ed6b55b9"]]},{"id":"4fe487d897eb59a6","type":"change","z":"22924e93ed954a8e","name":"Set Global Variables","rules":[{"t":"set","p":"patio_door_lock_state","pt":"global","to":"lock_state","tot":"msg"},{"t":"set","p":"patio_door_state","pt":"global","to":"door_state","tot":"msg"},{"t":"set","p":"patio_door_last_change","pt":"global","to":"door","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1300,"y":780,"wires":[["ffb557443cf6ac84"]]},{"id":"784605f84db31bba","type":"function","z":"22924e93ed954a8e","name":"Create Alert","func":"var alert_name = \"Door Status Alert\"\nvar door = \"Patio Door\"\n\nvar door_state = global.get('patio_door_state')\nvar lock_state = global.get('patio_door_lock_state')\nvar what_changed = global.get('patio_door_last_change')\nvar last_msg_case = global.get('patio_door_msg_case')\n\nvar msg_case = \"0\"\nvar suppress_alert = false\n\n/*\nDoor open / on  |  Door closed / off\nLock locked     |  Lock unlocked\n\nC-Closed / O-Open / L-Locked / U-Unlocked\n\nNormal Sequence\n1 D: Closed   L: Locked     C: na  - Starting point, no message\n2 D: Closed   L: *Unlocked* C: L   - Door unlocked\n3 D: *Open*   L: Unlocked   C: D   - Door open\n4 D: *Closed* L: Unlocked   C: D   - Door closed\n5 D: Closed   L: *Locked*   C: L   - Door closed and locked\n*/\n\nif (what_changed == \"lock\") {\n    if (door_state == \"off\" && lock_state == \"unlocked\" && last_msg_case == \"5\") {\n        //State door is unlocked only if the last message was door locked and closed\n        //to avoid an unlocked message when door has already been opened and lock\n        //finally reports that it is unlocked\n        msg_case = \"2\"\n    } else if (door_state == \"off\" && lock_state == \"locked\") {\n        msg_case = \"5\"\n        }\n}\n\nif (what_changed == \"door\") {\n    if (door_state == \"on\") {\n        msg_case = \"3\"\n    } else if (door_state == \"off\") {\n        msg_case = \"4\"\n        }\n\n}\n\nglobal.set(\"patio_door_msg_case\", msg_case);\n\nswitch (msg_case) {\n    case \"0\":\n        suppress_alert = true\n        break;\n    case \"1\":\n        var final_msg = `${door}` + \" or lock state is unavailable.\"\n        break;\n    case \"2\":\n        var final_msg = `${door}` + \" is unlocked.\"\n        break;\n    case \"3\":\n        var final_msg = `${door}` + \" is open.\"\n        break;\n    case \"4\":\n        var final_msg = `${door}` + \" is closed.\"\n        break;\n    case \"5\":\n        var final_msg = `${door}` + \" is closed and locked.\"\n        break;\n    default:\n        \n}\n\nif (suppress_alert == false || msg_case != \"0\") {\n    var msg1 = {\n        \"payload\":\n        {\n            \"data\":\n            {\n                \"message\": `${final_msg}`,\n                \"title\": `${alert_name}`,\n                \"data\": {\n                    \"type\": \"tts\"\n                }\n            }\n        }\n    }\n    //var debug_msg = `${final_msg}`\n    \n    var msg2 = { payload: `${msg_case}` + \": \" + `${final_msg}`};\n    \n    return [ msg1, msg2 ];\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1670,"y":720,"wires":[["ee2633c185bca307","5c34aa4243f3a8e9"],["819cd6919690d243"]]},{"id":"819cd6919690d243","type":"debug","z":"22924e93ed954a8e","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1660,"y":800,"wires":[]},{"id":"ffb557443cf6ac84","type":"trigger","z":"22924e93ed954a8e","name":"1500ms","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"1500","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1500,"y":720,"wires":[["784605f84db31bba"]]},{"id":"ee2633c185bca307","type":"link out","z":"22924e93ed954a8e","name":"Play Patio Door Alert","mode":"link","links":["3ec5ec69e745bb55","809a7d2ad4a28f9b"],"x":1900,"y":720,"wires":[],"l":true},{"id":"5c34aa4243f3a8e9","type":"debug","z":"22924e93ed954a8e","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1660,"y":640,"wires":[]},{"id":"35c2665c425b457e","type":"trigger","z":"22924e93ed954a8e","name":"","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"500","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":540,"y":780,"wires":[["d02f9864197d1e25"]]},{"id":"6f1799ba.17e938","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]

I don’t see any settings anywhere to control the way alexa handles commands. I may have to go ask the folks that created the nodes to control Alexa but was hoping someone on this thread would have suggestions :slight_smile:

I’ve noticed too when several announcement messages are sent within a second or two they don’t play in order on Alexa. Since Alexa is a cloud connected device that creates some issues with processing delays, so in between the cloud processing I think it just naturally losses track of which is first when they are sent too close together.

The only idea I can think of is to add a delay node with a “rate limit”, so that messages are only sent every five seconds. That way, the first message goes right through, but a second message will wait 5 seconds before going out to Alexa. That will slightly delay the second message, but I think that would be better then them going out of order. You can set them to “queue” so it doesn’t discard the announcements, it just holds them for the few seconds before sending them out.

1 Like

@mwav3 As always awesome advice. I will experiment with that. I already have 1 or 2 delays in the flow to allow one event to override the other but the way I had done it was that both door and lock update the same global variables just prior to a delay. The hope was that the door unlocked event would not get announced given the door open event happens so fast afterwards. I believe that part works but not perfectly. The rate limiting method may even solve both issues… I’ve got some testing to do…

This seems to have solved the issue but I am only a couple days into testing it:

[{"id":"51842ffcd3eb0fe2","type":"server-state-changed","z":"22924e93ed954a8e","name":"Patio Door Lock","server":"6f1799ba.17e938","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"lock.patio_door_lock","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"locked","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":860,"wires":[["d02f9864197d1e25"],["4ac076533745c043"]]},{"id":"71cb21e6ed6b55b9","type":"api-current-state","z":"22924e93ed954a8e","name":"Patio Door Lock - locked?","server":"6f1799ba.17e938","version":3,"outputs":2,"halt_if":"locked","halt_if_type":"str","halt_if_compare":"is","entity_id":"lock.patio_door_lock","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"lock_state","propertyType":"msg","value":"","valueType":"entityState"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":970,"y":820,"wires":[["4fe487d897eb59a6"],["163d44f3692ba893"]]},{"id":"d02f9864197d1e25","type":"api-call-service","z":"22924e93ed954a8e","name":"Patio Door Lock >> refresh","server":"6f1799ba.17e938","version":5,"debugenabled":false,"domain":"zwave_js","service":"refresh_value","areaId":[],"deviceId":[],"entityId":["lock.patio_door_lock"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":380,"y":800,"wires":[["073416794055bd5e"]]},{"id":"4fe487d897eb59a6","type":"change","z":"22924e93ed954a8e","name":"5: C & L","rules":[{"t":"set","p":"msg_case","pt":"msg","to":"5","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1200,"y":800,"wires":[["ffb557443cf6ac84"]]},{"id":"784605f84db31bba","type":"function","z":"22924e93ed954a8e","name":"Create Alert","func":"var alert_name = \"Door Status Alert\"\nvar door = \"Patio Door\"\nvar door_state = global.get('patio_door_state')\nvar lock_state = global.get('patio_door_lock_state')\nvar what_changed = global.get('patio_door_last_change')\nvar msg_case = msg.msg_case\nvar last_msg_case = global.get('patio_door_last_msg_case')\nvar suppress_alert = false\n\n/*\nDoor open / on  |  Door closed / off\nLock locked     |  Lock unlocked\n\nC-Closed / O-Open / L-Locked / U-Unlocked\n\nNormal Sequence\n1 D: Closed   L: Locked     C: na  - Starting point, no message\n2 D: Closed   L: *Unlocked* C: L   - Door unlocked\n3 D: *Open*   L: Unlocked   C: D   - Door open\n4 D: *Closed* L: Unlocked   C: D   - Door closed\n5 D: Closed   L: *Locked*   C: L   - Door closed and locked\n*/\n\nglobal.set(\"patio_door_last_msg_case\", msg_case);\n\nswitch (msg_case) {\n    case \"0\":\n        suppress_alert = true\n        break;\n    case \"1\":\n        var final_msg = `${door}` + \" or lock state is unavailable.\"\n        break;\n    case \"2\":\n        var final_msg = `${door}` + \" is unlocked.\"\n        break;\n    case \"3\":\n        var final_msg = `${door}` + \" is open.\"\n        break;\n    case \"4\":\n        var final_msg = `${door}` + \" is closed.\"\n        break;\n    case \"5\":\n        var final_msg = `${door}` + \" is closed and locked.\"\n        break;\n    case \"6\":\n        var final_msg = `${door}` + \" is locked but the door is open. Please unlock to avoid frame damage.\"\n        break;\n    default:\n\n}\n\nif (suppress_alert == false || msg_case != \"0\") {\n    var msg1 = {\n        \"payload\":\n        {\n            \"data\":\n            {\n                \"message\": `${final_msg}`,\n                \"title\": `${alert_name}`,\n                \"data\": {\n                    \"type\": \"tts\"\n                }\n            }\n        }\n    }\n    //var debug_msg = `${final_msg}`\n\n    var msg2 = { payload: `${msg_case}` + \": \" + `${final_msg}` };\n\n    return [msg1, msg2];\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1510,"y":800,"wires":[["5c34aa4243f3a8e9","ee2633c185bca307"],["819cd6919690d243"]]},{"id":"819cd6919690d243","type":"debug","z":"22924e93ed954a8e","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1680,"y":860,"wires":[]},{"id":"ffb557443cf6ac84","type":"trigger","z":"22924e93ed954a8e","name":"500ms","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"500","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1350,"y":800,"wires":[["784605f84db31bba"]]},{"id":"ee2633c185bca307","type":"link out","z":"22924e93ed954a8e","name":"Play Patio Door Alert","mode":"link","links":["7d27c9ed96a7fe0f"],"x":1720,"y":800,"wires":[],"l":true},{"id":"5c34aa4243f3a8e9","type":"debug","z":"22924e93ed954a8e","name":"debug 8","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1680,"y":740,"wires":[]},{"id":"edb5eb9ad690d73a","type":"link out","z":"22924e93ed954a8e","name":"Play Backyard Gate Alert","mode":"link","links":["7d27c9ed96a7fe0f"],"x":1710,"y":660,"wires":[],"l":true},{"id":"a8ad65d4e90a36e9","type":"function","z":"22924e93ed954a8e","name":"Create Alert","func":"var dog_escape_msg = \"Attention! Backyard gate is open so dog can escape.\"\nvar alert_name = \"Dog Potential Escape Alert\"\n\n\nvar payload = {\"data\":\n{\n \"message\": `${dog_escape_msg}`,\n \"title\": `${alert_name}`,\n \"data\": {\n \"type\": \"tts\"\n }\n}\n}\nmsg.payload = payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1490,"y":660,"wires":[["edb5eb9ad690d73a"]]},{"id":"effe1446ad83724d","type":"api-current-state","z":"22924e93ed954a8e","name":"Backyard Gate - open?","server":"6f1799ba.17e938","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.backyard_gate","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":730,"y":680,"wires":[["a8ad65d4e90a36e9"],[]]},{"id":"7873bd3fcf092a76","type":"switch","z":"22924e93ed954a8e","name":"Open / Closed","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":500,"y":680,"wires":[["effe1446ad83724d"],[]]},{"id":"6d5e223249201ff9","type":"delay","z":"22924e93ed954a8e","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":320,"y":680,"wires":[["7873bd3fcf092a76"]]},{"id":"667458a8d55a5ac4","type":"server-state-changed","z":"22924e93ed954a8e","name":"Backyard Gate","server":"6f1799ba.17e938","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.backyard_gate","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":620,"wires":[["7c4ca5dc811dc1cf"],[]]},{"id":"695fc23dc274fb2d","type":"api-current-state","z":"22924e93ed954a8e","name":"Patio Door - open?","server":"6f1799ba.17e938","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.patio_door","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":710,"y":620,"wires":[["a8ad65d4e90a36e9"],[]]},{"id":"7c4ca5dc811dc1cf","type":"delay","z":"22924e93ed954a8e","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":320,"y":620,"wires":[["695fc23dc274fb2d"]]},{"id":"073416794055bd5e","type":"ha-wait-until","z":"22924e93ed954a8e","name":"Patio Door Lock - locked? - 1.5s","server":"6f1799ba.17e938","version":2,"outputs":2,"entityId":"lock.patio_door_lock","entityIdFilterType":"exact","property":"state","comparator":"is","value":"locked","valueType":"str","timeout":"1500","timeoutType":"num","timeoutUnits":"milliseconds","checkCurrentState":true,"blockInputOverrides":true,"outputProperties":[],"entityLocation":"data","entityLocationType":"none","x":670,"y":800,"wires":[["4fe487d897eb59a6"],["71cb21e6ed6b55b9"]]},{"id":"163d44f3692ba893","type":"change","z":"22924e93ed954a8e","name":"4: C","rules":[{"t":"set","p":"msg_case","pt":"msg","to":"4","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":840,"wires":[["ffb557443cf6ac84"]]},{"id":"b50c67b2697af741","type":"server-state-changed","z":"22924e93ed954a8e","name":"Patio Door","server":"6f1799ba.17e938","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.patio_door","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":160,"y":760,"wires":[["5c85c51ebdb10cdb","6d5e223249201ff9"],["d02f9864197d1e25"]]},{"id":"5c85c51ebdb10cdb","type":"change","z":"22924e93ed954a8e","name":"3: O","rules":[{"t":"set","p":"msg_case","pt":"msg","to":"3","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":760,"wires":[["ffb557443cf6ac84"]]},{"id":"f06b0d0fd1d1d4c6","type":"change","z":"22924e93ed954a8e","name":"6: O & L","rules":[{"t":"set","p":"msg_case","pt":"msg","to":"6","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1200,"y":720,"wires":[["ffb557443cf6ac84"]]},{"id":"4a6349972fb6c634","type":"change","z":"22924e93ed954a8e","name":"2: U","rules":[{"t":"set","p":"msg_case","pt":"msg","to":"2","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":880,"wires":[["ffb557443cf6ac84"]]},{"id":"4ac076533745c043","type":"ha-wait-until","z":"22924e93ed954a8e","name":"Patio Door - closed? - 1.5s","server":"6f1799ba.17e938","version":2,"outputs":2,"entityId":"binary_sensor.patio_door","entityIdFilterType":"exact","property":"state","comparator":"is","value":"off","valueType":"str","timeout":"1500","timeoutType":"num","timeoutUnits":"milliseconds","checkCurrentState":true,"blockInputOverrides":true,"outputProperties":[],"entityLocation":"data","entityLocationType":"none","x":380,"y":880,"wires":[[],["06270a8572472812"]]},{"id":"06270a8572472812","type":"api-current-state","z":"22924e93ed954a8e","name":"Patio Door - open?","server":"6f1799ba.17e938","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.patio_door","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":630,"y":880,"wires":[[],["4a6349972fb6c634"]]},{"id":"6f1799ba.17e938","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

I was trying to keep the node spaghetti simple and do more in the function node but given the door and lock messages have random timing, I had to sort out what was actually happening outside of the function node which now only plays the correct message. The waits and delays are there to try to avoid pointless alerts such as unlocked door when it typically opens (and is therefore obviously unlocked) immediately afterwards. It also gives time for the slower locks to report.

The “O & L” is not connected as that requires added logic that I have not worked on yet and would likely introduce some complications… It is when the lock is locked but the door is open which would result in door frame damage… problem is I need to know for certain that the lock locked AFTER the door was opened because I otherwise get that alert when the door opens and the lock has not reported unlocked yet… but that may not be true in this latest revision of the flow as I don’t even check the lock when the door opens… cause it is obviously unlocked.

Sorry to bring back 1.5 y/o thread but how did you add the lock to HA in the first place?

I have zooz 800 usb stick and BE469 non-plus lock. I can’t seems to add the lock to HA at all. I added Zwave JS UI, generated keys, then I added integration, now I am adding device, I go to the lock, hit schlarge button, enter 6 digit programming key, hit 0 and after several seconds the red checkmark flashes.
Tried at least 10 times.

If this is the non plus version you MUST pair the lock within 6 inches of the coordinator. It uses whisper mode in an attempt to secure the key.

If you use the ZP version this isn’t necessary.

1 Like

It is non-plus. So I just hold the HA box with Zooz stick right next to it?
OK, what else should I be aware of? Should I use s0 instead of S2?

I wrote a whole new post, detailing what I did - could you please take a look and give me a suggestion?

The 469 Non plus ONLY supports S0 whisper join. So you MUST use S0 (or it wont exchange the lock keys correctly) and S2 didn’t exist when this thing was originally built. Whisper Join means within 6" (they turn the radio signal strength WAY down on purpose). I have one Non plus left - my others have been replaced with ZPs. For that one lock and my garage door openers I have a 50’ LAN cable so I can bring my actual HA box and coordinator next to the device - then I just stick my ZWave coordinator to the lock (another good reason to have the coordinator on a USB extension) with blue painters’ tape so I can enter the codes.

  • Then before you start anything run a general exclude procedure on the lock just to make sure the ZWave module doesn’t think it is joined anywhere (auto exclude on factory reset didn’t get added until the ZWave Plus spec so it’s not in the non-plus lock)
  • Then the factory reset on the lock.
  • *IF you’re using JSUI - go into the ZWave config (settings > Z-Wave > Increase Node Report Timeout and enable it - this lock is slow to report - you’ll need this on during the join and anytime you want to re-interview the lock, and possibly for Keymaster to get the codes if you use it)
  • THEN start your inclusion process.

Once all that’s done, I dismantle the tape job - move my HA box back to its home and run a route repair on the lock to ensure it has a good route back to the now moved (as far as the lock is concerned) coordinator… You can turn off slow report mode in JSUI if you turned it on, just remember you need it ON to interview this lock.

See if that does it.

These are quite detailed instructions. Thank you. Question - if I am successful, will it be a problem if the HA box with the stick is about 7 ft and one door away?
These are current settings below. Anything else needs to be changed?

Also, exclusion - do I still need to run it either from the Zwave JS UI or from Settings->devices->Zwave? There is only one node and it is the stick.

How do I see the log of messages exchanged? Basically - is the radio alive or dead?

Possibly.

Personally I use 20’ between nodes for planning - you’re well within that but… Non plus locks work BEST if there’s a beaming capable repeater within repeating distance (in almost every lock I’ve ever done I put a ZWave switch in the porch light next to that lock - that’s enough to do it) so it can store and forward messages as the lock naps -it doesn’t exactly sleep but it’s not full power awake either. If you see it drop or lose messages - make sure you have a beaming capable repeater (almost all powered devices these days) within 10’ of the lock. Yes your coordinator is within 10’ but the store and forward function is important if the stick gets busy.

Side note -
Zwave is a mesh network - it relies on having multiple nodes, my STRONG suggestion is more repeaters… One node usually ends in sadness. Go buy more home automation stuff!

Rest of that looks fine.

See the icon that looks like a bug (my spouse thinks its a weird traffic light) in Zwave JSUI? Go there, hit start. You can watch the entire process.

OK, once again thank you very much. I don’t plan (yet) to add any more Zwave devices - it will be this stick and the lock.

I already have Sonoff Zigbee dongle and about 15 Zigbee devices (mostly temp sensors and energy meters) already. And plan to add SD-radio dongle and run RTL433. And plan to add Google Coral USB stick and add frigate, but this will be in summer.

One last question - when adding devices, is this the right setting to choose?

only if you NEED it (and in this case yes)

You are my hero. Thank you very much!

And what it is absolutely essencial to do factory reset of the lock and do unenrolling after that and confirm that after unenrolling the green checkmark is displayed. Do enrolling after that. I would not know that unless you told me.

BTW, regarding the sensors from the lock displayed by HA - which from the below is relevant? I guess I can’t set/unset unlock codes remotely?

1 Like

Look up an integration in HACS called Keymaster to set and manage the codes.

The control at the top is the deadbolt itself. The rest are various sensors and settings.

@NathanCu - I am always impressed by the quality of your answers! Hats off!

I still have 3 of these locks as I’ve been waiting for a new revision (800 series) or a Matter compliant version to be released. These locks have worked very well but I can’t wait to get the benefits of updated electronics (mostly speed, reliability, easier pairing, etc). For this reason, I might just stick with the same brand and product line for the new locks even though I’ve seen quite a few locks on the market with interesting features. One for example is the Yale lock with replaceable radios… The lock can easily last a decade but I wouldn’t say the same for evolving radios so being able to upgrade it without replacing the entire lock is very appealing.

If you were to suggest a new, existing or upcoming lock, what would you recommend? Fancy features are nice but the most important will always be long battery life, fast response to commands, fast updates, modern radios/protocols, and last (lol) safety (well designed lock).

Edit: While Keymaster was impressive in terms of features, it seemed to be the cause of a number of issues that made the locks slow/unreliable. Maybe it was just a coincidence, but once I removed it my locks became stable and trouble free. In the end, I only used it for setting codes which I have since moved to Node Red.