Issues removing/adding Schlage Z-Wave door lock

Hey folks, hoping someone can point me in the right direction or give a fresh set of eyes on an issue I’ve been dealing with for a few days.

Background: Migrated from the Z-Wave JS add-on over to Z-Wave JS UI add-on successfully. Migrated all of my existing security keys and all of my switches, power monitors and sensors moved without an issue. The issue started when I tried to pair my new Schlage Door lock (BE469ZP).

When I first tried to adopt it, it seemed to go without a hitch and I watched as the Z-Wave JS UI showed it was being adopted and interviewing it. I walked away and let it do it’s thing but it never seemed to move out of that state. Waited until the next day and it still showed that it was trying to interview it but stuck in ‘ProtocolInfo’ state.

  1. I stopped Z-Wave JS UI, started it back up and woke up the lock to see if it could complete the pairing. No Dice.
  2. Put the lock into exclusion mode and used the UI to complete the exclusion. This seemed to work but the node remained on my dashboard.
  3. Tried to pair the device AGAIN and it stayed in the same state, ‘ProtocolInfo’.

Now I have 2 instances of this lock, one that seemed to get more data (firmware version for example) but the other has no information other than being dead.

I opened up the debug log to see what could be happening as I now have nodes 56 (first time) and 60 (second time) showing as dead and I cannot remove them. I wonder if this is contributing to me being unable to pair the device again. Hoping it’s not something hardware related as I kinda like the lock (outside of how loud it is).

Z-Wave JS UI: 9.25.0
Z-Wave JS: 13.10.1
Controller: Zooz ZAC93 800 Series Long Range GPIO Module
-FW v1.50
-SDK: v7.22.1

Will periodically get this message
2024-10-29T20:55:51.021Z CNTRLR   [Node 060] The node did not respond after 1 attempts, it is presumed dead
2024-10-29T20:55:51.028Z CNTRLR   [Node 060] ping failed: The node did not acknowledge the command (ZW0204)
2024-10-29T20:55:51.029Z CNTRLR   [Node 060] Interview attempt (1/5) failed, node is dead

When trying to remove the failed node:
2024-10-29T20:57:51.968Z CNTRLR   [Node 060] The node did not respond after 1 attempts, it is presumed dead
2024-10-29T20:57:51.970Z CNTRLR   [Node 060] ping failed: The node did not acknowledge the command (ZW0204)

Full debug log for Node 56

{
  "id": 56,
  "name": "Schlage Door",
  "loc": "",
  "values": [],
  "groups": [],
  "neighbors": [],
  "ready": false,
  "available": false,
  "hassDevices": {},
  "failed": false,
  "inited": false,
  "eventsQueue": [
    {
      "time": "2024-10-29T16:13:09.903Z",
      "event": "dead",
      "args": [
        0
      ]
    },
    {
      "time": "2024-10-29T16:13:09.925Z",
      "event": "interview failed",
      "args": [
        {
          "errorMessage": "The node is dead",
          "isFinal": true
        }
      ]
    }
  ],
  "status": "Dead",
  "interviewStage": "ProtocolInfo",
  "priorityReturnRoute": {},
  "customReturnRoute": {},
  "customSUCReturnRoutes": [],
  "applicationRoute": false,
  "hexId": "0xXXXX 0xXXXX-0xXXXX",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0xXXXX:0xXXXX:0xXXXX:0.0",
  "productLabel": "Unknown product 0xXXXX",
  "productDescription": "0xXXXX",
  "manufacturer": "Unknown manufacturer 0xXXXX",
  "protocolVersion": 3,
  "nodeType": 1,
  "endpointsCount": 0,
  "endpoints": [
    {
      "index": 0,
      "label": "Root Endpoint",
      "deviceClass": {
        "basic": 4,
        "generic": 64,
        "specific": 3
      }
    }
  ],
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": false,
  "isListening": false,
  "isFrequentListening": "1000ms",
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 4,
    "generic": 64,
    "specific": 3
  },
  "lastActive": 1730154178673,
  "firmwareCapabilities": {
    "firmwareUpgradable": false
  },
  "protocol": 0,
  "deviceId": "undefined-undefined-undefined",
  "statistics": {
    "commandsTX": 0,
    "commandsRX": 0,
    "commandsDroppedRX": 0,
    "commandsDroppedTX": 0,
    "timeoutResponse": 0
  },
  "_name": "Schlage Door",
  "prioritySUCReturnRoute": false
}

Full debug log for Node 60

