FutureTense/keymaster

ISSUE: Cannot get notifications to work.

joeinaustin opened this issue · 67 comments

Describe the bug
No form of notification works from keymaster. I followed the wiki instuctions and used the code example for my scripts.yaml. I can manually create different types of notifications from dev tools, but nothing is ever generated from keymaster. I do see lock status updates in the history and noticiation is turned on for all active codes. Nothing showing up in the logs at all. What else can I look at???

Environment (please complete the following information):

  • OS: Latest as of 1-16-22
  • Type of system that HA is running on: NUC
  • Home Assistant version: [e.g. 0.105.5]
  • Hassio/Docker/Core?
  • Component version: [e.g. 0.1.2]
  • Z-Wave integration name: zwave_js
  • Lock make and model: Schlage
    Home Assistant 2023.1.4
    Supervisor 2022.12.1
    Operating System 9.4
    Frontend 20230110.0 - latest

Logs
Nothing relevant to paste

Screenshots
Let me know which would help

I did add a second script (see below) in case my naming conventions were off. I found some docs online that show it with a keymaster prefix. That was no help.

front_lock_manual_notify:
  mode: parallel
  sequence:
    - service: notify.notify
      data:
        title: "{{ title }}"
        message: "{{ message }}"
# created dup of above to to unclear naming conventions
keymaster_front_lock_manual_notify:
  mode: parallel
  sequence:
    - service: notify.notify
      data:
        title: "{{ title }}"
        message: "{{ message }}"

Try listening for keymaster_lock_state_changed events from dev-tools->Events
If you don't see anything firing there when you manually lock/unlock the lock, your zwavejs events aren't firing and you'll need to re-interview your lock.

Nothing showed up in that event window but not sure what I am looking at. Where should the events show up? I also see this under active listeners... keymaster_lock_state_changed (3 listeners) .

I can see lock and unlock events in the lock history. That has always worked.

image

Once you hit "Start Listening" go and lock/unlock your lock, you should see events.

Exactly what I did. Nothing happened when I lock/unlock in that even view. But I do see the events in lock history.

I just finsished re-interview. And tried the event listen again. Nothing in that view.

image

Ok try zwave_js_notification and listen, and test again.

Nothing for that either. Are events supposed to show up on that same page?

yes, this means the lock isn't throwing out notifications, re-interview.

Did that already, per above. Why does the history show lock/unlock events, if the lock isn't notifying?? The UI history view is getting these events somehow.

Not the same events.

I am confused then. Is there a place where this is explained? The lock is cleary sending lock events via zwave.
image

Lock stats updates are not notification events.
Once you get zwavejs fixed and reporting the notifications, your script will work.

Ok, not sure how to do that. The only events showing in zwavjs are from the last reinterview..
image

You need to make sure the notifications command class is showing up, I think you can check that by hitting download diagnostics on your lock in HA.

I don't see anywhere to do that on any page where the lock shows up. Where would you expect it to be?

