Search all endpoints for value in zwave_js (#45809)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
776b1395de
commit
197c857e1f
5 changed files with 787 additions and 7 deletions
|
@ -140,6 +140,7 @@ class ZWaveClimate(ZWaveBaseEntity, ClimateEntity):
|
||||||
THERMOSTAT_CURRENT_TEMP_PROPERTY,
|
THERMOSTAT_CURRENT_TEMP_PROPERTY,
|
||||||
command_class=CommandClass.SENSOR_MULTILEVEL,
|
command_class=CommandClass.SENSOR_MULTILEVEL,
|
||||||
add_to_watched_value_ids=True,
|
add_to_watched_value_ids=True,
|
||||||
|
check_all_endpoints=True,
|
||||||
)
|
)
|
||||||
self._set_modes_and_presets()
|
self._set_modes_and_presets()
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,7 @@ class ZWaveBaseEntity(Entity):
|
||||||
endpoint: Optional[int] = None,
|
endpoint: Optional[int] = None,
|
||||||
value_property_key_name: Optional[str] = None,
|
value_property_key_name: Optional[str] = None,
|
||||||
add_to_watched_value_ids: bool = True,
|
add_to_watched_value_ids: bool = True,
|
||||||
|
check_all_endpoints: bool = False,
|
||||||
) -> Optional[ZwaveValue]:
|
) -> Optional[ZwaveValue]:
|
||||||
"""Return specific ZwaveValue on this ZwaveNode."""
|
"""Return specific ZwaveValue on this ZwaveNode."""
|
||||||
# use commandclass and endpoint from primary value if omitted
|
# use commandclass and endpoint from primary value if omitted
|
||||||
|
@ -129,17 +130,33 @@ class ZWaveBaseEntity(Entity):
|
||||||
command_class = self.info.primary_value.command_class
|
command_class = self.info.primary_value.command_class
|
||||||
if endpoint is None:
|
if endpoint is None:
|
||||||
endpoint = self.info.primary_value.endpoint
|
endpoint = self.info.primary_value.endpoint
|
||||||
|
|
||||||
|
# Build partial event data dictionary so we can change the endpoint later
|
||||||
|
partial_evt_data = {
|
||||||
|
"commandClass": command_class,
|
||||||
|
"property": value_property,
|
||||||
|
"propertyKeyName": value_property_key_name,
|
||||||
|
}
|
||||||
|
|
||||||
# lookup value by value_id
|
# lookup value by value_id
|
||||||
value_id = get_value_id(
|
value_id = get_value_id(
|
||||||
self.info.node,
|
self.info.node, {**partial_evt_data, "endpoint": endpoint}
|
||||||
{
|
|
||||||
"commandClass": command_class,
|
|
||||||
"endpoint": endpoint,
|
|
||||||
"property": value_property,
|
|
||||||
"propertyKeyName": value_property_key_name,
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
return_value = self.info.node.values.get(value_id)
|
return_value = self.info.node.values.get(value_id)
|
||||||
|
|
||||||
|
# If we haven't found a value and check_all_endpoints is True, we should
|
||||||
|
# return the first value we can find on any other endpoint
|
||||||
|
if return_value is None and check_all_endpoints:
|
||||||
|
for endpoint_ in self.info.node.endpoints:
|
||||||
|
if endpoint_.index != self.info.primary_value.endpoint:
|
||||||
|
value_id = get_value_id(
|
||||||
|
self.info.node,
|
||||||
|
{**partial_evt_data, "endpoint": endpoint_.index},
|
||||||
|
)
|
||||||
|
return_value = self.info.node.values.get(value_id)
|
||||||
|
if return_value:
|
||||||
|
break
|
||||||
|
|
||||||
# add to watched_ids list so we will be triggered when the value updates
|
# add to watched_ids list so we will be triggered when the value updates
|
||||||
if (
|
if (
|
||||||
return_value
|
return_value
|
||||||
|
|
|
@ -111,6 +111,22 @@ def climate_radio_thermostat_ct100_plus_state_fixture():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(
|
||||||
|
name="climate_radio_thermostat_ct100_plus_different_endpoints_state",
|
||||||
|
scope="session",
|
||||||
|
)
|
||||||
|
def climate_radio_thermostat_ct100_plus_different_endpoints_state_fixture():
|
||||||
|
"""Load the thermostat fixture state with values on different endpoints.
|
||||||
|
|
||||||
|
This device is a radio thermostat ct100.
|
||||||
|
"""
|
||||||
|
return json.loads(
|
||||||
|
load_fixture(
|
||||||
|
"zwave_js/climate_radio_thermostat_ct100_plus_different_endpoints_state.json"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="nortek_thermostat_state", scope="session")
|
@pytest.fixture(name="nortek_thermostat_state", scope="session")
|
||||||
def nortek_thermostat_state_fixture():
|
def nortek_thermostat_state_fixture():
|
||||||
"""Load the nortek thermostat node state fixture data."""
|
"""Load the nortek thermostat node state fixture data."""
|
||||||
|
@ -231,6 +247,16 @@ def climate_radio_thermostat_ct100_plus_fixture(
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(name="climate_radio_thermostat_ct100_plus_different_endpoints")
|
||||||
|
def climate_radio_thermostat_ct100_plus_different_endpoints_fixture(
|
||||||
|
client, climate_radio_thermostat_ct100_plus_different_endpoints_state
|
||||||
|
):
|
||||||
|
"""Mock a climate radio thermostat ct100 plus node with values on different endpoints."""
|
||||||
|
node = Node(client, climate_radio_thermostat_ct100_plus_different_endpoints_state)
|
||||||
|
client.driver.controller.nodes[node.node_id] = node
|
||||||
|
return node
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="nortek_thermostat")
|
@pytest.fixture(name="nortek_thermostat")
|
||||||
def nortek_thermostat_fixture(client, nortek_thermostat_state):
|
def nortek_thermostat_fixture(client, nortek_thermostat_state):
|
||||||
"""Mock a nortek thermostat node."""
|
"""Mock a nortek thermostat node."""
|
||||||
|
|
|
@ -324,3 +324,12 @@ async def test_thermostat_v2(
|
||||||
},
|
},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_thermostat_different_endpoints(
|
||||||
|
hass, client, climate_radio_thermostat_ct100_plus_different_endpoints, integration
|
||||||
|
):
|
||||||
|
"""Test an entity with values on a different endpoint from the primary value."""
|
||||||
|
state = hass.states.get(CLIMATE_RADIO_THERMOSTAT_ENTITY)
|
||||||
|
|
||||||
|
assert state.attributes[ATTR_CURRENT_TEMPERATURE] == 22.5
|
||||||
|
|
727
tests/fixtures/zwave_js/climate_radio_thermostat_ct100_plus_different_endpoints_state.json
vendored
Normal file
727
tests/fixtures/zwave_js/climate_radio_thermostat_ct100_plus_different_endpoints_state.json
vendored
Normal file
|
@ -0,0 +1,727 @@
|
||||||
|
{
|
||||||
|
"nodeId": 26,
|
||||||
|
"index": 0,
|
||||||
|
"installerIcon": 4608,
|
||||||
|
"userIcon": 4608,
|
||||||
|
"status": 4,
|
||||||
|
"ready": true,
|
||||||
|
"deviceClass": {
|
||||||
|
"basic": "Routing Slave",
|
||||||
|
"generic": "Thermostat",
|
||||||
|
"specific": "Thermostat General V2",
|
||||||
|
"mandatorySupportedCCs": [
|
||||||
|
"Basic",
|
||||||
|
"Manufacturer Specific",
|
||||||
|
"Thermostat Mode",
|
||||||
|
"Thermostat Setpoint",
|
||||||
|
"Version"
|
||||||
|
],
|
||||||
|
"mandatoryControlCCs": []
|
||||||
|
},
|
||||||
|
"isListening": true,
|
||||||
|
"isFrequentListening": false,
|
||||||
|
"isRouting": true,
|
||||||
|
"maxBaudRate": 40000,
|
||||||
|
"isSecure": false,
|
||||||
|
"version": 4,
|
||||||
|
"isBeaming": true,
|
||||||
|
"manufacturerId": 152,
|
||||||
|
"productId": 256,
|
||||||
|
"productType": 25602,
|
||||||
|
"firmwareVersion": "10.7",
|
||||||
|
"zwavePlusVersion": 1,
|
||||||
|
"nodeType": 0,
|
||||||
|
"roleType": 5,
|
||||||
|
"deviceConfig": {
|
||||||
|
"manufacturerId": 152,
|
||||||
|
"manufacturer": "Radio Thermostat Company of America (RTC)",
|
||||||
|
"label": "CT100 Plus",
|
||||||
|
"description": "Z-Wave Thermostat",
|
||||||
|
"devices": [{ "productType": "0x6402", "productId": "0x0100" }],
|
||||||
|
"firmwareVersion": { "min": "0.0", "max": "255.255" },
|
||||||
|
"paramInformation": { "_map": {} }
|
||||||
|
},
|
||||||
|
"label": "CT100 Plus",
|
||||||
|
"neighbors": [1, 2, 3, 4, 23],
|
||||||
|
"endpointCountIsDynamic": false,
|
||||||
|
"endpointsHaveIdenticalCapabilities": false,
|
||||||
|
"individualEndpointCount": 2,
|
||||||
|
"aggregatedEndpointCount": 0,
|
||||||
|
"interviewAttempts": 1,
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"nodeId": 26,
|
||||||
|
"index": 0,
|
||||||
|
"installerIcon": 4608,
|
||||||
|
"userIcon": 4608
|
||||||
|
},
|
||||||
|
{ "nodeId": 26, "index": 1 },
|
||||||
|
{
|
||||||
|
"nodeId": 26,
|
||||||
|
"index": 2,
|
||||||
|
"installerIcon": 3328,
|
||||||
|
"userIcon": 3333
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"values": [
|
||||||
|
{
|
||||||
|
"commandClassName": "Manufacturer Specific",
|
||||||
|
"commandClass": 114,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "manufacturerId",
|
||||||
|
"propertyName": "manufacturerId",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 65535,
|
||||||
|
"label": "Manufacturer ID"
|
||||||
|
},
|
||||||
|
"value": 152,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Manufacturer Specific",
|
||||||
|
"commandClass": 114,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "productType",
|
||||||
|
"propertyName": "productType",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 65535,
|
||||||
|
"label": "Product type"
|
||||||
|
},
|
||||||
|
"value": 25602,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Manufacturer Specific",
|
||||||
|
"commandClass": 114,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "productId",
|
||||||
|
"propertyName": "productId",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 65535,
|
||||||
|
"label": "Product ID"
|
||||||
|
},
|
||||||
|
"value": 256,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Mode",
|
||||||
|
"commandClass": 64,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "mode",
|
||||||
|
"propertyName": "mode",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"min": 0,
|
||||||
|
"max": 31,
|
||||||
|
"label": "Thermostat mode",
|
||||||
|
"states": {
|
||||||
|
"0": "Off",
|
||||||
|
"1": "Heat",
|
||||||
|
"2": "Cool",
|
||||||
|
"3": "Auto",
|
||||||
|
"11": "Energy heat",
|
||||||
|
"12": "Energy cool"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"value": 1,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Mode",
|
||||||
|
"commandClass": 64,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "manufacturerData",
|
||||||
|
"propertyName": "manufacturerData",
|
||||||
|
"metadata": {
|
||||||
|
"type": "any",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true
|
||||||
|
},
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Setpoint",
|
||||||
|
"commandClass": 67,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "setpoint",
|
||||||
|
"propertyKey": 1,
|
||||||
|
"propertyName": "setpoint",
|
||||||
|
"propertyKeyName": "Heating",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"unit": "\u00b0F",
|
||||||
|
"ccSpecific": { "setpointType": 1 }
|
||||||
|
},
|
||||||
|
"value": 72,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Setpoint",
|
||||||
|
"commandClass": 67,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "setpoint",
|
||||||
|
"propertyKey": 2,
|
||||||
|
"propertyName": "setpoint",
|
||||||
|
"propertyKeyName": "Cooling",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"unit": "\u00b0F",
|
||||||
|
"ccSpecific": { "setpointType": 2 }
|
||||||
|
},
|
||||||
|
"value": 73,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Setpoint",
|
||||||
|
"commandClass": 67,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "setpoint",
|
||||||
|
"propertyKey": 11,
|
||||||
|
"propertyName": "setpoint",
|
||||||
|
"propertyKeyName": "Energy Save Heating",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"unit": "\u00b0F",
|
||||||
|
"ccSpecific": { "setpointType": 11 }
|
||||||
|
},
|
||||||
|
"value": 62,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Setpoint",
|
||||||
|
"commandClass": 67,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "setpoint",
|
||||||
|
"propertyKey": 12,
|
||||||
|
"propertyName": "setpoint",
|
||||||
|
"propertyKeyName": "Energy Save Cooling",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"unit": "\u00b0F",
|
||||||
|
"ccSpecific": { "setpointType": 12 }
|
||||||
|
},
|
||||||
|
"value": 85,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Version",
|
||||||
|
"commandClass": 134,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "libraryType",
|
||||||
|
"propertyName": "libraryType",
|
||||||
|
"metadata": {
|
||||||
|
"type": "any",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"label": "Library type"
|
||||||
|
},
|
||||||
|
"value": 3,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Version",
|
||||||
|
"commandClass": 134,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "protocolVersion",
|
||||||
|
"propertyName": "protocolVersion",
|
||||||
|
"metadata": {
|
||||||
|
"type": "any",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"label": "Z-Wave protocol version"
|
||||||
|
},
|
||||||
|
"value": "4.24",
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Version",
|
||||||
|
"commandClass": 134,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "firmwareVersions",
|
||||||
|
"propertyName": "firmwareVersions",
|
||||||
|
"metadata": {
|
||||||
|
"type": "any",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"label": "Z-Wave chip firmware versions"
|
||||||
|
},
|
||||||
|
"value": ["10.7"],
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Version",
|
||||||
|
"commandClass": 134,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "hardwareVersion",
|
||||||
|
"propertyName": "hardwareVersion",
|
||||||
|
"metadata": {
|
||||||
|
"type": "any",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"label": "Z-Wave chip hardware version"
|
||||||
|
},
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Indicator",
|
||||||
|
"commandClass": 135,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "value",
|
||||||
|
"propertyName": "value",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"min": 0,
|
||||||
|
"max": 255,
|
||||||
|
"label": "Indicator value",
|
||||||
|
"ccSpecific": { "indicatorId": 0 }
|
||||||
|
},
|
||||||
|
"value": 0,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Thermostat Operating State",
|
||||||
|
"commandClass": 66,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "state",
|
||||||
|
"propertyName": "state",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 255,
|
||||||
|
"label": "Operating state",
|
||||||
|
"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,
|
||||||
|
"ccVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 1,
|
||||||
|
"propertyName": "Temperature Reporting Threshold",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 4,
|
||||||
|
"default": 2,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"0": "Disabled",
|
||||||
|
"1": "0.5\u00b0 F",
|
||||||
|
"2": "1.0\u00b0 F",
|
||||||
|
"3": "1.5\u00b0 F",
|
||||||
|
"4": "2.0\u00b0 F"
|
||||||
|
},
|
||||||
|
"label": "Temperature Reporting Threshold",
|
||||||
|
"description": "Reporting threshold for changes in the ambient temperature",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 2,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 2,
|
||||||
|
"propertyName": "HVAC Settings",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"valueSize": 4,
|
||||||
|
"min": 0,
|
||||||
|
"max": 0,
|
||||||
|
"default": 0,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": true,
|
||||||
|
"label": "HVAC Settings",
|
||||||
|
"description": "Configured HVAC settings",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 17891329,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 4,
|
||||||
|
"propertyName": "Power Status",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 0,
|
||||||
|
"default": 0,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": true,
|
||||||
|
"label": "Power Status",
|
||||||
|
"description": "C-Wire / Battery Status",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 1,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 5,
|
||||||
|
"propertyName": "Humidity Reporting Threshold",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 255,
|
||||||
|
"default": 0,
|
||||||
|
"format": 1,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"0": "Disabled",
|
||||||
|
"1": "3% RH",
|
||||||
|
"2": "5% RH",
|
||||||
|
"3": "10% RH"
|
||||||
|
},
|
||||||
|
"label": "Humidity Reporting Threshold",
|
||||||
|
"description": "Reporting threshold for changes in the relative humidity",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 2,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 6,
|
||||||
|
"propertyName": "Auxiliary/Emergency",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 255,
|
||||||
|
"default": 0,
|
||||||
|
"format": 1,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"0": "Auxiliary/Emergency heat disabled",
|
||||||
|
"1": "Auxiliary/Emergency heat enabled"
|
||||||
|
},
|
||||||
|
"label": "Auxiliary/Emergency",
|
||||||
|
"description": "Enables or disables auxiliary / emergency heating",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 0,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 7,
|
||||||
|
"propertyName": "Thermostat Swing Temperature",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 1,
|
||||||
|
"max": 8,
|
||||||
|
"default": 2,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"1": "0.5\u00b0 F",
|
||||||
|
"2": "1.0\u00b0 F",
|
||||||
|
"3": "1.5\u00b0 F",
|
||||||
|
"4": "2.0\u00b0 F",
|
||||||
|
"5": "2.5\u00b0 F",
|
||||||
|
"6": "3.0\u00b0 F",
|
||||||
|
"7": "3.5\u00b0 F",
|
||||||
|
"8": "4.0\u00b0 F"
|
||||||
|
},
|
||||||
|
"label": "Thermostat Swing Temperature",
|
||||||
|
"description": "Variance allowed from setpoint to engage HVAC",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 2,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 8,
|
||||||
|
"propertyName": "Thermostat Diff Temperature",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 4,
|
||||||
|
"max": 12,
|
||||||
|
"default": 4,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"4": "2.0\u00b0 F",
|
||||||
|
"8": "4.0\u00b0 F",
|
||||||
|
"12": "6.0\u00b0 F"
|
||||||
|
},
|
||||||
|
"label": "Thermostat Diff Temperature",
|
||||||
|
"description": "Configures additional stages",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 1028,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 9,
|
||||||
|
"propertyName": "Thermostat Recovery Mode",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 1,
|
||||||
|
"max": 2,
|
||||||
|
"default": 2,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"1": "Fast recovery mode",
|
||||||
|
"2": "Economy recovery mode"
|
||||||
|
},
|
||||||
|
"label": "Thermostat Recovery Mode",
|
||||||
|
"description": "Fast or Economy recovery mode",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 2,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 10,
|
||||||
|
"propertyName": "Temperature Reporting Filter",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 4,
|
||||||
|
"min": 0,
|
||||||
|
"max": 124,
|
||||||
|
"default": 124,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": true,
|
||||||
|
"label": "Temperature Reporting Filter",
|
||||||
|
"description": "Upper/Lower bounds for thermostat temperature reporting",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 32000,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 11,
|
||||||
|
"propertyName": "Simple UI Mode",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 1,
|
||||||
|
"default": 1,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"0": "Normal mode enabled",
|
||||||
|
"1": "Simple mode enabled"
|
||||||
|
},
|
||||||
|
"label": "Simple UI Mode",
|
||||||
|
"description": "Simple mode enable/disable",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 1,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 12,
|
||||||
|
"propertyName": "Multicast",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 1,
|
||||||
|
"default": 0,
|
||||||
|
"format": 0,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"0": "Multicast disabled",
|
||||||
|
"1": "Multicast enabled"
|
||||||
|
},
|
||||||
|
"label": "Multicast",
|
||||||
|
"description": "Enable or disables Multicast",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"value": 0,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Configuration",
|
||||||
|
"commandClass": 112,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": 3,
|
||||||
|
"propertyName": "Utility Lock Enable/Disable",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": false,
|
||||||
|
"writeable": true,
|
||||||
|
"valueSize": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 255,
|
||||||
|
"default": 0,
|
||||||
|
"format": 1,
|
||||||
|
"allowManualEntry": false,
|
||||||
|
"states": {
|
||||||
|
"0": "Utility lock disabled",
|
||||||
|
"1": "Utility lock enabled"
|
||||||
|
},
|
||||||
|
"label": "Utility Lock Enable/Disable",
|
||||||
|
"description": "Prevents setpoint changes at thermostat",
|
||||||
|
"isFromConfig": true
|
||||||
|
},
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Battery",
|
||||||
|
"commandClass": 128,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "level",
|
||||||
|
"propertyName": "level",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"unit": "%",
|
||||||
|
"label": "Battery level"
|
||||||
|
},
|
||||||
|
"value": 100,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Battery",
|
||||||
|
"commandClass": 128,
|
||||||
|
"endpoint": 0,
|
||||||
|
"property": "isLow",
|
||||||
|
"propertyName": "isLow",
|
||||||
|
"metadata": {
|
||||||
|
"type": "boolean",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"label": "Low battery level"
|
||||||
|
},
|
||||||
|
"value": false,
|
||||||
|
"ccVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Multilevel Sensor",
|
||||||
|
"commandClass": 49,
|
||||||
|
"endpoint": 2,
|
||||||
|
"property": "Air temperature",
|
||||||
|
"propertyName": "Air temperature",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"unit": "\u00b0F",
|
||||||
|
"label": "Air temperature",
|
||||||
|
"ccSpecific": { "sensorType": 1, "scale": 1 }
|
||||||
|
},
|
||||||
|
"value": 72.5,
|
||||||
|
"ccVersion": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandClassName": "Multilevel Sensor",
|
||||||
|
"commandClass": 49,
|
||||||
|
"endpoint": 2,
|
||||||
|
"property": "Humidity",
|
||||||
|
"propertyName": "Humidity",
|
||||||
|
"metadata": {
|
||||||
|
"type": "number",
|
||||||
|
"readable": true,
|
||||||
|
"writeable": false,
|
||||||
|
"unit": "%",
|
||||||
|
"label": "Humidity",
|
||||||
|
"ccSpecific": { "sensorType": 5, "scale": 0 }
|
||||||
|
},
|
||||||
|
"value": 20,
|
||||||
|
"ccVersion": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue