Home Assistant Git Exporter
This commit is contained in:
48
config/custom_components/ecoflow_cloud/select.py
Normal file
48
config/custom_components/ecoflow_cloud/select.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from typing import Callable, Any
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from custom_components.ecoflow_cloud import EcoflowMQTTClient, DOMAIN
|
||||
from custom_components.ecoflow_cloud.entities import BaseSelectEntity
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback):
|
||||
client: EcoflowMQTTClient = hass.data[DOMAIN][entry.entry_id]
|
||||
|
||||
from .devices.registry import devices
|
||||
async_add_entities(devices[client.device_type].selects(client))
|
||||
|
||||
|
||||
class DictSelectEntity(BaseSelectEntity):
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_available = False
|
||||
|
||||
def __init__(self, client: EcoflowMQTTClient, mqtt_key: str, title: str, options: dict[str, int],
|
||||
command: Callable[[int], dict[str, any]] | None, enabled: bool = True, auto_enable: bool = False):
|
||||
super().__init__(client, mqtt_key, title, command, enabled, auto_enable)
|
||||
self.__options_dict = options
|
||||
self._attr_options = list(options.keys())
|
||||
|
||||
def options_dict(self) -> dict[str, int]:
|
||||
return self.__options_dict
|
||||
|
||||
def _update_value(self, val: Any) -> bool:
|
||||
ival = int(val)
|
||||
lval = [k for k, v in self.__options_dict.items() if v == ival]
|
||||
if len(lval) == 1:
|
||||
self._attr_current_option = lval[0]
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
async def async_select_option(self, option: str):
|
||||
if self._command:
|
||||
val = self.__options_dict[option]
|
||||
self.send_set_message(val, self.command_dict(val))
|
||||
|
||||
|
||||
class TimeoutDictSelectEntity(DictSelectEntity):
|
||||
_attr_icon = "mdi:timer-outline"
|
||||
Reference in New Issue
Block a user