Found it under zwavejs. No idea what to look for in here but.....

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.1.4",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.7",
    "docker": true,
    "arch": "x86_64",
    "timezone": "America/Phoenix",
    "os_name": "Linux",
    "os_version": "5.15.80",
    "supervisor": "2022.12.1",
    "host_os": "Home Assistant OS 9.4",
    "docker_version": "20.10.19",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "keymaster": {
      "version": "v0.0.82",
      "requirements": []
    },
    "hacs": {
      "version": "1.29.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zwave_js",
    "name": "Z-Wave",
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/zwave_js",
    "requirements": [
      "pyserial==3.5",
      "zwave-js-server-python==0.44.0"
    ],
    "codeowners": [
      "@home-assistant/z-wave"
    ],
    "dependencies": [
      "usb",
      "http",
      "websocket_api"
    ],
    "iot_class": "local_push",
    "usb": [
      {
        "vid": "0658",
        "pid": "0200",
        "known_devices": [
          "Aeotec Z-Stick Gen5+",
          "Z-WaveMe UZB"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*z-wave*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      }
    ],
    "zeroconf": [
      "_zwave-js-server._tcp.local."
    ],
    "loggers": [
      "zwave_js_server"
    ],
    "integration_type": "hub",
    "is_built_in": true
  },
  "data": {
    "versionInfo": {
      "driverVersion": "10.3.0",
      "serverVersion": "1.24.0",
      "minSchemaVersion": 0,
      "maxSchemaVersion": 24
    },
    "entities": [
      {
        "domain": "sensor",
        "entity_id": "sensor.front_lock_alarm_level",
        "original_name": "Alarm Level",
        "original_device_class": null,
        "disabled": true,
        "disabled_by": "integration",
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-113-0-alarmLevel",
        "primary_value": {
          "command_class": 113,
          "command_class_name": "Notification",
          "endpoint": 0,
          "property": "alarmLevel",
          "property_name": "alarmLevel",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "sensor",
        "entity_id": "sensor.front_lock_alarm_type",
        "original_name": "Alarm Type",
        "original_device_class": null,
        "disabled": true,
        "disabled_by": "integration",
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-113-0-alarmType",
        "primary_value": {
          "command_class": 113,
          "command_class_name": "Notification",
          "endpoint": 0,
          "property": "alarmType",
          "property_name": "alarmType",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "lock",
        "entity_id": "lock.front_lock",
        "original_name": "",
        "original_device_class": null,
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-98-0-currentMode",
        "primary_value": {
          "command_class": 98,
          "command_class_name": "Door Lock",
          "endpoint": 0,
          "property": "currentMode",
          "property_name": "currentMode",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "sensor",
        "entity_id": "sensor.front_lock_battery_level",
        "original_name": "Battery level",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": "%",
        "value_id": "3-128-0-level",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "level",
          "property_name": "level",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_current_status_of_the_door",
        "original_name": "Current status of the door",
        "original_device_class": "door",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-98-0-doorStatus",
        "primary_value": {
          "command_class": 98,
          "command_class_name": "Door Lock",
          "endpoint": 0,
          "property": "doorStatus",
          "property_name": "doorStatus",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_low_battery_level",
        "original_name": "Low battery level",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-isLow",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "isLow",
          "property_name": "isLow",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "sensor",
        "entity_id": "sensor.front_lock_charging_status",
        "original_name": "Charging status",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": "%",
        "value_id": "3-128-0-chargingStatus",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "chargingStatus",
          "property_name": "chargingStatus",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_rechargeable",
        "original_name": "Rechargeable",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-rechargeable",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "rechargeable",
          "property_name": "rechargeable",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_used_as_backup",
        "original_name": "Used as backup",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-backup",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "backup",
          "property_name": "backup",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_overheating",
        "original_name": "Overheating",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-overheating",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "overheating",
          "property_name": "overheating",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_fluid_is_low",
        "original_name": "Fluid is low",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-lowFluid",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "lowFluid",
          "property_name": "lowFluid",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "sensor",
        "entity_id": "sensor.front_lock_recharge_or_replace",
        "original_name": "Recharge or replace",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": "%",
        "value_id": "3-128-0-rechargeOrReplace",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "rechargeOrReplace",
          "property_name": "rechargeOrReplace",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_battery_is_disconnected",
        "original_name": "Battery is disconnected",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-disconnected",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "disconnected",
          "property_name": "disconnected",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_lock_battery_temperature_is_low",
        "original_name": "Battery temperature is low",
        "original_device_class": "battery",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": "diagnostic",
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "3-128-0-lowTemperatureStatus",
        "primary_value": {
          "command_class": 128,
          "command_class_name": "Battery",
          "endpoint": 0,
          "property": "lowTemperatureStatus",
          "property_name": "lowTemperatureStatus",
          "property_key": null,
          "property_key_name": null
        }
      }
    ],
    "state": {
      "nodeId": 3,
      "index": 0,
      "status": 4,
      "ready": true,
      "isListening": false,
      "isRouting": true,
      "isSecure": true,
      "manufacturerId": 59,
      "productId": 20548,
      "productType": 25419,
      "firmwareVersion": "42.37",
      "deviceConfig": {
        "filename": "/data/db/devices/0x003b/be369.json",
        "isEmbedded": true,
        "manufacturer": "Allegion",
        "manufacturerId": 59,
        "label": "BE369",
        "description": "Keypad Deadbolt",
        "devices": [
          {
            "productType": 25419,
            "productId": 20548
          }
        ],
        "firmwareVersion": {
          "min": "0.0",
          "max": "255.255"
        },
        "associations": {},
        "paramInformation": {
          "_map": {}
        }
      },
      "label": "BE369",
      "interviewAttempts": 3,
      "endpoints": [
        {
          "nodeId": 3,
          "index": 0,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 64,
              "label": "Entry Control"
            },
            "specific": {
              "key": 3,
              "label": "Secure Keypad Door Lock"
            },
            "mandatorySupportedCCs": [
              32,
              98,
              99,
              114,
              134
            ],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 98,
              "name": "Door Lock",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 99,
              "name": "User Code",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 114,
              "name": "Manufacturer Specific",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 134,
              "name": "Version",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 133,
              "name": "Association",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 115,
              "name": "Powerlevel",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 152,
              "name": "Security",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 128,
              "name": "Battery",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 113,
              "name": "Notification",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 112,
              "name": "Configuration",
              "version": 1,
              "isSecure": true
            }
          ]
        }
      ],
      "values": [
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "doorStatus",
          "propertyName": "doorStatus",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": false,
            "label": "Current status of the door"
          },
          "value": "open"
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "latchStatus",
          "propertyName": "latchStatus",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": false,
            "label": "Current status of the latch"
          },
          "value": "open"
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "boltStatus",
          "propertyName": "boltStatus",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": false,
            "label": "Current status of the bolt"
          },
          "value": "locked"
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "operationType",
          "propertyName": "operationType",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "Lock operation type",
            "min": 0,
            "max": 255,
            "states": {
              "1": "Constant",
              "2": "Timed"
            }
          },
          "value": 1
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "outsideHandlesCanOpenDoorConfiguration",
          "propertyName": "outsideHandlesCanOpenDoorConfiguration",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": true,
            "label": "Which outside handles can open the door (configuration)"
          },
          "value": [
            false,
            false,
            false,
            false
          ]
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "insideHandlesCanOpenDoorConfiguration",
          "propertyName": "insideHandlesCanOpenDoorConfiguration",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": true,
            "label": "Which inside handles can open the door (configuration)"
          },
          "value": [
            false,
            false,
            false,
            false
          ]
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "currentMode",
          "propertyName": "currentMode",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "Current lock mode",
            "min": 0,
            "max": 255,
            "states": {
              "0": "Unsecured",
              "1": "UnsecuredWithTimeout",
              "16": "InsideUnsecured",
              "17": "InsideUnsecuredWithTimeout",
              "32": "OutsideUnsecured",
              "33": "OutsideUnsecuredWithTimeout",
              "254": "Unknown",
              "255": "Secured"
            }
          },
          "value": 255
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "outsideHandlesCanOpenDoor",
          "propertyName": "outsideHandlesCanOpenDoor",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": false,
            "label": "Which outside handles can open the door (actual status)"
          },
          "value": [
            false,
            false,
            false,
            false
          ]
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "insideHandlesCanOpenDoor",
          "propertyName": "insideHandlesCanOpenDoor",
          "ccVersion": 1,
          "metadata": {
            "type": "any",
            "readable": true,
            "writeable": false,
            "label": "Which inside handles can open the door (actual status)"
          },
          "value": [
            false,
            false,
            false,
            false
          ]
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "lockTimeoutConfiguration",
          "propertyName": "lockTimeoutConfiguration",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "Duration of timed mode in seconds",
            "min": 0,
            "max": 65535
          }
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "targetMode",
          "propertyName": "targetMode",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "Target lock mode",
            "min": 0,
            "max": 255,
            "states": {
              "0": "Unsecured",
              "1": "UnsecuredWithTimeout",
              "16": "InsideUnsecured",
              "17": "InsideUnsecuredWithTimeout",
              "32": "OutsideUnsecured",
              "33": "OutsideUnsecuredWithTimeout",
              "254": "Unknown",
              "255": "Secured"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 98,
          "commandClassName": "Door Lock",
          "property": "lockTimeout",
          "propertyName": "lockTimeout",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Seconds until lock mode times out",
            "min": 0,
            "max": 65535
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 1,
          "propertyName": "userIdStatus",
          "propertyKeyName": "1",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (1)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          },
          "value": 0
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 1,
          "propertyName": "userCode",
          "propertyKeyName": "1",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (1)",
            "minLength": 4,
            "maxLength": 10
          },
          "value": "**REDACTED**"
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 2,
          "propertyName": "userIdStatus",
          "propertyKeyName": "2",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (2)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          },
          "value": 1
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 2,
          "propertyName": "userCode",
          "propertyKeyName": "2",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (2)",
            "minLength": 4,
            "maxLength": 10
          },
          "value": "**REDACTED**"
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 3,
          "propertyName": "userIdStatus",
          "propertyKeyName": "3",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (3)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          },
          "value": 1
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 3,
          "propertyName": "userCode",
          "propertyKeyName": "3",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (3)",
            "minLength": 4,
            "maxLength": 10
          },
          "value": "**REDACTED**"
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 4,
          "propertyName": "userIdStatus",
          "propertyKeyName": "4",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (4)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          },
          "value": 1
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 4,
          "propertyName": "userCode",
          "propertyKeyName": "4",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (4)",
            "minLength": 4,
            "maxLength": 10
          },
          "value": "**REDACTED**"
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 5,
          "propertyName": "userIdStatus",
          "propertyKeyName": "5",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (5)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          },
          "value": 0
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 5,
          "propertyName": "userCode",
          "propertyKeyName": "5",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (5)",
            "minLength": 4,
            "maxLength": 10
          },
          "value": "**REDACTED**"
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 6,
          "propertyName": "userIdStatus",
          "propertyKeyName": "6",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (6)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 6,
          "propertyName": "userCode",
          "propertyKeyName": "6",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (6)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 7,
          "propertyName": "userIdStatus",
          "propertyKeyName": "7",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (7)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 7,
          "propertyName": "userCode",
          "propertyKeyName": "7",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (7)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 8,
          "propertyName": "userIdStatus",
          "propertyKeyName": "8",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (8)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 8,
          "propertyName": "userCode",
          "propertyKeyName": "8",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (8)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 9,
          "propertyName": "userIdStatus",
          "propertyKeyName": "9",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (9)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 9,
          "propertyName": "userCode",
          "propertyKeyName": "9",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (9)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 10,
          "propertyName": "userIdStatus",
          "propertyKeyName": "10",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (10)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 10,
          "propertyName": "userCode",
          "propertyKeyName": "10",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (10)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 11,
          "propertyName": "userIdStatus",
          "propertyKeyName": "11",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (11)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 11,
          "propertyName": "userCode",
          "propertyKeyName": "11",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (11)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 12,
          "propertyName": "userIdStatus",
          "propertyKeyName": "12",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (12)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 12,
          "propertyName": "userCode",
          "propertyKeyName": "12",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (12)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 13,
          "propertyName": "userIdStatus",
          "propertyKeyName": "13",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (13)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 13,
          "propertyName": "userCode",
          "propertyKeyName": "13",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (13)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 14,
          "propertyName": "userIdStatus",
          "propertyKeyName": "14",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (14)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 14,
          "propertyName": "userCode",
          "propertyKeyName": "14",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (14)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 15,
          "propertyName": "userIdStatus",
          "propertyKeyName": "15",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (15)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 15,
          "propertyName": "userCode",
          "propertyKeyName": "15",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (15)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 16,
          "propertyName": "userIdStatus",
          "propertyKeyName": "16",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (16)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 16,
          "propertyName": "userCode",
          "propertyKeyName": "16",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (16)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 17,
          "propertyName": "userIdStatus",
          "propertyKeyName": "17",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (17)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 17,
          "propertyName": "userCode",
          "propertyKeyName": "17",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (17)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 18,
          "propertyName": "userIdStatus",
          "propertyKeyName": "18",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (18)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 18,
          "propertyName": "userCode",
          "propertyKeyName": "18",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (18)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userIdStatus",
          "propertyKey": 19,
          "propertyName": "userIdStatus",
          "propertyKeyName": "19",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "User ID status (19)",
            "states": {
              "0": "Available",
              "1": "Enabled",
              "2": "Disabled"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 99,
          "commandClassName": "User Code",
          "property": "userCode",
          "propertyKey": 19,
          "propertyName": "userCode",
          "propertyKeyName": "19",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": true,
            "label": "User Code (19)",
            "minLength": 4,
            "maxLength": 10
          }
        },
        {
          "endpoint": 0,
          "commandClass": 112,
          "commandClassName": "Configuration",
          "property": 3,
          "propertyName": "Beeper",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "description": "Enable/Disable keypad beep",
            "label": "Beeper",
            "default": 1,
            "min": 0,
            "max": 1,
            "states": {
              "0": "Disable",
              "1": "Enable"
            },
            "valueSize": 1,
            "format": 0,
            "allowManualEntry": false,
            "isFromConfig": true
          },
          "value": 1
        },
        {
          "endpoint": 0,
          "commandClass": 112,
          "commandClassName": "Configuration",
          "property": 4,
          "propertyName": "Vacation Mode",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "description": "Enable/Disable Vacation Mode",
            "label": "Vacation Mode",
            "default": 0,
            "min": 0,
            "max": 1,
            "states": {
              "0": "Disable",
              "1": "Enable"
            },
            "valueSize": 1,
            "format": 0,
            "allowManualEntry": false,
            "isFromConfig": true
          },
          "value": 0
        },
        {
          "endpoint": 0,
          "commandClass": 112,
          "commandClassName": "Configuration",
          "property": 5,
          "propertyName": "Lock & Leave",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "description": "Enable/Disable Lock & Leave",
            "label": "Lock & Leave",
            "default": 1,
            "min": 0,
            "max": 1,
            "states": {
              "0": "Disable",
              "1": "Enable"
            },
            "valueSize": 1,
            "format": 0,
            "allowManualEntry": false,
            "isFromConfig": true
          },
          "value": 1
        },
        {
          "endpoint": 0,
          "commandClass": 112,
          "commandClassName": "Configuration",
          "property": 7,
          "propertyName": "Basic Set",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "description": "Byte to send with set command to devices in association group 1",
            "label": "Basic Set",
            "default": 255,
            "min": 0,
            "max": 255,
            "valueSize": 1,
            "format": 1,
            "allowManualEntry": true,
            "isFromConfig": true
          },
          "value": 255
        },
        {
          "endpoint": 0,
          "commandClass": 113,
          "commandClassName": "Notification",
          "property": "alarmType",
          "propertyName": "alarmType",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Alarm Type",
            "min": 0,
            "max": 255
          },
          "value": 16
        },
        {
          "endpoint": 0,
          "commandClass": 113,
          "commandClassName": "Notification",
          "property": "alarmLevel",
          "propertyName": "alarmLevel",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Alarm Level",
            "min": 0,
            "max": 255
          },
          "value": 4
        },
        {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "manufacturerId",
          "propertyName": "manufacturerId",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Manufacturer ID",
            "min": 0,
            "max": 65535
          },
          "value": 59
        },
        {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "productType",
          "propertyName": "productType",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Product type",
            "min": 0,
            "max": 65535
          },
          "value": 25419
        },
        {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "productId",
          "propertyName": "productId",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Product ID",
            "min": 0,
            "max": 65535
          },
          "value": 20548
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "level",
          "propertyName": "level",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Battery level",
            "min": 0,
            "max": 100,
            "unit": "%"
          },
          "value": 46
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "isLow",
          "propertyName": "isLow",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Low battery level"
          },
          "value": false
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "chargingStatus",
          "propertyName": "chargingStatus",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Charging status",
            "min": 0,
            "max": 255,
            "states": {
              "0": "Discharging",
              "1": "Charging",
              "2": "Maintaining"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "rechargeable",
          "propertyName": "rechargeable",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Rechargeable"
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "backup",
          "propertyName": "backup",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Used as backup"
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "overheating",
          "propertyName": "overheating",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Overheating"
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "lowFluid",
          "propertyName": "lowFluid",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Fluid is low"
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "rechargeOrReplace",
          "propertyName": "rechargeOrReplace",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Recharge or replace",
            "min": 0,
            "max": 255,
            "states": {
              "0": "No",
              "1": "Soon",
              "2": "Now"
            }
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "disconnected",
          "propertyName": "disconnected",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Battery is disconnected"
          }
        },
        {
          "endpoint": 0,
          "commandClass": 128,
          "commandClassName": "Battery",
          "property": "lowTemperatureStatus",
          "propertyName": "lowTemperatureStatus",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Battery temperature is low"
          }
        },
        {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "libraryType",
          "propertyName": "libraryType",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Library type",
            "states": {
              "0": "Unknown",
              "1": "Static Controller",
              "2": "Controller",
              "3": "Enhanced Slave",
              "4": "Slave",
              "5": "Installer",
              "6": "Routing Slave",
              "7": "Bridge Controller",
              "8": "Device under Test",
              "9": "N/A",
              "10": "AV Remote",
              "11": "AV Device"
            }
          },
          "value": 6
        },
        {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "protocolVersion",
          "propertyName": "protocolVersion",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave protocol version"
          },
          "value": "2.64"
        },
        {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "firmwareVersions",
          "propertyName": "firmwareVersions",
          "ccVersion": 1,
          "metadata": {
            "type": "string[]",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave chip firmware versions"
          },
          "value": [
            "42.37"
          ]
        }
      ],
      "isFrequentListening": "1000ms",
      "maxDataRate": 40000,
      "supportedDataRates": [
        40000
      ],
      "protocolVersion": 2,
      "supportsBeaming": true,
      "supportsSecurity": false,
      "nodeType": 1,
      "deviceClass": {
        "basic": {
          "key": 4,
          "label": "Routing Slave"
        },
        "generic": {
          "key": 64,
          "label": "Entry Control"
        },
        "specific": {
          "key": 3,
          "label": "Secure Keypad Door Lock"
        },
        "mandatorySupportedCCs": [
          32,
          98,
          99,
          114,
          134
        ],
        "mandatoryControlledCCs": []
      },
      "interviewStage": "Complete",
      "deviceDatabaseUrl": "https://devices.zwave-js.io/?jumpTo=0x003b:0x634b:0x5044:42.37",
      "statistics": {
        "commandsTX": 932,
        "commandsRX": 1421,
        "commandsDroppedRX": 59,
        "commandsDroppedTX": 19,
        "timeoutResponse": 17,
        "rtt": 133.1,
        "rssi": -64,
        "lwr": {
          "protocolDataRate": 2,
          "repeaters": [
            4
          ],
          "rssi": -63,
          "repeaterRSSI": [
            127
          ]
        },
        "nlwr": {
          "protocolDataRate": 2,
          "repeaters": [],
          "rssi": -93,
          "repeaterRSSI": []
        }
      },
      "highestSecurityClass": 7,
      "isControllerNode": false,
      "keepAwake": false
    }
  }
}

