From 059fbe7958de91c87474476f79ded2e487cfcdb0 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:52:44 +0200 Subject: [PATCH] Use HassKey in ads (#125735) --- homeassistant/components/ads/__init__.py | 10 +------ homeassistant/components/ads/binary_sensor.py | 10 +++---- homeassistant/components/ads/const.py | 18 ++++++++++++ homeassistant/components/ads/cover.py | 28 +++++++++---------- homeassistant/components/ads/entity.py | 2 +- homeassistant/components/ads/light.py | 19 ++++++------- homeassistant/components/ads/sensor.py | 20 +++++++------ homeassistant/components/ads/switch.py | 8 +++--- homeassistant/components/ads/valve.py | 11 ++++---- 9 files changed, 67 insertions(+), 59 deletions(-) create mode 100644 homeassistant/components/ads/const.py diff --git a/homeassistant/components/ads/__init__.py b/homeassistant/components/ads/__init__.py index c5c3b48499a..da855fb7228 100644 --- a/homeassistant/components/ads/__init__.py +++ b/homeassistant/components/ads/__init__.py @@ -15,11 +15,11 @@ from homeassistant.core import HomeAssistant, ServiceCall import homeassistant.helpers.config_validation as cv from homeassistant.helpers.typing import ConfigType +from .const import CONF_ADS_VAR, DATA_ADS, DOMAIN from .hub import AdsHub _LOGGER = logging.getLogger(__name__) -DATA_ADS = "data_ads" # Supported Types ADSTYPE_BOOL = "bool" @@ -63,15 +63,7 @@ ADS_TYPEMAP = { CONF_ADS_FACTOR = "factor" CONF_ADS_TYPE = "adstype" CONF_ADS_VALUE = "value" -CONF_ADS_VAR = "adsvar" -CONF_ADS_VAR_BRIGHTNESS = "adsvar_brightness" -CONF_ADS_VAR_POSITION = "adsvar_position" -STATE_KEY_STATE = "state" -STATE_KEY_BRIGHTNESS = "brightness" -STATE_KEY_POSITION = "position" - -DOMAIN = "ads" SERVICE_WRITE_DATA_BY_NAME = "write_data_by_name" diff --git a/homeassistant/components/ads/binary_sensor.py b/homeassistant/components/ads/binary_sensor.py index fde9ceaa143..4704026e454 100644 --- a/homeassistant/components/ads/binary_sensor.py +++ b/homeassistant/components/ads/binary_sensor.py @@ -17,7 +17,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE +from .const import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE from .entity import AdsEntity DEFAULT_NAME = "ADS binary sensor" @@ -37,11 +37,11 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up the Binary Sensor platform for ADS.""" - ads_hub = hass.data.get(DATA_ADS) + ads_hub = hass.data[DATA_ADS] - ads_var = config[CONF_ADS_VAR] - name = config[CONF_NAME] - device_class = config.get(CONF_DEVICE_CLASS) + ads_var: str = config[CONF_ADS_VAR] + name: str = config[CONF_NAME] + device_class: BinarySensorDeviceClass | None = config.get(CONF_DEVICE_CLASS) ads_sensor = AdsBinarySensor(ads_hub, name, ads_var, device_class) add_entities([ads_sensor]) diff --git a/homeassistant/components/ads/const.py b/homeassistant/components/ads/const.py new file mode 100644 index 00000000000..5683077e023 --- /dev/null +++ b/homeassistant/components/ads/const.py @@ -0,0 +1,18 @@ +"""Support for Automation Device Specification (ADS).""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from homeassistant.util.hass_dict import HassKey + +if TYPE_CHECKING: + from .hub import AdsHub + +DOMAIN = "ads" + +DATA_ADS: HassKey[AdsHub] = HassKey(DOMAIN) + +CONF_ADS_VAR = "adsvar" + +STATE_KEY_STATE = "state" diff --git a/homeassistant/components/ads/cover.py b/homeassistant/components/ads/cover.py index be1b0564069..31c1eac5d18 100644 --- a/homeassistant/components/ads/cover.py +++ b/homeassistant/components/ads/cover.py @@ -11,6 +11,7 @@ from homeassistant.components.cover import ( ATTR_POSITION, DEVICE_CLASSES_SCHEMA, PLATFORM_SCHEMA as COVER_PLATFORM_SCHEMA, + CoverDeviceClass, CoverEntity, CoverEntityFeature, ) @@ -20,13 +21,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import ( - CONF_ADS_VAR, - CONF_ADS_VAR_POSITION, - DATA_ADS, - STATE_KEY_POSITION, - STATE_KEY_STATE, -) +from .const import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE from .entity import AdsEntity DEFAULT_NAME = "ADS Cover" @@ -35,6 +30,9 @@ CONF_ADS_VAR_SET_POS = "adsvar_set_position" CONF_ADS_VAR_OPEN = "adsvar_open" CONF_ADS_VAR_CLOSE = "adsvar_close" CONF_ADS_VAR_STOP = "adsvar_stop" +CONF_ADS_VAR_POSITION = "adsvar_position" + +STATE_KEY_POSITION = "position" PLATFORM_SCHEMA = COVER_PLATFORM_SCHEMA.extend( { @@ -59,14 +57,14 @@ def setup_platform( """Set up the cover platform for ADS.""" ads_hub = hass.data[DATA_ADS] - ads_var_is_closed = config.get(CONF_ADS_VAR) - ads_var_position = config.get(CONF_ADS_VAR_POSITION) - ads_var_pos_set = config.get(CONF_ADS_VAR_SET_POS) - ads_var_open = config.get(CONF_ADS_VAR_OPEN) - ads_var_close = config.get(CONF_ADS_VAR_CLOSE) - ads_var_stop = config.get(CONF_ADS_VAR_STOP) - name = config[CONF_NAME] - device_class = config.get(CONF_DEVICE_CLASS) + ads_var_is_closed: str | None = config.get(CONF_ADS_VAR) + ads_var_position: str | None = config.get(CONF_ADS_VAR_POSITION) + ads_var_pos_set: str | None = config.get(CONF_ADS_VAR_SET_POS) + ads_var_open: str | None = config.get(CONF_ADS_VAR_OPEN) + ads_var_close: str | None = config.get(CONF_ADS_VAR_CLOSE) + ads_var_stop: str | None = config.get(CONF_ADS_VAR_STOP) + name: str = config[CONF_NAME] + device_class: CoverDeviceClass | None = config.get(CONF_DEVICE_CLASS) add_entities( [ diff --git a/homeassistant/components/ads/entity.py b/homeassistant/components/ads/entity.py index 407be5c24e8..3973d279a22 100644 --- a/homeassistant/components/ads/entity.py +++ b/homeassistant/components/ads/entity.py @@ -6,7 +6,7 @@ import logging from homeassistant.helpers.entity import Entity -from . import STATE_KEY_STATE +from .const import STATE_KEY_STATE _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/ads/light.py b/homeassistant/components/ads/light.py index ac4f27a30dc..17e94923b01 100644 --- a/homeassistant/components/ads/light.py +++ b/homeassistant/components/ads/light.py @@ -19,15 +19,12 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import ( - CONF_ADS_VAR, - CONF_ADS_VAR_BRIGHTNESS, - DATA_ADS, - STATE_KEY_BRIGHTNESS, - STATE_KEY_STATE, -) +from .const import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE from .entity import AdsEntity +CONF_ADS_VAR_BRIGHTNESS = "adsvar_brightness" +STATE_KEY_BRIGHTNESS = "brightness" + DEFAULT_NAME = "ADS Light" PLATFORM_SCHEMA = LIGHT_PLATFORM_SCHEMA.extend( { @@ -45,11 +42,11 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up the light platform for ADS.""" - ads_hub = hass.data.get(DATA_ADS) + ads_hub = hass.data[DATA_ADS] - ads_var_enable = config[CONF_ADS_VAR] - ads_var_brightness = config.get(CONF_ADS_VAR_BRIGHTNESS) - name = config[CONF_NAME] + ads_var_enable: str = config[CONF_ADS_VAR] + ads_var_brightness: str | None = config.get(CONF_ADS_VAR_BRIGHTNESS) + name: str = config[CONF_NAME] add_entities([AdsLight(ads_hub, ads_var_enable, ads_var_brightness, name)]) diff --git a/homeassistant/components/ads/sensor.py b/homeassistant/components/ads/sensor.py index 40a61da6657..9dea722e864 100644 --- a/homeassistant/components/ads/sensor.py +++ b/homeassistant/components/ads/sensor.py @@ -20,7 +20,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType from .. import ads -from . import ADS_TYPEMAP, CONF_ADS_FACTOR, CONF_ADS_TYPE, CONF_ADS_VAR, STATE_KEY_STATE +from . import ADS_TYPEMAP, CONF_ADS_FACTOR, CONF_ADS_TYPE +from .const import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE from .entity import AdsEntity DEFAULT_NAME = "ADS sensor" @@ -60,14 +61,15 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up an ADS sensor device.""" - ads_hub: ads.AdsHub = hass.data[ads.DATA_ADS] - ads_var = config[CONF_ADS_VAR] - ads_type = config[CONF_ADS_TYPE] - name = config[CONF_NAME] - factor = config.get(CONF_ADS_FACTOR) - device_class = config.get(CONF_DEVICE_CLASS) - state_class = config.get(CONF_STATE_CLASS) - unit_of_measurement = config.get(CONF_UNIT_OF_MEASUREMENT) + ads_hub = hass.data[DATA_ADS] + + ads_var: str = config[CONF_ADS_VAR] + ads_type: str = config[CONF_ADS_TYPE] + name: str = config[CONF_NAME] + factor: int | None = config.get(CONF_ADS_FACTOR) + device_class: SensorDeviceClass | None = config.get(CONF_DEVICE_CLASS) + state_class: SensorStateClass | None = config.get(CONF_STATE_CLASS) + unit_of_measurement: str | None = config.get(CONF_UNIT_OF_MEASUREMENT) entity = AdsSensor( ads_hub, diff --git a/homeassistant/components/ads/switch.py b/homeassistant/components/ads/switch.py index ba8564d6f1f..0412a127c95 100644 --- a/homeassistant/components/ads/switch.py +++ b/homeassistant/components/ads/switch.py @@ -17,7 +17,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE +from .const import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE from .entity import AdsEntity DEFAULT_NAME = "ADS Switch" @@ -37,10 +37,10 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up switch platform for ADS.""" - ads_hub = hass.data.get(DATA_ADS) + ads_hub = hass.data[DATA_ADS] - name = config[CONF_NAME] - ads_var = config[CONF_ADS_VAR] + name: str = config[CONF_NAME] + ads_var: str = config[CONF_ADS_VAR] add_entities([AdsSwitch(ads_hub, name, ads_var)]) diff --git a/homeassistant/components/ads/valve.py b/homeassistant/components/ads/valve.py index 88e2836335f..f20e21477db 100644 --- a/homeassistant/components/ads/valve.py +++ b/homeassistant/components/ads/valve.py @@ -18,7 +18,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import CONF_ADS_VAR, DATA_ADS +from .const import CONF_ADS_VAR, DATA_ADS from .entity import AdsEntity from .hub import AdsHub @@ -40,10 +40,11 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up an ADS valve device.""" - ads_hub: AdsHub = hass.data[DATA_ADS] - ads_var = config[CONF_ADS_VAR] - name = config[CONF_NAME] - device_class = config.get(CONF_DEVICE_CLASS) + ads_hub = hass.data[DATA_ADS] + + ads_var: str = config[CONF_ADS_VAR] + name: str = config[CONF_NAME] + device_class: ValveDeviceClass | None = config.get(CONF_DEVICE_CLASS) supported_features: ValveEntityFeature = ( ValveEntityFeature.OPEN | ValveEntityFeature.CLOSE )