Fix some small bugs

This commit is contained in:
Andre Basche 2023-07-10 00:21:45 +02:00
parent bb700dd2f7
commit c0d25a4efe
4 changed files with 11 additions and 17 deletions

View file

@ -16,17 +16,10 @@ _LOGGER = logging.getLogger(__name__)
@dataclass @dataclass
class HonBinarySensorEntityDescriptionMixin: class HonBinarySensorEntityDescription(BinarySensorEntityDescription):
on_value: str | float = "" on_value: str | float = ""
@dataclass
class HonBinarySensorEntityDescription(
HonBinarySensorEntityDescriptionMixin, BinarySensorEntityDescription
):
pass
BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = {
"WM": ( "WM": (
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(

View file

@ -218,6 +218,7 @@ AP_MACH_MODE = {
} }
AP_DIFFUSER_LEVEL = { AP_DIFFUSER_LEVEL = {
0: "off",
1: "soft", 1: "soft",
2: "mid", 2: "mid",
3: "h_biotics", 3: "h_biotics",

View file

@ -199,10 +199,12 @@ class HonConfigSelectEntity(HonEntity, SelectEntity):
def _option_to_number(self, option: str, values: List[str]): def _option_to_number(self, option: str, values: List[str]):
if (options := self.entity_description.option_list) is not None: if (options := self.entity_description.option_list) is not None:
return next( return str(
next(
(k for k, v in options.items() if str(k) in values and v == option), (k for k, v in options.items() if str(k) in values and v == option),
option, option,
) )
)
return option return option
async def async_select_option(self, option: str) -> None: async def async_select_option(self, option: str) -> None:

View file

@ -388,7 +388,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity):
setting = self._device.settings[f"settings.{self.entity_description.key}"] setting = self._device.settings[f"settings.{self.entity_description.key}"]
if type(setting) == HonParameter: if type(setting) == HonParameter:
return return
setting.value = setting.max if isinstance(setting, HonParameterRange) else "1" setting.value = setting.max if isinstance(setting, HonParameterRange) else 1
self.async_write_ha_state() self.async_write_ha_state()
await self._device.commands["settings"].send() await self._device.commands["settings"].send()
await self.coordinator.async_refresh() await self.coordinator.async_refresh()
@ -397,7 +397,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity):
setting = self._device.settings[f"settings.{self.entity_description.key}"] setting = self._device.settings[f"settings.{self.entity_description.key}"]
if type(setting) == HonParameter: if type(setting) == HonParameter:
return return
setting.value = setting.min if isinstance(setting, HonParameterRange) else "0" setting.value = setting.min if isinstance(setting, HonParameterRange) else 0
self.async_write_ha_state() self.async_write_ha_state()
await self._device.commands["settings"].send() await self._device.commands["settings"].send()
await self.coordinator.async_refresh() await self.coordinator.async_refresh()
@ -413,8 +413,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity):
@callback @callback
def _handle_coordinator_update(self, update=True) -> None: def _handle_coordinator_update(self, update=True) -> None:
value = self._device.get(self.entity_description.key, 0) self._attr_is_on = self.is_on
self._attr_state = value == 1
if update: if update:
self.async_write_ha_state() self.async_write_ha_state()
@ -490,7 +489,6 @@ class HonConfigSwitchEntity(HonEntity, SwitchEntity):
@callback @callback
def _handle_coordinator_update(self, update=True) -> None: def _handle_coordinator_update(self, update=True) -> None:
value = self._device.settings.get(self.entity_description.key, "0") self._attr_is_on = self.is_on
self._attr_state = value == "1"
if update: if update:
self.async_write_ha_state() self.async_write_ha_state()