Fallback to current temperature unit for zwave_js climate (#48347)

* Fallback to current temperature unit for zwave_js climate

* don't use unit for N/A setpoint

* update comment

* add tests
This commit is contained in:
Raman Gupta 2021-03-28 16:18:17 -04:00 committed by GitHub
parent 2ff94c8ed9
commit 08db248983
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1873 additions and 2 deletions

View file

@ -138,8 +138,13 @@ class ZWaveClimate(ZWaveBaseEntity, ClimateEntity):
value_property_key=enum.value.key,
add_to_watched_value_ids=True,
)
# Use the first found setpoint value to always determine the temperature unit
if self._setpoint_values[enum] and not self._unit_value:
# Use the first found non N/A setpoint value to always determine the
# temperature unit
if (
not self._unit_value
and enum != ThermostatSetpointType.NA
and self._setpoint_values[enum]
):
self._unit_value = self._setpoint_values[enum]
self._operating_state = self.get_zwave_value(
THERMOSTAT_OPERATING_STATE_PROPERTY,
@ -152,6 +157,8 @@ class ZWaveClimate(ZWaveBaseEntity, ClimateEntity):
add_to_watched_value_ids=True,
check_all_endpoints=True,
)
if not self._unit_value:
self._unit_value = self._current_temp
self._current_humidity = self.get_zwave_value(
"Humidity",
command_class=CommandClass.SENSOR_MULTILEVEL,

View file

@ -312,6 +312,31 @@ def lock_id_lock_as_id150_state_fixture():
return json.loads(load_fixture("zwave_js/lock_id_lock_as_id150_state.json"))
@pytest.fixture(
name="climate_radio_thermostat_ct101_multiple_temp_units_state", scope="session"
)
def climate_radio_thermostat_ct101_multiple_temp_units_state_fixture():
"""Load the climate multiple temp units node state fixture data."""
return json.loads(
load_fixture(
"zwave_js/climate_radio_thermostat_ct101_multiple_temp_units_state.json"
)
)
@pytest.fixture(
name="climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints_state",
scope="session",
)
def climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints_state_fixture():
"""Load the climate device with mode and setpoint on different endpoints node state fixture data."""
return json.loads(
load_fixture(
"zwave_js/climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints_state.json"
)
)
@pytest.fixture(name="client")
def mock_client_fixture(controller_state, version_state):
"""Mock a client."""
@ -582,3 +607,33 @@ def lock_id_lock_as_id150(client, lock_id_lock_as_id150_state):
node = Node(client, copy.deepcopy(lock_id_lock_as_id150_state))
client.driver.controller.nodes[node.node_id] = node
return node
@pytest.fixture(name="climate_radio_thermostat_ct101_multiple_temp_units")
def climate_radio_thermostat_ct101_multiple_temp_units_fixture(
client, climate_radio_thermostat_ct101_multiple_temp_units_state
):
"""Mock a climate device with multiple temp units node."""
node = Node(
client, copy.deepcopy(climate_radio_thermostat_ct101_multiple_temp_units_state)
)
client.driver.controller.nodes[node.node_id] = node
return node
@pytest.fixture(
name="climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints"
)
def climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints_fixture(
client,
climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints_state,
):
"""Mock a climate device with mode and setpoint on differenet endpoints node."""
node = Node(
client,
copy.deepcopy(
climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints_state
),
)
client.driver.controller.nodes[node.node_id] = node
return node

View file

@ -578,3 +578,20 @@ async def test_preset_and_no_setpoint(
assert args["value"] == 1
client.async_send_command.reset_mock()
async def test_temp_unit_fix(
hass,
client,
climate_radio_thermostat_ct101_multiple_temp_units,
climate_radio_thermostat_ct100_mode_and_setpoint_on_different_endpoints,
integration,
):
"""Test temperaturee unit fix."""
state = hass.states.get("climate.thermostat")
assert state
assert state.attributes["current_temperature"] == 18.3
state = hass.states.get("climate.z_wave_thermostat")
assert state
assert state.attributes["current_temperature"] == 21.1

View file

@ -0,0 +1,830 @@
{
"nodeId": 8,
"index": 0,
"status": 4,
"ready": true,
"isListening": true,
"isRouting": true,
"isSecure": false,
"manufacturerId": 152,
"productId": 263,
"productType": 25601,
"firmwareVersion": "9.1",
"deviceConfig": {
"filename": "/usr/src/node_modules/@zwave-js/config/config/devices/0x0098/ct100.json",
"manufacturer": "Radio Thermostat Company of America (RTC)",
"manufacturerId": 152,
"label": "CT100",
"description": "Z-Wave Thermostat",
"devices": [
{
"productType": 25601,
"productId": 21
},
{
"productType": 25601,
"productId": 259
},
{
"productType": 25601,
"productId": 261
},
{
"productType": 25601,
"productId": 262
},
{
"productType": 25601,
"productId": 263
},
{
"productType": 25601,
"productId": 509
},
{
"productType": 25602,
"productId": 1
}
],
"firmwareVersion": {
"min": "0.0",
"max": "255.255"
},
"associations": {}
},
"label": "CT100",
"neighbors": [2, 3, 4, 5, 6, 7, 9],
"endpointCountIsDynamic": false,
"endpointsHaveIdenticalCapabilities": true,
"individualEndpointCount": 2,
"interviewAttempts": 0,
"interviewStage": 6,
"endpoints": [
{
"nodeId": 8,
"index": 0
},
{
"nodeId": 8,
"index": 1
},
{
"nodeId": 8,
"index": 2
}
],
"values": [
{
"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": "\u00b0F"
},
"value": 69
},
{
"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": "\u00b0F"
},
"value": 72
},
{
"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"
}
},
"value": 0
},
{
"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": 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": 152
},
{
"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": 25601
},
{
"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": 263
},
{
"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": 1,
"metadata": {
"type": "any",
"readable": true,
"writeable": false,
"label": "Library type"
},
"value": 3
},
{
"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.28"
},
{
"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": ["9.1"]
},
{
"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": 1,
"commandClass": 49,
"commandClassName": "Multilevel Sensor",
"property": "Air temperature",
"propertyName": "Air temperature",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Air temperature",
"ccSpecific": {
"sensorType": 1,
"scale": 1
},
"unit": "\u00b0F"
},
"value": 70
},
{
"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"
}
},
{
"endpoint": 2,
"commandClass": 49,
"commandClassName": "Multilevel Sensor",
"property": "Humidity",
"propertyName": "Humidity",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Humidity",
"ccSpecific": {
"sensorType": 5,
"scale": 0
},
"unit": "%"
},
"value": 60
}
],
"isFrequentListening": null,
"maxBaudRate": 40000,
"version": 3,
"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": 2,
"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": 96,
"name": "Multi Channel",
"version": 3,
"isSecure": false
},
{
"id": 112,
"name": "Configuration",
"version": 1,
"isSecure": false
},
{
"id": 114,
"name": "Manufacturer Specific",
"version": 1,
"isSecure": false
},
{
"id": 128,
"name": "Battery",
"version": 1,
"isSecure": false
},
{
"id": 129,
"name": "Clock",
"version": 1,
"isSecure": false
},
{
"id": 133,
"name": "Association",
"version": 1,
"isSecure": false
},
{
"id": 134,
"name": "Version",
"version": 1,
"isSecure": false
},
{
"id": 135,
"name": "Indicator",
"version": 1,
"isSecure": false
}
]
}

