diff --git a/homeassistant/components/esphome/alarm_control_panel.py b/homeassistant/components/esphome/alarm_control_panel.py index 17079fe8c6a..64a0210f0f7 100644 --- a/homeassistant/components/esphome/alarm_control_panel.py +++ b/homeassistant/components/esphome/alarm_control_panel.py @@ -2,6 +2,8 @@ from __future__ import annotations +from functools import partial + from aioesphomeapi import ( AlarmControlPanelCommand, AlarmControlPanelEntityState, @@ -28,8 +30,7 @@ from homeassistant.const import ( STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED, ) -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import ( EsphomeEntity, @@ -37,7 +38,6 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry from .enum_mapper import EsphomeEnumMapper _ESPHOME_ACP_STATE_TO_HASS_STATE: EsphomeEnumMapper[AlarmControlPanelState, str] = ( @@ -69,22 +69,6 @@ class EspHomeACPFeatures(APIIntEnum): ARM_VACATION = 32 -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome switches based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=AlarmControlPanelInfo, - entity_type=EsphomeAlarmControlPanel, - state_type=AlarmControlPanelEntityState, - ) - - class EsphomeAlarmControlPanel( EsphomeEntity[AlarmControlPanelInfo, AlarmControlPanelEntityState], AlarmControlPanelEntity, @@ -169,3 +153,11 @@ class EsphomeAlarmControlPanel( self._client.alarm_control_panel_command( self._key, AlarmControlPanelCommand.TRIGGER, code ) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=AlarmControlPanelInfo, + entity_type=EsphomeAlarmControlPanel, + state_type=AlarmControlPanelEntityState, +) diff --git a/homeassistant/components/esphome/button.py b/homeassistant/components/esphome/button.py index 8883c4b6bea..f13fa65ede1 100644 --- a/homeassistant/components/esphome/button.py +++ b/homeassistant/components/esphome/button.py @@ -2,11 +2,12 @@ from __future__ import annotations +from functools import partial + from aioesphomeapi import ButtonInfo, EntityInfo, EntityState from homeassistant.components.button import ButtonDeviceClass, ButtonEntity -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.enum import try_parse_enum from .entity import ( @@ -14,23 +15,6 @@ from .entity import ( convert_api_error_ha_error, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome buttons based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=ButtonInfo, - entity_type=EsphomeButton, - state_type=EntityState, - ) class EsphomeButton(EsphomeEntity[ButtonInfo, EntityState], ButtonEntity): @@ -63,3 +47,11 @@ class EsphomeButton(EsphomeEntity[ButtonInfo, EntityState], ButtonEntity): async def async_press(self) -> None: """Press the button.""" self._client.button_command(self._key) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=ButtonInfo, + entity_type=EsphomeButton, + state_type=EntityState, +) diff --git a/homeassistant/components/esphome/camera.py b/homeassistant/components/esphome/camera.py index abe7f6809e6..6038bf52e06 100644 --- a/homeassistant/components/esphome/camera.py +++ b/homeassistant/components/esphome/camera.py @@ -12,27 +12,9 @@ from aiohttp import web from homeassistant.components import camera from homeassistant.components.camera import Camera -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import EsphomeEntity, platform_async_setup_entry -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome cameras based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=CameraInfo, - entity_type=EsphomeCamera, - state_type=CameraState, - ) class EsphomeCamera(Camera, EsphomeEntity[CameraInfo, CameraState]): @@ -95,3 +77,11 @@ class EsphomeCamera(Camera, EsphomeEntity[CameraInfo, CameraState]): return await camera.async_get_still_stream( request, stream_request, camera.DEFAULT_CONTENT_TYPE, 0.0 ) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=CameraInfo, + entity_type=EsphomeCamera, + state_type=CameraState, +) diff --git a/homeassistant/components/esphome/climate.py b/homeassistant/components/esphome/climate.py index 6c82207ddc9..da1cdfb0eab 100644 --- a/homeassistant/components/esphome/climate.py +++ b/homeassistant/components/esphome/climate.py @@ -2,6 +2,7 @@ from __future__ import annotations +from functools import partial from typing import Any, cast from aioesphomeapi import ( @@ -52,8 +53,7 @@ from homeassistant.const import ( PRECISION_WHOLE, UnitOfTemperature, ) -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import ( EsphomeEntity, @@ -61,28 +61,11 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry from .enum_mapper import EsphomeEnumMapper FAN_QUIET = "quiet" -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome climate devices based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=ClimateInfo, - entity_type=EsphomeClimateEntity, - state_type=ClimateState, - ) - - _CLIMATE_MODES: EsphomeEnumMapper[ClimateMode, HVACMode] = EsphomeEnumMapper( { ClimateMode.OFF: HVACMode.OFF, @@ -335,3 +318,11 @@ class EsphomeClimateEntity(EsphomeEntity[ClimateInfo, ClimateState], ClimateEnti self._client.climate_command( key=self._key, swing_mode=_SWING_MODES.from_hass(swing_mode) ) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=ClimateInfo, + entity_type=EsphomeClimateEntity, + state_type=ClimateState, +) diff --git a/homeassistant/components/esphome/cover.py b/homeassistant/components/esphome/cover.py index 4597b4f3566..19ce4cbf55a 100644 --- a/homeassistant/components/esphome/cover.py +++ b/homeassistant/components/esphome/cover.py @@ -2,6 +2,7 @@ from __future__ import annotations +from functools import partial from typing import Any from aioesphomeapi import APIVersion, CoverInfo, CoverOperation, CoverState, EntityInfo @@ -13,8 +14,7 @@ from homeassistant.components.cover import ( CoverEntity, CoverEntityFeature, ) -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.enum import try_parse_enum from .entity import ( @@ -23,23 +23,6 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome covers based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=CoverInfo, - entity_type=EsphomeCover, - state_type=CoverState, - ) class EsphomeCover(EsphomeEntity[CoverInfo, CoverState], CoverEntity): @@ -137,3 +120,11 @@ class EsphomeCover(EsphomeEntity[CoverInfo, CoverState], CoverEntity): """Move the cover tilt to a specific position.""" tilt_position: int = kwargs[ATTR_TILT_POSITION] self._client.cover_command(key=self._key, tilt=tilt_position / 100) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=CoverInfo, + entity_type=EsphomeCover, + state_type=CoverState, +) diff --git a/homeassistant/components/esphome/date.py b/homeassistant/components/esphome/date.py index eb26ec918d0..28bc532918a 100644 --- a/homeassistant/components/esphome/date.py +++ b/homeassistant/components/esphome/date.py @@ -3,31 +3,13 @@ from __future__ import annotations from datetime import date +from functools import partial from aioesphomeapi import DateInfo, DateState from homeassistant.components.date import DateEntity -from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity_platform import AddEntitiesCallback from .entity import EsphomeEntity, esphome_state_property, platform_async_setup_entry -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome dates based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=DateInfo, - entity_type=EsphomeDate, - state_type=DateState, - ) class EsphomeDate(EsphomeEntity[DateInfo, DateState], DateEntity): @@ -45,3 +27,11 @@ class EsphomeDate(EsphomeEntity[DateInfo, DateState], DateEntity): async def async_set_value(self, value: date) -> None: """Update the current date.""" self._client.date_command(self._key, value.year, value.month, value.day) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=DateInfo, + entity_type=EsphomeDate, + state_type=DateState, +) diff --git a/homeassistant/components/esphome/datetime.py b/homeassistant/components/esphome/datetime.py index 5d578ae4928..20d0d651bba 100644 --- a/homeassistant/components/esphome/datetime.py +++ b/homeassistant/components/esphome/datetime.py @@ -3,32 +3,14 @@ from __future__ import annotations from datetime import datetime +from functools import partial from aioesphomeapi import DateTimeInfo, DateTimeState from homeassistant.components.datetime import DateTimeEntity -from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity_platform import AddEntitiesCallback import homeassistant.util.dt as dt_util from .entity import EsphomeEntity, esphome_state_property, platform_async_setup_entry -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome datetimes based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=DateTimeInfo, - entity_type=EsphomeDateTime, - state_type=DateTimeState, - ) class EsphomeDateTime(EsphomeEntity[DateTimeInfo, DateTimeState], DateTimeEntity): @@ -46,3 +28,11 @@ class EsphomeDateTime(EsphomeEntity[DateTimeInfo, DateTimeState], DateTimeEntity async def async_set_value(self, value: datetime) -> None: """Update the current datetime.""" self._client.datetime_command(self._key, int(value.timestamp())) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=DateTimeInfo, + entity_type=EsphomeDateTime, + state_type=DateTimeState, +) diff --git a/homeassistant/components/esphome/event.py b/homeassistant/components/esphome/event.py index 9435597e25b..11a5d0cfb33 100644 --- a/homeassistant/components/esphome/event.py +++ b/homeassistant/components/esphome/event.py @@ -2,31 +2,15 @@ from __future__ import annotations +from functools import partial + from aioesphomeapi import EntityInfo, Event, EventInfo from homeassistant.components.event import EventDeviceClass, EventEntity -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.enum import try_parse_enum from .entity import EsphomeEntity, platform_async_setup_entry -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome event based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=EventInfo, - entity_type=EsphomeEvent, - state_type=Event, - ) class EsphomeEvent(EsphomeEntity[EventInfo, Event], EventEntity): @@ -48,3 +32,11 @@ class EsphomeEvent(EsphomeEntity[EventInfo, Event], EventEntity): self._update_state_from_entry_data() self._trigger_event(self._state.event_type) self.async_write_ha_state() + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=EventInfo, + entity_type=EsphomeEvent, + state_type=Event, +) diff --git a/homeassistant/components/esphome/fan.py b/homeassistant/components/esphome/fan.py index 35a19348281..43ffd96c475 100644 --- a/homeassistant/components/esphome/fan.py +++ b/homeassistant/components/esphome/fan.py @@ -2,6 +2,7 @@ from __future__ import annotations +from functools import partial import math from typing import Any @@ -13,8 +14,7 @@ from homeassistant.components.fan import ( FanEntity, FanEntityFeature, ) -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.percentage import ( ordered_list_item_to_percentage, percentage_to_ordered_list_item, @@ -28,28 +28,11 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry from .enum_mapper import EsphomeEnumMapper ORDERED_NAMED_FAN_SPEEDS = [FanSpeed.LOW, FanSpeed.MEDIUM, FanSpeed.HIGH] -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome fans based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=FanInfo, - entity_type=EsphomeFan, - state_type=FanState, - ) - - _FAN_DIRECTIONS: EsphomeEnumMapper[FanDirection, str] = EsphomeEnumMapper( { FanDirection.FORWARD: DIRECTION_FORWARD, @@ -180,3 +163,11 @@ class EsphomeFan(EsphomeEntity[FanInfo, FanState], FanEntity): self._attr_speed_count = len(ORDERED_NAMED_FAN_SPEEDS) else: self._attr_speed_count = static_info.supported_speed_levels + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=FanInfo, + entity_type=EsphomeFan, + state_type=FanState, +) diff --git a/homeassistant/components/esphome/light.py b/homeassistant/components/esphome/light.py index c5f83805cce..295f9365cd0 100644 --- a/homeassistant/components/esphome/light.py +++ b/homeassistant/components/esphome/light.py @@ -2,7 +2,7 @@ from __future__ import annotations -from functools import lru_cache +from functools import lru_cache, partial from typing import TYPE_CHECKING, Any, cast from aioesphomeapi import ( @@ -29,8 +29,7 @@ from homeassistant.components.light import ( LightEntity, LightEntityFeature, ) -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import ( EsphomeEntity, @@ -38,27 +37,10 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry FLASH_LENGTHS = {FLASH_SHORT: 2, FLASH_LONG: 10} -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome lights based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=LightInfo, - entity_type=EsphomeLight, - state_type=LightState, - ) - - _COLOR_MODE_MAPPING = { ColorMode.ONOFF: [ LightColorCapability.ON_OFF, @@ -437,3 +419,11 @@ class EsphomeLight(EsphomeEntity[LightInfo, LightState], LightEntity): if ColorMode.COLOR_TEMP in supported: self._attr_min_color_temp_kelvin = _mired_to_kelvin(static_info.max_mireds) self._attr_max_color_temp_kelvin = _mired_to_kelvin(static_info.min_mireds) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=LightInfo, + entity_type=EsphomeLight, + state_type=LightState, +) diff --git a/homeassistant/components/esphome/lock.py b/homeassistant/components/esphome/lock.py index c00f81839cb..4caa1f68612 100644 --- a/homeassistant/components/esphome/lock.py +++ b/homeassistant/components/esphome/lock.py @@ -2,14 +2,14 @@ from __future__ import annotations +from functools import partial from typing import Any from aioesphomeapi import EntityInfo, LockCommand, LockEntityState, LockInfo, LockState from homeassistant.components.lock import LockEntity, LockEntityFeature from homeassistant.const import ATTR_CODE -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import ( EsphomeEntity, @@ -17,23 +17,6 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome switches based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=LockInfo, - entity_type=EsphomeLock, - state_type=LockEntityState, - ) class EsphomeLock(EsphomeEntity[LockInfo, LockEntityState], LockEntity): @@ -92,3 +75,11 @@ class EsphomeLock(EsphomeEntity[LockInfo, LockEntityState], LockEntity): async def async_open(self, **kwargs: Any) -> None: """Open the door latch.""" self._client.lock_command(self._key, LockCommand.OPEN) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=LockInfo, + entity_type=EsphomeLock, + state_type=LockEntityState, +) diff --git a/homeassistant/components/esphome/media_player.py b/homeassistant/components/esphome/media_player.py index 8caad0f939d..ec9d61fb9e7 100644 --- a/homeassistant/components/esphome/media_player.py +++ b/homeassistant/components/esphome/media_player.py @@ -2,6 +2,7 @@ from __future__ import annotations +from functools import partial from typing import Any from aioesphomeapi import ( @@ -23,9 +24,7 @@ from homeassistant.components.media_player import ( MediaType, async_process_play_media_url, ) -from homeassistant.config_entries import ConfigEntry -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import ( EsphomeEntity, @@ -35,23 +34,6 @@ from .entity import ( ) from .enum_mapper import EsphomeEnumMapper - -async def async_setup_entry( - hass: HomeAssistant, - entry: ConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome media players based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=MediaPlayerInfo, - entity_type=EsphomeMediaPlayer, - state_type=MediaPlayerEntityState, - ) - - _STATES: EsphomeEnumMapper[EspMediaPlayerState, MediaPlayerState] = EsphomeEnumMapper( { EspMediaPlayerState.IDLE: MediaPlayerState.IDLE, @@ -159,3 +141,11 @@ class EsphomeMediaPlayer( self._key, command=MediaPlayerCommand.MUTE if mute else MediaPlayerCommand.UNMUTE, ) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=MediaPlayerInfo, + entity_type=EsphomeMediaPlayer, + state_type=MediaPlayerEntityState, +) diff --git a/homeassistant/components/esphome/number.py b/homeassistant/components/esphome/number.py index 01744dd9998..1e588c8d35e 100644 --- a/homeassistant/components/esphome/number.py +++ b/homeassistant/components/esphome/number.py @@ -2,6 +2,7 @@ from __future__ import annotations +from functools import partial import math from aioesphomeapi import ( @@ -12,9 +13,7 @@ from aioesphomeapi import ( ) from homeassistant.components.number import NumberDeviceClass, NumberEntity, NumberMode -from homeassistant.config_entries import ConfigEntry -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.enum import try_parse_enum from .entity import ( @@ -25,23 +24,6 @@ from .entity import ( ) from .enum_mapper import EsphomeEnumMapper - -async def async_setup_entry( - hass: HomeAssistant, - entry: ConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome numbers based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=NumberInfo, - entity_type=EsphomeNumber, - state_type=NumberState, - ) - - NUMBER_MODES: EsphomeEnumMapper[EsphomeNumberMode, NumberMode] = EsphomeEnumMapper( { EsphomeNumberMode.AUTO: NumberMode.AUTO, @@ -87,3 +69,11 @@ class EsphomeNumber(EsphomeEntity[NumberInfo, NumberState], NumberEntity): async def async_set_native_value(self, value: float) -> None: """Update the current value.""" self._client.number_command(self._key, value) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=NumberInfo, + entity_type=EsphomeNumber, + state_type=NumberState, +) diff --git a/homeassistant/components/esphome/switch.py b/homeassistant/components/esphome/switch.py index b2245c78f52..c210ae1440b 100644 --- a/homeassistant/components/esphome/switch.py +++ b/homeassistant/components/esphome/switch.py @@ -2,13 +2,13 @@ from __future__ import annotations +from functools import partial from typing import Any from aioesphomeapi import EntityInfo, SwitchInfo, SwitchState from homeassistant.components.switch import SwitchDeviceClass, SwitchEntity -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.enum import try_parse_enum from .entity import ( @@ -17,23 +17,6 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome switches based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=SwitchInfo, - entity_type=EsphomeSwitch, - state_type=SwitchState, - ) class EsphomeSwitch(EsphomeEntity[SwitchInfo, SwitchState], SwitchEntity): @@ -64,3 +47,11 @@ class EsphomeSwitch(EsphomeEntity[SwitchInfo, SwitchState], SwitchEntity): async def async_turn_off(self, **kwargs: Any) -> None: """Turn the entity off.""" self._client.switch_command(self._key, False) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=SwitchInfo, + entity_type=EsphomeSwitch, + state_type=SwitchState, +) diff --git a/homeassistant/components/esphome/text.py b/homeassistant/components/esphome/text.py index 7d455e9ec21..f9dbbbcd853 100644 --- a/homeassistant/components/esphome/text.py +++ b/homeassistant/components/esphome/text.py @@ -2,12 +2,12 @@ from __future__ import annotations +from functools import partial + from aioesphomeapi import EntityInfo, TextInfo, TextMode as EsphomeTextMode, TextState from homeassistant.components.text import TextEntity, TextMode -from homeassistant.config_entries import ConfigEntry -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from .entity import ( EsphomeEntity, @@ -17,23 +17,6 @@ from .entity import ( ) from .enum_mapper import EsphomeEnumMapper - -async def async_setup_entry( - hass: HomeAssistant, - entry: ConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome texts based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=TextInfo, - entity_type=EsphomeText, - state_type=TextState, - ) - - TEXT_MODES: EsphomeEnumMapper[EsphomeTextMode, TextMode] = EsphomeEnumMapper( { EsphomeTextMode.TEXT: TextMode.TEXT, @@ -68,3 +51,11 @@ class EsphomeText(EsphomeEntity[TextInfo, TextState], TextEntity): async def async_set_value(self, value: str) -> None: """Update the current value.""" self._client.text_command(self._key, value) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=TextInfo, + entity_type=EsphomeText, + state_type=TextState, +) diff --git a/homeassistant/components/esphome/time.py b/homeassistant/components/esphome/time.py index de985a1e1d6..477c47cf636 100644 --- a/homeassistant/components/esphome/time.py +++ b/homeassistant/components/esphome/time.py @@ -3,33 +3,15 @@ from __future__ import annotations from datetime import time +from functools import partial from aioesphomeapi import TimeInfo, TimeState from homeassistant.components.time import TimeEntity -from homeassistant.config_entries import ConfigEntry -from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity_platform import AddEntitiesCallback from .entity import EsphomeEntity, esphome_state_property, platform_async_setup_entry -async def async_setup_entry( - hass: HomeAssistant, - entry: ConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up esphome times based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=TimeInfo, - entity_type=EsphomeTime, - state_type=TimeState, - ) - - class EsphomeTime(EsphomeEntity[TimeInfo, TimeState], TimeEntity): """A time implementation for esphome.""" @@ -45,3 +27,11 @@ class EsphomeTime(EsphomeEntity[TimeInfo, TimeState], TimeEntity): async def async_set_value(self, value: time) -> None: """Update the current time.""" self._client.time_command(self._key, value.hour, value.minute, value.second) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=TimeInfo, + entity_type=EsphomeTime, + state_type=TimeState, +) diff --git a/homeassistant/components/esphome/valve.py b/homeassistant/components/esphome/valve.py index a82d65366c6..d779a6abb9f 100644 --- a/homeassistant/components/esphome/valve.py +++ b/homeassistant/components/esphome/valve.py @@ -2,6 +2,7 @@ from __future__ import annotations +from functools import partial from typing import Any from aioesphomeapi import EntityInfo, ValveInfo, ValveOperation, ValveState @@ -11,8 +12,7 @@ from homeassistant.components.valve import ( ValveEntity, ValveEntityFeature, ) -from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.core import callback from homeassistant.util.enum import try_parse_enum from .entity import ( @@ -21,23 +21,6 @@ from .entity import ( esphome_state_property, platform_async_setup_entry, ) -from .entry_data import ESPHomeConfigEntry - - -async def async_setup_entry( - hass: HomeAssistant, - entry: ESPHomeConfigEntry, - async_add_entities: AddEntitiesCallback, -) -> None: - """Set up ESPHome valves based on a config entry.""" - await platform_async_setup_entry( - hass, - entry, - async_add_entities, - info_type=ValveInfo, - entity_type=EsphomeValve, - state_type=ValveState, - ) class EsphomeValve(EsphomeEntity[ValveInfo, ValveState], ValveEntity): @@ -103,3 +86,11 @@ class EsphomeValve(EsphomeEntity[ValveInfo, ValveState], ValveEntity): async def async_set_valve_position(self, position: float) -> None: """Move the valve to a specific position.""" self._client.valve_command(key=self._key, position=position / 100) + + +async_setup_entry = partial( + platform_async_setup_entry, + info_type=ValveInfo, + entity_type=EsphomeValve, + state_type=ValveState, +)