diff --git a/homeassistant/components/overkiz/climate.py b/homeassistant/components/overkiz/climate.py deleted file mode 100644 index 1663834abee..00000000000 --- a/homeassistant/components/overkiz/climate.py +++ /dev/null @@ -1,62 +0,0 @@ -"""Support for Overkiz climate devices.""" - -from __future__ import annotations - -from homeassistant.config_entries import ConfigEntry -from homeassistant.const import Platform -from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity import Entity -from homeassistant.helpers.entity_platform import AddEntitiesCallback - -from . import HomeAssistantOverkizData -from .climate_entities import ( - WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY, - WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY, - WIDGET_TO_CLIMATE_ENTITY, -) -from .const import DOMAIN - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up the Overkiz climate from a config entry.""" - data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] - - # Match devices based on the widget. - entities_based_on_widget: list[Entity] = [ - WIDGET_TO_CLIMATE_ENTITY[device.widget](device.device_url, data.coordinator) - for device in data.platforms[Platform.CLIMATE] - if device.widget in WIDGET_TO_CLIMATE_ENTITY - ] - - # Match devices based on the widget and controllableName. - # ie Atlantic APC - entities_based_on_widget_and_controllable: list[Entity] = [ - WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY[device.widget][ - device.controllable_name - ](device.device_url, data.coordinator) - for device in data.platforms[Platform.CLIMATE] - if device.widget in WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY - and device.controllable_name - in WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY[device.widget] - ] - - # Match devices based on the widget and protocol. - # #ie Hitachi Air To Air Heat Pumps - entities_based_on_widget_and_protocol: list[Entity] = [ - WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY[device.widget][device.protocol]( - device.device_url, data.coordinator - ) - for device in data.platforms[Platform.CLIMATE] - if device.widget in WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY - and device.protocol in WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY[device.widget] - ] - - async_add_entities( - entities_based_on_widget - + entities_based_on_widget_and_controllable - + entities_based_on_widget_and_protocol - ) diff --git a/homeassistant/components/overkiz/climate_entities/__init__.py b/homeassistant/components/overkiz/climate/__init__.py similarity index 59% rename from homeassistant/components/overkiz/climate_entities/__init__.py rename to homeassistant/components/overkiz/climate/__init__.py index ac864686432..f05a716031e 100644 --- a/homeassistant/components/overkiz/climate_entities/__init__.py +++ b/homeassistant/components/overkiz/climate/__init__.py @@ -1,10 +1,20 @@ """Climate entities for the Overkiz (by Somfy) integration.""" +from __future__ import annotations + from enum import StrEnum, unique from pyoverkiz.enums import Protocol from pyoverkiz.enums.ui import UIWidget +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import Platform +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity import Entity +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from .. import HomeAssistantOverkizData +from ..const import DOMAIN from .atlantic_electrical_heater import AtlanticElectricalHeater from .atlantic_electrical_heater_with_adjustable_temperature_setpoint import ( AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint, @@ -65,3 +75,48 @@ WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY = { Protocol.OVP: HitachiAirToAirHeatPumpOVP, }, } + + +async def async_setup_entry( + hass: HomeAssistant, + entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Set up the Overkiz climate from a config entry.""" + data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] + + # Match devices based on the widget. + entities_based_on_widget: list[Entity] = [ + WIDGET_TO_CLIMATE_ENTITY[device.widget](device.device_url, data.coordinator) + for device in data.platforms[Platform.CLIMATE] + if device.widget in WIDGET_TO_CLIMATE_ENTITY + ] + + # Match devices based on the widget and controllableName. + # ie Atlantic APC + entities_based_on_widget_and_controllable: list[Entity] = [ + WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY[device.widget][ + device.controllable_name + ](device.device_url, data.coordinator) + for device in data.platforms[Platform.CLIMATE] + if device.widget in WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY + and device.controllable_name + in WIDGET_AND_CONTROLLABLE_TO_CLIMATE_ENTITY[device.widget] + ] + + # Match devices based on the widget and protocol. + # #ie Hitachi Air To Air Heat Pumps + entities_based_on_widget_and_protocol: list[Entity] = [ + WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY[device.widget][device.protocol]( + device.device_url, data.coordinator + ) + for device in data.platforms[Platform.CLIMATE] + if device.widget in WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY + and device.protocol in WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY[device.widget] + ] + + async_add_entities( + entities_based_on_widget + + entities_based_on_widget_and_controllable + + entities_based_on_widget_and_protocol + ) diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_electrical_heater.py b/homeassistant/components/overkiz/climate/atlantic_electrical_heater.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_electrical_heater.py rename to homeassistant/components/overkiz/climate/atlantic_electrical_heater.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_electrical_heater_with_adjustable_temperature_setpoint.py b/homeassistant/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_electrical_heater_with_adjustable_temperature_setpoint.py rename to homeassistant/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_electrical_towel_dryer.py b/homeassistant/components/overkiz/climate/atlantic_electrical_towel_dryer.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_electrical_towel_dryer.py rename to homeassistant/components/overkiz/climate/atlantic_electrical_towel_dryer.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_heat_recovery_ventilation.py b/homeassistant/components/overkiz/climate/atlantic_heat_recovery_ventilation.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_heat_recovery_ventilation.py rename to homeassistant/components/overkiz/climate/atlantic_heat_recovery_ventilation.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_heat_pump_main_component.py b/homeassistant/components/overkiz/climate/atlantic_pass_apc_heat_pump_main_component.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_heat_pump_main_component.py rename to homeassistant/components/overkiz/climate/atlantic_pass_apc_heat_pump_main_component.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_heating_zone.py b/homeassistant/components/overkiz/climate/atlantic_pass_apc_heating_zone.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_heating_zone.py rename to homeassistant/components/overkiz/climate/atlantic_pass_apc_heating_zone.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_zone_control.py b/homeassistant/components/overkiz/climate/atlantic_pass_apc_zone_control.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_zone_control.py rename to homeassistant/components/overkiz/climate/atlantic_pass_apc_zone_control.py diff --git a/homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_zone_control_zone.py b/homeassistant/components/overkiz/climate/atlantic_pass_apc_zone_control_zone.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/atlantic_pass_apc_zone_control_zone.py rename to homeassistant/components/overkiz/climate/atlantic_pass_apc_zone_control_zone.py diff --git a/homeassistant/components/overkiz/climate_entities/hitachi_air_to_air_heat_pump_hlrrwifi.py b/homeassistant/components/overkiz/climate/hitachi_air_to_air_heat_pump_hlrrwifi.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/hitachi_air_to_air_heat_pump_hlrrwifi.py rename to homeassistant/components/overkiz/climate/hitachi_air_to_air_heat_pump_hlrrwifi.py diff --git a/homeassistant/components/overkiz/climate_entities/hitachi_air_to_air_heat_pump_ovp.py b/homeassistant/components/overkiz/climate/hitachi_air_to_air_heat_pump_ovp.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/hitachi_air_to_air_heat_pump_ovp.py rename to homeassistant/components/overkiz/climate/hitachi_air_to_air_heat_pump_ovp.py diff --git a/homeassistant/components/overkiz/climate_entities/somfy_heating_temperature_interface.py b/homeassistant/components/overkiz/climate/somfy_heating_temperature_interface.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/somfy_heating_temperature_interface.py rename to homeassistant/components/overkiz/climate/somfy_heating_temperature_interface.py diff --git a/homeassistant/components/overkiz/climate_entities/somfy_thermostat.py b/homeassistant/components/overkiz/climate/somfy_thermostat.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/somfy_thermostat.py rename to homeassistant/components/overkiz/climate/somfy_thermostat.py diff --git a/homeassistant/components/overkiz/climate_entities/valve_heating_temperature_interface.py b/homeassistant/components/overkiz/climate/valve_heating_temperature_interface.py similarity index 100% rename from homeassistant/components/overkiz/climate_entities/valve_heating_temperature_interface.py rename to homeassistant/components/overkiz/climate/valve_heating_temperature_interface.py