diff --git a/test/conftest.py b/test/conftest.py index e20bee7dc..b00a986a3 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -224,7 +224,7 @@ def version_data_fixture(): "serverVersion": "test_server_version", "homeId": "test_home_id", "minSchemaVersion": 0, - "maxSchemaVersion": 31, + "maxSchemaVersion": 32, } diff --git a/test/fixtures/basic_dump.txt b/test/fixtures/basic_dump.txt index 98ef3b229..3aa170138 100644 --- a/test/fixtures/basic_dump.txt +++ b/test/fixtures/basic_dump.txt @@ -1 +1 @@ -{"type":"result","success":true,"messageId":"start-listening-result","result":{"state":{"controller":{"sdkVersion":"Z-Wave 3.95","isHealNetworkActive":false,"type":1,"homeId":3601639587,"ownNodeId":1,"isPrimary":true,"isUsingHomeIdFromOtherNetwork":false,"isSISPresent":true,"wasRealPrimary":true,"isSUC":true,"nodeType":0,"firmwareVersion":"1.0","manufacturerId":134,"productType":257,"productId":90,"supportedFunctionTypes":[2,3,4,5,6,7,8,9,16,17,18,19,20,21,22,23,24,28,32,33,34,35,36,39,41,42,43,44,45,65,66,68,69,70,71,72,73,74,75,76,77,80,81,83,84,85,86,87,94,96,97,98,99,102,103,128,144,146,147,152,180,182,183,184,185,186,189,190,191,210,211,212,238,239],"sucNodeId":1,"supportsTimers":false,"inclusionState": 0},"nodes":[{"nodeId":1,"index":0,"status":4,"ready":true,"isListening":true,"isRouting":false,"isSecure":false,"manufacturerId":134,"productId":90,"productType":257,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0086/zw090.json","manufacturer":"AEON Labs","manufacturerId":134,"label":"ZW090","description":"Z‐Stick Gen5 USB Controller","devices":[{"productType":1,"productId":90},{"productType":257,"productId":90},{"productType":513,"productId":90}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"metadata":{"reset":"Use this procedure only in the event that the primary controller is missing or otherwise inoperable.\n\nPress and hold the Action Button on Z-Stick for 20 seconds and then release","manual":"https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1355/Z%20Stick%20Gen5%20manual%201.pdf"}},"label":"ZW090","neighbors":[23,26,5,6],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":1,"index":0,"deviceClass":{"basic":{"key":2,"label":"Static Controller"},"generic":{"key":2,"label":"Static Controller"},"specific":{"key":1,"label":"PC Controller"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[32]},"commandClasses":[]}],"values":[],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":0,"deviceClass":{"basic":{"key":2,"label":"Static Controller"},"generic":{"key":2,"label":"Static Controller"},"specific":{"key":1,"label":"PC Controller"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[32]},"isControllerNode":false,"keepAwake":false},{"nodeId":2,"index":0,"installerIcon":1536,"userIcon":1536,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":99,"productId":12344,"productType":18756,"firmwareVersion":"5.26","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0063/ge_14294_zw3005.json","manufacturer":"GE/Jasco","manufacturerId":99,"label":"14294 / ZW3005","description":"In-Wall Dimmer Switch","devices":[{"productType":18756,"productId":12344}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"compat":{"valueIdRegex":{},"treatBasicSetAsEvent":true}},"label":"14294 / ZW3005","neighbors":[23,26,3,4,5,6],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":2,"index":0,"installerIcon":1536,"userIcon":1536,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"targetValue","propertyName":"targetValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"duration","propertyName":"duration","ccVersion":2,"metadata":{"type":"duration","readable":true,"writeable":true,"label":"Transition duration"}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"currentValue","propertyName":"currentValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99},"value":99},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Up","propertyName":"Up","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Up)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Down","propertyName":"Down","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Down)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"sceneId","propertyName":"sceneId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Scene ID","min":1,"max":255}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"dimmingDuration","propertyName":"dimmingDuration","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true,"label":"Dimming duration"}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Night Light","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Defines the behavior of the blue LED. Default is on when switch is off.","label":"Night Light","min":0,"max":2,"states":{"0":"LED on when switch is OFF","1":"LED on when switch is ON","2":"LED always off"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Invert Switch","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Invert the ON/OFF Switch State.","label":"Invert Switch","min":0,"max":1,"states":{"0":"No","1":"Yes"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Dim Rate Steps (Z-Wave Command)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Z-Wave Command)","min":0,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Dim Rate Timing (Z-Wave)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (Z-Wave)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Dim Rate Steps (Manual)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Manual)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Dim Rate Timing (Manual)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps","label":"Dim Rate Timing (Manual)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Dim Rate Steps (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (All-On/All-Off)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Dim Rate Timing (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (All-On/All-Off)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":99},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":18756},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":12344},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.34"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.26"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]},"commandClasses":[{"id":32,"name":"Basic","version":1,"isSecure":false},{"id":38,"name":"Multilevel Switch","version":2,"isSecure":false},{"id":43,"name":"Scene Activation","version":1,"isSecure":false},{"id":44,"name":"Scene Actuator Configuration","version":1,"isSecure":false},{"id":86,"name":"CRC-16 Encapsulation","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":3,"index":0,"installerIcon":1536,"userIcon":1536,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":99,"productId":12344,"productType":18756,"firmwareVersion":"5.26","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0063/ge_14294_zw3005.json","manufacturer":"GE/Jasco","manufacturerId":99,"label":"14294 / ZW3005","description":"In-Wall Dimmer Switch","devices":[{"productType":18756,"productId":12344}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"compat":{"valueIdRegex":{},"treatBasicSetAsEvent":true}},"label":"14294 / ZW3005","neighbors":[2,23,26,4,5],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":3,"index":0,"installerIcon":1536,"userIcon":1536,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"targetValue","propertyName":"targetValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"duration","propertyName":"duration","ccVersion":2,"metadata":{"type":"duration","readable":true,"writeable":true,"label":"Transition duration"}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"currentValue","propertyName":"currentValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99},"value":99},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Up","propertyName":"Up","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Up)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Down","propertyName":"Down","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Down)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"sceneId","propertyName":"sceneId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Scene ID","min":1,"max":255}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"dimmingDuration","propertyName":"dimmingDuration","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true,"label":"Dimming duration"}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Night Light","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Defines the behavior of the blue LED. Default is on when switch is off.","label":"Night Light","min":0,"max":2,"states":{"0":"LED on when switch is OFF","1":"LED on when switch is ON","2":"LED always off"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Invert Switch","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Invert the ON/OFF Switch State.","label":"Invert Switch","min":0,"max":1,"states":{"0":"No","1":"Yes"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Dim Rate Steps (Z-Wave Command)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Z-Wave Command)","min":0,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Dim Rate Timing (Z-Wave)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (Z-Wave)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Dim Rate Steps (Manual)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Manual)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Dim Rate Timing (Manual)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps","label":"Dim Rate Timing (Manual)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Dim Rate Steps (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (All-On/All-Off)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Dim Rate Timing (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (All-On/All-Off)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":99},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":18756},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":12344},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.34"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.26"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]},"commandClasses":[{"id":32,"name":"Basic","version":1,"isSecure":false},{"id":38,"name":"Multilevel Switch","version":2,"isSecure":false},{"id":43,"name":"Scene Activation","version":1,"isSecure":false},{"id":44,"name":"Scene Actuator Configuration","version":1,"isSecure":false},{"id":86,"name":"CRC-16 Encapsulation","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":4,"index":0,"installerIcon":1536,"userIcon":1536,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":99,"productId":12344,"productType":18756,"firmwareVersion":"5.26","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0063/ge_14294_zw3005.json","manufacturer":"GE/Jasco","manufacturerId":99,"label":"14294 / ZW3005","description":"In-Wall Dimmer Switch","devices":[{"productType":18756,"productId":12344}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"compat":{"valueIdRegex":{},"treatBasicSetAsEvent":true}},"label":"14294 / ZW3005","neighbors":[2,23,26,3,5,6],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":4,"index":0,"installerIcon":1536,"userIcon":1536,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"targetValue","propertyName":"targetValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"duration","propertyName":"duration","ccVersion":2,"metadata":{"type":"duration","readable":true,"writeable":true,"label":"Transition duration"}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"currentValue","propertyName":"currentValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99},"value":99},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Up","propertyName":"Up","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Up)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Down","propertyName":"Down","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Down)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"sceneId","propertyName":"sceneId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Scene ID","min":1,"max":255}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"dimmingDuration","propertyName":"dimmingDuration","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true,"label":"Dimming duration"}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Night Light","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Defines the behavior of the blue LED. Default is on when switch is off.","label":"Night Light","min":0,"max":2,"states":{"0":"LED on when switch is OFF","1":"LED on when switch is ON","2":"LED always off"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Invert Switch","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Invert the ON/OFF Switch State.","label":"Invert Switch","min":0,"max":1,"states":{"0":"No","1":"Yes"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Dim Rate Steps (Z-Wave Command)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Z-Wave Command)","min":0,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Dim Rate Timing (Z-Wave)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (Z-Wave)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Dim Rate Steps (Manual)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Manual)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Dim Rate Timing (Manual)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps","label":"Dim Rate Timing (Manual)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Dim Rate Steps (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (All-On/All-Off)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Dim Rate Timing (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (All-On/All-Off)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":99},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":18756},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":12344},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.34"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.26"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]},"commandClasses":[{"id":32,"name":"Basic","version":1,"isSecure":false},{"id":38,"name":"Multilevel Switch","version":2,"isSecure":false},{"id":43,"name":"Scene Activation","version":1,"isSecure":false},{"id":44,"name":"Scene Actuator Configuration","version":1,"isSecure":false},{"id":86,"name":"CRC-16 Encapsulation","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":5,"index":0,"installerIcon":3079,"userIcon":3079,"status":1,"ready":true,"isListening":false,"isRouting":true,"isSecure":false,"manufacturerId":265,"productId":8449,"productType":8225,"firmwareVersion":"5.1","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0109/zse40.json","manufacturer":"Vision Security","manufacturerId":265,"label":"ZSE40","description":"Zooz 4-in-one motion/temperature/humidity/luminance sensor","devices":[{"productType":8225,"productId":8449}],"firmwareVersion":{"min":"0.0","max":"255.255"},"paramInformation":{"_map":{}},"metadata":{"inclusion":"To add the ZP3111 to the Z-Wave network (inclusion), place the Z-Wave primary controller into inclusion mode. Press the Program Switch of ZP3111 for sending the NIF. After sending NIF, Z-Wave will send the auto inclusion, otherwise, ZP3111 will go to sleep after 20 seconds.","exclusion":"To remove the ZP3111 from the Z-Wave network (exclusion), place the Z-Wave primary controller into “exclusion” mode, and following its instruction to delete the ZP3111 to the controller. Press the Program Switch of ZP3111 once to be excluded.","reset":"Remove cover to trigged tamper switch, LED flash once & send out Alarm Report. Press Program Switch 10 times within 10 seconds, ZP3111 will send the “Device Reset Locally Notification” command and reset to the factory default. (Remark: This is to be used only in the case of primary controller being inoperable or otherwise unavailable.)","manual":"https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2479/ZP3111-5_R2_20170316.pdf"}},"label":"ZSE40","neighbors":[1,2,3,4],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":5,"index":0,"installerIcon":3079,"userIcon":3079,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Air temperature","propertyName":"Air temperature","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Air temperature","ccSpecific":{"sensorType":1,"scale":1},"unit":"°F"},"value":68.42},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Illuminance","propertyName":"Illuminance","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Illuminance","ccSpecific":{"sensorType":3,"scale":0},"unit":"%"},"value":20.03},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Humidity","propertyName":"Humidity","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Humidity","ccSpecific":{"sensorType":5,"scale":0},"unit":"%"},"value":43.53},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":1,"propertyName":"Temperature Scale","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Temperature Scale","min":0,"max":1,"states":{"0":"Celsius","1":"Fahrenheit"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":2,"propertyName":"Temperature offset","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"label":"Temperature offset","min":0,"max":50},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Humidity","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"description":"Configure Relative Humidity","label":"Humidity","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Light Sensor","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"label":"Light Sensor","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Trigger Interval","ccVersion":1,"metadata":{"type":"number","default":180,"readable":true,"writeable":true,"description":"Set the trigger interval for motion sensor re-activation.","label":"Trigger Interval","min":1,"max":255,"unit":"seconds"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"Motion Sensor Sensitivity","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"Adjust sensitivity of the motion sensor.","label":"Motion Sensor Sensitivity","min":1,"max":7,"states":{"1":"highest","2":"higher","3":"high","4":"normal","5":"low","6":"lower","7":"lowest"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"LED indicator mode","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"label":"LED indicator mode","min":1,"max":3,"states":{"1":"Off","2":"Pulsing Temperature, Flashing Motion","3":"Flashing Temperature and Motion"}},"value":1},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Motion sensor status","propertyName":"Home Security","propertyKeyName":"Motion sensor status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Motion sensor status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","8":"Motion detection"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Cover status","propertyName":"Home Security","propertyKeyName":"Cover status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Cover status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","3":"Tampering, product cover removed"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmType","propertyName":"alarmType","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Type","min":0,"max":255}},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmLevel","propertyName":"alarmLevel","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Level","min":0,"max":255}},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":265},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":8225},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":8449},{"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":50},{"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":132,"commandClassName":"Wake Up","property":"wakeUpInterval","propertyName":"wakeUpInterval","ccVersion":1,"metadata":{"type":"number","default":3600,"readable":false,"writeable":true,"label":"Wake Up interval","min":600,"max":604800,"steps":600},"value":3600},{"endpoint":0,"commandClass":132,"commandClassName":"Wake Up","property":"controllerNodeId","propertyName":"controllerNodeId","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Node ID of the controller"},"value":1},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.5"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.1"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":6,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]},"commandClasses":[{"id":49,"name":"Multilevel Sensor","version":7,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":113,"name":"Notification","version":4,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":false},{"id":132,"name":"Wake Up","version":1,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":6,"index":0,"installerIcon":3079,"userIcon":3079,"status":1,"ready":true,"isListening":false,"isRouting":true,"isSecure":false,"manufacturerId":265,"productId":8449,"productType":8225,"firmwareVersion":"5.1","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0109/zse40.json","manufacturer":"Vision Security","manufacturerId":265,"label":"ZSE40","description":"Zooz 4-in-one motion/temperature/humidity/luminance sensor","devices":[{"productType":8225,"productId":8449}],"firmwareVersion":{"min":"0.0","max":"255.255"},"paramInformation":{"_map":{}},"metadata":{"inclusion":"To add the ZP3111 to the Z-Wave network (inclusion), place the Z-Wave primary controller into inclusion mode. Press the Program Switch of ZP3111 for sending the NIF. After sending NIF, Z-Wave will send the auto inclusion, otherwise, ZP3111 will go to sleep after 20 seconds.","exclusion":"To remove the ZP3111 from the Z-Wave network (exclusion), place the Z-Wave primary controller into “exclusion” mode, and following its instruction to delete the ZP3111 to the controller. Press the Program Switch of ZP3111 once to be excluded.","reset":"Remove cover to trigged tamper switch, LED flash once & send out Alarm Report. Press Program Switch 10 times within 10 seconds, ZP3111 will send the “Device Reset Locally Notification” command and reset to the factory default. (Remark: This is to be used only in the case of primary controller being inoperable or otherwise unavailable.)","manual":"https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2479/ZP3111-5_R2_20170316.pdf"}},"label":"ZSE40","neighbors":[1,2,4],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":6,"index":0,"installerIcon":3079,"userIcon":3079,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Air temperature","propertyName":"Air temperature","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Air temperature","ccSpecific":{"sensorType":1,"scale":1},"unit":"°F"},"value":69.36},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Illuminance","propertyName":"Illuminance","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Illuminance","ccSpecific":{"sensorType":3,"scale":0},"unit":"%"},"value":19.51},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Humidity","propertyName":"Humidity","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Humidity","ccSpecific":{"sensorType":5,"scale":0},"unit":"%"},"value":42.24},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":1,"propertyName":"Temperature Scale","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Temperature Scale","min":0,"max":1,"states":{"0":"Celsius","1":"Fahrenheit"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":2,"propertyName":"Temperature offset","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"label":"Temperature offset","min":0,"max":50},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Humidity","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"description":"Configure Relative Humidity","label":"Humidity","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Light Sensor","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"label":"Light Sensor","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Trigger Interval","ccVersion":1,"metadata":{"type":"number","default":180,"readable":true,"writeable":true,"description":"Set the trigger interval for motion sensor re-activation.","label":"Trigger Interval","min":1,"max":255,"unit":"seconds"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"Motion Sensor Sensitivity","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"Adjust sensitivity of the motion sensor.","label":"Motion Sensor Sensitivity","min":1,"max":7,"states":{"1":"highest","2":"higher","3":"high","4":"normal","5":"low","6":"lower","7":"lowest"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"LED indicator mode","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"label":"LED indicator mode","min":1,"max":3,"states":{"1":"Off","2":"Pulsing Temperature, Flashing Motion","3":"Flashing Temperature and Motion"}},"value":1},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Motion sensor status","propertyName":"Home Security","propertyKeyName":"Motion sensor status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Motion sensor status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","8":"Motion detection"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Cover status","propertyName":"Home Security","propertyKeyName":"Cover status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Cover status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","3":"Tampering, product cover removed"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmType","propertyName":"alarmType","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Type","min":0,"max":255}},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmLevel","propertyName":"alarmLevel","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Level","min":0,"max":255}},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":265},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":8225},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":8449},{"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":80},{"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":132,"commandClassName":"Wake Up","property":"wakeUpInterval","propertyName":"wakeUpInterval","ccVersion":1,"metadata":{"type":"number","default":3600,"readable":false,"writeable":true,"label":"Wake Up interval","min":600,"max":604800,"steps":600},"value":3600},{"endpoint":0,"commandClass":132,"commandClassName":"Wake Up","property":"controllerNodeId","propertyName":"controllerNodeId","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Node ID of the controller"},"value":1},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.5"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.1"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":6,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]},"commandClasses":[{"id":49,"name":"Multilevel Sensor","version":7,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":113,"name":"Notification","version":4,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":false},{"id":132,"name":"Wake Up","version":1,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":23,"index":0,"status":4,"ready":true,"isListening":false,"isRouting":true,"isSecure":true,"manufacturerId":59,"productId":20548,"productType":25409,"firmwareVersion":"113.22","deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x003b/be469.json","manufacturer":"Allegion","manufacturerId":59,"label":"BE469","description":"Touchscreen Deadbolt","devices":[{"productType":25409,"productId":20548}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}}},"label":"BE469","neighbors":[1,2,26,3,4],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":23,"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,152,134],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"currentMode","propertyName":"currentMode","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"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":0},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"targetMode","propertyName":"targetMode","ccVersion":2,"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":"outsideHandlesCanOpenDoor","propertyName":"outsideHandlesCanOpenDoor","ccVersion":2,"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":2,"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":"latchStatus","propertyName":"latchStatus","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"The current status of the latch"},"value":"open"},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"boltStatus","propertyName":"boltStatus","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"The current status of the bolt"},"value":"locked"},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"doorStatus","propertyName":"doorStatus","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"The current status of the door"},"value":"open"},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"lockTimeout","propertyName":"lockTimeout","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Seconds until lock mode times out"}},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"operationType","propertyName":"operationType","ccVersion":2,"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":2,"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":2,"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":"lockTimeoutConfiguration","propertyName":"lockTimeoutConfiguration","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Duration of timed mode in seconds","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":1},{"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":"**********"},{"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":"**********"},{"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":"**********"},{"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":0},{"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":""},{"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":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":20,"propertyName":"userIdStatus","propertyKeyName":"20","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (20)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":20,"propertyName":"userCode","propertyKeyName":"20","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (20)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":21,"propertyName":"userIdStatus","propertyKeyName":"21","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (21)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":21,"propertyName":"userCode","propertyKeyName":"21","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (21)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":22,"propertyName":"userIdStatus","propertyKeyName":"22","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (22)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":22,"propertyName":"userCode","propertyKeyName":"22","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (22)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":23,"propertyName":"userIdStatus","propertyKeyName":"23","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (23)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":23,"propertyName":"userCode","propertyKeyName":"23","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (23)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":24,"propertyName":"userIdStatus","propertyKeyName":"24","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (24)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":24,"propertyName":"userCode","propertyKeyName":"24","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (24)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":25,"propertyName":"userIdStatus","propertyKeyName":"25","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (25)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":25,"propertyName":"userCode","propertyKeyName":"25","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (25)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":26,"propertyName":"userIdStatus","propertyKeyName":"26","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (26)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":26,"propertyName":"userCode","propertyKeyName":"26","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (26)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":27,"propertyName":"userIdStatus","propertyKeyName":"27","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (27)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":27,"propertyName":"userCode","propertyKeyName":"27","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (27)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":28,"propertyName":"userIdStatus","propertyKeyName":"28","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (28)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":28,"propertyName":"userCode","propertyKeyName":"28","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (28)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":29,"propertyName":"userIdStatus","propertyKeyName":"29","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (29)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":29,"propertyName":"userCode","propertyKeyName":"29","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (29)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":30,"propertyName":"userIdStatus","propertyKeyName":"30","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (30)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":30,"propertyName":"userCode","propertyKeyName":"30","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (30)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Beeper","ccVersion":1,"metadata":{"type":"number","default":255,"readable":true,"writeable":true,"label":"Beeper","min":0,"max":255,"states":{"0":"Disable Beeper","255":"Enable Beeper"}},"value":255},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Vacation Mode","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Vacation Mode","min":0,"max":255,"states":{"0":"Disable Vacation Mode","255":"Enable Vacation Mode"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Lock & Leave","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock & Leave","min":0,"max":255,"states":{"0":"Disable Lock & Leave","255":"Enable Lock & Leave"}},"value":255},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"User Slot Status","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"User Slot Status","min":0,"max":255},"value":117440512},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Lock Specific Alarm Mode","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"BE469 Only","label":"Lock Specific Alarm Mode","min":0,"max":3,"states":{"0":"Alarm Off","1":"Alert","2":"Tamper","3":"Forced Entry"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Lock Specific Alarm Alert Sensitivity","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock Specific Alarm Alert Sensitivity","min":0,"max":5,"states":{"0":"Not Supported","1":"Most Sensitive","2":"More Sensitive","3":"Medium Sensitivity","4":"Less Sensitive","5":"Least Sensitive"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Lock Specific Alarm Tamper Sensitivity","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock Specific Alarm Tamper Sensitivity","min":0,"max":5,"states":{"0":"Not Supported","1":"Most Sensitive","2":"More Sensitive","3":"Medium Sensitivity","4":"Less Sensitive","5":"Least Sensitive"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Lock Specific Alarm Kick Sensitivity","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"BE469 Only","label":"Lock Specific Alarm Kick Sensitivity","min":0,"max":5,"states":{"0":"Not Supported","1":"Most Sensitive","2":"More Sensitive","3":"Medium Sensitivity","4":"Less Sensitive","5":"Least Sensitive"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Lock Specific Alarm Disable—Local Controls","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock Specific Alarm Disable—Local Controls","min":0,"max":255,"states":{"0":"Disable Local Control","255":"Enable Local Control"}},"value":255},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Electronic Transition Count","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Electronic Transition Count","min":0,"max":2147483647},"value":2406},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":13,"propertyName":"Mechanical Transition Count","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Mechanical Transition Count","min":0,"max":2147483647},"value":2336},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":14,"propertyName":"Electronic Failed Count","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Electronic Failed Count","min":0,"max":2147483647},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":15,"propertyName":"Auto Lock","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Auto Lock","min":0,"max":255,"states":{"0":"Disable Auto Lock","255":"Enable Auto Lock"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":16,"propertyName":"User Code PIN Length","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"User Code PIN length, a value between 4 and 8 (default 4)","label":"User Code PIN Length","min":4,"max":8,"states":{"4":"Four Digits","5":"Five Digits","6":"Six Digits","7":"Seven Digits","8":"Eight Digits"}},"value":4},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":18,"propertyName":"Get Bootloader Version","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Get Bootloader Version","min":0,"max":255},"value":1},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Access Control","propertyKey":"Lock state","propertyName":"Access Control","propertyKeyName":"Lock state","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Lock state","ccSpecific":{"notificationType":6},"min":0,"max":255,"states":{"0":"idle","11":"Lock jammed"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Access Control","propertyKey":"Keypad state","propertyName":"Access Control","propertyKeyName":"Keypad state","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Keypad state","ccSpecific":{"notificationType":6},"min":0,"max":255,"states":{"0":"idle","16":"Keypad temporary disabled"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Sensor status","propertyName":"Home Security","propertyKeyName":"Sensor status","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Sensor status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","2":"Intrusion"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Power Management","propertyKey":"Battery maintenance status","propertyName":"Power Management","propertyKeyName":"Battery maintenance status","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Battery maintenance status","ccSpecific":{"notificationType":8},"min":0,"max":255,"states":{"0":"idle","10":"Replace battery soon","11":"Replace battery now"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"System","propertyKey":"Hardware status","propertyName":"System","propertyKeyName":"Hardware status","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Hardware status","ccSpecific":{"notificationType":9},"min":0,"max":255,"states":{"0":"idle","1":"System hardware failure"}},"value":0},{"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":25409},{"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":97},{"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":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":6},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"3.42"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["113.22"]}],"isFrequentListening":"1000ms","maxDataRate":40000,"supportedDataRates":[40000],"protocolVersion":3,"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,152,134],"mandatoryControlledCCs":[]},"commandClasses":[{"id":98,"name":"Door Lock","version":2,"isSecure":true},{"id":99,"name":"User Code","version":1,"isSecure":true},{"id":112,"name":"Configuration","version":1,"isSecure":true},{"id":113,"name":"Notification","version":3,"isSecure":true},{"id":114,"name":"Manufacturer Specific","version":1,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":true},{"id":133,"name":"Association","version":1,"isSecure":true},{"id":134,"name":"Version","version":1,"isSecure":false},{"id":152,"name":"Security","version":1,"isSecure":true}]},{"nodeId":26,"index":0,"installerIcon":4608,"userIcon":4608,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":152,"productId":256,"productType":25602,"firmwareVersion":"10.7","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0098/ct100_plus.json","manufacturer":"Radio Thermostat Company of America (RTC)","manufacturerId":152,"label":"CT100 Plus","description":"Z-Wave Thermostat","devices":[{"productType":25602,"productId":256}],"firmwareVersion":{"min":"0.0","max":"255.255"},"paramInformation":{"_map":{}}},"label":"CT100 Plus","neighbors":[1,2,23,3,4],"endpointCountIsDynamic":false,"endpointsHaveIdenticalCapabilities":false,"individualEndpointCount":2,"aggregatedEndpointCount":0,"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":26,"index":0,"installerIcon":4608,"userIcon":4608,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]}},{"nodeId":26,"index":1,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]}},{"nodeId":26,"index":2,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Air temperature","propertyName":"Air temperature","ccVersion":5,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Air temperature","ccSpecific":{"sensorType":1,"scale":1},"unit":"°F"},"value":72.5},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Humidity","propertyName":"Humidity","ccVersion":5,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Humidity","ccSpecific":{"sensorType":5,"scale":0},"unit":"%"},"value":34},{"endpoint":0,"commandClass":66,"commandClassName":"Thermostat Operating State","property":"state","propertyName":"state","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Operating state","min":0,"max":255,"states":{"0":"Idle","1":"Heating","2":"Cooling","3":"Fan Only","4":"Pending Heat","5":"Pending Cool","6":"Vent/Economizer","7":"Aux Heating","8":"2nd Stage Heating","9":"2nd Stage Cooling","10":"2nd Stage Aux Heat","11":"3rd Stage Aux Heat"}},"value":0},{"endpoint":0,"commandClass":67,"commandClassName":"Thermostat Setpoint","property":"setpoint","propertyKey":1,"propertyName":"setpoint","propertyKeyName":"Heating","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"ccSpecific":{"setpointType":1},"unit":"°F"},"value":68},{"endpoint":0,"commandClass":67,"commandClassName":"Thermostat Setpoint","property":"setpoint","propertyKey":2,"propertyName":"setpoint","propertyKeyName":"Cooling","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"ccSpecific":{"setpointType":2},"unit":"°F"},"value":69},{"endpoint":0,"commandClass":68,"commandClassName":"Thermostat Fan Mode","property":"mode","propertyName":"mode","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Thermostat fan mode","min":0,"max":255,"states":{"0":"Auto low","1":"Low"}}},{"endpoint":0,"commandClass":69,"commandClassName":"Thermostat Fan State","property":"state","propertyName":"state","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Thermostat fan state","min":0,"max":255,"states":{"0":"Idle / off","1":"Running / running low","2":"Running high","3":"Running medium","4":"Circulation mode","5":"Humidity circulation mode","6":"Right - left circulation mode","7":"Up - down circulation mode","8":"Quiet circulation mode"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":1,"propertyName":"Temperature Reporting Threshold","ccVersion":1,"metadata":{"type":"number","default":2,"readable":true,"writeable":true,"description":"Reporting threshold for changes in the ambient temperature","label":"Temperature Reporting Threshold","min":0,"max":4,"states":{"0":"Disabled","1":"0.5° F","2":"1.0° F","3":"1.5° F","4":"2.0° F"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":2,"propertyName":"HVAC Settings","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"description":"Configured HVAC settings","label":"HVAC Settings","min":0,"max":0},"value":17891329},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Power Status","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"description":"C-Wire / Battery Status","label":"Power Status","min":0,"max":0},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Thermostat Swing Temperature","ccVersion":1,"metadata":{"type":"number","default":2,"readable":true,"writeable":true,"description":"Variance allowed from setpoint to engage HVAC","label":"Thermostat Swing Temperature","min":1,"max":8,"states":{"1":"0.5° F","2":"1.0° F","3":"1.5° F","4":"2.0° F","5":"2.5° F","6":"3.0° F","7":"3.5° F","8":"4.0° F"}},"value":2},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Thermostat Diff Temperature","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"Configures additional stages","label":"Thermostat Diff Temperature","min":4,"max":12,"states":{"4":"2.0° F","8":"4.0° F","12":"6.0° F"}},"value":1028},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Thermostat Recovery Mode","ccVersion":1,"metadata":{"type":"number","default":2,"readable":true,"writeable":true,"description":"Fast or Economy recovery mode","label":"Thermostat Recovery Mode","min":1,"max":2,"states":{"1":"Fast recovery mode","2":"Economy recovery mode"}},"value":2},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Temperature Reporting Filter","ccVersion":1,"metadata":{"type":"number","default":124,"readable":true,"writeable":true,"description":"Upper/Lower bounds for thermostat temperature reporting","label":"Temperature Reporting Filter","min":0,"max":124},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Simple UI Mode","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Simple mode enable/disable","label":"Simple UI Mode","min":0,"max":1,"states":{"0":"Normal mode enabled","1":"Simple mode enabled"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Multicast","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Enable or disables Multicast","label":"Multicast","min":0,"max":1,"states":{"0":"Multicast disabled","1":"Multicast enabled"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Utility Lock Enable/Disable","ccVersion":1,"metadata":{"type":"number","default":0,"readable":false,"writeable":true,"description":"Prevents setpoint changes at thermostat","label":"Utility Lock Enable/Disable","min":0,"max":255,"states":{"0":"Utility lock disabled","1":"Utility lock enabled"}}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Humidity Reporting Threshold","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Reporting threshold for changes in the relative humidity","label":"Humidity Reporting Threshold","min":0,"max":255,"states":{"0":"Disabled","1":"3% RH","2":"5% RH","3":"10% RH"}}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"Auxiliary/Emergency","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Enables or disables auxiliary / emergency heating","label":"Auxiliary/Emergency","min":0,"max":255,"states":{"0":"Auxiliary/Emergency heat disabled","1":"Auxiliary/Emergency heat enabled"}}},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":152},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":25602},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":256},{"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":100},{"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":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.24"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["10.7"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}},{"endpoint":0,"commandClass":135,"commandClassName":"Indicator","property":"value","propertyName":"value","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Indicator value","ccSpecific":{"indicatorId":0},"min":0,"max":255},"value":0},{"endpoint":1,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":1,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":1,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535}},{"endpoint":1,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535}},{"endpoint":1,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535}},{"endpoint":1,"commandClass":64,"commandClassName":"Thermostat Mode","property":"mode","propertyName":"mode","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Thermostat mode","min":0,"max":255,"states":{"0":"Off","1":"Heat","2":"Cool","3":"Auto","4":"Auxiliary","5":"Resume (on)","6":"Fan","7":"Furnace","8":"Dry","9":"Moist","10":"Auto changeover","11":"Energy heat","12":"Energy cool","13":"Away","15":"Full power","31":"Manufacturer specific"}}},{"endpoint":1,"commandClass":64,"commandClassName":"Thermostat Mode","property":"manufacturerData","propertyName":"manufacturerData","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true}},{"endpoint":1,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"}},{"endpoint":1,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"}},{"endpoint":1,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"}},{"endpoint":2,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":2,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":2,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535}},{"endpoint":2,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535}},{"endpoint":2,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535}},{"endpoint":2,"commandClass":64,"commandClassName":"Thermostat Mode","property":"mode","propertyName":"mode","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Thermostat mode","min":0,"max":255,"states":{"0":"Off","1":"Heat","2":"Cool","3":"Auto","4":"Auxiliary","5":"Resume (on)","6":"Fan","7":"Furnace","8":"Dry","9":"Moist","10":"Auto changeover","11":"Energy heat","12":"Energy cool","13":"Away","15":"Full power","31":"Manufacturer specific"}}},{"endpoint":2,"commandClass":64,"commandClassName":"Thermostat Mode","property":"manufacturerData","propertyName":"manufacturerData","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true}},{"endpoint":2,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"}},{"endpoint":2,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"}},{"endpoint":2,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]},"commandClasses":[{"id":49,"name":"Multilevel Sensor","version":5,"isSecure":false},{"id":64,"name":"Thermostat Mode","version":2,"isSecure":false},{"id":66,"name":"Thermostat Operating State","version":2,"isSecure":false},{"id":67,"name":"Thermostat Setpoint","version":2,"isSecure":false},{"id":68,"name":"Thermostat Fan Mode","version":1,"isSecure":false},{"id":69,"name":"Thermostat Fan State","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":96,"name":"Multi Channel","version":4,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":3,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":false},{"id":129,"name":"Clock","version":1,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false},{"id":135,"name":"Indicator","version":1,"isSecure":false},{"id":142,"name":"Multi Channel Association","version":3,"isSecure":false}]}]}}} \ No newline at end of file +{"type":"result","success":true,"messageId":"start-listening-result","result":{"state":{"controller":{"sdkVersion":"Z-Wave 3.95","isRebuildingRoutes":false,"type":1,"homeId":3601639587,"ownNodeId":1,"isPrimary":true,"isUsingHomeIdFromOtherNetwork":false,"isSISPresent":true,"wasRealPrimary":true,"isSUC":true,"nodeType":0,"firmwareVersion":"1.0","manufacturerId":134,"productType":257,"productId":90,"supportedFunctionTypes":[2,3,4,5,6,7,8,9,16,17,18,19,20,21,22,23,24,28,32,33,34,35,36,39,41,42,43,44,45,65,66,68,69,70,71,72,73,74,75,76,77,80,81,83,84,85,86,87,94,96,97,98,99,102,103,128,144,146,147,152,180,182,183,184,185,186,189,190,191,210,211,212,238,239],"sucNodeId":1,"supportsTimers":false,"inclusionState": 0},"nodes":[{"nodeId":1,"index":0,"status":4,"ready":true,"isListening":true,"isRouting":false,"isSecure":false,"manufacturerId":134,"productId":90,"productType":257,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0086/zw090.json","manufacturer":"AEON Labs","manufacturerId":134,"label":"ZW090","description":"Z‐Stick Gen5 USB Controller","devices":[{"productType":1,"productId":90},{"productType":257,"productId":90},{"productType":513,"productId":90}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"metadata":{"reset":"Use this procedure only in the event that the primary controller is missing or otherwise inoperable.\n\nPress and hold the Action Button on Z-Stick for 20 seconds and then release","manual":"https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1355/Z%20Stick%20Gen5%20manual%201.pdf"}},"label":"ZW090","neighbors":[23,26,5,6],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":1,"index":0,"deviceClass":{"basic":{"key":2,"label":"Static Controller"},"generic":{"key":2,"label":"Static Controller"},"specific":{"key":1,"label":"PC Controller"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[32]},"commandClasses":[]}],"values":[],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":0,"deviceClass":{"basic":{"key":2,"label":"Static Controller"},"generic":{"key":2,"label":"Static Controller"},"specific":{"key":1,"label":"PC Controller"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[32]},"isControllerNode":false,"keepAwake":false},{"nodeId":2,"index":0,"installerIcon":1536,"userIcon":1536,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":99,"productId":12344,"productType":18756,"firmwareVersion":"5.26","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0063/ge_14294_zw3005.json","manufacturer":"GE/Jasco","manufacturerId":99,"label":"14294 / ZW3005","description":"In-Wall Dimmer Switch","devices":[{"productType":18756,"productId":12344}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"compat":{"valueIdRegex":{},"treatBasicSetAsEvent":true}},"label":"14294 / ZW3005","neighbors":[23,26,3,4,5,6],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":2,"index":0,"installerIcon":1536,"userIcon":1536,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"targetValue","propertyName":"targetValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"duration","propertyName":"duration","ccVersion":2,"metadata":{"type":"duration","readable":true,"writeable":true,"label":"Transition duration"}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"currentValue","propertyName":"currentValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99},"value":99},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Up","propertyName":"Up","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Up)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Down","propertyName":"Down","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Down)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"sceneId","propertyName":"sceneId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Scene ID","min":1,"max":255}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"dimmingDuration","propertyName":"dimmingDuration","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true,"label":"Dimming duration"}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Night Light","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Defines the behavior of the blue LED. Default is on when switch is off.","label":"Night Light","min":0,"max":2,"states":{"0":"LED on when switch is OFF","1":"LED on when switch is ON","2":"LED always off"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Invert Switch","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Invert the ON/OFF Switch State.","label":"Invert Switch","min":0,"max":1,"states":{"0":"No","1":"Yes"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Dim Rate Steps (Z-Wave Command)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Z-Wave Command)","min":0,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Dim Rate Timing (Z-Wave)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (Z-Wave)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Dim Rate Steps (Manual)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Manual)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Dim Rate Timing (Manual)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps","label":"Dim Rate Timing (Manual)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Dim Rate Steps (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (All-On/All-Off)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Dim Rate Timing (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (All-On/All-Off)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":99},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":18756},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":12344},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.34"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.26"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]},"commandClasses":[{"id":32,"name":"Basic","version":1,"isSecure":false},{"id":38,"name":"Multilevel Switch","version":2,"isSecure":false},{"id":43,"name":"Scene Activation","version":1,"isSecure":false},{"id":44,"name":"Scene Actuator Configuration","version":1,"isSecure":false},{"id":86,"name":"CRC-16 Encapsulation","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":3,"index":0,"installerIcon":1536,"userIcon":1536,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":99,"productId":12344,"productType":18756,"firmwareVersion":"5.26","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0063/ge_14294_zw3005.json","manufacturer":"GE/Jasco","manufacturerId":99,"label":"14294 / ZW3005","description":"In-Wall Dimmer Switch","devices":[{"productType":18756,"productId":12344}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"compat":{"valueIdRegex":{},"treatBasicSetAsEvent":true}},"label":"14294 / ZW3005","neighbors":[2,23,26,4,5],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":3,"index":0,"installerIcon":1536,"userIcon":1536,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"targetValue","propertyName":"targetValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"duration","propertyName":"duration","ccVersion":2,"metadata":{"type":"duration","readable":true,"writeable":true,"label":"Transition duration"}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"currentValue","propertyName":"currentValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99},"value":99},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Up","propertyName":"Up","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Up)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Down","propertyName":"Down","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Down)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"sceneId","propertyName":"sceneId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Scene ID","min":1,"max":255}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"dimmingDuration","propertyName":"dimmingDuration","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true,"label":"Dimming duration"}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Night Light","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Defines the behavior of the blue LED. Default is on when switch is off.","label":"Night Light","min":0,"max":2,"states":{"0":"LED on when switch is OFF","1":"LED on when switch is ON","2":"LED always off"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Invert Switch","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Invert the ON/OFF Switch State.","label":"Invert Switch","min":0,"max":1,"states":{"0":"No","1":"Yes"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Dim Rate Steps (Z-Wave Command)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Z-Wave Command)","min":0,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Dim Rate Timing (Z-Wave)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (Z-Wave)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Dim Rate Steps (Manual)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Manual)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Dim Rate Timing (Manual)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps","label":"Dim Rate Timing (Manual)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Dim Rate Steps (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (All-On/All-Off)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Dim Rate Timing (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (All-On/All-Off)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":99},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":18756},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":12344},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.34"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.26"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]},"commandClasses":[{"id":32,"name":"Basic","version":1,"isSecure":false},{"id":38,"name":"Multilevel Switch","version":2,"isSecure":false},{"id":43,"name":"Scene Activation","version":1,"isSecure":false},{"id":44,"name":"Scene Actuator Configuration","version":1,"isSecure":false},{"id":86,"name":"CRC-16 Encapsulation","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":4,"index":0,"installerIcon":1536,"userIcon":1536,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":99,"productId":12344,"productType":18756,"firmwareVersion":"5.26","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0063/ge_14294_zw3005.json","manufacturer":"GE/Jasco","manufacturerId":99,"label":"14294 / ZW3005","description":"In-Wall Dimmer Switch","devices":[{"productType":18756,"productId":12344}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}},"compat":{"valueIdRegex":{},"treatBasicSetAsEvent":true}},"label":"14294 / ZW3005","neighbors":[2,23,26,3,5,6],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":4,"index":0,"installerIcon":1536,"userIcon":1536,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":0,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"targetValue","propertyName":"targetValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"duration","propertyName":"duration","ccVersion":2,"metadata":{"type":"duration","readable":true,"writeable":true,"label":"Transition duration"}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"currentValue","propertyName":"currentValue","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99},"value":99},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Up","propertyName":"Up","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Up)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":38,"commandClassName":"Multilevel Switch","property":"Down","propertyName":"Down","ccVersion":2,"metadata":{"type":"boolean","readable":true,"writeable":true,"label":"Perform a level change (Down)","ccSpecific":{"switchType":2}}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"sceneId","propertyName":"sceneId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Scene ID","min":1,"max":255}},{"endpoint":0,"commandClass":43,"commandClassName":"Scene Activation","property":"dimmingDuration","propertyName":"dimmingDuration","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true,"label":"Dimming duration"}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Night Light","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Defines the behavior of the blue LED. Default is on when switch is off.","label":"Night Light","min":0,"max":2,"states":{"0":"LED on when switch is OFF","1":"LED on when switch is ON","2":"LED always off"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Invert Switch","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Invert the ON/OFF Switch State.","label":"Invert Switch","min":0,"max":1,"states":{"0":"No","1":"Yes"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Dim Rate Steps (Z-Wave Command)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Z-Wave Command)","min":0,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Dim Rate Timing (Z-Wave)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (Z-Wave)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Dim Rate Steps (Manual)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (Manual)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Dim Rate Timing (Manual)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps","label":"Dim Rate Timing (Manual)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Dim Rate Steps (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Number of steps or levels","label":"Dim Rate Steps (All-On/All-Off)","min":1,"max":99},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Dim Rate Timing (All-On/All-Off)","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"description":"Timing of steps or levels","label":"Dim Rate Timing (All-On/All-Off)","min":1,"max":255,"unit":"10ms"},"value":3},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":99},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":18756},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":12344},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.34"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.26"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":17,"label":"Multilevel Switch"},"specific":{"key":1,"label":"Multilevel Power Switch"},"mandatorySupportedCCs":[32,38,39],"mandatoryControlledCCs":[]},"commandClasses":[{"id":32,"name":"Basic","version":1,"isSecure":false},{"id":38,"name":"Multilevel Switch","version":2,"isSecure":false},{"id":43,"name":"Scene Activation","version":1,"isSecure":false},{"id":44,"name":"Scene Actuator Configuration","version":1,"isSecure":false},{"id":86,"name":"CRC-16 Encapsulation","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":5,"index":0,"installerIcon":3079,"userIcon":3079,"status":1,"ready":true,"isListening":false,"isRouting":true,"isSecure":false,"manufacturerId":265,"productId":8449,"productType":8225,"firmwareVersion":"5.1","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0109/zse40.json","manufacturer":"Vision Security","manufacturerId":265,"label":"ZSE40","description":"Zooz 4-in-one motion/temperature/humidity/luminance sensor","devices":[{"productType":8225,"productId":8449}],"firmwareVersion":{"min":"0.0","max":"255.255"},"paramInformation":{"_map":{}},"metadata":{"inclusion":"To add the ZP3111 to the Z-Wave network (inclusion), place the Z-Wave primary controller into inclusion mode. Press the Program Switch of ZP3111 for sending the NIF. After sending NIF, Z-Wave will send the auto inclusion, otherwise, ZP3111 will go to sleep after 20 seconds.","exclusion":"To remove the ZP3111 from the Z-Wave network (exclusion), place the Z-Wave primary controller into “exclusion” mode, and following its instruction to delete the ZP3111 to the controller. Press the Program Switch of ZP3111 once to be excluded.","reset":"Remove cover to trigged tamper switch, LED flash once & send out Alarm Report. Press Program Switch 10 times within 10 seconds, ZP3111 will send the “Device Reset Locally Notification” command and reset to the factory default. (Remark: This is to be used only in the case of primary controller being inoperable or otherwise unavailable.)","manual":"https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2479/ZP3111-5_R2_20170316.pdf"}},"label":"ZSE40","neighbors":[1,2,3,4],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":5,"index":0,"installerIcon":3079,"userIcon":3079,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Air temperature","propertyName":"Air temperature","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Air temperature","ccSpecific":{"sensorType":1,"scale":1},"unit":"°F"},"value":68.42},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Illuminance","propertyName":"Illuminance","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Illuminance","ccSpecific":{"sensorType":3,"scale":0},"unit":"%"},"value":20.03},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Humidity","propertyName":"Humidity","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Humidity","ccSpecific":{"sensorType":5,"scale":0},"unit":"%"},"value":43.53},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":1,"propertyName":"Temperature Scale","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Temperature Scale","min":0,"max":1,"states":{"0":"Celsius","1":"Fahrenheit"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":2,"propertyName":"Temperature offset","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"label":"Temperature offset","min":0,"max":50},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Humidity","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"description":"Configure Relative Humidity","label":"Humidity","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Light Sensor","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"label":"Light Sensor","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Trigger Interval","ccVersion":1,"metadata":{"type":"number","default":180,"readable":true,"writeable":true,"description":"Set the trigger interval for motion sensor re-activation.","label":"Trigger Interval","min":1,"max":255,"unit":"seconds"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"Motion Sensor Sensitivity","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"Adjust sensitivity of the motion sensor.","label":"Motion Sensor Sensitivity","min":1,"max":7,"states":{"1":"highest","2":"higher","3":"high","4":"normal","5":"low","6":"lower","7":"lowest"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"LED indicator mode","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"label":"LED indicator mode","min":1,"max":3,"states":{"1":"Off","2":"Pulsing Temperature, Flashing Motion","3":"Flashing Temperature and Motion"}},"value":1},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Motion sensor status","propertyName":"Home Security","propertyKeyName":"Motion sensor status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Motion sensor status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","8":"Motion detection"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Cover status","propertyName":"Home Security","propertyKeyName":"Cover status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Cover status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","3":"Tampering, product cover removed"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmType","propertyName":"alarmType","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Type","min":0,"max":255}},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmLevel","propertyName":"alarmLevel","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Level","min":0,"max":255}},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":265},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":8225},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":8449},{"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":50},{"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":132,"commandClassName":"Wake Up","property":"wakeUpInterval","propertyName":"wakeUpInterval","ccVersion":1,"metadata":{"type":"number","default":3600,"readable":false,"writeable":true,"label":"Wake Up interval","min":600,"max":604800,"steps":600},"value":3600},{"endpoint":0,"commandClass":132,"commandClassName":"Wake Up","property":"controllerNodeId","propertyName":"controllerNodeId","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Node ID of the controller"},"value":1},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.5"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.1"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":6,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]},"commandClasses":[{"id":49,"name":"Multilevel Sensor","version":7,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":113,"name":"Notification","version":4,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":false},{"id":132,"name":"Wake Up","version":1,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":6,"index":0,"installerIcon":3079,"userIcon":3079,"status":1,"ready":true,"isListening":false,"isRouting":true,"isSecure":false,"manufacturerId":265,"productId":8449,"productType":8225,"firmwareVersion":"5.1","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0109/zse40.json","manufacturer":"Vision Security","manufacturerId":265,"label":"ZSE40","description":"Zooz 4-in-one motion/temperature/humidity/luminance sensor","devices":[{"productType":8225,"productId":8449}],"firmwareVersion":{"min":"0.0","max":"255.255"},"paramInformation":{"_map":{}},"metadata":{"inclusion":"To add the ZP3111 to the Z-Wave network (inclusion), place the Z-Wave primary controller into inclusion mode. Press the Program Switch of ZP3111 for sending the NIF. After sending NIF, Z-Wave will send the auto inclusion, otherwise, ZP3111 will go to sleep after 20 seconds.","exclusion":"To remove the ZP3111 from the Z-Wave network (exclusion), place the Z-Wave primary controller into “exclusion” mode, and following its instruction to delete the ZP3111 to the controller. Press the Program Switch of ZP3111 once to be excluded.","reset":"Remove cover to trigged tamper switch, LED flash once & send out Alarm Report. Press Program Switch 10 times within 10 seconds, ZP3111 will send the “Device Reset Locally Notification” command and reset to the factory default. (Remark: This is to be used only in the case of primary controller being inoperable or otherwise unavailable.)","manual":"https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2479/ZP3111-5_R2_20170316.pdf"}},"label":"ZSE40","neighbors":[1,2,4],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":6,"index":0,"installerIcon":3079,"userIcon":3079,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Air temperature","propertyName":"Air temperature","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Air temperature","ccSpecific":{"sensorType":1,"scale":1},"unit":"°F"},"value":69.36},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Illuminance","propertyName":"Illuminance","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Illuminance","ccSpecific":{"sensorType":3,"scale":0},"unit":"%"},"value":19.51},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Humidity","propertyName":"Humidity","ccVersion":7,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Humidity","ccSpecific":{"sensorType":5,"scale":0},"unit":"%"},"value":42.24},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":1,"propertyName":"Temperature Scale","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Temperature Scale","min":0,"max":1,"states":{"0":"Celsius","1":"Fahrenheit"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":2,"propertyName":"Temperature offset","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"label":"Temperature offset","min":0,"max":50},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Humidity","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"description":"Configure Relative Humidity","label":"Humidity","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Light Sensor","ccVersion":1,"metadata":{"type":"number","default":10,"readable":true,"writeable":true,"label":"Light Sensor","min":1,"max":50,"unit":"percent"},"value":10},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Trigger Interval","ccVersion":1,"metadata":{"type":"number","default":180,"readable":true,"writeable":true,"description":"Set the trigger interval for motion sensor re-activation.","label":"Trigger Interval","min":1,"max":255,"unit":"seconds"},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"Motion Sensor Sensitivity","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"Adjust sensitivity of the motion sensor.","label":"Motion Sensor Sensitivity","min":1,"max":7,"states":{"1":"highest","2":"higher","3":"high","4":"normal","5":"low","6":"lower","7":"lowest"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"LED indicator mode","ccVersion":1,"metadata":{"type":"number","default":3,"readable":true,"writeable":true,"label":"LED indicator mode","min":1,"max":3,"states":{"1":"Off","2":"Pulsing Temperature, Flashing Motion","3":"Flashing Temperature and Motion"}},"value":1},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Motion sensor status","propertyName":"Home Security","propertyKeyName":"Motion sensor status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Motion sensor status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","8":"Motion detection"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Cover status","propertyName":"Home Security","propertyKeyName":"Cover status","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Cover status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","3":"Tampering, product cover removed"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmType","propertyName":"alarmType","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Type","min":0,"max":255}},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"alarmLevel","propertyName":"alarmLevel","ccVersion":4,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Alarm Level","min":0,"max":255}},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":265},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":8225},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":8449},{"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":80},{"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":132,"commandClassName":"Wake Up","property":"wakeUpInterval","propertyName":"wakeUpInterval","ccVersion":1,"metadata":{"type":"number","default":3600,"readable":false,"writeable":true,"label":"Wake Up interval","min":600,"max":604800,"steps":600},"value":3600},{"endpoint":0,"commandClass":132,"commandClassName":"Wake Up","property":"controllerNodeId","propertyName":"controllerNodeId","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Node ID of the controller"},"value":1},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.5"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["5.1"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":6,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":7,"label":"Notification Sensor"},"specific":{"key":1,"label":"Notification Sensor"},"mandatorySupportedCCs":[],"mandatoryControlledCCs":[]},"commandClasses":[{"id":49,"name":"Multilevel Sensor","version":7,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":113,"name":"Notification","version":4,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":false},{"id":132,"name":"Wake Up","version":1,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false}]},{"nodeId":23,"index":0,"status":4,"ready":true,"isListening":false,"isRouting":true,"isSecure":true,"manufacturerId":59,"productId":20548,"productType":25409,"firmwareVersion":"113.22","deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x003b/be469.json","manufacturer":"Allegion","manufacturerId":59,"label":"BE469","description":"Touchscreen Deadbolt","devices":[{"productType":25409,"productId":20548}],"firmwareVersion":{"min":"0.0","max":"255.255"},"associations":{},"paramInformation":{"_map":{}}},"label":"BE469","neighbors":[1,2,26,3,4],"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":23,"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,152,134],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"currentMode","propertyName":"currentMode","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"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":0},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"targetMode","propertyName":"targetMode","ccVersion":2,"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":"outsideHandlesCanOpenDoor","propertyName":"outsideHandlesCanOpenDoor","ccVersion":2,"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":2,"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":"latchStatus","propertyName":"latchStatus","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"The current status of the latch"},"value":"open"},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"boltStatus","propertyName":"boltStatus","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"The current status of the bolt"},"value":"locked"},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"doorStatus","propertyName":"doorStatus","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"The current status of the door"},"value":"open"},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"lockTimeout","propertyName":"lockTimeout","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Seconds until lock mode times out"}},{"endpoint":0,"commandClass":98,"commandClassName":"Door Lock","property":"operationType","propertyName":"operationType","ccVersion":2,"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":2,"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":2,"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":"lockTimeoutConfiguration","propertyName":"lockTimeoutConfiguration","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Duration of timed mode in seconds","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":1},{"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":"**********"},{"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":"**********"},{"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":"**********"},{"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":0},{"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":""},{"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":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"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"}},"value":0},{"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},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":20,"propertyName":"userIdStatus","propertyKeyName":"20","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (20)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":20,"propertyName":"userCode","propertyKeyName":"20","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (20)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":21,"propertyName":"userIdStatus","propertyKeyName":"21","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (21)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":21,"propertyName":"userCode","propertyKeyName":"21","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (21)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":22,"propertyName":"userIdStatus","propertyKeyName":"22","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (22)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":22,"propertyName":"userCode","propertyKeyName":"22","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (22)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":23,"propertyName":"userIdStatus","propertyKeyName":"23","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (23)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":23,"propertyName":"userCode","propertyKeyName":"23","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (23)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":24,"propertyName":"userIdStatus","propertyKeyName":"24","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (24)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":24,"propertyName":"userCode","propertyKeyName":"24","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (24)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":25,"propertyName":"userIdStatus","propertyKeyName":"25","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (25)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":25,"propertyName":"userCode","propertyKeyName":"25","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (25)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":26,"propertyName":"userIdStatus","propertyKeyName":"26","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (26)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":26,"propertyName":"userCode","propertyKeyName":"26","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (26)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":27,"propertyName":"userIdStatus","propertyKeyName":"27","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (27)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":27,"propertyName":"userCode","propertyKeyName":"27","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (27)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":28,"propertyName":"userIdStatus","propertyKeyName":"28","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (28)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":28,"propertyName":"userCode","propertyKeyName":"28","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (28)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":29,"propertyName":"userIdStatus","propertyKeyName":"29","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (29)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":29,"propertyName":"userCode","propertyKeyName":"29","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (29)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userIdStatus","propertyKey":30,"propertyName":"userIdStatus","propertyKeyName":"30","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"User ID status (30)","states":{"0":"Available","1":"Enabled","2":"Disabled"}},"value":0},{"endpoint":0,"commandClass":99,"commandClassName":"User Code","property":"userCode","propertyKey":30,"propertyName":"userCode","propertyKeyName":"30","ccVersion":1,"metadata":{"type":"string","readable":true,"writeable":true,"label":"User Code (30)","minLength":4,"maxLength":10},"value":""},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Beeper","ccVersion":1,"metadata":{"type":"number","default":255,"readable":true,"writeable":true,"label":"Beeper","min":0,"max":255,"states":{"0":"Disable Beeper","255":"Enable Beeper"}},"value":255},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Vacation Mode","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Vacation Mode","min":0,"max":255,"states":{"0":"Disable Vacation Mode","255":"Enable Vacation Mode"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Lock & Leave","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock & Leave","min":0,"max":255,"states":{"0":"Disable Lock & Leave","255":"Enable Lock & Leave"}},"value":255},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"User Slot Status","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"User Slot Status","min":0,"max":255},"value":117440512},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Lock Specific Alarm Mode","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"BE469 Only","label":"Lock Specific Alarm Mode","min":0,"max":3,"states":{"0":"Alarm Off","1":"Alert","2":"Tamper","3":"Forced Entry"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Lock Specific Alarm Alert Sensitivity","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock Specific Alarm Alert Sensitivity","min":0,"max":5,"states":{"0":"Not Supported","1":"Most Sensitive","2":"More Sensitive","3":"Medium Sensitivity","4":"Less Sensitive","5":"Least Sensitive"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Lock Specific Alarm Tamper Sensitivity","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock Specific Alarm Tamper Sensitivity","min":0,"max":5,"states":{"0":"Not Supported","1":"Most Sensitive","2":"More Sensitive","3":"Medium Sensitivity","4":"Less Sensitive","5":"Least Sensitive"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Lock Specific Alarm Kick Sensitivity","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"BE469 Only","label":"Lock Specific Alarm Kick Sensitivity","min":0,"max":5,"states":{"0":"Not Supported","1":"Most Sensitive","2":"More Sensitive","3":"Medium Sensitivity","4":"Less Sensitive","5":"Least Sensitive"}},"value":3},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Lock Specific Alarm Disable—Local Controls","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Lock Specific Alarm Disable—Local Controls","min":0,"max":255,"states":{"0":"Disable Local Control","255":"Enable Local Control"}},"value":255},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Electronic Transition Count","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Electronic Transition Count","min":0,"max":2147483647},"value":2406},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":13,"propertyName":"Mechanical Transition Count","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Mechanical Transition Count","min":0,"max":2147483647},"value":2336},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":14,"propertyName":"Electronic Failed Count","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Electronic Failed Count","min":0,"max":2147483647},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":15,"propertyName":"Auto Lock","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"label":"Auto Lock","min":0,"max":255,"states":{"0":"Disable Auto Lock","255":"Enable Auto Lock"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":16,"propertyName":"User Code PIN Length","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"User Code PIN length, a value between 4 and 8 (default 4)","label":"User Code PIN Length","min":4,"max":8,"states":{"4":"Four Digits","5":"Five Digits","6":"Six Digits","7":"Seven Digits","8":"Eight Digits"}},"value":4},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":18,"propertyName":"Get Bootloader Version","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"label":"Get Bootloader Version","min":0,"max":255},"value":1},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Access Control","propertyKey":"Lock state","propertyName":"Access Control","propertyKeyName":"Lock state","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Lock state","ccSpecific":{"notificationType":6},"min":0,"max":255,"states":{"0":"idle","11":"Lock jammed"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Access Control","propertyKey":"Keypad state","propertyName":"Access Control","propertyKeyName":"Keypad state","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Keypad state","ccSpecific":{"notificationType":6},"min":0,"max":255,"states":{"0":"idle","16":"Keypad temporary disabled"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Home Security","propertyKey":"Sensor status","propertyName":"Home Security","propertyKeyName":"Sensor status","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Sensor status","ccSpecific":{"notificationType":7},"min":0,"max":255,"states":{"0":"idle","2":"Intrusion"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"Power Management","propertyKey":"Battery maintenance status","propertyName":"Power Management","propertyKeyName":"Battery maintenance status","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Battery maintenance status","ccSpecific":{"notificationType":8},"min":0,"max":255,"states":{"0":"idle","10":"Replace battery soon","11":"Replace battery now"}},"value":0},{"endpoint":0,"commandClass":113,"commandClassName":"Notification","property":"System","propertyKey":"Hardware status","propertyName":"System","propertyKeyName":"Hardware status","ccVersion":3,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Hardware status","ccSpecific":{"notificationType":9},"min":0,"max":255,"states":{"0":"idle","1":"System hardware failure"}},"value":0},{"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":25409},{"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":97},{"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":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":6},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"3.42"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":1,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["113.22"]}],"isFrequentListening":"1000ms","maxDataRate":40000,"supportedDataRates":[40000],"protocolVersion":3,"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,152,134],"mandatoryControlledCCs":[]},"commandClasses":[{"id":98,"name":"Door Lock","version":2,"isSecure":true},{"id":99,"name":"User Code","version":1,"isSecure":true},{"id":112,"name":"Configuration","version":1,"isSecure":true},{"id":113,"name":"Notification","version":3,"isSecure":true},{"id":114,"name":"Manufacturer Specific","version":1,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":2,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":true},{"id":133,"name":"Association","version":1,"isSecure":true},{"id":134,"name":"Version","version":1,"isSecure":false},{"id":152,"name":"Security","version":1,"isSecure":true}]},{"nodeId":26,"index":0,"installerIcon":4608,"userIcon":4608,"status":4,"ready":true,"isListening":true,"isRouting":true,"isSecure":false,"manufacturerId":152,"productId":256,"productType":25602,"firmwareVersion":"10.7","zwavePlusVersion":1,"deviceConfig":{"filename":"/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0098/ct100_plus.json","manufacturer":"Radio Thermostat Company of America (RTC)","manufacturerId":152,"label":"CT100 Plus","description":"Z-Wave Thermostat","devices":[{"productType":25602,"productId":256}],"firmwareVersion":{"min":"0.0","max":"255.255"},"paramInformation":{"_map":{}}},"label":"CT100 Plus","neighbors":[1,2,23,3,4],"endpointCountIsDynamic":false,"endpointsHaveIdenticalCapabilities":false,"individualEndpointCount":2,"aggregatedEndpointCount":0,"interviewAttempts":0,"interviewStage":"Neighbors","endpoints":[{"nodeId":26,"index":0,"installerIcon":4608,"userIcon":4608,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]}},{"nodeId":26,"index":1,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]}},{"nodeId":26,"index":2,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]}}],"values":[{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Air temperature","propertyName":"Air temperature","ccVersion":5,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Air temperature","ccSpecific":{"sensorType":1,"scale":1},"unit":"°F"},"value":72.5},{"endpoint":0,"commandClass":49,"commandClassName":"Multilevel Sensor","property":"Humidity","propertyName":"Humidity","ccVersion":5,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Humidity","ccSpecific":{"sensorType":5,"scale":0},"unit":"%"},"value":34},{"endpoint":0,"commandClass":66,"commandClassName":"Thermostat Operating State","property":"state","propertyName":"state","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Operating state","min":0,"max":255,"states":{"0":"Idle","1":"Heating","2":"Cooling","3":"Fan Only","4":"Pending Heat","5":"Pending Cool","6":"Vent/Economizer","7":"Aux Heating","8":"2nd Stage Heating","9":"2nd Stage Cooling","10":"2nd Stage Aux Heat","11":"3rd Stage Aux Heat"}},"value":0},{"endpoint":0,"commandClass":67,"commandClassName":"Thermostat Setpoint","property":"setpoint","propertyKey":1,"propertyName":"setpoint","propertyKeyName":"Heating","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"ccSpecific":{"setpointType":1},"unit":"°F"},"value":68},{"endpoint":0,"commandClass":67,"commandClassName":"Thermostat Setpoint","property":"setpoint","propertyKey":2,"propertyName":"setpoint","propertyKeyName":"Cooling","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":true,"ccSpecific":{"setpointType":2},"unit":"°F"},"value":69},{"endpoint":0,"commandClass":68,"commandClassName":"Thermostat Fan Mode","property":"mode","propertyName":"mode","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Thermostat fan mode","min":0,"max":255,"states":{"0":"Auto low","1":"Low"}}},{"endpoint":0,"commandClass":69,"commandClassName":"Thermostat Fan State","property":"state","propertyName":"state","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Thermostat fan state","min":0,"max":255,"states":{"0":"Idle / off","1":"Running / running low","2":"Running high","3":"Running medium","4":"Circulation mode","5":"Humidity circulation mode","6":"Right - left circulation mode","7":"Up - down circulation mode","8":"Quiet circulation mode"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":1,"propertyName":"Temperature Reporting Threshold","ccVersion":1,"metadata":{"type":"number","default":2,"readable":true,"writeable":true,"description":"Reporting threshold for changes in the ambient temperature","label":"Temperature Reporting Threshold","min":0,"max":4,"states":{"0":"Disabled","1":"0.5° F","2":"1.0° F","3":"1.5° F","4":"2.0° F"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":2,"propertyName":"HVAC Settings","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"description":"Configured HVAC settings","label":"HVAC Settings","min":0,"max":0},"value":17891329},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":4,"propertyName":"Power Status","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":false,"description":"C-Wire / Battery Status","label":"Power Status","min":0,"max":0},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":7,"propertyName":"Thermostat Swing Temperature","ccVersion":1,"metadata":{"type":"number","default":2,"readable":true,"writeable":true,"description":"Variance allowed from setpoint to engage HVAC","label":"Thermostat Swing Temperature","min":1,"max":8,"states":{"1":"0.5° F","2":"1.0° F","3":"1.5° F","4":"2.0° F","5":"2.5° F","6":"3.0° F","7":"3.5° F","8":"4.0° F"}},"value":2},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":8,"propertyName":"Thermostat Diff Temperature","ccVersion":1,"metadata":{"type":"number","default":4,"readable":true,"writeable":true,"description":"Configures additional stages","label":"Thermostat Diff Temperature","min":4,"max":12,"states":{"4":"2.0° F","8":"4.0° F","12":"6.0° F"}},"value":1028},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":9,"propertyName":"Thermostat Recovery Mode","ccVersion":1,"metadata":{"type":"number","default":2,"readable":true,"writeable":true,"description":"Fast or Economy recovery mode","label":"Thermostat Recovery Mode","min":1,"max":2,"states":{"1":"Fast recovery mode","2":"Economy recovery mode"}},"value":2},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":10,"propertyName":"Temperature Reporting Filter","ccVersion":1,"metadata":{"type":"number","default":124,"readable":true,"writeable":true,"description":"Upper/Lower bounds for thermostat temperature reporting","label":"Temperature Reporting Filter","min":0,"max":124},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":11,"propertyName":"Simple UI Mode","ccVersion":1,"metadata":{"type":"number","default":1,"readable":true,"writeable":true,"description":"Simple mode enable/disable","label":"Simple UI Mode","min":0,"max":1,"states":{"0":"Normal mode enabled","1":"Simple mode enabled"}},"value":1},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":12,"propertyName":"Multicast","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Enable or disables Multicast","label":"Multicast","min":0,"max":1,"states":{"0":"Multicast disabled","1":"Multicast enabled"}},"value":0},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":3,"propertyName":"Utility Lock Enable/Disable","ccVersion":1,"metadata":{"type":"number","default":0,"readable":false,"writeable":true,"description":"Prevents setpoint changes at thermostat","label":"Utility Lock Enable/Disable","min":0,"max":255,"states":{"0":"Utility lock disabled","1":"Utility lock enabled"}}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":5,"propertyName":"Humidity Reporting Threshold","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Reporting threshold for changes in the relative humidity","label":"Humidity Reporting Threshold","min":0,"max":255,"states":{"0":"Disabled","1":"3% RH","2":"5% RH","3":"10% RH"}}},{"endpoint":0,"commandClass":112,"commandClassName":"Configuration","property":6,"propertyName":"Auxiliary/Emergency","ccVersion":1,"metadata":{"type":"number","default":0,"readable":true,"writeable":true,"description":"Enables or disables auxiliary / emergency heating","label":"Auxiliary/Emergency","min":0,"max":255,"states":{"0":"Auxiliary/Emergency heat disabled","1":"Auxiliary/Emergency heat enabled"}}},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535},"value":152},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535},"value":25602},{"endpoint":0,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":2,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535},"value":256},{"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":100},{"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":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"},"value":3},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"},"value":"4.24"},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"},"value":["10.7"]},{"endpoint":0,"commandClass":134,"commandClassName":"Version","property":"hardwareVersion","propertyName":"hardwareVersion","ccVersion":2,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip hardware version"}},{"endpoint":0,"commandClass":135,"commandClassName":"Indicator","property":"value","propertyName":"value","ccVersion":1,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Indicator value","ccSpecific":{"indicatorId":0},"min":0,"max":255},"value":0},{"endpoint":1,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":1,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":1,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535}},{"endpoint":1,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535}},{"endpoint":1,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535}},{"endpoint":1,"commandClass":64,"commandClassName":"Thermostat Mode","property":"mode","propertyName":"mode","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Thermostat mode","min":0,"max":255,"states":{"0":"Off","1":"Heat","2":"Cool","3":"Auto","4":"Auxiliary","5":"Resume (on)","6":"Fan","7":"Furnace","8":"Dry","9":"Moist","10":"Auto changeover","11":"Energy heat","12":"Energy cool","13":"Away","15":"Full power","31":"Manufacturer specific"}}},{"endpoint":1,"commandClass":64,"commandClassName":"Thermostat Mode","property":"manufacturerData","propertyName":"manufacturerData","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true}},{"endpoint":1,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"}},{"endpoint":1,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"}},{"endpoint":1,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"}},{"endpoint":2,"commandClass":32,"commandClassName":"Basic","property":"currentValue","propertyName":"currentValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Current value","min":0,"max":99}},{"endpoint":2,"commandClass":32,"commandClassName":"Basic","property":"targetValue","propertyName":"targetValue","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Target value","min":0,"max":99}},{"endpoint":2,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"manufacturerId","propertyName":"manufacturerId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Manufacturer ID","min":0,"max":65535}},{"endpoint":2,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productType","propertyName":"productType","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product type","min":0,"max":65535}},{"endpoint":2,"commandClass":114,"commandClassName":"Manufacturer Specific","property":"productId","propertyName":"productId","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":false,"label":"Product ID","min":0,"max":65535}},{"endpoint":2,"commandClass":64,"commandClassName":"Thermostat Mode","property":"mode","propertyName":"mode","ccVersion":0,"metadata":{"type":"number","readable":true,"writeable":true,"label":"Thermostat mode","min":0,"max":255,"states":{"0":"Off","1":"Heat","2":"Cool","3":"Auto","4":"Auxiliary","5":"Resume (on)","6":"Fan","7":"Furnace","8":"Dry","9":"Moist","10":"Auto changeover","11":"Energy heat","12":"Energy cool","13":"Away","15":"Full power","31":"Manufacturer specific"}}},{"endpoint":2,"commandClass":64,"commandClassName":"Thermostat Mode","property":"manufacturerData","propertyName":"manufacturerData","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":true}},{"endpoint":2,"commandClass":134,"commandClassName":"Version","property":"libraryType","propertyName":"libraryType","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Library type"}},{"endpoint":2,"commandClass":134,"commandClassName":"Version","property":"protocolVersion","propertyName":"protocolVersion","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave protocol version"}},{"endpoint":2,"commandClass":134,"commandClassName":"Version","property":"firmwareVersions","propertyName":"firmwareVersions","ccVersion":0,"metadata":{"type":"any","readable":true,"writeable":false,"label":"Z-Wave chip firmware versions"}}],"isFrequentListening":false,"maxDataRate":100000,"supportedDataRates":[40000,100000],"protocolVersion":3,"supportsBeaming":true,"supportsSecurity":false,"nodeType":1,"zwavePlusNodeType":0,"zwavePlusRoleType":5,"deviceClass":{"basic":{"key":4,"label":"Routing Slave"},"generic":{"key":8,"label":"Thermostat"},"specific":{"key":6,"label":"General Thermostat V2"},"mandatorySupportedCCs":[32,114,64,67,134],"mandatoryControlledCCs":[]},"commandClasses":[{"id":49,"name":"Multilevel Sensor","version":5,"isSecure":false},{"id":64,"name":"Thermostat Mode","version":2,"isSecure":false},{"id":66,"name":"Thermostat Operating State","version":2,"isSecure":false},{"id":67,"name":"Thermostat Setpoint","version":2,"isSecure":false},{"id":68,"name":"Thermostat Fan Mode","version":1,"isSecure":false},{"id":69,"name":"Thermostat Fan State","version":1,"isSecure":false},{"id":89,"name":"Association Group Information","version":1,"isSecure":false},{"id":90,"name":"Device Reset Locally","version":1,"isSecure":false},{"id":94,"name":"Z-Wave Plus Info","version":2,"isSecure":false},{"id":96,"name":"Multi Channel","version":4,"isSecure":false},{"id":112,"name":"Configuration","version":1,"isSecure":false},{"id":114,"name":"Manufacturer Specific","version":2,"isSecure":false},{"id":122,"name":"Firmware Update Meta Data","version":3,"isSecure":false},{"id":128,"name":"Battery","version":1,"isSecure":false},{"id":129,"name":"Clock","version":1,"isSecure":false},{"id":133,"name":"Association","version":2,"isSecure":false},{"id":134,"name":"Version","version":2,"isSecure":false},{"id":135,"name":"Indicator","version":1,"isSecure":false},{"id":142,"name":"Multi Channel Association","version":3,"isSecure":false}]}]}}} \ No newline at end of file diff --git a/test/fixtures/controller_state.json b/test/fixtures/controller_state.json index 6f3b0ab84..f586fa0c6 100644 --- a/test/fixtures/controller_state.json +++ b/test/fixtures/controller_state.json @@ -92,7 +92,7 @@ ], "sucNodeId": 1, "supportsTimers": false, - "isHealNetworkActive": false, + "isRebuildingRoutes": false, "inclusionState": 0 }, "nodes": [] diff --git a/test/model/test_controller.py b/test/model/test_controller.py index 055c94965..d720776bb 100644 --- a/test/model/test_controller.py +++ b/test/model/test_controller.py @@ -24,12 +24,32 @@ from zwave_js_server.model import association as association_pkg from zwave_js_server.model import controller as controller_pkg from zwave_js_server.model.controller.firmware import ControllerFirmwareUpdateStatus +from zwave_js_server.model.controller.rebuild_routes import ( + RebuildRoutesOptions, + RebuildRoutesStatus, +) from zwave_js_server.model.controller.statistics import ControllerStatistics from zwave_js_server.model.node import Node -from zwave_js_server.model.node.firmware import NodeFirmwareUpdateFileInfo +from zwave_js_server.model.node.firmware import NodeFirmwareUpdateInfo from .. import load_fixture +FIRMWARE_UPDATE_INFO = { + "version": "1.0.0", + "changelog": "changelog", + "channel": "stable", + "files": [{"target": 0, "url": "http://example.com", "integrity": "test"}], + "downgrade": True, + "normalizedVersion": "1.0.0", + "device": { + "manufacturerId": 1, + "productType": 2, + "productId": 3, + "firmwareVersion": "0.4.4", + "rfRegion": 1, + }, +} + def test_from_state(): """Test from_state method.""" @@ -130,7 +150,7 @@ def test_from_state(): ] assert ctrl.suc_node_id == 1 assert ctrl.supports_timers is False - assert ctrl.is_heal_network_active is False + assert ctrl.is_rebuilding_routes is False assert ctrl.inclusion_state == InclusionState.IDLE stats = ctrl.statistics assert ( @@ -979,66 +999,93 @@ async def test_replace_failed_node_errors(controller, multisensor_6): ) -async def test_heal_node(controller, multisensor_6, uuid4, mock_command): - """Test heal node.""" +async def test_rebuild_node_routes(controller, multisensor_6, uuid4, mock_command): + """Test rebuild node routes.""" ack_commands = mock_command( - {"command": "controller.heal_node"}, + {"command": "controller.rebuild_node_routes"}, {"success": True}, ) - assert await controller.async_heal_node(multisensor_6) + assert await controller.async_rebuild_node_routes(multisensor_6) assert len(ack_commands) == 1 assert ack_commands[0] == { - "command": "controller.heal_node", + "command": "controller.rebuild_node_routes", "messageId": uuid4, "nodeId": multisensor_6.node_id, } -async def test_begin_healing_network(controller, uuid4, mock_command): - """Test begin healing network.""" +async def test_begin_rebuilding_routes(controller, uuid4, mock_command): + """Test begin rebuilding routes.""" ack_commands = mock_command( - {"command": "controller.begin_healing_network"}, + {"command": "controller.begin_rebuilding_routes"}, {"success": True}, ) - assert await controller.async_begin_healing_network() + assert await controller.async_begin_rebuilding_routes() assert len(ack_commands) == 1 assert ack_commands[0] == { - "command": "controller.begin_healing_network", + "command": "controller.begin_rebuilding_routes", "messageId": uuid4, } + options_include_sleeping = RebuildRoutesOptions(True) + assert await controller.async_begin_rebuilding_routes(options_include_sleeping) + + assert len(ack_commands) == 2 + assert ack_commands[1] == { + "command": "controller.begin_rebuilding_routes", + "options": {"includeSleeping": True}, + "messageId": uuid4, + } + + assert await controller.async_begin_rebuilding_routes(RebuildRoutesOptions()) + + assert len(ack_commands) == 3 + assert ack_commands[2] == { + "command": "controller.begin_rebuilding_routes", + "options": {}, + "messageId": uuid4, + } + + assert ( + RebuildRoutesOptions.from_dict({"includeSleeping": True}) + == options_include_sleeping + ) + -async def test_stop_healing_network(controller, uuid4, mock_command): - """Test stop healing network.""" +async def test_stop_rebuilding_routes(client, multisensor_6, uuid4, mock_command): + """Test stop rebuilding routes.""" + controller = client.driver.controller ack_commands = mock_command( - {"command": "controller.stop_healing_network"}, + {"command": "controller.stop_rebuilding_routes"}, {"success": True}, ) event = Event( - "heal network progress", + "rebuild routes progress", { "source": "controller", - "event": "heal network progress", + "event": "rebuild routes progress", "progress": {52: "pending"}, }, ) controller.receive_event(event) - assert controller.heal_network_progress == {52: "pending"} - assert await controller.async_stop_healing_network() + assert controller.rebuild_routes_progress == { + multisensor_6: RebuildRoutesStatus.PENDING + } + assert await controller.async_stop_rebuilding_routes() assert len(ack_commands) == 1 assert ack_commands[0] == { - "command": "controller.stop_healing_network", + "command": "controller.stop_rebuilding_routes", "messageId": uuid4, } - # Verify that controller.heal_network_progress is cleared - assert controller.heal_network_progress is None + # Verify that controller.rebuild_routes_progress is cleared + assert controller.rebuild_routes_progress is None async def test_is_failed_node(controller, multisensor_6, uuid4, mock_command): @@ -1339,32 +1386,39 @@ async def test_get_node_neighbors(controller, multisensor_6, uuid4, mock_command } -async def test_heal_network_active(client, controller): - """Test that is_heal_network_active changes on events.""" - assert controller.is_heal_network_active is False - assert controller.heal_network_progress is None +async def test_rebuild_routes_active(client, multisensor_6): + """Test that is_rebuilding_routes changes on events.""" + controller = client.driver.controller + assert controller.is_rebuilding_routes is False + assert controller.rebuild_routes_progress is None event = Event( - "heal network progress", + "rebuild routes progress", { "source": "controller", - "event": "heal network progress", + "event": "rebuild routes progress", "progress": {52: "pending"}, }, ) controller.receive_event(event) - assert controller.heal_network_progress == {52: "pending"} - assert controller.is_heal_network_active + assert controller.rebuild_routes_progress == { + multisensor_6: RebuildRoutesStatus.PENDING + } + assert controller.last_rebuild_routes_result is None + assert controller.is_rebuilding_routes event = Event( - "heal network done", + "rebuild routes done", { "source": "controller", - "event": "heal network done", + "event": "rebuild routes done", "result": {52: "failed"}, }, ) controller.receive_event(event) - assert controller.heal_network_progress is None - assert controller.is_heal_network_active is False + assert controller.rebuild_routes_progress is None + assert controller.last_rebuild_routes_result == { + multisensor_6: RebuildRoutesStatus.FAILED + } + assert controller.is_rebuilding_routes is False async def test_statistics_updated(controller): @@ -1789,31 +1843,28 @@ async def test_get_available_firmware_updates(multisensor_6, uuid4, mock_command """Test get available firmware updates.""" ack_commands = mock_command( {"command": "controller.get_available_firmware_updates"}, - { - "updates": [ - { - "version": "1.0.0", - "changelog": "changelog", - "files": [ - {"target": 0, "url": "http://example.com", "integrity": "test"} - ], - } - ] - }, + {"updates": [FIRMWARE_UPDATE_INFO]}, ) updates = await multisensor_6.client.driver.controller.async_get_available_firmware_updates( multisensor_6, "test" ) - assert len(updates) == 1 update = updates[0] assert update.version == "1.0.0" assert update.changelog == "changelog" + assert update.channel == "stable" assert len(update.files) == 1 file = update.files[0] assert file.target == 0 assert file.url == "http://example.com" assert file.integrity == "test" + assert update.downgrade + assert update.normalized_version == "1.0.0" + assert update.device.manufacturer_id == 1 + assert update.device.product_type == 2 + assert update.device.product_id == 3 + assert update.device.firmware_version == "0.4.4" + assert update.device.rf_region == RFRegion.USA assert len(ack_commands) == 1 assert ack_commands[0] == { @@ -1832,12 +1883,7 @@ async def test_begin_ota_firmware_update(multisensor_6, uuid4, mock_command): {"result": {"status": 255, "success": True, "reInterview": False}}, ) result = await multisensor_6.client.driver.controller.async_firmware_update_ota( - multisensor_6, - [ - NodeFirmwareUpdateFileInfo( - target=0, url="http://example.com", integrity="test" - ) - ], + multisensor_6, NodeFirmwareUpdateInfo.from_dict(FIRMWARE_UPDATE_INFO) ) assert result.status == 255 assert result.success @@ -1847,7 +1893,7 @@ async def test_begin_ota_firmware_update(multisensor_6, uuid4, mock_command): assert ack_commands[0] == { "command": "controller.firmware_update_ota", "nodeId": multisensor_6.node_id, - "updates": [{"target": 0, "url": "http://example.com", "integrity": "test"}], + "updateInfo": FIRMWARE_UPDATE_INFO, "messageId": uuid4, } @@ -1993,6 +2039,8 @@ async def test_node_added(controller, multisensor_6_state): async def test_node_removed(client, multisensor_6, multisensor_6_state): """Test node removed event.""" + assert 52 in client.driver.controller.nodes + assert client.driver.controller.nodes[52] == multisensor_6 event = Event( "node removed", { diff --git a/test/model/test_driver.py b/test/model/test_driver.py index 9960df0d6..1020675b7 100644 --- a/test/model/test_driver.py +++ b/test/model/test_driver.py @@ -325,19 +325,6 @@ async def test_set_preferred_scales(driver, uuid4, mock_command): } -async def test_enable_error_reporting(driver, uuid4, mock_command): - """Test driver.enable_error_reporting command.""" - ack_commands = mock_command({"command": "driver.enable_error_reporting"}, {}) - - assert not await driver.async_enable_error_reporting() - - assert len(ack_commands) == 1 - assert ack_commands[0] == { - "command": "driver.enable_error_reporting", - "messageId": uuid4, - } - - async def test_hard_reset(driver, uuid4, mock_command): """Test driver hard reset command.""" ack_commands = mock_command({"command": "driver.hard_reset"}, {}) diff --git a/test/model/test_node.py b/test/model/test_node.py index b694409b8..8647f6707 100644 --- a/test/model/test_node.py +++ b/test/model/test_node.py @@ -15,6 +15,7 @@ PowerLevel, ProtocolDataRate, ProtocolVersion, + RFRegion, SecurityClass, Weekday, ) @@ -53,7 +54,17 @@ FIRMWARE_UPDATE_INFO = { "version": "1.0.0", "changelog": "changelog", + "channel": "stable", "files": [{"target": 0, "url": "http://example.com", "integrity": "test"}], + "downgrade": True, + "normalizedVersion": "1.0.0", + "device": { + "manufacturerId": 1, + "productType": 2, + "productId": 3, + "firmwareVersion": "0.4.4", + "rfRegion": 1, + }, } @@ -62,10 +73,18 @@ def test_firmware(): firmware_update_info = NodeFirmwareUpdateInfo.from_dict(FIRMWARE_UPDATE_INFO) assert firmware_update_info.version == "1.0.0" assert firmware_update_info.changelog == "changelog" + assert firmware_update_info.channel == "stable" assert len(firmware_update_info.files) == 1 assert firmware_update_info.files[0].target == 0 assert firmware_update_info.files[0].url == "http://example.com" assert firmware_update_info.files[0].integrity == "test" + assert firmware_update_info.downgrade + assert firmware_update_info.normalized_version == "1.0.0" + assert firmware_update_info.device.manufacturer_id == 1 + assert firmware_update_info.device.product_type == 2 + assert firmware_update_info.device.product_id == 3 + assert firmware_update_info.device.firmware_version == "0.4.4" + assert firmware_update_info.device.rf_region == RFRegion.USA assert firmware_update_info.to_dict() == FIRMWARE_UPDATE_INFO @@ -868,6 +887,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): "event": "notification", "nodeId": 23, "ccId": 111, + "endpointIndex": 0, "args": { "eventType": 0, "eventTypeLabel": "a", @@ -881,6 +901,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): node.handle_notification(event) assert event.data["notification"].command_class == CommandClass.ENTRY_CONTROL assert event.data["notification"].node_id == 23 + assert event.data["notification"].endpoint_idx == 0 assert event.data["notification"].event_type == EntryControlEventType.CACHING assert event.data["notification"].event_type_label == "a" assert event.data["notification"].data_type == EntryControlDataType.NONE @@ -894,6 +915,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): "source": "node", "event": "notification", "nodeId": 23, + "endpointIndex": 0, "ccId": 113, "args": { "type": 6, @@ -908,6 +930,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): node.handle_notification(event) assert event.data["notification"].command_class == CommandClass.NOTIFICATION assert event.data["notification"].node_id == 23 + assert event.data["notification"].endpoint_idx == 0 assert event.data["notification"].type_ == 6 assert event.data["notification"].event == 5 assert event.data["notification"].label == "Access Control" @@ -921,6 +944,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): "source": "node", "event": "notification", "nodeId": 23, + "endpointIndex": 0, "ccId": CommandClass.POWERLEVEL.value, "args": {"testNodeId": 1, "status": 0, "acknowledgedFrames": 2}, }, @@ -929,6 +953,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): node.handle_notification(event) assert event.data["notification"].command_class == CommandClass.POWERLEVEL assert event.data["notification"].node_id == 23 + assert event.data["notification"].endpoint_idx == 0 assert event.data["notification"].test_node_id == 1 assert event.data["notification"].status == PowerLevelTestStatus.FAILED assert event.data["notification"].acknowledged_frames == 2 @@ -940,6 +965,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): "source": "node", "event": "notification", "nodeId": 23, + "endpointIndex": 0, "ccId": CommandClass.SWITCH_MULTILEVEL.value, "args": {"direction": "up", "eventType": 4, "eventTypeLabel": "c"}, }, @@ -948,6 +974,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): node.handle_notification(event) assert event.data["notification"].command_class == CommandClass.SWITCH_MULTILEVEL assert event.data["notification"].node_id == 23 + assert event.data["notification"].endpoint_idx == 0 assert event.data["notification"].direction == "up" assert ( event.data["notification"].event_type @@ -962,6 +989,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): "source": "node", "event": "notification", "nodeId": 23, + "endpointIndex": 0, "ccId": CommandClass.SWITCH_MULTILEVEL.value, "args": {"eventType": 4, "eventTypeLabel": "c"}, }, @@ -970,6 +998,7 @@ async def test_notification(lock_schlage_be469: node_pkg.Node): node.handle_notification(event) assert event.data["notification"].command_class == CommandClass.SWITCH_MULTILEVEL assert event.data["notification"].node_id == 23 + assert event.data["notification"].endpoint_idx == 0 assert event.data["notification"].direction is None assert ( event.data["notification"].event_type @@ -1008,6 +1037,7 @@ async def test_entry_control_notification(ring_keypad): "source": "node", "event": "notification", "nodeId": 10, + "endpointIndex": 0, "ccId": 111, "args": { "eventType": 5, @@ -1021,6 +1051,7 @@ async def test_entry_control_notification(ring_keypad): node.handle_notification(event) assert event.data["notification"].command_class == CommandClass.ENTRY_CONTROL assert event.data["notification"].node_id == 10 + assert event.data["notification"].endpoint_idx == 0 assert event.data["notification"].event_type == EntryControlEventType.ARM_AWAY assert event.data["notification"].event_type_label == "foo" assert event.data["notification"].data_type == EntryControlDataType.ASCII diff --git a/test/test_client.py b/test/test_client.py index 3508ddf0f..e6d8fd6ff 100644 --- a/test/test_client.py +++ b/test/test_client.py @@ -209,6 +209,7 @@ async def test_listen_not_success(client_session, url, result, driver_ready): """Test receive result message with success False on listen.""" result["success"] = False result["errorCode"] = "error_code" + result["message"] = "test" client = Client(url, client_session) await client.connect() @@ -224,6 +225,7 @@ async def test_initialize_not_success( """Test receive result message with success False on listen.""" initialize_data["success"] = False initialize_data["errorCode"] = "error_code" + initialize_data["message"] = "test" client = Client(url, client_session) await client.connect() @@ -239,6 +241,7 @@ async def test_get_log_config_not_success( """Test receive log config message with success False on listen.""" get_log_config_data["success"] = False get_log_config_data["errorCode"] = "error_code" + get_log_config_data["message"] = "test" client = Client(url, client_session) await client.connect() @@ -310,9 +313,7 @@ async def test_command_error_handling(client, mock_command): """Test error handling.""" mock_command( {"command": "some_command"}, - { - "errorCode": "unknown_command", - }, + {"errorCode": "unknown_command", "message": "test"}, False, ) @@ -320,6 +321,7 @@ async def test_command_error_handling(client, mock_command): await client.async_send_command({"command": "some_command"}) assert raised.value.error_code == "unknown_command" + assert str(raised.value) == "unknown_command: test" mock_command( {"command": "some_zjs_command"}, @@ -455,7 +457,7 @@ async def test_additional_user_agent_components(client_session, url): { "command": "initialize", "messageId": "initialize", - "schemaVersion": 31, + "schemaVersion": 32, "additionalUserAgentComponents": { "zwave-js-server-python": __version__, "foo": "bar", diff --git a/test/test_dump.py b/test/test_dump.py index 2ade1c1ee..fc4e9f7a5 100644 --- a/test/test_dump.py +++ b/test/test_dump.py @@ -105,7 +105,7 @@ async def test_dump_additional_user_agent_components( { "command": "initialize", "messageId": "initialize", - "schemaVersion": 31, + "schemaVersion": 32, "additionalUserAgentComponents": { "zwave-js-server-python": __version__, "foo": "bar", diff --git a/test/test_main.py b/test/test_main.py index 76074b4e9..cfaeb5b72 100644 --- a/test/test_main.py +++ b/test/test_main.py @@ -55,7 +55,7 @@ def test_dump_state( assert captured.out == ( "{'type': 'version', 'driverVersion': 'test_driver_version', " "'serverVersion': 'test_server_version', 'homeId': 'test_home_id', " - "'minSchemaVersion': 0, 'maxSchemaVersion': 31}\n" + "'minSchemaVersion': 0, 'maxSchemaVersion': 32}\n" "{'type': 'result', 'success': True, 'result': {}, 'messageId': 'initialize'}\n" "test_result\n" ) diff --git a/zwave_js_server/client.py b/zwave_js_server/client.py index b6f72732f..cc8a3f6a3 100644 --- a/zwave_js_server/client.py +++ b/zwave_js_server/client.py @@ -213,7 +213,11 @@ async def initialize(self) -> None: if not set_api_msg["success"]: # this should not happen, but just in case await self._client.close() - raise FailedCommand(set_api_msg["messageId"], set_api_msg["errorCode"]) + raise FailedCommand( + set_api_msg["messageId"], + set_api_msg["errorCode"], + set_api_msg["message"], + ) async def listen(self, driver_ready: asyncio.Event) -> None: """Start listening to the websocket.""" @@ -237,7 +241,9 @@ async def listen(self, driver_ready: asyncio.Event) -> None: # this should not happen, but just in case if not log_msg["success"]: await self._client.close() - raise FailedCommand(log_msg["messageId"], log_msg["errorCode"]) + raise FailedCommand( + log_msg["messageId"], log_msg["errorCode"], log_msg["message"] + ) # send start_listening command to the server # we will receive a full state dump and from now on get events @@ -249,7 +255,9 @@ async def listen(self, driver_ready: asyncio.Event) -> None: if not state_msg["success"]: await self._client.close() - raise FailedCommand(state_msg["messageId"], state_msg["errorCode"]) + raise FailedCommand( + state_msg["messageId"], state_msg["errorCode"], state_msg["message"] + ) self.driver = cast( Driver, @@ -481,7 +489,7 @@ def _handle_incoming_message(self, msg: dict) -> None: return if msg["errorCode"] != "zwave_error": - err = FailedCommand(msg["messageId"], msg["errorCode"]) + err = FailedCommand(msg["messageId"], msg["errorCode"], msg["message"]) else: err = FailedZWaveCommand( msg["messageId"], msg["zwaveErrorCode"], msg["zwaveErrorMessage"] diff --git a/zwave_js_server/const/__init__.py b/zwave_js_server/const/__init__.py index 84134c54c..fa4afcdb3 100644 --- a/zwave_js_server/const/__init__.py +++ b/zwave_js_server/const/__init__.py @@ -11,9 +11,9 @@ __version__ = metadata.version(PACKAGE_NAME) # minimal server schema version we can handle -MIN_SERVER_SCHEMA_VERSION = 31 +MIN_SERVER_SCHEMA_VERSION = 32 # max server schema version we can handle (and our code is compatible with) -MAX_SERVER_SCHEMA_VERSION = 31 +MAX_SERVER_SCHEMA_VERSION = 32 VALUE_UNKNOWN = "unknown" diff --git a/zwave_js_server/exceptions.py b/zwave_js_server/exceptions.py index f345e6c12..da07efacb 100644 --- a/zwave_js_server/exceptions.py +++ b/zwave_js_server/exceptions.py @@ -86,7 +86,9 @@ def __init__( self, message_id: str, error_code: str, msg: str | None = None ) -> None: """Initialize a failed command error.""" - super().__init__(msg or f"Command failed: {error_code}") + super().__init__( + f"{error_code}: {msg}" if msg else f"Command failed: {error_code}" + ) self.message_id = message_id self.error_code = error_code @@ -101,7 +103,7 @@ def __init__( super().__init__( message_id, "zwave_error", - f"Z-Wave error {zwave_error_code}: {zwave_error_message}", + f"Z-Wave error {zwave_error_code} - {zwave_error_message}", ) self.zwave_error_code = zwave_error_code self.zwave_error_message = zwave_error_message diff --git a/zwave_js_server/model/controller/__init__.py b/zwave_js_server/model/controller/__init__.py index d973c7722..410256cec 100644 --- a/zwave_js_server/model/controller/__init__.py +++ b/zwave_js_server/model/controller/__init__.py @@ -4,10 +4,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Any, Literal, cast -from zwave_js_server.model.node.firmware import ( - NodeFirmwareUpdateFileInfo, - NodeFirmwareUpdateInfo, -) +from zwave_js_server.model.node.firmware import NodeFirmwareUpdateInfo from ...const import ( MINIMUM_QR_STRING_LENGTH, @@ -34,6 +31,11 @@ ProvisioningEntry, QRProvisioningInformation, ) +from .rebuild_routes import ( + RebuildRoutesOptions, + RebuildRoutesOptionsDataType, + RebuildRoutesStatus, +) from .statistics import ( ControllerLifelineRoutes, ControllerStatistics, @@ -73,7 +75,8 @@ def __init__(self, client: "Client", state: dict) -> None: super().__init__() self.client = client self.nodes: dict[int, Node] = {} - self._heal_network_progress: dict[int, str] | None = None + self._rebuild_routes_progress: dict[Node, RebuildRoutesStatus] | None = None + self._last_rebuild_routes_result: dict[Node, RebuildRoutesStatus] | None = None self._statistics = ControllerStatistics(DEFAULT_CONTROLLER_STATISTICS) self._firmware_update_progress: ControllerFirmwareUpdateProgress | None = None for node_state in state["nodes"]: @@ -190,9 +193,9 @@ def supports_timers(self) -> bool | None: return self.data.get("supportsTimers") @property - def is_heal_network_active(self) -> bool | None: - """Return is_heal_network_active.""" - return self.data.get("isHealNetworkActive") + def is_rebuilding_routes(self) -> bool | None: + """Return is_rebuilding_routes.""" + return self.data.get("isRebuildingRoutes") @property def statistics(self) -> ControllerStatistics: @@ -200,9 +203,14 @@ def statistics(self) -> ControllerStatistics: return self._statistics @property - def heal_network_progress(self) -> dict[int, str] | None: - """Return heal network progress state.""" - return self._heal_network_progress + def rebuild_routes_progress(self) -> dict[Node, RebuildRoutesStatus] | None: + """Return rebuild routes progress state.""" + return self._rebuild_routes_progress + + @property + def last_rebuild_routes_result(self) -> dict[Node, RebuildRoutesStatus] | None: + """Return the last rebuild routes result.""" + return self._last_rebuild_routes_result @property def inclusion_state(self) -> InclusionState: @@ -461,29 +469,35 @@ async def async_replace_failed_node( ) return cast(bool, data["success"]) - async def async_heal_node(self, node: Node) -> bool: - """Send healNode command to Controller.""" + async def async_rebuild_node_routes(self, node: Node) -> bool: + """Send rebuildNodeRoutes command to Controller.""" data = await self.client.async_send_command( - {"command": "controller.heal_node", "nodeId": node.node_id} + {"command": "controller.rebuild_node_routes", "nodeId": node.node_id}, + require_schema=32, ) return cast(bool, data["success"]) - async def async_begin_healing_network(self) -> bool: - """Send beginHealingNetwork command to Controller.""" - data = await self.client.async_send_command( - {"command": "controller.begin_healing_network"} - ) + async def async_begin_rebuilding_routes( + self, options: RebuildRoutesOptions | None = None + ) -> bool: + """Send beginRebuildingRoutes command to Controller.""" + msg: dict[str, str | RebuildRoutesOptionsDataType] = { + "command": "controller.begin_rebuilding_routes" + } + if options: + msg["options"] = options.to_dict() + data = await self.client.async_send_command(msg, require_schema=32) return cast(bool, data["success"]) - async def async_stop_healing_network(self) -> bool: - """Send stopHealingNetwork command to Controller.""" + async def async_stop_rebuilding_routes(self) -> bool: + """Send stopRebuildingRoutes command to Controller.""" data = await self.client.async_send_command( - {"command": "controller.stop_healing_network"} + {"command": "controller.stop_rebuilding_routes"}, require_schema=32 ) success = cast(bool, data["success"]) if success: - self._heal_network_progress = None - self.data["isHealNetworkActive"] = False + self._rebuild_routes_progress = None + self.data["isRebuildingRoutes"] = False return success async def async_is_failed_node(self, node: Node) -> bool: @@ -784,22 +798,22 @@ async def async_get_available_firmware_updates( "apiKey": api_key, "includePrereleases": include_prereleases, }, - require_schema=24, + require_schema=32, ) assert data return [NodeFirmwareUpdateInfo.from_dict(update) for update in data["updates"]] async def async_firmware_update_ota( - self, node: Node, updates: list[NodeFirmwareUpdateFileInfo] + self, node: Node, update_info: NodeFirmwareUpdateInfo ) -> NodeFirmwareUpdateResult: """Send firmwareUpdateOTA command to Controller.""" data = await self.client.async_send_command( { "command": "controller.firmware_update_ota", "nodeId": node.node_id, - "updates": [update.to_dict() for update in updates], + "updateInfo": update_info.to_dict(), }, - require_schema=29, + require_schema=32, ) return NodeFirmwareUpdateResult(node, data["result"]) @@ -880,16 +894,22 @@ def handle_node_removed(self, event: Event) -> None: # Remove client from node since it's no longer connected to the controller event.data["node"].client = None - def handle_heal_network_progress(self, event: Event) -> None: - """Process a heal network progress event.""" - self._heal_network_progress = event.data["progress"].copy() - self.data["isHealNetworkActive"] = True + def handle_rebuild_routes_progress(self, event: Event) -> None: + """Process a rebuild routes progress event.""" + self._rebuild_routes_progress = { + self.nodes[node_id]: RebuildRoutesStatus(status) + for node_id, status in event.data["progress"].items() + } + self.data["isRebuildingRoutes"] = True - def handle_heal_network_done(self, event: Event) -> None: - """Process a heal network done event.""" - # pylint: disable=unused-argument - self._heal_network_progress = None - self.data["isHealNetworkActive"] = False + def handle_rebuild_routes_done(self, event: Event) -> None: + """Process a rebuild routes done event.""" + self._last_rebuild_routes_result = { + self.nodes[node_id]: RebuildRoutesStatus(status) + for node_id, status in event.data["result"].items() + } + self._rebuild_routes_progress = None + self.data["isRebuildingRoutes"] = False def handle_statistics_updated(self, event: Event) -> None: """Process a statistics updated event.""" diff --git a/zwave_js_server/model/controller/data_model.py b/zwave_js_server/model/controller/data_model.py index 310dfba5d..36f1652f8 100644 --- a/zwave_js_server/model/controller/data_model.py +++ b/zwave_js_server/model/controller/data_model.py @@ -26,7 +26,7 @@ class ControllerDataType(TypedDict, total=False): supportedFunctionTypes: list[int] sucNodeId: int supportsTimers: bool - isHealNetworkActive: bool + isRebuildingRoutes: bool statistics: ControllerStatisticsDataType inclusionState: int rfRegion: int diff --git a/zwave_js_server/model/controller/event_model.py b/zwave_js_server/model/controller/event_model.py index 2c0596af7..80c1ef84a 100644 --- a/zwave_js_server/model/controller/event_model.py +++ b/zwave_js_server/model/controller/event_model.py @@ -66,17 +66,17 @@ class GrantSecurityClassesEventModel(BaseControllerEventModel): requested: InclusionGrantDataType -class HealNetworkDoneEventModel(BaseControllerEventModel): - """Model for `heal network done` event data.""" +class RebuildRoutesDoneEventModel(BaseControllerEventModel): + """Model for `rebuild routes done` event data.""" - event: Literal["heal network done"] + event: Literal["rebuild routes done"] result: dict[int, str] -class HealNetworkProgressEventModel(BaseControllerEventModel): - """Model for `heal network progress` event data.""" +class RebuildRoutesProgressEventModel(BaseControllerEventModel): + """Model for `rebuild routes progress` event data.""" - event: Literal["heal network progress"] + event: Literal["rebuild routes progress"] progress: dict[int, str] @@ -190,8 +190,8 @@ class StatusChangedEventModel(BaseControllerEventModel): "firmware update finished": FirmwareUpdateFinishedEventModel, "firmware update progress": FirmwareUpdateProgressEventModel, "grant security classes": GrantSecurityClassesEventModel, - "heal network done": HealNetworkDoneEventModel, - "heal network progress": HealNetworkProgressEventModel, + "rebuild routes done": RebuildRoutesDoneEventModel, + "rebuild routes progress": RebuildRoutesProgressEventModel, "identify": IdentifyEventModel, "inclusion aborted": InclusionAbortedEventModel, "inclusion failed": InclusionFailedEventModel, diff --git a/zwave_js_server/model/controller/rebuild_routes.py b/zwave_js_server/model/controller/rebuild_routes.py new file mode 100644 index 000000000..f9ce620a1 --- /dev/null +++ b/zwave_js_server/model/controller/rebuild_routes.py @@ -0,0 +1,39 @@ +"""Provide models for rebuilding routes.""" +from __future__ import annotations + +from dataclasses import dataclass +from enum import StrEnum +from typing import TypedDict + + +class RebuildRoutesOptionsDataType(TypedDict, total=False): + """Represent a rebuild routes options data dict type.""" + + includeSleeping: bool + + +@dataclass +class RebuildRoutesOptions: + """Represent options for rebuilding routes.""" + + include_sleeping: bool | None = None + + @classmethod + def from_dict(cls, data: RebuildRoutesOptionsDataType) -> "RebuildRoutesOptions": + """Return options from data.""" + return cls(include_sleeping=data.get("includeSleeping")) + + def to_dict(self) -> RebuildRoutesOptionsDataType: + """Return dict representation of data.""" + if self.include_sleeping is None: + return {} + return {"includeSleeping": self.include_sleeping} + + +class RebuildRoutesStatus(StrEnum): + """Enum of all known rebuild routes status values.""" + + PENDING = "pending" + DONE = "done" + FAILED = "failed" + SKIPPED = "skipped" diff --git a/zwave_js_server/model/driver.py b/zwave_js_server/model/driver.py index 631a63c9b..cbac38fa8 100644 --- a/zwave_js_server/model/driver.py +++ b/zwave_js_server/model/driver.py @@ -159,10 +159,6 @@ async def async_set_preferred_scales( "set_preferred_scales", scales=scales, require_schema=6 ) - async def async_enable_error_reporting(self) -> None: - """Send command to enable Sentry error reporting.""" - await self._async_send_command("enable_error_reporting", require_schema=16) - async def async_hard_reset(self) -> None: """Send command to hard reset controller.""" await self._async_send_command("hard_reset", require_schema=25) diff --git a/zwave_js_server/model/node/event_model.py b/zwave_js_server/model/node/event_model.py index a6459033c..7d473aeda 100644 --- a/zwave_js_server/model/node/event_model.py +++ b/zwave_js_server/model/node/event_model.py @@ -108,6 +108,7 @@ class NotificationEventModel(BaseNodeEventModel): event: Literal["notification"] nodeId: int + endpointIndex: int ccId: CommandClass args: ( NotificationNotificationArgsDataType diff --git a/zwave_js_server/model/node/firmware.py b/zwave_js_server/model/node/firmware.py index 34b623132..a7d8d8c2d 100644 --- a/zwave_js_server/model/node/firmware.py +++ b/zwave_js_server/model/node/firmware.py @@ -3,9 +3,9 @@ from dataclasses import asdict, dataclass, field from enum import IntEnum -from typing import TYPE_CHECKING, TypedDict, cast +from typing import TYPE_CHECKING, Literal, TypedDict, cast -from ...const import VALUE_UNKNOWN +from ...const import VALUE_UNKNOWN, RFRegion from ...util.helpers import convert_bytes_to_base64 if TYPE_CHECKING: @@ -219,12 +219,62 @@ def to_dict(self) -> NodeFirmwareUpdateFileInfoDataType: return cast(NodeFirmwareUpdateFileInfoDataType, asdict(self)) +class NodeFirmwareUpdateDeviceIDDataType(TypedDict, total=False): + """Represent a firmware update device ID dict type.""" + + manufacturerId: int # required + productType: int # required + productId: int # required + firmwareVersion: str # required + rfRegion: int + + +@dataclass +class NodeFirmwareUpdateDeviceID: + """Represent a firmware update device ID.""" + + manufacturer_id: int + product_type: int + product_id: int + firmware_version: str + rf_region: RFRegion | None + + @classmethod + def from_dict( + cls, data: NodeFirmwareUpdateDeviceIDDataType + ) -> "NodeFirmwareUpdateDeviceID": + """Initialize from dict.""" + return cls( + manufacturer_id=data["manufacturerId"], + product_type=data["productType"], + product_id=data["productId"], + firmware_version=data["firmwareVersion"], + rf_region=RFRegion(data["rfRegion"]) if "rfRegion" in data else None, + ) + + def to_dict(self) -> NodeFirmwareUpdateDeviceIDDataType: + """Return dict representation of the object.""" + data = { + "manufacturerId": self.manufacturer_id, + "productType": self.product_type, + "productId": self.product_id, + "firmwareVersion": self.firmware_version, + } + if self.rf_region is not None: + data["rfRegion"] = self.rf_region + return cast(NodeFirmwareUpdateDeviceIDDataType, data) + + class NodeFirmwareUpdateInfoDataType(TypedDict): """Represent a firmware update info data dict type.""" version: str changelog: str + channel: Literal["stable", "beta"] files: list[NodeFirmwareUpdateFileInfoDataType] + downgrade: bool + normalizedVersion: str + device: NodeFirmwareUpdateDeviceIDDataType @dataclass @@ -233,7 +283,11 @@ class NodeFirmwareUpdateInfo: version: str changelog: str + channel: Literal["stable", "beta"] files: list[NodeFirmwareUpdateFileInfo] + downgrade: bool + normalized_version: str + device: NodeFirmwareUpdateDeviceID @classmethod def from_dict( @@ -243,9 +297,13 @@ def from_dict( return cls( version=data["version"], changelog=data["changelog"], + channel=data["channel"], files=[ NodeFirmwareUpdateFileInfo.from_dict(file) for file in data["files"] ], + downgrade=data["downgrade"], + normalized_version=data["normalizedVersion"], + device=NodeFirmwareUpdateDeviceID.from_dict(data["device"]), ) def to_dict(self) -> NodeFirmwareUpdateInfoDataType: @@ -255,6 +313,10 @@ def to_dict(self) -> NodeFirmwareUpdateInfoDataType: { "version": self.version, "changelog": self.changelog, + "channel": self.channel, "files": [file.to_dict() for file in self.files], + "downgrade": self.downgrade, + "normalizedVersion": self.normalized_version, + "device": self.device.to_dict(), }, ) diff --git a/zwave_js_server/model/notification.py b/zwave_js_server/model/notification.py index 282a06536..36799e34d 100644 --- a/zwave_js_server/model/notification.py +++ b/zwave_js_server/model/notification.py @@ -22,6 +22,7 @@ class BaseNotificationDataType(TypedDict): source: Literal["node"] # required event: Literal["notification"] # required nodeId: int # required + endpointIndex: int # required ccId: int # required @@ -32,11 +33,13 @@ class BaseNotification: node: Node data: BaseNotificationDataType node_id: int = field(init=False) + endpoint_idx: int = field(init=False) command_class: int = field(init=False) def __post_init__(self) -> None: """Post initialization.""" self.node_id = self.data["nodeId"] + self.endpoint_idx = self.data["endpointIndex"] self.command_class = self.data["ccId"]