mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Fix zwave_js.set_value schema (#51114)
* fix zwave_js.set_value schema * wrap all schemas in vol.Schema * readd removed assertions
This commit is contained in:
parent
3e7729faf2
commit
877d3e38b4
@ -67,9 +67,12 @@ class ZWaveServices:
|
|||||||
const.DOMAIN,
|
const.DOMAIN,
|
||||||
const.SERVICE_SET_CONFIG_PARAMETER,
|
const.SERVICE_SET_CONFIG_PARAMETER,
|
||||||
self.async_set_config_parameter,
|
self.async_set_config_parameter,
|
||||||
schema=vol.All(
|
schema=vol.Schema(
|
||||||
|
vol.All(
|
||||||
{
|
{
|
||||||
vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
|
vol.Optional(ATTR_DEVICE_ID): vol.All(
|
||||||
|
cv.ensure_list, [cv.string]
|
||||||
|
),
|
||||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
||||||
vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Any(
|
vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Any(
|
||||||
vol.Coerce(int), cv.string
|
vol.Coerce(int), cv.string
|
||||||
@ -84,15 +87,19 @@ class ZWaveServices:
|
|||||||
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
||||||
parameter_name_does_not_need_bitmask,
|
parameter_name_does_not_need_bitmask,
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
self._hass.services.async_register(
|
self._hass.services.async_register(
|
||||||
const.DOMAIN,
|
const.DOMAIN,
|
||||||
const.SERVICE_BULK_SET_PARTIAL_CONFIG_PARAMETERS,
|
const.SERVICE_BULK_SET_PARTIAL_CONFIG_PARAMETERS,
|
||||||
self.async_bulk_set_partial_config_parameters,
|
self.async_bulk_set_partial_config_parameters,
|
||||||
schema=vol.All(
|
schema=vol.Schema(
|
||||||
|
vol.All(
|
||||||
{
|
{
|
||||||
vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
|
vol.Optional(ATTR_DEVICE_ID): vol.All(
|
||||||
|
cv.ensure_list, [cv.string]
|
||||||
|
),
|
||||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
||||||
vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Coerce(int),
|
vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Coerce(int),
|
||||||
vol.Required(const.ATTR_CONFIG_VALUE): vol.Any(
|
vol.Required(const.ATTR_CONFIG_VALUE): vol.Any(
|
||||||
@ -106,6 +113,7 @@ class ZWaveServices:
|
|||||||
},
|
},
|
||||||
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
self._hass.services.async_register(
|
self._hass.services.async_register(
|
||||||
@ -125,11 +133,16 @@ class ZWaveServices:
|
|||||||
const.SERVICE_SET_VALUE,
|
const.SERVICE_SET_VALUE,
|
||||||
self.async_set_value,
|
self.async_set_value,
|
||||||
schema=vol.Schema(
|
schema=vol.Schema(
|
||||||
|
vol.All(
|
||||||
{
|
{
|
||||||
vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
|
vol.Optional(ATTR_DEVICE_ID): vol.All(
|
||||||
|
cv.ensure_list, [cv.string]
|
||||||
|
),
|
||||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
||||||
vol.Required(const.ATTR_COMMAND_CLASS): vol.Coerce(int),
|
vol.Required(const.ATTR_COMMAND_CLASS): vol.Coerce(int),
|
||||||
vol.Required(const.ATTR_PROPERTY): vol.Any(vol.Coerce(int), str),
|
vol.Required(const.ATTR_PROPERTY): vol.Any(
|
||||||
|
vol.Coerce(int), str
|
||||||
|
),
|
||||||
vol.Optional(const.ATTR_PROPERTY_KEY): vol.Any(
|
vol.Optional(const.ATTR_PROPERTY_KEY): vol.Any(
|
||||||
vol.Coerce(int), str
|
vol.Coerce(int), str
|
||||||
),
|
),
|
||||||
@ -141,6 +154,7 @@ class ZWaveServices:
|
|||||||
},
|
},
|
||||||
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_set_config_parameter(self, service: ServiceCall) -> None:
|
async def async_set_config_parameter(self, service: ServiceCall) -> None:
|
||||||
|
@ -599,6 +599,7 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration):
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 1
|
assert len(client.async_send_command.call_args_list) == 1
|
||||||
|
|
||||||
args = client.async_send_command.call_args[0][0]
|
args = client.async_send_command.call_args[0][0]
|
||||||
assert args["command"] == "node.set_value"
|
assert args["command"] == "node.set_value"
|
||||||
assert args["nodeId"] == 5
|
assert args["nodeId"] == 5
|
||||||
@ -619,3 +620,17 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration):
|
|||||||
"value": 0,
|
"value": 0,
|
||||||
}
|
}
|
||||||
assert args["value"] == 2
|
assert args["value"] == 2
|
||||||
|
|
||||||
|
# Test missing device and entities keys
|
||||||
|
with pytest.raises(vol.MultipleInvalid):
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN,
|
||||||
|
SERVICE_SET_VALUE,
|
||||||
|
{
|
||||||
|
ATTR_COMMAND_CLASS: 117,
|
||||||
|
ATTR_PROPERTY: "local",
|
||||||
|
ATTR_VALUE: 2,
|
||||||
|
ATTR_WAIT_FOR_RESULT: True,
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user