{
  "id": 60,
  "name": "Door",
  "loc": "",
  "values": [],
  "groups": [],
  "neighbors": [],
  "ready": false,
  "available": false,
  "hassDevices": {},
  "failed": false,
  "inited": false,
  "eventsQueue": [
    {
      "time": "2024-10-29T16:12:40.751Z",
      "event": "dead",
      "args": [
        0
      ]
    },
    {
      "time": "2024-10-29T16:12:40.760Z",
      "event": "interview failed",
      "args": [
        {
          "errorMessage": "The node is dead",
          "isFinal": true
        }
      ]
    },
    {
      "time": "2024-10-29T17:41:43.315Z",
      "event": "value added",
      "args": [
        {
          "commandClassName": "Node Naming and Location",
          "commandClass": 119,
          "property": "name",
          "newValue": "Door",
          "propertyName": "name"
        }
      ]
    },
    {
      "time": "2024-10-29T17:41:43.320Z",
      "event": "interview started",
      "args": []
    },
    {
      "time": "2024-10-29T17:41:43.352Z",
      "event": "interview stage completed",
      "args": [
        "ProtocolInfo"
      ]
    },
    {
      "time": "2024-10-29T17:42:12.853Z",
      "event": "interview failed",
      "args": [
        {
          "errorMessage": "The node is dead",
          "isFinal": true
        }
      ]
    },
    {
      "time": "2024-10-29T19:14:15.422Z",
      "event": "value added",
      "args": [
        {
          "commandClassName": "Node Naming and Location",
          "commandClass": 119,
          "property": "name",
          "newValue": "Door",
          "propertyName": "name"
        }
      ]
    },
    {
      "time": "2024-10-29T19:14:15.426Z",
      "event": "interview started",
      "args": []
    },
    {
      "time": "2024-10-29T19:14:15.453Z",
      "event": "interview stage completed",
      "args": [
        "ProtocolInfo"
      ]
    },
    {
      "time": "2024-10-29T19:14:35.428Z",
      "event": "interview failed",
      "args": [
        {
          "errorMessage": "The node is dead",
          "isFinal": true
        }
      ]
    },
    {
      "time": "2024-10-29T20:55:30.642Z",
      "event": "value added",
      "args": [
        {
          "commandClassName": "Node Naming and Location",
          "commandClass": 119,
          "property": "name",
          "newValue": "Door",
          "propertyName": "name"
        }
      ]
    },
    {
      "time": "2024-10-29T20:55:30.646Z",
      "event": "interview started",
      "args": []
    },
    {
      "time": "2024-10-29T20:55:30.794Z",
      "event": "interview stage completed",
      "args": [
        "ProtocolInfo"
      ]
    },
    {
      "time": "2024-10-29T20:55:51.033Z",
      "event": "interview failed",
      "args": [
        {
          "errorMessage": "The node is dead",
          "isFinal": true
        }
      ]
    }
  ],
  "status": "Dead",
  "interviewStage": "ProtocolInfo",
  "priorityReturnRoute": {},
  "customReturnRoute": {},
  "customSUCReturnRoutes": [],
  "applicationRoute": false,
  "hexId": "0x003b 0x0001-0x0469",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0x003b:0x0001:0x0469:0.0",
  "manufacturerId": 59,
  "productId": 1129,
  "productType": 1,
  "deviceConfig": {
    "filename": "/data/db/devices/0x003b/be469zp.json",
    "isEmbedded": true,
    "manufacturer": "Allegion",
    "manufacturerId": 59,
    "label": "BE469ZP",
    "description": "Touchscreen Deadbolt Z-Wave Plus",
    "devices": [
      {
        "productType": 1,
        "productId": 1129
      }
    ],
    "firmwareVersion": {
      "min": "0.0",
      "max": "255.255"
    },
    "preferred": false,
    "paramInformation": {
      "_map": {}
    },
    "compat": {
      "removeCCs": {},
      "reportTimeout": 10000
    }
  },
  "productLabel": "BE469ZP",
  "productDescription": "Touchscreen Deadbolt Z-Wave Plus",
  "manufacturer": "Allegion",
  "firmwareVersion": "3.3",
  "protocolVersion": 3,
  "zwavePlusVersion": 1,
  "zwavePlusNodeType": 0,
  "zwavePlusRoleType": 7,
  "nodeType": 1,
  "endpointsCount": 0,
  "endpoints": [
    {
      "index": 0,
      "label": "Root Endpoint",
      "deviceClass": {
        "basic": 4,
        "generic": 64,
        "specific": 3
      }
    }
  ],
  "isSecure": true,
  "security": "S2_AccessControl",
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": false,
  "isListening": false,
  "isFrequentListening": "1000ms",
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 4,
    "generic": 64,
    "specific": 3
  },
  "lastActive": 1730218065322,
  "firmwareCapabilities": {
    "firmwareUpgradable": true,
    "firmwareTargets": [
      0,
      1
    ]
  },
  "protocol": 0,
  "deviceId": "59-1129-1",
  "statistics": {
    "commandsTX": 0,
    "commandsRX": 0,
    "commandsDroppedRX": 0,
    "commandsDroppedTX": 0,
    "timeoutResponse": 0
  },
  "_name": "Door",
  "prioritySUCReturnRoute": false
}

Small update, stumbled on this post:

I followed these steps and physically placed the lock on top of my z-wave controller and it paired almost instantly. Took a few for the interview to be finished but now it seems to work. Still have an outstanding issue with the two old attempts still displaying and I cannot find a way to remove them.

1 Like

Been poking at this off and on the last two week or so. While the Schlage door lock paired after bringing the controller right next to the lock, the node went dead just a few minutes ago after engaging it via home assistant. The two previous entries are still there, sadly and using the ’ Remove Failed’ option appears to time out.

Plan is to try re-interviewing the device then excluding it and see if I can get all 3 to drop.

I’ve also picked up a Yale smart lock to try that in place. The Schlage motor is a lot louder than I thought it would be :thinking:

So I’ve been unable to remove the old entries of the Schlage lock and ended up actually returning the unit. While it works, not a fan of it’s touchscreen responsiveness and the motor is far too loud for the area it’s in. I like the build since it was so simple to physically install.

I’ll need to keep digging into why those old entries can’t be removed so any all suggestions are welcome.