FutureTense / keymaster

Home Assistant integration for managing Z-Wave enabled locks
MIT License
218 stars 44 forks source link

ISSUE: Cannot get notifications to work. #317

Closed joeinaustin closed 1 year ago

joeinaustin commented 1 year ago

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):

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 }}"
firstof9 commented 1 year ago

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.

joeinaustin commented 1 year ago

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.

firstof9 commented 1 year ago

image

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

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

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

image

firstof9 commented 1 year ago

Ok try zwave_js_notification and listen, and test again.

joeinaustin commented 1 year ago

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

firstof9 commented 1 year ago

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

joeinaustin commented 1 year ago

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.

firstof9 commented 1 year ago

Not the same events.

joeinaustin commented 1 year ago

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

firstof9 commented 1 year ago

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

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

image

firstof9 commented 1 year ago

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.

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

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
    }
  }
}
firstof9 commented 1 year ago

{ "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?

joeinaustin commented 1 year ago

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?

joeinaustin commented 1 year ago

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.

firstof9 commented 1 year ago

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

joeinaustin commented 1 year ago

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

firstof9 commented 1 year ago

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

joeinaustin commented 1 year ago

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
firstof9 commented 1 year ago

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.

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

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.

firstof9 commented 1 year ago

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

joeinaustin commented 1 year ago

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.

firstof9 commented 1 year ago

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.

joeinaustin commented 1 year ago

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?

joeinaustin commented 1 year ago

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

firstof9 commented 1 year ago

Did you select your lock from the settings?

image

Did you complete this vital step from the Wiki?

joeinaustin commented 1 year ago

Why are you ignoring my request to see your automations?

firstof9 commented 1 year ago

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

image

joeinaustin commented 1 year ago

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.

firstof9 commented 1 year ago

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

homeassistant:
  packages: !include_dir_named packages

This is all that is needed.

joeinaustin commented 1 year ago

yes, that was done before I installed.

image
joeinaustin commented 1 year ago

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?

firstof9 commented 1 year ago

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

joeinaustin commented 1 year ago

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
firstof9 commented 1 year ago

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.

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

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.

joeinaustin commented 1 year ago

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

joeinaustin commented 1 year ago

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
joeinaustin commented 1 year ago

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

firstof9 commented 1 year ago

The automation is right here:

https://github.com/FutureTense/keymaster/blob/main/custom_components/keymaster/keymaster_common.yaml#L167-L186

joeinaustin commented 1 year ago

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.