From 8e698bde1cc350c2865605bb643c9075a1571090 Mon Sep 17 00:00:00 2001 From: SukramJ Date: Mon, 2 Sep 2024 21:20:05 +0200 Subject: [PATCH] Use own validation --- changelog.md | 2 +- .../homematicip_local/manifest.json | 2 +- .../homematicip_local/services.py | 27 ++++++++++--------- requirements_test.txt | 2 +- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/changelog.md b/changelog.md index 377704c7..9d7095af 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ # Version 1.66.0 (2024-09-01) -- Bump hahomematic to 2024.9.2 +- Bump hahomematic to 2024.9.3 - Add check for link paramsets - Add getLinkPeers XmlRPC method - Add paramset_key to entity_key diff --git a/custom_components/homematicip_local/manifest.json b/custom_components/homematicip_local/manifest.json index dfbd314d..73f88ac6 100644 --- a/custom_components/homematicip_local/manifest.json +++ b/custom_components/homematicip_local/manifest.json @@ -10,7 +10,7 @@ "iot_class": "local_push", "issue_tracker": "https://github.com/danielperna84/hahomematic/issues", "loggers": ["hahomematic"], - "requirements": ["hahomematic==2024.9.2"], + "requirements": ["hahomematic==2024.9.3"], "ssdp": [ { "manufacturer": "EQ3", diff --git a/custom_components/homematicip_local/services.py b/custom_components/homematicip_local/services.py index 01bea2ce..5e92a1ca 100644 --- a/custom_components/homematicip_local/services.py +++ b/custom_components/homematicip_local/services.py @@ -10,6 +10,7 @@ from hahomematic.exceptions import ClientException from hahomematic.platforms.device import HmDevice from hahomematic.support import get_device_address, to_bool +import hahomematic.validator as hmval import voluptuous as vol from homeassistant.config_entries import ConfigEntryState @@ -75,7 +76,7 @@ BASE_SCHEMA_DEVICE = vol.Schema( { vol.Optional(CONF_DEVICE_ID): cv.string, - vol.Optional(CONF_DEVICE_ADDRESS): cv.string, + vol.Optional(CONF_DEVICE_ADDRESS): hmval.device_address, } ) @@ -109,7 +110,7 @@ cv.has_at_most_one_key(CONF_DEVICE_ID, CONF_DEVICE_ADDRESS), BASE_SCHEMA_DEVICE.extend( { - vol.Required(CONF_CHANNEL, default=DEFAULT_CHANNEL): vol.Coerce(int), + vol.Required(CONF_CHANNEL, default=DEFAULT_CHANNEL): hmval.channel_no, vol.Required(CONF_PARAMETER): vol.All(cv.string, vol.Upper), } ), @@ -120,15 +121,15 @@ cv.has_at_most_one_key(CONF_DEVICE_ID, CONF_DEVICE_ADDRESS), BASE_SCHEMA_DEVICE.extend( { - vol.Optional(CONF_CHANNEL): vol.Coerce(int), + vol.Optional(CONF_CHANNEL): hmval.channel_no, } ), ) SCHEMA_SERVICE_GET_LINK_PARAMSET = vol.All( { - vol.Optional(CONF_CHANNEL_ADDRESS): cv.string, - vol.Optional(CONF_SENDER_CHANNEL_ADDRESS): cv.string, + vol.Optional(CONF_CHANNEL_ADDRESS): hmval.channel_address, + vol.Optional(CONF_SENDER_CHANNEL_ADDRESS): hmval.channel_address, } ) @@ -137,7 +138,7 @@ cv.has_at_most_one_key(CONF_DEVICE_ID, CONF_DEVICE_ADDRESS), BASE_SCHEMA_DEVICE.extend( { - vol.Optional(CONF_CHANNEL): vol.Coerce(int), + vol.Optional(CONF_CHANNEL): hmval.channel_no, vol.Required(CONF_PARAMSET_KEY): vol.In(["MASTER", "VALUES"]), } ), @@ -156,7 +157,7 @@ vol.Required(CONF_INTERFACE_ID): cv.string, vol.Optional(CONF_TIME, default=60): cv.positive_int, vol.Optional(CONF_MODE, default=1): vol.All(vol.Coerce(int), vol.In([1, 2])), - vol.Optional(CONF_ADDRESS): vol.All(cv.string, vol.Upper), + vol.Optional(CONF_ADDRESS): hmval.device_address, } ) @@ -165,10 +166,10 @@ cv.has_at_most_one_key(CONF_DEVICE_ID, CONF_DEVICE_ADDRESS), BASE_SCHEMA_DEVICE.extend( { - vol.Required(CONF_CHANNEL, default=DEFAULT_CHANNEL): vol.Coerce(int), + vol.Required(CONF_CHANNEL, default=DEFAULT_CHANNEL): hmval.channel_no, vol.Required(CONF_PARAMETER): vol.All(cv.string, vol.Upper), vol.Required(CONF_VALUE): cv.match_all, - vol.Optional(CONF_WAIT_FOR_CALLBACK): cv.positive_int, + vol.Optional(CONF_WAIT_FOR_CALLBACK): hmval.wait_for, vol.Optional(CONF_VALUE_TYPE): vol.In( ["boolean", "dateTime.iso8601", "double", "int", "string"] ), @@ -179,8 +180,8 @@ SCHEMA_SERVICE_PUT_LINK_PARAMSET = vol.All( { - vol.Optional(CONF_CHANNEL_ADDRESS): cv.string, - vol.Optional(CONF_SENDER_CHANNEL_ADDRESS): cv.string, + vol.Optional(CONF_CHANNEL_ADDRESS): hmval.channel_address, + vol.Optional(CONF_SENDER_CHANNEL_ADDRESS): hmval.channel_address, vol.Required(CONF_PARAMSET): dict, vol.Optional(CONF_RX_MODE): vol.All(cv.string, vol.Upper), } @@ -191,10 +192,10 @@ cv.has_at_most_one_key(CONF_DEVICE_ID, CONF_DEVICE_ADDRESS), BASE_SCHEMA_DEVICE.extend( { - vol.Optional(CONF_CHANNEL): vol.Coerce(int), + vol.Optional(CONF_CHANNEL): hmval.channel_no, vol.Required(CONF_PARAMSET_KEY): vol.In(["MASTER", "VALUES"]), vol.Required(CONF_PARAMSET): dict, - vol.Optional(CONF_WAIT_FOR_CALLBACK): cv.positive_int, + vol.Optional(CONF_WAIT_FOR_CALLBACK): hmval.wait_for, vol.Optional(CONF_RX_MODE): vol.All(cv.string, vol.Upper), } ), diff --git a/requirements_test.txt b/requirements_test.txt index a8bff67f..825b1948 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -1,7 +1,7 @@ -r requirements_test_pre_commit.txt async-upnp-client==0.40.0 -hahomematic==2024.9.2 +hahomematic==2024.9.3 homeassistant==2024.9.0b2 mypy==1.11.2 mypy-dev==1.11.0a9