diff --git a/homeassistant/components/shelly/__init__.py b/homeassistant/components/shelly/__init__.py index 6b15e4e730d..6a981ab2b86 100644 --- a/homeassistant/components/shelly/__init__.py +++ b/homeassistant/components/shelly/__init__.py @@ -36,6 +36,7 @@ from .const import ( BATTERY_DEVICES_WITH_PERMANENT_CONNECTION, BLOCK, CONF_COAP_PORT, + CONF_SLEEP_PERIOD, DATA_CONFIG_ENTRY, DEFAULT_COAP_PORT, DEVICE, @@ -143,7 +144,7 @@ async def async_setup_block_entry(hass: HomeAssistant, entry: ConfigEntry) -> bo if device_entry and entry.entry_id not in device_entry.config_entries: device_entry = None - sleep_period = entry.data.get("sleep_period") + sleep_period = entry.data.get(CONF_SLEEP_PERIOD) @callback def _async_device_online(_: Any) -> None: @@ -152,7 +153,7 @@ async def async_setup_block_entry(hass: HomeAssistant, entry: ConfigEntry) -> bo if sleep_period is None: data = {**entry.data} - data["sleep_period"] = get_block_device_sleep_period(device.settings) + data[CONF_SLEEP_PERIOD] = get_block_device_sleep_period(device.settings) data["model"] = device.settings["device"]["type"] hass.config_entries.async_update_entry(entry, data=data) @@ -194,7 +195,7 @@ async def async_block_device_setup( platforms = BLOCK_SLEEPING_PLATFORMS - if not entry.data.get("sleep_period"): + if not entry.data.get(CONF_SLEEP_PERIOD): hass.data[DOMAIN][DATA_CONFIG_ENTRY][entry.entry_id][ REST ] = ShellyDeviceRestWrapper(hass, device) @@ -239,7 +240,7 @@ class BlockDeviceWrapper(update_coordinator.DataUpdateCoordinator): """Initialize the Shelly device wrapper.""" self.device_id: str | None = None - if sleep_period := entry.data["sleep_period"]: + if sleep_period := entry.data[CONF_SLEEP_PERIOD]: update_interval = SLEEP_PERIOD_MULTIPLIER * sleep_period else: update_interval = ( @@ -369,7 +370,7 @@ class BlockDeviceWrapper(update_coordinator.DataUpdateCoordinator): async def _async_update_data(self) -> None: """Fetch data.""" - if sleep_period := self.entry.data.get("sleep_period"): + if sleep_period := self.entry.data.get(CONF_SLEEP_PERIOD): # Sleeping device, no point polling it, just mark it unavailable raise update_coordinator.UpdateFailed( f"Sleeping device did not update within {sleep_period} seconds interval" @@ -477,7 +478,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: platforms = BLOCK_SLEEPING_PLATFORMS - if not entry.data.get("sleep_period"): + if not entry.data.get(CONF_SLEEP_PERIOD): hass.data[DOMAIN][DATA_CONFIG_ENTRY][entry.entry_id][REST] = None platforms = BLOCK_PLATFORMS diff --git a/homeassistant/components/shelly/binary_sensor.py b/homeassistant/components/shelly/binary_sensor.py index d7e4983df77..69f5f0e4440 100644 --- a/homeassistant/components/shelly/binary_sensor.py +++ b/homeassistant/components/shelly/binary_sensor.py @@ -17,6 +17,7 @@ from homeassistant.components.binary_sensor import ( STATE_ON, BinarySensorEntity, ) +from homeassistant.components.shelly.const import CONF_SLEEP_PERIOD from homeassistant.config_entries import ConfigEntry from homeassistant.const import ENTITY_CATEGORY_DIAGNOSTIC from homeassistant.core import HomeAssistant @@ -174,7 +175,7 @@ async def async_setup_entry( hass, config_entry, async_add_entities, RPC_SENSORS, RpcBinarySensor ) - if config_entry.data["sleep_period"]: + if config_entry.data[CONF_SLEEP_PERIOD]: await async_setup_entry_attribute_entities( hass, config_entry, diff --git a/homeassistant/components/shelly/config_flow.py b/homeassistant/components/shelly/config_flow.py index b77868296bd..580221d376f 100644 --- a/homeassistant/components/shelly/config_flow.py +++ b/homeassistant/components/shelly/config_flow.py @@ -20,7 +20,7 @@ from homeassistant.data_entry_flow import FlowResult from homeassistant.helpers import aiohttp_client from homeassistant.helpers.typing import DiscoveryInfoType -from .const import AIOSHELLY_DEVICE_TIMEOUT_SEC, DOMAIN +from .const import AIOSHELLY_DEVICE_TIMEOUT_SEC, CONF_SLEEP_PERIOD, DOMAIN from .utils import ( get_block_device_name, get_block_device_sleep_period, @@ -63,7 +63,7 @@ async def validate_input( await rpc_device.shutdown() return { "title": get_rpc_device_name(rpc_device), - "sleep_period": 0, + CONF_SLEEP_PERIOD: 0, "model": rpc_device.model, "gen": 2, } @@ -78,7 +78,7 @@ async def validate_input( block_device.shutdown() return { "title": get_block_device_name(block_device), - "sleep_period": get_block_device_sleep_period(block_device.settings), + CONF_SLEEP_PERIOD: get_block_device_sleep_period(block_device.settings), "model": block_device.model, "gen": 1, } @@ -130,7 +130,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): title=device_info["title"], data={ **user_input, - "sleep_period": device_info["sleep_period"], + CONF_SLEEP_PERIOD: device_info[CONF_SLEEP_PERIOD], "model": device_info["model"], "gen": device_info["gen"], }, @@ -166,7 +166,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): data={ **user_input, CONF_HOST: self.host, - "sleep_period": device_info["sleep_period"], + CONF_SLEEP_PERIOD: device_info[CONF_SLEEP_PERIOD], "model": device_info["model"], "gen": device_info["gen"], }, @@ -224,7 +224,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): title=self.device_info["title"], data={ "host": self.host, - "sleep_period": self.device_info["sleep_period"], + CONF_SLEEP_PERIOD: self.device_info[CONF_SLEEP_PERIOD], "model": self.device_info["model"], "gen": self.device_info["gen"], }, diff --git a/homeassistant/components/shelly/const.py b/homeassistant/components/shelly/const.py index 50f81511062..5fceb64e65c 100644 --- a/homeassistant/components/shelly/const.py +++ b/homeassistant/components/shelly/const.py @@ -54,6 +54,7 @@ AIOSHELLY_DEVICE_TIMEOUT_SEC: Final = 10 # Multiplier used to calculate the "update_interval" for sleeping devices. SLEEP_PERIOD_MULTIPLIER: Final = 1.2 +CONF_SLEEP_PERIOD: Final = "sleep_period" # Multiplier used to calculate the "update_interval" for non-sleeping devices. UPDATE_PERIOD_MULTIPLIER: Final = 2.2 diff --git a/homeassistant/components/shelly/sensor.py b/homeassistant/components/shelly/sensor.py index f61df56eaa7..7fcf456b658 100644 --- a/homeassistant/components/shelly/sensor.py +++ b/homeassistant/components/shelly/sensor.py @@ -23,7 +23,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from .const import SHAIR_MAX_WORK_HOURS +from .const import CONF_SLEEP_PERIOD, SHAIR_MAX_WORK_HOURS from .entity import ( BlockAttributeDescription, RestAttributeDescription, @@ -317,7 +317,7 @@ async def async_setup_entry( hass, config_entry, async_add_entities, RPC_SENSORS, RpcSensor ) - if config_entry.data["sleep_period"]: + if config_entry.data[CONF_SLEEP_PERIOD]: await async_setup_entry_attribute_entities( hass, config_entry, async_add_entities, SENSORS, BlockSleepingSensor )