From 3884b4b6bf1476740327c18c849b86d4823ebdb4 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Wed, 28 Sep 2022 21:24:04 -0400 Subject: [PATCH] Bump zwave-js-server-python to 0.42.0 (#79020) --- homeassistant/components/zwave_js/__init__.py | 7 +- homeassistant/components/zwave_js/api.py | 4 +- homeassistant/components/zwave_js/const.py | 4 + .../components/zwave_js/device_action.py | 4 +- .../components/zwave_js/diagnostics.py | 6 +- .../zwave_js/discovery_data_template.py | 4 +- homeassistant/components/zwave_js/entity.py | 6 +- homeassistant/components/zwave_js/helpers.py | 4 +- .../components/zwave_js/manifest.json | 2 +- homeassistant/components/zwave_js/services.py | 10 +- .../zwave_js/triggers/value_updated.py | 6 +- homeassistant/const.py | 1 + homeassistant/helpers/aiohttp_client.py | 6 +- homeassistant/helpers/httpx_client.py | 6 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/zwave_js/test_api.py | 58 ++-- tests/components/zwave_js/test_climate.py | 100 ------ tests/components/zwave_js/test_cover.py | 202 ------------ tests/components/zwave_js/test_fan.py | 63 ---- tests/components/zwave_js/test_humidifier.py | 145 --------- tests/components/zwave_js/test_init.py | 10 +- tests/components/zwave_js/test_light.py | 115 ------- tests/components/zwave_js/test_lock.py | 67 ---- tests/components/zwave_js/test_number.py | 25 -- tests/components/zwave_js/test_select.py | 39 --- tests/components/zwave_js/test_services.py | 289 ------------------ tests/components/zwave_js/test_siren.py | 24 +- tests/components/zwave_js/test_switch.py | 46 --- 29 files changed, 93 insertions(+), 1164 deletions(-) diff --git a/homeassistant/components/zwave_js/__init__.py b/homeassistant/components/zwave_js/__init__.py index d676a40d32f..f8828e8cdd0 100644 --- a/homeassistant/components/zwave_js/__init__.py +++ b/homeassistant/components/zwave_js/__init__.py @@ -88,6 +88,7 @@ from .const import ( DOMAIN, EVENT_DEVICE_ADDED_TO_REGISTRY, LOGGER, + USER_AGENT, ZWAVE_JS_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_UPDATED_EVENT, @@ -129,7 +130,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: if use_addon := entry.data.get(CONF_USE_ADDON): await async_ensure_addon_running(hass, entry) - client = ZwaveClient(entry.data[CONF_URL], async_get_clientsession(hass)) + client = ZwaveClient( + entry.data[CONF_URL], + async_get_clientsession(hass), + additional_user_agent_components=USER_AGENT, + ) # connect and throw error if connection failed try: diff --git a/homeassistant/components/zwave_js/api.py b/homeassistant/components/zwave_js/api.py index 98078c8457f..7ceca062ee4 100644 --- a/homeassistant/components/zwave_js/api.py +++ b/homeassistant/components/zwave_js/api.py @@ -68,6 +68,7 @@ from .const import ( DATA_CLIENT, DOMAIN, EVENT_DEVICE_ADDED_TO_REGISTRY, + USER_AGENT, ) from .helpers import ( async_enable_statistics, @@ -466,7 +467,7 @@ async def websocket_network_status( ) return controller = driver.controller - await controller.async_get_state() + controller.update(await controller.async_get_state()) client_version_info = client.version assert client_version_info # When client is connected version info is set. data = { @@ -2064,6 +2065,7 @@ class FirmwareUploadView(HomeAssistantView): uploaded_file.filename, await hass.async_add_executor_job(uploaded_file.file.read), async_get_clientsession(hass), + additional_user_agent_components=USER_AGENT, target=target, ) except BaseZwaveJSServerError as err: diff --git a/homeassistant/components/zwave_js/const.py b/homeassistant/components/zwave_js/const.py index ff1a97d6ecc..3967709ccc8 100644 --- a/homeassistant/components/zwave_js/const.py +++ b/homeassistant/components/zwave_js/const.py @@ -1,6 +1,10 @@ """Constants for the Z-Wave JS integration.""" import logging +from homeassistant.const import APPLICATION_NAME, __version__ as HA_VERSION + +USER_AGENT = {APPLICATION_NAME: HA_VERSION} + CONF_ADDON_DEVICE = "device" CONF_ADDON_EMULATE_HARDWARE = "emulate_hardware" CONF_ADDON_LOG_LEVEL = "log_level" diff --git a/homeassistant/components/zwave_js/device_action.py b/homeassistant/components/zwave_js/device_action.py index 728b376228e..004e4cc2aae 100644 --- a/homeassistant/components/zwave_js/device_action.py +++ b/homeassistant/components/zwave_js/device_action.py @@ -9,7 +9,7 @@ import voluptuous as vol from zwave_js_server.const import CommandClass from zwave_js_server.const.command_class.lock import ATTR_CODE_SLOT, ATTR_USERCODE from zwave_js_server.const.command_class.meter import CC_SPECIFIC_METER_TYPE -from zwave_js_server.model.value import get_value_id +from zwave_js_server.model.value import get_value_id_str from zwave_js_server.util.command_class.meter import get_meter_type from homeassistant.components.lock import DOMAIN as LOCK_DOMAIN @@ -341,7 +341,7 @@ async def async_get_action_capabilities( } if action_type == SERVICE_SET_CONFIG_PARAMETER: - value_id = get_value_id( + value_id = get_value_id_str( node, CommandClass.CONFIGURATION, config[ATTR_CONFIG_PARAMETER], diff --git a/homeassistant/components/zwave_js/diagnostics.py b/homeassistant/components/zwave_js/diagnostics.py index f9a30528863..ef34a2f12de 100644 --- a/homeassistant/components/zwave_js/diagnostics.py +++ b/homeassistant/components/zwave_js/diagnostics.py @@ -19,7 +19,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers.aiohttp_client import async_get_clientsession -from .const import DATA_CLIENT, DOMAIN +from .const import DATA_CLIENT, DOMAIN, USER_AGENT from .helpers import ( get_home_and_node_id_from_device_entry, get_state_key_from_unique_id, @@ -138,7 +138,9 @@ async def async_get_config_entry_diagnostics( ) -> list[dict]: """Return diagnostics for a config entry.""" msgs: list[dict] = async_redact_data( - await dump_msgs(config_entry.data[CONF_URL], async_get_clientsession(hass)), + await dump_msgs( + config_entry.data[CONF_URL], async_get_clientsession(hass), USER_AGENT + ), KEYS_TO_REDACT, ) handshake_msgs = msgs[:-1] diff --git a/homeassistant/components/zwave_js/discovery_data_template.py b/homeassistant/components/zwave_js/discovery_data_template.py index 74847c3f4da..9ae1cd36d13 100644 --- a/homeassistant/components/zwave_js/discovery_data_template.py +++ b/homeassistant/components/zwave_js/discovery_data_template.py @@ -80,7 +80,7 @@ from zwave_js_server.model.node import Node as ZwaveNode from zwave_js_server.model.value import ( ConfigurationValue as ZwaveConfigurationValue, Value as ZwaveValue, - get_value_id, + get_value_id_str, ) from zwave_js_server.util.command_class.meter import get_meter_scale_type from zwave_js_server.util.command_class.multilevel_sensor import ( @@ -263,7 +263,7 @@ class BaseDiscoverySchemaDataTemplate: node: ZwaveNode, value_id_obj: ZwaveValueID ) -> ZwaveValue | ZwaveConfigurationValue | None: """Get a ZwaveValue from a node using a ZwaveValueDict.""" - value_id = get_value_id( + value_id = get_value_id_str( node, value_id_obj.command_class, value_id_obj.property_, diff --git a/homeassistant/components/zwave_js/entity.py b/homeassistant/components/zwave_js/entity.py index 621316a166f..53946a07982 100644 --- a/homeassistant/components/zwave_js/entity.py +++ b/homeassistant/components/zwave_js/entity.py @@ -3,7 +3,7 @@ from __future__ import annotations from zwave_js_server.const import NodeStatus from zwave_js_server.model.driver import Driver -from zwave_js_server.model.value import Value as ZwaveValue, get_value_id +from zwave_js_server.model.value import Value as ZwaveValue, get_value_id_str from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback @@ -242,7 +242,7 @@ class ZWaveBaseEntity(Entity): endpoint = self.info.primary_value.endpoint # lookup value by value_id - value_id = get_value_id( + value_id = get_value_id_str( self.info.node, command_class, value_property, @@ -256,7 +256,7 @@ class ZWaveBaseEntity(Entity): if return_value is None and check_all_endpoints: for endpoint_idx in self.info.node.endpoints: if endpoint_idx != self.info.primary_value.endpoint: - value_id = get_value_id( + value_id = get_value_id_str( self.info.node, command_class, value_property, diff --git a/homeassistant/components/zwave_js/helpers.py b/homeassistant/components/zwave_js/helpers.py index 6175b7db353..6949f3654a5 100644 --- a/homeassistant/components/zwave_js/helpers.py +++ b/homeassistant/components/zwave_js/helpers.py @@ -14,7 +14,7 @@ from zwave_js_server.model.node import Node as ZwaveNode from zwave_js_server.model.value import ( ConfigurationValue, Value as ZwaveValue, - get_value_id, + get_value_id_str, ) from homeassistant.components.group import expand_entity_ids @@ -317,7 +317,7 @@ def get_zwave_value_from_config(node: ZwaveNode, config: ConfigType) -> ZwaveVal property_key = None if config.get(ATTR_PROPERTY_KEY): property_key = config[ATTR_PROPERTY_KEY] - value_id = get_value_id( + value_id = get_value_id_str( node, config[ATTR_COMMAND_CLASS], config[ATTR_PROPERTY], diff --git a/homeassistant/components/zwave_js/manifest.json b/homeassistant/components/zwave_js/manifest.json index 7c569301831..9880d5bb5d1 100644 --- a/homeassistant/components/zwave_js/manifest.json +++ b/homeassistant/components/zwave_js/manifest.json @@ -3,7 +3,7 @@ "name": "Z-Wave", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zwave_js", - "requirements": ["pyserial==3.5", "zwave-js-server-python==0.41.1"], + "requirements": ["pyserial==3.5", "zwave-js-server-python==0.42.0"], "codeowners": ["@home-assistant/z-wave"], "dependencies": ["usb", "http", "websocket_api"], "iot_class": "local_push", diff --git a/homeassistant/components/zwave_js/services.py b/homeassistant/components/zwave_js/services.py index d60532fcf75..63a9071ffb6 100644 --- a/homeassistant/components/zwave_js/services.py +++ b/homeassistant/components/zwave_js/services.py @@ -12,7 +12,7 @@ from zwave_js_server.const import CommandClass, CommandStatus from zwave_js_server.exceptions import SetValueFailed from zwave_js_server.model.endpoint import Endpoint from zwave_js_server.model.node import Node as ZwaveNode -from zwave_js_server.model.value import ValueDataType, get_value_id +from zwave_js_server.model.value import ValueDataType, get_value_id_str from zwave_js_server.util.multicast import async_multicast_set_value from zwave_js_server.util.node import ( async_bulk_set_partial_config_parameters, @@ -497,7 +497,7 @@ class ZWaveServices: coros = [] for node in nodes: - value_id = get_value_id( + value_id = get_value_id_str( node, command_class, property_, @@ -582,13 +582,15 @@ class ZWaveServices: first_node = next( node for node in client.driver.controller.nodes.values() - if get_value_id(node, command_class, property_, endpoint, property_key) + if get_value_id_str( + node, command_class, property_, endpoint, property_key + ) in node.values ) # If value has a string type but the new value is not a string, we need to # convert it to one - value_id = get_value_id( + value_id = get_value_id_str( first_node, command_class, property_, endpoint, property_key ) if ( diff --git a/homeassistant/components/zwave_js/triggers/value_updated.py b/homeassistant/components/zwave_js/triggers/value_updated.py index 780d1251911..655d1f9070e 100644 --- a/homeassistant/components/zwave_js/triggers/value_updated.py +++ b/homeassistant/components/zwave_js/triggers/value_updated.py @@ -5,7 +5,7 @@ import functools import voluptuous as vol from zwave_js_server.const import CommandClass -from zwave_js_server.model.value import Value, get_value_id +from zwave_js_server.model.value import Value, get_value_id_str from homeassistant.const import ATTR_DEVICE_ID, ATTR_ENTITY_ID, CONF_PLATFORM, MATCH_ALL from homeassistant.core import CALLBACK_TYPE, HassJob, HomeAssistant, callback @@ -164,7 +164,9 @@ async def async_attach_trigger( device_identifier = get_device_id(driver, node) device = dev_reg.async_get_device({device_identifier}) assert device - value_id = get_value_id(node, command_class, property_, endpoint, property_key) + value_id = get_value_id_str( + node, command_class, property_, endpoint, property_key + ) value = node.values[value_id] # We need to store the current value and device for the callback unsubs.append( diff --git a/homeassistant/const.py b/homeassistant/const.py index 330f5399bc2..3c0b2a4051c 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -5,6 +5,7 @@ from typing import Final from .backports.enum import StrEnum +APPLICATION_NAME: Final = "HomeAssistant" MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 11 PATCH_VERSION: Final = "0.dev0" diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index f44b59ff077..2558b5d0896 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -16,7 +16,7 @@ from aiohttp.web_exceptions import HTTPBadGateway, HTTPGatewayTimeout import async_timeout from homeassistant import config_entries -from homeassistant.const import EVENT_HOMEASSISTANT_CLOSE, __version__ +from homeassistant.const import APPLICATION_NAME, EVENT_HOMEASSISTANT_CLOSE, __version__ from homeassistant.core import Event, HomeAssistant, callback from homeassistant.loader import bind_hass from homeassistant.util import ssl as ssl_util @@ -32,8 +32,8 @@ DATA_CONNECTOR = "aiohttp_connector" DATA_CONNECTOR_NOTVERIFY = "aiohttp_connector_notverify" DATA_CLIENTSESSION = "aiohttp_clientsession" DATA_CLIENTSESSION_NOTVERIFY = "aiohttp_clientsession_notverify" -SERVER_SOFTWARE = "HomeAssistant/{0} aiohttp/{1} Python/{2[0]}.{2[1]}".format( - __version__, aiohttp.__version__, sys.version_info +SERVER_SOFTWARE = "{0}/{1} aiohttp/{2} Python/{3[0]}.{3[1]}".format( + APPLICATION_NAME, __version__, aiohttp.__version__, sys.version_info ) WARN_CLOSE_MSG = "closes the Home Assistant aiohttp session" diff --git a/homeassistant/helpers/httpx_client.py b/homeassistant/helpers/httpx_client.py index e2ebbd31dac..b932a1cd795 100644 --- a/homeassistant/helpers/httpx_client.py +++ b/homeassistant/helpers/httpx_client.py @@ -7,7 +7,7 @@ from typing import Any import httpx -from homeassistant.const import EVENT_HOMEASSISTANT_CLOSE, __version__ +from homeassistant.const import APPLICATION_NAME, EVENT_HOMEASSISTANT_CLOSE, __version__ from homeassistant.core import Event, HomeAssistant, callback from homeassistant.loader import bind_hass @@ -15,8 +15,8 @@ from .frame import warn_use DATA_ASYNC_CLIENT = "httpx_async_client" DATA_ASYNC_CLIENT_NOVERIFY = "httpx_async_client_noverify" -SERVER_SOFTWARE = "HomeAssistant/{0} httpx/{1} Python/{2[0]}.{2[1]}".format( - __version__, httpx.__version__, sys.version_info +SERVER_SOFTWARE = "{0}/{1} httpx/{2} Python/{3[0]}.{3[1]}".format( + APPLICATION_NAME, __version__, httpx.__version__, sys.version_info ) USER_AGENT = "User-Agent" diff --git a/requirements_all.txt b/requirements_all.txt index b4690f855b7..e02de390571 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2619,7 +2619,7 @@ zigpy==0.50.3 zm-py==0.5.2 # homeassistant.components.zwave_js -zwave-js-server-python==0.41.1 +zwave-js-server-python==0.42.0 # homeassistant.components.zwave_me zwave_me_ws==0.2.6 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index dc6d6479f1e..75ff02697e9 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1811,7 +1811,7 @@ zigpy-znp==0.8.2 zigpy==0.50.3 # homeassistant.components.zwave_js -zwave-js-server-python==0.41.1 +zwave-js-server-python==0.42.0 # homeassistant.components.zwave_me zwave_me_ws==0.2.6 diff --git a/tests/components/zwave_js/test_api.py b/tests/components/zwave_js/test_api.py index ed7c23aef79..b55f4941a49 100644 --- a/tests/components/zwave_js/test_api.py +++ b/tests/components/zwave_js/test_api.py @@ -86,13 +86,18 @@ def get_device(hass, node): return dev_reg.async_get_device({device_id}) -async def test_network_status(hass, multisensor_6, integration, hass_ws_client): +async def test_network_status( + hass, multisensor_6, controller_state, integration, hass_ws_client +): """Test the network status websocket command.""" entry = integration ws_client = await hass_ws_client(hass) # Try API call with entry ID - with patch("zwave_js_server.model.controller.Controller.async_get_state"): + with patch( + "zwave_js_server.model.controller.Controller.async_get_state", + return_value=controller_state["controller"], + ): await ws_client.send_json( { ID: 1, @@ -113,7 +118,10 @@ async def test_network_status(hass, multisensor_6, integration, hass_ws_client): identifiers={(DOMAIN, "3245146787-52")}, ) assert device - with patch("zwave_js_server.model.controller.Controller.async_get_state"): + with patch( + "zwave_js_server.model.controller.Controller.async_get_state", + return_value=controller_state["controller"], + ): await ws_client.send_json( { ID: 2, @@ -2585,27 +2593,10 @@ async def test_set_config_parameter( assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -2633,27 +2624,10 @@ async def test_set_config_parameter( assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -2842,13 +2816,19 @@ async def test_firmware_upload_view( device = get_device(hass, multisensor_6) with patch( "homeassistant.components.zwave_js.api.begin_firmware_update", - ) as mock_cmd: + ) as mock_cmd, patch.dict( + "homeassistant.components.zwave_js.api.USER_AGENT", + {"HomeAssistant": "0.0.0"}, + ): resp = await client.post( f"/api/zwave_js/firmware/upload/{device.id}", data={"file": firmware_file, "target": "15"}, ) assert mock_cmd.call_args[0][1:4] == (multisensor_6, "file", bytes(10)) - assert mock_cmd.call_args[1] == {"target": 15} + assert mock_cmd.call_args[1] == { + "target": 15, + "additional_user_agent_components": {"HomeAssistant": "0.0.0"}, + } assert json.loads(await resp.text()) is None diff --git a/tests/components/zwave_js/test_climate.py b/tests/components/zwave_js/test_climate.py index e0b8dbe569f..4b4519c07b9 100644 --- a/tests/components/zwave_js/test_climate.py +++ b/tests/components/zwave_js/test_climate.py @@ -86,21 +86,9 @@ async def test_thermostat_v2( assert args["command"] == "node.set_value" assert args["nodeId"] == 13 assert args["valueId"] == { - "commandClassName": "Thermostat Mode", "commandClass": 64, "endpoint": 1, "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"}, - }, - "value": 1, } assert args["value"] == 2 @@ -123,42 +111,19 @@ async def test_thermostat_v2( assert args["command"] == "node.set_value" assert args["nodeId"] == 13 assert args["valueId"] == { - "commandClassName": "Thermostat Mode", "commandClass": 64, "endpoint": 1, "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"}, - }, - "value": 1, } assert args["value"] == 2 args = client.async_send_command.call_args_list[1][0][0] assert args["command"] == "node.set_value" assert args["nodeId"] == 13 assert args["valueId"] == { - "commandClassName": "Thermostat Setpoint", "commandClass": 67, "endpoint": 1, "property": "setpoint", "propertyKey": 1, - "propertyName": "setpoint", - "propertyKeyName": "Heating", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "unit": "°F", - "ccSpecific": {"setpointType": 1}, - }, - "value": 72, } assert args["value"] == 77 @@ -232,21 +197,10 @@ async def test_thermostat_v2( assert args["command"] == "node.set_value" assert args["nodeId"] == 13 assert args["valueId"] == { - "commandClassName": "Thermostat Setpoint", "commandClass": 67, "endpoint": 1, "property": "setpoint", "propertyKey": 1, - "propertyName": "setpoint", - "propertyKeyName": "Heating", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "unit": "°F", - "ccSpecific": {"setpointType": 1}, - }, - "value": 72, } assert args["value"] == 77 @@ -254,21 +208,10 @@ async def test_thermostat_v2( assert args["command"] == "node.set_value" assert args["nodeId"] == 13 assert args["valueId"] == { - "commandClassName": "Thermostat Setpoint", "commandClass": 67, "endpoint": 1, "property": "setpoint", "propertyKey": 2, - "propertyName": "setpoint", - "propertyKeyName": "Cooling", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "unit": "°F", - "ccSpecific": {"setpointType": 2}, - }, - "value": 73, } assert args["value"] == 86 @@ -306,20 +249,7 @@ async def test_thermostat_v2( assert args["valueId"] == { "endpoint": 1, "commandClass": 68, - "commandClassName": "Thermostat Fan Mode", "property": "mode", - "propertyName": "mode", - "ccVersion": 0, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "states": {"0": "Auto low", "1": "Low"}, - "label": "Thermostat fan mode", - }, - "value": 0, } assert args["value"] == 1 @@ -408,20 +338,8 @@ async def test_setpoint_thermostat(hass, client, climate_danfoss_lc_13, integrat assert args["valueId"] == { "endpoint": 0, "commandClass": 67, - "commandClassName": "Thermostat Setpoint", "property": "setpoint", - "propertyName": "setpoint", "propertyKey": 1, - "propertyKeyName": "Heating", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "unit": "\u00b0C", - "ccSpecific": {"setpointType": 1}, - }, - "value": 14, } assert args["value"] == 21.5 @@ -627,27 +545,9 @@ async def test_preset_and_no_setpoint( assert args["command"] == "node.set_value" assert args["nodeId"] == 8 assert args["valueId"] == { - "commandClassName": "Thermostat Mode", "commandClass": 64, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "ccVersion": 3, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 31, - "label": "Thermostat mode", - "states": { - "0": "Off", - "1": "Heat", - "11": "Energy heat", - "15": "Full power", - }, - }, - "value": 1, } assert args["value"] == 15 diff --git a/tests/components/zwave_js/test_cover.py b/tests/components/zwave_js/test_cover.py index 0958e259ab0..54f71fa00d3 100644 --- a/tests/components/zwave_js/test_cover.py +++ b/tests/components/zwave_js/test_cover.py @@ -50,20 +50,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 6 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "label": "Target value", - }, } assert args["value"] == 50 @@ -82,20 +71,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 6 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "label": "Target value", - }, } assert args["value"] == 0 @@ -114,20 +92,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 6 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "label": "Target value", - }, } assert args["value"] @@ -145,18 +112,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert open_args["command"] == "node.set_value" assert open_args["nodeId"] == 6 assert open_args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "Open", - "propertyName": "Open", - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (Open)", - "ccSpecific": {"switchType": 3}, - }, } assert not open_args["value"] @@ -164,18 +122,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert close_args["command"] == "node.set_value" assert close_args["nodeId"] == 6 assert close_args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "Close", - "propertyName": "Close", - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (Close)", - "ccSpecific": {"switchType": 3}, - }, } assert not close_args["value"] @@ -215,20 +164,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 6 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "label": "Target value", - }, } assert args["value"] == 0 @@ -247,18 +185,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert open_args["command"] == "node.set_value" assert open_args["nodeId"] == 6 assert open_args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "Open", - "propertyName": "Open", - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (Open)", - "ccSpecific": {"switchType": 3}, - }, } assert not open_args["value"] @@ -266,18 +195,9 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration): assert close_args["command"] == "node.set_value" assert close_args["nodeId"] == 6 assert close_args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "Close", - "propertyName": "Close", - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (Close)", - "ccSpecific": {"switchType": 3}, - }, } assert not close_args["value"] @@ -332,21 +252,8 @@ async def test_fibaro_FGR222_shutter_cover( assert args["valueId"] == { "endpoint": 0, "commandClass": 145, - "commandClassName": "Manufacturer Proprietary", "property": "fibaro", "propertyKey": "venetianBlindsTilt", - "propertyName": "fibaro", - "propertyKeyName": "venetianBlindsTilt", - "ccVersion": 0, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Venetian blinds tilt", - "min": 0, - "max": 99, - }, - "value": 0, } assert args["value"] == 99 @@ -366,21 +273,8 @@ async def test_fibaro_FGR222_shutter_cover( assert args["valueId"] == { "endpoint": 0, "commandClass": 145, - "commandClassName": "Manufacturer Proprietary", "property": "fibaro", "propertyKey": "venetianBlindsTilt", - "propertyName": "fibaro", - "propertyKeyName": "venetianBlindsTilt", - "ccVersion": 0, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Venetian blinds tilt", - "min": 0, - "max": 99, - }, - "value": 0, } assert args["value"] == 0 @@ -411,23 +305,9 @@ async def test_aeotec_nano_shutter_cover( assert args["command"] == "node.set_value" assert args["nodeId"] == 3 assert args["valueId"] == { - "ccVersion": 4, - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "value": 0, - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "valueChangeOptions": ["transitionDuration"], - "readable": True, - "writeable": True, - "label": "Target value", - }, } assert args["value"] @@ -445,20 +325,9 @@ async def test_aeotec_nano_shutter_cover( assert open_args["command"] == "node.set_value" assert open_args["nodeId"] == 3 assert open_args["valueId"] == { - "ccVersion": 4, - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "On", - "propertyName": "On", - "value": False, - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (On)", - "ccSpecific": {"switchType": 1}, - }, } assert not open_args["value"] @@ -466,20 +335,9 @@ async def test_aeotec_nano_shutter_cover( assert close_args["command"] == "node.set_value" assert close_args["nodeId"] == 3 assert close_args["valueId"] == { - "ccVersion": 4, - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "Off", - "propertyName": "Off", - "value": False, - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (Off)", - "ccSpecific": {"switchType": 1}, - }, } assert not close_args["value"] @@ -520,23 +378,9 @@ async def test_aeotec_nano_shutter_cover( assert args["command"] == "node.set_value" assert args["nodeId"] == 3 assert args["valueId"] == { - "ccVersion": 4, - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "value": 0, - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - "label": "Target value", - }, } assert args["value"] == 0 @@ -555,20 +399,9 @@ async def test_aeotec_nano_shutter_cover( assert open_args["command"] == "node.set_value" assert open_args["nodeId"] == 3 assert open_args["valueId"] == { - "ccVersion": 4, - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "On", - "propertyName": "On", - "value": False, - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (On)", - "ccSpecific": {"switchType": 1}, - }, } assert not open_args["value"] @@ -576,20 +409,9 @@ async def test_aeotec_nano_shutter_cover( assert close_args["command"] == "node.set_value" assert close_args["nodeId"] == 3 assert close_args["valueId"] == { - "ccVersion": 4, - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "Off", - "propertyName": "Off", - "value": False, - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Perform a level change (Off)", - "ccSpecific": {"switchType": 1}, - }, } assert not close_args["value"] @@ -631,21 +453,9 @@ async def test_motor_barrier_cover(hass, client, gdc_zw062, integration): assert args["nodeId"] == 12 assert args["value"] == 255 assert args["valueId"] == { - "ccVersion": 0, "commandClass": 102, - "commandClassName": "Barrier Operator", "endpoint": 0, - "metadata": { - "label": "Target Barrier State", - "max": 255, - "min": 0, - "readable": True, - "states": {"0": "Closed", "255": "Open"}, - "type": "number", - "writeable": True, - }, "property": "targetState", - "propertyName": "targetState", } # state doesn't change until currentState value update is received @@ -665,21 +475,9 @@ async def test_motor_barrier_cover(hass, client, gdc_zw062, integration): assert args["nodeId"] == 12 assert args["value"] == 0 assert args["valueId"] == { - "ccVersion": 0, "commandClass": 102, - "commandClassName": "Barrier Operator", "endpoint": 0, - "metadata": { - "label": "Target Barrier State", - "max": 255, - "min": 0, - "readable": True, - "states": {"0": "Closed", "255": "Open"}, - "type": "number", - "writeable": True, - }, "property": "targetState", - "propertyName": "targetState", } # state doesn't change until currentState value update is received diff --git a/tests/components/zwave_js/test_fan.py b/tests/components/zwave_js/test_fan.py index 97b4a0074bc..2e200d9e4e9 100644 --- a/tests/components/zwave_js/test_fan.py +++ b/tests/components/zwave_js/test_fan.py @@ -54,19 +54,9 @@ async def test_generic_fan(hass, client, fan_generic, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 17 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - }, } assert args["value"] == 66 @@ -96,19 +86,9 @@ async def test_generic_fan(hass, client, fan_generic, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 17 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - }, } assert args["value"] == 255 @@ -127,19 +107,9 @@ async def test_generic_fan(hass, client, fan_generic, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 17 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - }, } assert args["value"] == 0 @@ -602,22 +572,9 @@ async def test_thermostat_fan(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 3, - "commandClassName": "Thermostat Fan Mode", "commandClass": CommandClass.THERMOSTAT_FAN_MODE.value, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "label": "Thermostat fan mode", - "max": 255, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "states": {"0": "Auto low", "1": "Low", "6": "Circulation"}, - }, - "value": 0, } assert args["value"] == 1 @@ -647,19 +604,9 @@ async def test_thermostat_fan(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 3, - "commandClassName": "Thermostat Fan Mode", "commandClass": CommandClass.THERMOSTAT_FAN_MODE.value, "endpoint": 0, "property": "off", - "propertyName": "off", - "metadata": { - "label": "Thermostat fan turned off", - "type": "boolean", - "readable": True, - "writeable": True, - }, - "value": False, } assert args["value"] @@ -678,19 +625,9 @@ async def test_thermostat_fan(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 3, - "commandClassName": "Thermostat Fan Mode", "commandClass": CommandClass.THERMOSTAT_FAN_MODE.value, "endpoint": 0, "property": "off", - "propertyName": "off", - "metadata": { - "label": "Thermostat fan turned off", - "type": "boolean", - "readable": True, - "writeable": True, - }, - "value": False, } assert not args["value"] diff --git a/tests/components/zwave_js/test_humidifier.py b/tests/components/zwave_js/test_humidifier.py index 37280ff5ad4..7952f639fe6 100644 --- a/tests/components/zwave_js/test_humidifier.py +++ b/tests/components/zwave_js/test_humidifier.py @@ -56,24 +56,10 @@ async def test_humidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 1, - "commandClassName": "Humidity Control Setpoint", "commandClass": CommandClass.HUMIDITY_CONTROL_SETPOINT, "endpoint": 0, "property": "setpoint", "propertyKey": 1, - "propertyName": "setpoint", - "propertyKeyName": "Humidifier", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "unit": "%", - "min": 10, - "max": 70, - "ccSpecific": {"setpointType": 1}, - }, - "value": 35, } assert args["value"] == 41 @@ -186,22 +172,9 @@ async def test_humidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.HUMIDIFY), } assert args["value"] == int(HumidityControlMode.OFF) @@ -239,22 +212,9 @@ async def test_humidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.AUTO), } assert args["value"] == int(HumidityControlMode.DEHUMIDIFY) @@ -416,22 +376,9 @@ async def test_humidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.DEHUMIDIFY), } assert args["value"] == int(HumidityControlMode.AUTO) @@ -469,22 +416,9 @@ async def test_humidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.OFF), } assert args["value"] == int(HumidityControlMode.HUMIDIFY) @@ -570,22 +504,9 @@ async def test_humidifier_missing_mode( assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.AUTO), } assert args["value"] == int(HumidityControlMode.OFF) @@ -623,24 +544,10 @@ async def test_dehumidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 1, - "commandClassName": "Humidity Control Setpoint", "commandClass": CommandClass.HUMIDITY_CONTROL_SETPOINT, "endpoint": 0, "property": "setpoint", "propertyKey": 2, - "propertyName": "setpoint", - "propertyKeyName": "De-humidifier", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "unit": "%", - "min": 30, - "max": 90, - "ccSpecific": {"setpointType": 2}, - }, - "value": 60, } assert args["value"] == 41 @@ -753,22 +660,9 @@ async def test_dehumidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.DEHUMIDIFY), } assert args["value"] == int(HumidityControlMode.OFF) @@ -806,22 +700,9 @@ async def test_dehumidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.AUTO), } assert args["value"] == int(HumidityControlMode.HUMIDIFY) @@ -983,22 +864,9 @@ async def test_dehumidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.HUMIDIFY), } assert args["value"] == int(HumidityControlMode.AUTO) @@ -1036,21 +904,8 @@ async def test_dehumidifier(hass, client, climate_adc_t3000, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 68 assert args["valueId"] == { - "ccVersion": 2, - "commandClassName": "Humidity Control Mode", "commandClass": CommandClass.HUMIDITY_CONTROL_MODE, "endpoint": 0, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Humidity control mode", - "states": {"0": "Off", "1": "Humidify", "2": "De-humidify", "3": "Auto"}, - }, - "value": int(HumidityControlMode.OFF), } assert args["value"] == int(HumidityControlMode.DEHUMIDIFY) diff --git a/tests/components/zwave_js/test_init.py b/tests/components/zwave_js/test_init.py index c69c5a09f89..4f58c87febb 100644 --- a/tests/components/zwave_js/test_init.py +++ b/tests/components/zwave_js/test_init.py @@ -8,6 +8,7 @@ from zwave_js_server.client import Client from zwave_js_server.event import Event from zwave_js_server.exceptions import BaseZwaveJSServerError, InvalidServerVersion from zwave_js_server.model.node import Node +from zwave_js_server.model.version import VersionInfo from homeassistant.components.hassio.handler import HassioAPIError from homeassistant.components.zwave_js import DOMAIN @@ -667,6 +668,7 @@ async def test_update_addon( backup_calls, update_addon_side_effect, create_backup_side_effect, + version_state, ): """Test update the Z-Wave JS add-on during entry setup.""" device = "/test" @@ -677,7 +679,9 @@ async def test_update_addon( addon_info.return_value["update_available"] = update_available create_backup.side_effect = create_backup_side_effect update_addon.side_effect = update_addon_side_effect - client.connect.side_effect = InvalidServerVersion("Invalid version") + client.connect.side_effect = InvalidServerVersion( + VersionInfo("a", "b", 1, 1, 1), 1, "Invalid version" + ) entry = MockConfigEntry( domain=DOMAIN, title="Z-Wave JS", @@ -703,7 +707,9 @@ async def test_issue_registry(hass, client, version_state): device = "/test" network_key = "abc123" - client.connect.side_effect = InvalidServerVersion("Invalid version") + client.connect.side_effect = InvalidServerVersion( + VersionInfo("a", "b", 1, 1, 1), 1, "Invalid version" + ) entry = MockConfigEntry( domain=DOMAIN, diff --git a/tests/components/zwave_js/test_light.py b/tests/components/zwave_js/test_light.py index d2434f01963..cd7d9e91459 100644 --- a/tests/components/zwave_js/test_light.py +++ b/tests/components/zwave_js/test_light.py @@ -60,20 +60,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 39 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == 255 @@ -92,20 +81,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 39 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == 255 assert args["options"]["transitionDuration"] == "10s" @@ -164,20 +142,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 39 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == 50 assert args["options"]["transitionDuration"] == "default" @@ -201,20 +168,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 39 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == 50 assert args["options"]["transitionDuration"] == "20s" @@ -233,12 +189,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): args = client.async_send_command.call_args_list[0][0][0] assert args["command"] == "node.set_value" assert args["nodeId"] == 39 - assert args["valueId"]["commandClassName"] == "Color Switch" assert args["valueId"]["commandClass"] == 51 assert args["valueId"]["endpoint"] == 0 - assert args["valueId"]["metadata"]["label"] == "Target Color" assert args["valueId"]["property"] == "targetColor" - assert args["valueId"]["propertyName"] == "targetColor" assert args["value"] == { "blue": 255, "coldWhite": 0, @@ -332,12 +285,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): args = client.async_send_command.call_args_list[0][0][0] # red 0 assert args["command"] == "node.set_value" assert args["nodeId"] == 39 - assert args["valueId"]["commandClassName"] == "Color Switch" assert args["valueId"]["commandClass"] == 51 assert args["valueId"]["endpoint"] == 0 - assert args["valueId"]["metadata"]["label"] == "Target Color" assert args["valueId"]["property"] == "targetColor" - assert args["valueId"]["propertyName"] == "targetColor" assert args["value"] == { "blue": 0, "coldWhite": 235, @@ -438,20 +388,9 @@ async def test_light(hass, client, bulb_6_multi_color, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 39 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == 0 @@ -493,20 +432,9 @@ async def test_rgbw_light(hass, client, zen_31, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 94 assert args["valueId"] == { - "commandClassName": "Color Switch", "commandClass": 51, "endpoint": 1, "property": "targetColor", - "propertyName": "targetColor", - "ccVersion": 0, - "metadata": { - "label": "Target Color", - "type": "any", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, - "value": {"blue": 70, "green": 159, "red": 255, "warmWhite": 141}, } assert args["value"] == {"blue": 0, "green": 0, "red": 0, "warmWhite": 128} @@ -514,22 +442,9 @@ async def test_rgbw_light(hass, client, zen_31, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 94 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 1, "property": "targetValue", - "propertyName": "targetValue", - "ccVersion": 0, - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, - "value": 59, } assert args["value"] == 255 @@ -565,19 +480,9 @@ async def test_black_is_off(hass, client, express_controls_ezmultipli, integrati assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id assert args["valueId"] == { - "commandClassName": "Color Switch", "commandClass": 51, "endpoint": 0, "property": "targetColor", - "propertyName": "targetColor", - "ccVersion": 1, - "metadata": { - "label": "Target Color", - "type": "any", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == {"red": 255, "green": 255, "blue": 255} @@ -656,19 +561,9 @@ async def test_black_is_off(hass, client, express_controls_ezmultipli, integrati assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id assert args["valueId"] == { - "commandClassName": "Color Switch", "commandClass": 51, "endpoint": 0, "property": "targetColor", - "propertyName": "targetColor", - "ccVersion": 1, - "metadata": { - "label": "Target Color", - "type": "any", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == {"red": 0, "green": 0, "blue": 0} @@ -686,19 +581,9 @@ async def test_black_is_off(hass, client, express_controls_ezmultipli, integrati assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id assert args["valueId"] == { - "commandClassName": "Color Switch", "commandClass": 51, "endpoint": 0, "property": "targetColor", - "propertyName": "targetColor", - "ccVersion": 1, - "metadata": { - "label": "Target Color", - "type": "any", - "readable": True, - "writeable": True, - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == {"red": 0, "green": 255, "blue": 0} diff --git a/tests/components/zwave_js/test_lock.py b/tests/components/zwave_js/test_lock.py index 2bf4cff8b5b..5f35a568f37 100644 --- a/tests/components/zwave_js/test_lock.py +++ b/tests/components/zwave_js/test_lock.py @@ -44,29 +44,9 @@ async def test_door_lock(hass, client, lock_schlage_be469, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 20 assert args["valueId"] == { - "commandClassName": "Door Lock", "commandClass": 98, "endpoint": 0, "property": "targetMode", - "propertyName": "targetMode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Target lock mode", - "states": { - "0": "Unsecured", - "1": "UnsecuredWithTimeout", - "16": "InsideUnsecured", - "17": "InsideUnsecuredWithTimeout", - "32": "OutsideUnsecured", - "33": "OutsideUnsecuredWithTimeout", - "254": "Unknown", - "255": "Secured", - }, - }, } assert args["value"] == 255 @@ -109,29 +89,9 @@ async def test_door_lock(hass, client, lock_schlage_be469, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 20 assert args["valueId"] == { - "commandClassName": "Door Lock", "commandClass": 98, "endpoint": 0, "property": "targetMode", - "propertyName": "targetMode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Target lock mode", - "states": { - "0": "Unsecured", - "1": "UnsecuredWithTimeout", - "16": "InsideUnsecured", - "17": "InsideUnsecuredWithTimeout", - "32": "OutsideUnsecured", - "33": "OutsideUnsecuredWithTimeout", - "254": "Unknown", - "255": "Secured", - }, - }, } assert args["value"] == 0 @@ -154,22 +114,10 @@ async def test_door_lock(hass, client, lock_schlage_be469, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 20 assert args["valueId"] == { - "commandClassName": "User Code", "commandClass": 99, "endpoint": 0, "property": "userCode", - "propertyName": "userCode", "propertyKey": 1, - "propertyKeyName": "1", - "metadata": { - "type": "string", - "readable": True, - "writeable": True, - "minLength": 4, - "maxLength": 10, - "label": "User Code (1)", - }, - "value": "**********", } assert args["value"] == "1234" @@ -188,25 +136,10 @@ async def test_door_lock(hass, client, lock_schlage_be469, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 20 assert args["valueId"] == { - "commandClassName": "User Code", "commandClass": 99, "endpoint": 0, "property": "userIdStatus", - "propertyName": "userIdStatus", "propertyKey": 1, - "propertyKeyName": "1", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "User ID status (1)", - "states": { - "0": "Available", - "1": "Enabled", - "2": "Disabled", - }, - }, - "value": 1, } assert args["value"] == 0 diff --git a/tests/components/zwave_js/test_number.py b/tests/components/zwave_js/test_number.py index e987bfbebc6..e36bd081b18 100644 --- a/tests/components/zwave_js/test_number.py +++ b/tests/components/zwave_js/test_number.py @@ -31,21 +31,9 @@ async def test_number(hass, client, aeotec_radiator_thermostat, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 4 assert args["valueId"] == { - "commandClassName": "Multilevel Switch", "commandClass": 38, - "ccVersion": 1, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "label": "Target value", - "max": 99, - "min": 0, - "type": "number", - "readable": True, - "writeable": True, - "label": "Target value", - }, } assert args["value"] == 30.0 @@ -101,20 +89,7 @@ async def test_volume_number(hass, client, aeotec_zw164_siren, integration): assert args["valueId"] == { "endpoint": 2, "commandClass": 121, - "commandClassName": "Sound Switch", "property": "defaultVolume", - "propertyName": "defaultVolume", - "ccVersion": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Default volume", - "min": 0, - "max": 100, - "unit": "%", - }, - "value": 100, } assert args["value"] == 30 diff --git a/tests/components/zwave_js/test_select.py b/tests/components/zwave_js/test_select.py index e5b415d1341..1cf5fb54304 100644 --- a/tests/components/zwave_js/test_select.py +++ b/tests/components/zwave_js/test_select.py @@ -81,19 +81,7 @@ async def test_default_tone_select( assert args["valueId"] == { "endpoint": 2, "commandClass": 121, - "commandClassName": "Sound Switch", "property": "defaultToneId", - "propertyName": "defaultToneId", - "ccVersion": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Default tone ID", - "min": 0, - "max": 254, - }, - "value": 17, } assert args["value"] == 30 @@ -164,22 +152,7 @@ async def test_protection_select( assert args["valueId"] == { "endpoint": 0, "commandClass": 117, - "commandClassName": "Protection", "property": "local", - "propertyName": "local", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Local protection state", - "states": { - "0": "Unprotected", - "1": "ProtectedBySequence", - "2": "NoOperationPossible", - }, - }, - "value": 0, } assert args["value"] == 1 @@ -264,19 +237,7 @@ async def test_multilevel_switch_select(hass, client, fortrezz_ssa1_siren, integ assert args["valueId"] == { "endpoint": 0, "commandClass": 38, - "commandClassName": "Multilevel Switch", "property": "targetValue", - "propertyName": "targetValue", - "ccVersion": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Target value", - "valueChangeOptions": ["transitionDuration"], - "min": 0, - "max": 99, - }, } assert args["value"] == 33 diff --git a/tests/components/zwave_js/test_services.py b/tests/components/zwave_js/test_services.py index b5ef083bf64..6e425bff042 100644 --- a/tests/components/zwave_js/test_services.py +++ b/tests/components/zwave_js/test_services.py @@ -78,27 +78,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -122,27 +105,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -165,27 +131,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -208,27 +157,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 41, - "propertyName": "Temperature Threshold (Unit)", "propertyKey": 15, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 3, - "min": 1, - "max": 2, - "default": 1, - "format": 0, - "allowManualEntry": False, - "states": {"1": "Celsius", "2": "Fahrenheit"}, - "label": "Temperature Threshold (Unit)", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 2 @@ -254,27 +186,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 41, - "propertyName": "Temperature Threshold (Unit)", "propertyKey": 15, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 3, - "min": 1, - "max": 2, - "default": 1, - "format": 0, - "allowManualEntry": False, - "states": {"1": "Celsius", "2": "Fahrenheit"}, - "label": "Temperature Threshold (Unit)", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 2 @@ -298,27 +213,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -344,27 +242,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -431,27 +312,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -477,27 +341,10 @@ async def test_set_config_parameter(hass, client, multisensor_6, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, - "propertyName": "Group 2: Send battery reports", "propertyKey": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 @@ -551,32 +398,7 @@ async def test_set_config_parameter_gather( assert args["valueId"] == { "endpoint": 0, "commandClass": 112, - "commandClassName": "Configuration", "property": 1, - "propertyName": "Temperature Reporting Threshold", - "ccVersion": 1, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "description": "Reporting threshold for changes in the ambient temperature", - "label": "Temperature Reporting Threshold", - "default": 2, - "min": 0, - "max": 4, - "states": { - "0": "Disabled", - "1": "0.5\u00b0 F", - "2": "1.0\u00b0 F", - "3": "1.5\u00b0 F", - "4": "2.0\u00b0 F", - }, - "valueSize": 1, - "format": 0, - "allowManualEntry": False, - "isFromConfig": True, - }, - "value": 1, } assert args["value"] == 1 @@ -847,26 +669,9 @@ async def test_refresh_value( assert args["command"] == "node.poll_value" assert args["nodeId"] == 26 assert args["valueId"] == { - "commandClassName": "Thermostat Mode", "commandClass": 64, "endpoint": 1, "property": "mode", - "propertyName": "mode", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "min": 0, - "max": 255, - "label": "Thermostat mode", - "states": { - "0": "Off", - "1": "Heat", - "2": "Cool", - }, - }, - "value": 2, - "ccVersion": 0, } client.async_send_command.reset_mock() @@ -950,20 +755,9 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 5 assert args["valueId"] == { - "commandClassName": "Protection", "commandClass": 117, "endpoint": 0, "property": "local", - "propertyName": "local", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Local protection state", - "states": {"0": "Unprotected", "2": "NoOperationPossible"}, - }, - "value": 0, } assert args["value"] == 2 @@ -988,20 +782,9 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 5 assert args["valueId"] == { - "commandClassName": "Protection", "commandClass": 117, "endpoint": 0, "property": "local", - "propertyName": "local", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Local protection state", - "states": {"0": "Unprotected", "2": "NoOperationPossible"}, - }, - "value": 0, } assert args["value"] == 2 @@ -1029,20 +812,9 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 5 assert args["valueId"] == { - "commandClassName": "Protection", "commandClass": 117, "endpoint": 0, "property": "local", - "propertyName": "local", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Local protection state", - "states": {"0": "Unprotected", "2": "NoOperationPossible"}, - }, - "value": 0, } assert args["value"] == 2 @@ -1069,20 +841,9 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 5 assert args["valueId"] == { - "commandClassName": "Protection", "commandClass": 117, "endpoint": 0, "property": "local", - "propertyName": "local", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Local protection state", - "states": {"0": "Unprotected", "2": "NoOperationPossible"}, - }, - "value": 0, } assert args["value"] == 2 @@ -1111,20 +872,9 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration): assert args["command"] == "node.set_value" assert args["nodeId"] == 5 assert args["valueId"] == { - "commandClassName": "Protection", "commandClass": 117, "endpoint": 0, "property": "local", - "propertyName": "local", - "ccVersion": 2, - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "label": "Local protection state", - "states": {"0": "Unprotected", "2": "NoOperationPossible"}, - }, - "value": 0, } assert args["value"] == 2 @@ -1170,22 +920,10 @@ async def test_set_value_string( assert args["command"] == "node.set_value" assert args["nodeId"] == lock_schlage_be469.node_id assert args["valueId"] == { - "commandClassName": "User Code", "commandClass": 99, "endpoint": 0, "property": "userCode", - "propertyName": "userCode", "propertyKey": 1, - "propertyKeyName": "1", - "metadata": { - "type": "string", - "readable": True, - "writeable": True, - "minLength": 4, - "maxLength": 10, - "label": "User Code (1)", - }, - "value": "**********", } assert args["value"] == "12345" @@ -1212,17 +950,7 @@ async def test_set_value_options(hass, client, aeon_smart_switch_6, integration) assert args["valueId"] == { "endpoint": 0, "commandClass": 37, - "commandClassName": "Binary Switch", "property": "targetValue", - "propertyName": "targetValue", - "ccVersion": 1, - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Target value", - "valueChangeOptions": ["transitionDuration"], - }, } assert args["value"] == 2 assert args["options"] == {"transitionDuration": 1} @@ -1263,27 +991,10 @@ async def test_set_value_gather( assert args["command"] == "node.set_value" assert args["nodeId"] == 52 assert args["valueId"] == { - "commandClassName": "Configuration", "commandClass": 112, "endpoint": 0, "property": 102, "propertyKey": 1, - "propertyName": "Group 2: Send battery reports", - "metadata": { - "type": "number", - "readable": True, - "writeable": True, - "valueSize": 4, - "min": 0, - "max": 1, - "default": 1, - "format": 0, - "allowManualEntry": True, - "label": "Group 2: Send battery reports", - "description": "Include battery information in periodic reports to Group 2", - "isFromConfig": True, - }, - "value": 0, } assert args["value"] == 1 diff --git a/tests/components/zwave_js/test_siren.py b/tests/components/zwave_js/test_siren.py index 3284526aa0f..75d43c545bd 100644 --- a/tests/components/zwave_js/test_siren.py +++ b/tests/components/zwave_js/test_siren.py @@ -115,7 +115,11 @@ async def test_siren(hass, client, aeotec_zw164_siren, integration): args = client.async_send_command.call_args[0][0] assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id - assert args["valueId"] == TONE_ID_VALUE_ID + assert args["valueId"] == { + "endpoint": 2, + "commandClass": 121, + "property": "toneId", + } assert args["value"] == 255 client.async_send_command.reset_mock() @@ -159,7 +163,11 @@ async def test_siren(hass, client, aeotec_zw164_siren, integration): args = client.async_send_command.call_args[0][0] assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id - assert args["valueId"] == {**TONE_ID_VALUE_ID, "value": 255} + assert args["valueId"] == { + "endpoint": 2, + "commandClass": 121, + "property": "toneId", + } assert args["value"] == 1 assert args["options"] == {"volume": 50} @@ -181,7 +189,11 @@ async def test_siren(hass, client, aeotec_zw164_siren, integration): args = client.async_send_command.call_args[0][0] assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id - assert args["valueId"] == {**TONE_ID_VALUE_ID, "value": 255} + assert args["valueId"] == { + "endpoint": 2, + "commandClass": 121, + "property": "toneId", + } assert args["value"] == 1 assert args["options"] == {"volume": 50} @@ -199,7 +211,11 @@ async def test_siren(hass, client, aeotec_zw164_siren, integration): args = client.async_send_command.call_args[0][0] assert args["command"] == "node.set_value" assert args["nodeId"] == node.node_id - assert args["valueId"] == {**TONE_ID_VALUE_ID, "value": 255} + assert args["valueId"] == { + "endpoint": 2, + "commandClass": 121, + "property": "toneId", + } assert args["value"] == 0 client.async_send_command.reset_mock() diff --git a/tests/components/zwave_js/test_switch.py b/tests/components/zwave_js/test_switch.py index ea6e27d9b72..b84ab32f618 100644 --- a/tests/components/zwave_js/test_switch.py +++ b/tests/components/zwave_js/test_switch.py @@ -25,18 +25,9 @@ async def test_switch(hass, hank_binary_switch, integration, client): assert args["command"] == "node.set_value" assert args["nodeId"] == 32 assert args["valueId"] == { - "commandClassName": "Binary Switch", "commandClass": 37, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Target value", - }, - "value": False, } assert args["value"] is True @@ -72,18 +63,9 @@ async def test_switch(hass, hank_binary_switch, integration, client): assert args["command"] == "node.set_value" assert args["nodeId"] == 32 assert args["valueId"] == { - "commandClassName": "Binary Switch", "commandClass": 37, "endpoint": 0, "property": "targetValue", - "propertyName": "targetValue", - "metadata": { - "type": "boolean", - "readable": True, - "writeable": True, - "label": "Target value", - }, - "value": False, } assert args["value"] is False @@ -108,24 +90,10 @@ async def test_barrier_signaling_switch(hass, gdc_zw062, integration, client): assert args["nodeId"] == 12 assert args["value"] == 0 assert args["valueId"] == { - "ccVersion": 0, "commandClass": 102, - "commandClassName": "Barrier Operator", "endpoint": 0, - "metadata": { - "label": "Signaling State (Visual)", - "max": 255, - "min": 0, - "readable": True, - "states": {"0": "Off", "255": "On"}, - "type": "number", - "writeable": True, - }, "property": "signalingState", "propertyKey": 2, - "propertyKeyName": "2", - "propertyName": "signalingState", - "value": 255, } # state change is optimistic and writes state @@ -149,24 +117,10 @@ async def test_barrier_signaling_switch(hass, gdc_zw062, integration, client): assert args["nodeId"] == 12 assert args["value"] == 255 assert args["valueId"] == { - "ccVersion": 0, "commandClass": 102, - "commandClassName": "Barrier Operator", "endpoint": 0, - "metadata": { - "label": "Signaling State (Visual)", - "max": 255, - "min": 0, - "readable": True, - "states": {"0": "Off", "255": "On"}, - "type": "number", - "writeable": True, - }, "property": "signalingState", "propertyKey": 2, - "propertyKeyName": "2", - "propertyName": "signalingState", - "value": 255, } # state change is optimistic and writes state -- GitLab