diff --git a/homeassistant/components/zha/strings.json b/homeassistant/components/zha/strings.json index 8909af8a5ba..a4a53b3c1b4 100644 --- a/homeassistant/components/zha/strings.json +++ b/homeassistant/components/zha/strings.json @@ -328,7 +328,7 @@ }, "manufacturer": { "name": "Manufacturer", - "description": "Manufacturer code." + "description": "Manufacturer code. Use a value of \"-1\" to force no code to be set." } } }, diff --git a/homeassistant/components/zha/websocket_api.py b/homeassistant/components/zha/websocket_api.py index 51941248f03..447aa5efd0f 100644 --- a/homeassistant/components/zha/websocket_api.py +++ b/homeassistant/components/zha/websocket_api.py @@ -161,7 +161,9 @@ SERVICE_SCHEMAS = { vol.Optional(ATTR_CLUSTER_TYPE, default=CLUSTER_TYPE_IN): cv.string, vol.Required(ATTR_ATTRIBUTE): vol.Any(cv.positive_int, str), vol.Required(ATTR_VALUE): vol.Any(int, cv.boolean, cv.string), - vol.Optional(ATTR_MANUFACTURER): cv.positive_int, + vol.Optional(ATTR_MANUFACTURER): vol.All( + vol.Coerce(int), vol.Range(min=-1) + ), } ), SERVICE_WARNING_DEVICE_SQUAWK: vol.Schema( @@ -210,7 +212,9 @@ SERVICE_SCHEMAS = { vol.Required(ATTR_COMMAND_TYPE): cv.string, vol.Exclusive(ATTR_ARGS, "attrs_params"): _ensure_list_if_present, vol.Exclusive(ATTR_PARAMS, "attrs_params"): dict, - vol.Optional(ATTR_MANUFACTURER): cv.positive_int, + vol.Optional(ATTR_MANUFACTURER): vol.All( + vol.Coerce(int), vol.Range(min=-1) + ), } ), cv.deprecated(ATTR_ARGS), @@ -223,7 +227,9 @@ SERVICE_SCHEMAS = { vol.Optional(ATTR_CLUSTER_TYPE, default=CLUSTER_TYPE_IN): cv.string, vol.Required(ATTR_COMMAND): cv.positive_int, vol.Optional(ATTR_ARGS, default=[]): cv.ensure_list, - vol.Optional(ATTR_MANUFACTURER): cv.positive_int, + vol.Optional(ATTR_MANUFACTURER): vol.All( + vol.Coerce(int), vol.Range(min=-1) + ), } ), } @@ -819,8 +825,6 @@ async def websocket_read_zigbee_cluster_attributes( success = {} failure = {} if zha_device is not None: - if cluster_id >= MFG_CLUSTER_ID_START and manufacturer is None: - manufacturer = zha_device.manufacturer_code cluster = zha_device.async_get_cluster( endpoint_id, cluster_id, cluster_type=cluster_type ) @@ -1300,8 +1304,6 @@ def async_load_api(hass: HomeAssistant) -> None: zha_device = zha_gateway.get_device(ieee) response = None if zha_device is not None: - if cluster_id >= MFG_CLUSTER_ID_START and manufacturer is None: - manufacturer = zha_device.manufacturer_code response = await zha_device.write_zigbee_attribute( endpoint_id, cluster_id,