1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-21 07:50:23 +01:00
Files
2026-05-06 09:09:24 +02:00

57 lines
1.8 KiB
Python

"""Select platform for Zinvolt integration."""
from zinvolt.models import SmartMode
from homeassistant.components.select import SelectEntity
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .coordinator import ZinvoltConfigEntry, ZinvoltDeviceCoordinator
from .entity import ZinvoltEntity
MODE_MAP = {
SmartMode.DYNAMIC: "dynamic",
SmartMode.SELF_USE: "self_use",
SmartMode.PERFORMANCE: "fast_discharge",
SmartMode.CHARGED: "fast_charge",
SmartMode.FEED: "connected_solar_panels",
}
HA_TO_MODE = {v: k for k, v in MODE_MAP.items()}
async def async_setup_entry(
hass: HomeAssistant,
entry: ZinvoltConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Initialize the entries."""
async_add_entities(
ZinvoltBatteryMode(coordinator) for coordinator in entry.runtime_data.values()
)
class ZinvoltBatteryMode(ZinvoltEntity, SelectEntity):
"""Zinvolt select."""
_attr_options = list(HA_TO_MODE.keys())
_attr_translation_key = "battery_mode"
def __init__(self, coordinator: ZinvoltDeviceCoordinator) -> None:
"""Initialize the select."""
super().__init__(coordinator)
self._attr_unique_id = f"{coordinator.data.battery.serial_number}.mode"
@property
def current_option(self) -> str | None:
"""Return the current battery mode."""
return MODE_MAP.get(self.coordinator.data.battery.smart_mode)
async def async_select_option(self, option: str) -> None:
"""Set battery mode."""
await self.coordinator.client.set_smart_mode(
self.coordinator.battery.identifier, HA_TO_MODE[option]
)
await self.coordinator.async_request_refresh()