{
"endpoint": 0,
"commandClass": 113,
"commandClassName": "Notification",
"property": "alarmType",
"propertyName": "alarmType",
"ccVersion": 1,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Alarm Type",
"min": 0,
"max": 255
},
"value": 16
},
{
"endpoint": 0,
"commandClass": 113,
"commandClassName": "Notification",
"property": "alarmLevel",
"propertyName": "alarmLevel",
"ccVersion": 1,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Alarm Level",
"min": 0,
"max": 255
},
"value": 4
},

looks like you lock is updating the alarm type and alarm level, do you have those sensors enabled?

I am new to HA. So I wouldn't know. The devices and entities were autopopulated when I added the BE369 locks. I followed the keymaster instructions exactly and did not see any reference to that. Should it have been automatic? Is there another set of instructions I missed?

HA has a lot of moving parts. I would love to be more help here. My background is embedded C/++ and datacomm. If you can point me to a good overview of HA's architure I would love to go through it and try to be more helpful. So far, I have found very little to help me get up to speed on this product. I have found a ton of outdated info on things that no longer seem to exist in the UI.

You should have something that looks similar to this, click the "not shown" sensors, the click alarm type and alarm level and enable them.

image
image

Mine looks a little different but found it under zwave and enabled both. Should noticiations start working now? The two new sensor values make no sense to me. Btw, the door is NOT open as shown in the shot below.
image

