mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Small cleanups to enphase_envoy select platform (#98476)
This commit is contained in:
parent
92535277be
commit
73f882bf36
@ -1,11 +1,11 @@
|
|||||||
"""Select platform for Enphase Envoy solar energy monitor."""
|
"""Select platform for Enphase Envoy solar energy monitor."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable, Coroutine
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from pyenphase import EnvoyDryContactSettings
|
from pyenphase import Envoy, EnvoyDryContactSettings
|
||||||
from pyenphase.models.dry_contacts import DryContactAction, DryContactMode
|
from pyenphase.models.dry_contacts import DryContactAction, DryContactMode
|
||||||
|
|
||||||
from homeassistant.components.select import SelectEntity, SelectEntityDescription
|
from homeassistant.components.select import SelectEntity, SelectEntityDescription
|
||||||
@ -24,7 +24,9 @@ class EnvoyRelayRequiredKeysMixin:
|
|||||||
"""Mixin for required keys."""
|
"""Mixin for required keys."""
|
||||||
|
|
||||||
value_fn: Callable[[EnvoyDryContactSettings], str]
|
value_fn: Callable[[EnvoyDryContactSettings], str]
|
||||||
update_fn: Callable[[Any, Any, Any], Any]
|
update_fn: Callable[
|
||||||
|
[Envoy, EnvoyDryContactSettings, str], Coroutine[Any, Any, dict[str, Any]]
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -129,36 +131,34 @@ class EnvoyRelaySelectEntity(EnvoyBaseEntity, SelectEntity):
|
|||||||
self,
|
self,
|
||||||
coordinator: EnphaseUpdateCoordinator,
|
coordinator: EnphaseUpdateCoordinator,
|
||||||
description: EnvoyRelaySelectEntityDescription,
|
description: EnvoyRelaySelectEntityDescription,
|
||||||
relay: str,
|
relay_id: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize the Enphase relay select entity."""
|
"""Initialize the Enphase relay select entity."""
|
||||||
super().__init__(coordinator, description)
|
super().__init__(coordinator, description)
|
||||||
self.envoy = coordinator.envoy
|
self.envoy = coordinator.envoy
|
||||||
assert self.envoy is not None
|
enpower = self.data.enpower
|
||||||
assert self.data is not None
|
assert enpower is not None
|
||||||
self.enpower = self.data.enpower
|
serial_number = enpower.serial_number
|
||||||
assert self.enpower is not None
|
self._relay_id = relay_id
|
||||||
self._serial_number = self.enpower.serial_number
|
self._attr_unique_id = f"{serial_number}_relay_{relay_id}_{description.key}"
|
||||||
self.relay = self.data.dry_contact_settings[relay]
|
|
||||||
self.relay_id = relay
|
|
||||||
self._attr_unique_id = (
|
|
||||||
f"{self._serial_number}_relay_{relay}_{self.entity_description.key}"
|
|
||||||
)
|
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
identifiers={(DOMAIN, relay)},
|
identifiers={(DOMAIN, relay_id)},
|
||||||
manufacturer="Enphase",
|
manufacturer="Enphase",
|
||||||
model="Dry contact relay",
|
model="Dry contact relay",
|
||||||
name=self.relay.load_name,
|
name=self.relay.load_name,
|
||||||
sw_version=str(self.enpower.firmware_version),
|
sw_version=str(enpower.firmware_version),
|
||||||
via_device=(DOMAIN, self._serial_number),
|
via_device=(DOMAIN, serial_number),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def relay(self) -> EnvoyDryContactSettings:
|
||||||
|
"""Return the relay object."""
|
||||||
|
return self.data.dry_contact_settings[self._relay_id]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_option(self) -> str:
|
def current_option(self) -> str:
|
||||||
"""Return the state of the Enpower switch."""
|
"""Return the state of the Enpower switch."""
|
||||||
return self.entity_description.value_fn(
|
return self.entity_description.value_fn(self.relay)
|
||||||
self.data.dry_contact_settings[self.relay_id]
|
|
||||||
)
|
|
||||||
|
|
||||||
async def async_select_option(self, option: str) -> None:
|
async def async_select_option(self, option: str) -> None:
|
||||||
"""Update the relay."""
|
"""Update the relay."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user