Fix set select entity #70
This commit is contained in:
		| @ -164,13 +164,24 @@ class HonSelectEntity(HonEntity, SelectEntity): | ||||
|  | ||||
|     @property | ||||
|     def current_option(self) -> str | None: | ||||
|         value = self._device.settings.get(self.entity_description.key) | ||||
|         if value is None or value.value not in self._attr_options: | ||||
|         if not (setting := self._device.settings.get(self.entity_description.key)): | ||||
|             return None | ||||
|         return value.value | ||||
|         value = setting.value | ||||
|         if self.entity_description.option_list: | ||||
|             value = self.entity_description.option_list.get(str(value), value) | ||||
|         if value not in self._attr_options: | ||||
|             return None | ||||
|         return value | ||||
|  | ||||
|     async def async_select_option(self, option: str) -> None: | ||||
|         self._device.settings[self.entity_description.key].value = option | ||||
|         setting = self._device.settings[self.entity_description.key] | ||||
|         if (options := self.entity_description.option_list) is not None: | ||||
|             setting.value = next( | ||||
|                 (k for k, v in options.items() if k in setting.values and v == option), | ||||
|                 option, | ||||
|             ) | ||||
|         else: | ||||
|             setting.value = option | ||||
|         command = self.entity_description.key.split(".")[0] | ||||
|         await self._device.commands[command].send() | ||||
|         await self.coordinator.async_refresh() | ||||
| @ -185,7 +196,7 @@ class HonSelectEntity(HonEntity, SelectEntity): | ||||
|         else: | ||||
|             self._attr_available = True | ||||
|             self._attr_options: List[str] = setting.values | ||||
|             value = setting.value | ||||
|             value = str(setting.value) | ||||
|         if self.entity_description.option_list is not None: | ||||
|             self._attr_options = [ | ||||
|                 self.entity_description.option_list.get(k, k) | ||||
| @ -211,7 +222,14 @@ class HonConfigSelectEntity(HonSelectEntity): | ||||
|     entity_description: HonConfigSelectEntityDescription | ||||
|  | ||||
|     async def async_select_option(self, option: str) -> None: | ||||
|         self._device.settings[self.entity_description.key].value = option | ||||
|         setting = self._device.settings[self.entity_description.key] | ||||
|         if (options := self.entity_description.option_list) is not None: | ||||
|             setting.value = next( | ||||
|                 (k for k, v in options.items() if k in setting.values and v == option), | ||||
|                 option, | ||||
|             ) | ||||
|         else: | ||||
|             setting.value = option | ||||
|         await self.coordinator.async_refresh() | ||||
|  | ||||
|     @property | ||||
|  | ||||
		Reference in New Issue
	
	Block a user