The "current status of the door" sensor you can disable, it's part of the command class and only works correctly on locks that can actually sense the door.

Now that you have the alarms enabled, select those sensors in the "Configure" options for KeyMaster.

image

I found and followed, including disabling the other sensor. But still no notifications. I did see some messages from the system immediately after the change about generating something. But door code notifications are still not working.
image

Make sure the input_boolean.<lockname>_lock_notifications and input_boolean.<lockname>_dooraccess_notifications are toggled off and that the notifications in the code slots are turned on.

I see no place to set those. Notifications are turned on for all active codes.

I noticed above that you have some things I don't..... Any idea why? Are automations required and need to be setup manually?
image

Ok, I don't know how much of this other stuff was necessary, but adding my own automation generates a notification. So that was definitely a problem. I now wonder if any of that other stuff was necessary. Two big questions now. 1.) Why weren't my automations created automatically?? It looks like they were for other users. 2.) What should they really look like?? The one I created will notify on unlock, but does not pass user code id or any other info. Can you tell me what they should look like?? It looks like your system has multiple of them.

  1. notification scripts are not generated as there are many notification integrations for HA available.
  2. All this is documented in the wiki.

That does not coincide with any doc or video on keymaster that I have read/watched. Every one says that once you add the script in scripts (which I did before opening this), notifications start w/o futher effort. Did this change in the latest release? This is an automation which is in a different area. The script you referenced seems to make no difference. I have had that since the beginning. Regardless, I need some info on how others have setup automations that include the name of the user code.