View file

@ -0,0 +1,962 @@
{
"nodeId": 4,
"index": 0,
"status": 4,
"ready": true,
"isListening": false,
"isRouting": true,
"isSecure": false,
"manufacturerId": 152,
"productId": 12,
"productType": 25857,
"firmwareVersion": "9.0",
"name": "Thermostat",
"deviceConfig": {
"filename": "/usr/src/app/node_modules/@zwave-js/config/config/devices/0x0098/ct101.json",
"manufacturer": "Radio Thermostat Company of America (RTC)",
"manufacturerId": 152,
"label": "CT101",
"description": "Z-Wave Thermostat",
"devices": [
{
"productType": 25857,
"productId": 0
},
{
"productType": 25857,
"productId": 11
},
{
"productType": 25857,
"productId": 12
},
{
"productType": 25857,
"productId": 13
}
],
"firmwareVersion": {
"min": "0.0",
"max": "255.255"
},
"associations": {},
"paramInformation": {
"_map": {}
}
},
"label": "CT101",
"neighbors": [1, 11, 13, 14, 2, 3],
"endpointCountIsDynamic": false,
"endpointsHaveIdenticalCapabilities": true,
"individualEndpointCount": 2,
"interviewAttempts": 0,
"interviewStage": 6,
"endpoints": [
{
"nodeId": 4,
"index": 0
},
{
"nodeId": 4,
"index": 1
},
{
"nodeId": 4,
"index": 2
}
],
"values": [
{
"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": 68,
"commandClassName": "Thermostat Fan Mode",
"property": "mode",
"propertyName": "mode",
"ccVersion": 0,
"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": 0,
"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\u00b0",
"2": "1.0\u00b0",
"3": "1.5\u00b0",
"4": "2.0\u00b0"
}
},
"value": 2
},
{
"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",
"label": "Thermostat Swing Temperature",
"min": 1,
"max": 8,
"states": {
"1": "0.5\u00b0",
"2": "1.0\u00b0",
"3": "1.5\u00b0",
"4": "2.0\u00b0",
"5": "2.5\u00b0",
"6": "3.0\u00b0",
"7": "3.5\u00b0",
"8": "4.0\u00b0"
}
},
"value": 2
},
{
"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": 3,
"propertyName": "Utility Lock Enable/Disable",
"ccVersion": 1,
"metadata": {
"type": "number",
"default": 0,
"readable": true,
"writeable": true,
"description": "Prevents setpoint changes at thermostat.",
"label": "Utility Lock Enable/Disable",
"min": 0,
"max": 1,
"states": {
"0": "Utility lock disabled",
"1": "Utility lock enabled"
}
}
},
{
"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": 152
},
{
"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": 25857
},
{
"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": 12
},
{
"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": 90
},
{
"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": 3
},
{
"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.28"
},
{
"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": ["9.0"]
},
{
"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"
}
},
"value": 1
},
{
"endpoint": 1,
"commandClass": 64,
"commandClassName": "Thermostat Mode",
"property": "manufacturerData",
"propertyName": "manufacturerData",
"ccVersion": 0,
"metadata": {
"type": "any",
"readable": true,
"writeable": true
}
},
{
"endpoint": 1,
"commandClass": 67,
"commandClassName": "Thermostat Setpoint",
"property": "setpoint",
"propertyKey": 1,
"propertyName": "setpoint",
"propertyKeyName": "Heating",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": true,
"ccSpecific": {
"setpointType": 1
},
"unit": "\u00b0F"
},
"value": 55
},
{
"endpoint": 1,
"commandClass": 67,
"commandClassName": "Thermostat Setpoint",
"property": "setpoint",
"propertyKey": 2,
"propertyName": "setpoint",
"propertyKeyName": "Cooling",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": true,
"ccSpecific": {
"setpointType": 2
},
"unit": "\u00b0F"
},
"value": 78
},
{
"endpoint": 1,
"commandClass": 67,
"commandClassName": "Thermostat Setpoint",
"property": "setpoint",
"propertyKey": 0,
"propertyName": "setpoint",
"propertyKeyName": "N/A",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": true,
"ccSpecific": {
"setpointType": 0
},
"unit": "\u00b0C"
},
"value": 0
},
{
"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": 1,
"commandClass": 49,
"commandClassName": "Multilevel Sensor",
"property": "Air temperature",
"propertyName": "Air temperature",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Air temperature",
"ccSpecific": {
"sensorType": 1,
"scale": 1
},
"unit": "\u00b0F"
},
"value": 65
},
{
"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"
}
},
{
"endpoint": 2,
"commandClass": 49,
"commandClassName": "Multilevel Sensor",
"property": "Humidity",
"propertyName": "Humidity",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Humidity",
"ccSpecific": {
"sensorType": 5,
"scale": 0
},
"unit": "%"
},
"value": 56
},
{
"endpoint": 2,
"commandClass": 49,
"commandClassName": "Multilevel Sensor",
"property": "Air temperature",
"propertyName": "Air temperature",
"ccVersion": 0,
"metadata": {
"type": "number",
"readable": true,
"writeable": false,
"label": "Air temperature",
"ccSpecific": {
"sensorType": 1,
"scale": 1
},
"unit": "\u00b0F"
},
"value": 62.5
}
],
"isFrequentListening": true,
"maxBaudRate": 40000,
"version": 3,
"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": 2,
"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": 96,
"name": "Multi Channel",
"version": 3,
"isSecure": false
},
{
"id": 112,
"name": "Configuration",
"version": 1,
"isSecure": false
},
{
"id": 114,
"name": "Manufacturer Specific",
"version": 1,
"isSecure": false
},
{
"id": 128,
"name": "Battery",
"version": 1,
"isSecure": false
},
{
"id": 129,
"name": "Clock",
"version": 1,
"isSecure": false
},
{
"id": 133,
"name": "Association",
"version": 1,
"isSecure": false
},
{
"id": 134,
"name": "Version",
"version": 1,
"isSecure": false
},
{
"id": 135,
"name": "Indicator",
"version": 1,
"isSecure": false
}
]
}