I don't know why you're lock isn't throwing the proper notifications, you'll have to figure out the zwavejs issue for that aspect to work.

Can you send me a screen shot, or some condensed form of your automations? I don't think this has to do with my locks. It appears to be a lack of automations for the lock. Since those don't exist until keymaster is installed, something appears to have failed during my keymaster install. I am making that assumption based on the fact that your system has automations, and mine did not until I added some manually. Can you confirm that keymaster installed your lock automations during install?

What is in the yellow circle on your system??? How many more can I not see?? If I can copy all in your list, I can probably get mine working. My list was empty.

keymasterautomations1

Did you select your lock from the settings?

image

Did you complete this vital step from the Wiki?

Why are you ignoring my request to see your automations?

If you don't have things setup right your automations will be missing:

image

They are definitely missing. But I did follow the post .22 instructions when I originally installed keymaster. I just added the pre .22 script. It made no difference. Automations are still missing. What is the easiest way to get them installed.

So you have the packages line in your configuration.yaml?

homeassistant:
  packages: !include_dir_named packages

This is all that is needed.

yes, that was done before I installed.
image

Can you send me screen shots of each automation so I can add them manually? Or perhaps there is a way to zip them up into a file?

No, they are generated by the integration, check your /config/packages directory.

THe only file in config/packages is the pre .22 file I just created this morning to see if it would make any difference.
image

Check your home assistant log for further errors.
You do not need the additional_yaml directory that was for an older version of Home Assistant.

The only thing in the log is a warning about keymaster being "untested". That has been there all along

I would still like to see what is in each of your automations. Not sure why mine did not get generated automatically, but it seems like I can fix this by creating them manually. The only thing that seems to not be working in my keymaster is notifications. I can see everything, set codes, see history, unlock the door, etc. But I want a notification that tells me which code opened the door. Can you show me the automation that does that? There have been at least 3 HA versions since I started trying to get km working 20 days ago. Perhaps one of those (or all) cause the km install to fail or partially fail. But I need to move on. I just want to create an automation that sends notify with user info.

NVM. I opted to upgrade HA (again) uninstall km, delete the lock, and then reinstall it all. Now the generated automations are showing up.

Ok, I am now getting notifications on open/close from a separate sensor on the door that I added to the lock config. But still NO notification of when/which code was used. Do I need to enable something else to get that?

image

None of the automations I see appear to be designed to notify with the unlock code that was used.

I see that in my common file also. But I still see no notifications. These are the instructions I followed...

https://www.youtube.com/watch?v=_NjVbQBaOjQ

According to this video, it should be working. It's not.

I also tried setting the sensors back to "fake" as in the video. No difference. I can still get my own notifications to fire when the door opens, but I have no idea how to grab user codes into the message when the the lock is unlocked. I thought I was in good shape when the automations showed up. Not so.

Reinstalling everything seems to have helped, but not solved my problem. It would be great to understand how this is supposed to work. It appears that automations are NOT used for user code notify. Right? So then how is this supposed to work? I see something about a "bus" used for something. I see the common code that contains some notify. So what gets called where?? Is there a service or event I should be looking at? What is the first thing I should be looking for in this chain of many pieces????

KeyMaster digests the zwavejs events and outputs it's own on top of them:

https://github.com/FutureTense/keymaster/blob/main/custom_components/keymaster/helpers.py#L209-L254

If your zwavejs events are not firing, the automations that are generated will not fire.

According to the zwave log, events and notifications are firing. Here is the latest example when I input a user code...

image

Why isn't km responding to this?

Those are the alarm sensors, you have to make sure those are enabled and set KeyMaster to use them.
Now that your automations are populating correctly, it should work.

They are enabled. How do I set km to use them?

From the configure menu.

I see no way to do that.

It has been set this since you had me change it before, not working......

image

I can see the alerm level changing in the ui, I can see events in the log. Why is km doing nothing about it?

You should be able to check the trace on the automation to find out why it's not firing from HA Settings -> Automations and Scenes -> 3 dots next to the automation and select Trace

which one?

This one has never fired and has no trace info.

image

I've reviewed the code, looks like one of the revisions moved some of the alarm type/level code out of the proper location, I'll be issuing an update for that shortly.

If the issue persists after the update please reopen.

The notifications are still not correct. I do get notifications now (since last update) but they are rarely correct. It says "keypad unlock" when it is actually locked, it says keypad unlock when when locked manually from the inside. It references the last used code when no code is used. It is almost never correct.

Please re-open.