mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Await set value function in ScreenLogic number entities (#101802)
This commit is contained in:
parent
7fd89b2959
commit
2276be275d
@ -1,5 +1,6 @@
|
|||||||
"""Support for a ScreenLogic number entity."""
|
"""Support for a ScreenLogic number entity."""
|
||||||
from collections.abc import Callable
|
import asyncio
|
||||||
|
from collections.abc import Awaitable, Callable
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -105,13 +106,13 @@ class ScreenLogicNumber(ScreenlogicEntity, NumberEntity):
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize a ScreenLogic number entity."""
|
"""Initialize a ScreenLogic number entity."""
|
||||||
super().__init__(coordinator, entity_description)
|
super().__init__(coordinator, entity_description)
|
||||||
if not callable(
|
if not asyncio.iscoroutinefunction(
|
||||||
func := getattr(self.gateway, entity_description.set_value_name)
|
func := getattr(self.gateway, entity_description.set_value_name)
|
||||||
):
|
):
|
||||||
raise TypeError(
|
raise TypeError(
|
||||||
f"set_value_name '{entity_description.set_value_name}' is not a callable"
|
f"set_value_name '{entity_description.set_value_name}' is not a coroutine"
|
||||||
)
|
)
|
||||||
self._set_value_func: Callable[..., bool] = func
|
self._set_value_func: Callable[..., Awaitable[bool]] = func
|
||||||
self._set_value_args = entity_description.set_value_args
|
self._set_value_args = entity_description.set_value_args
|
||||||
self._attr_native_unit_of_measurement = get_ha_unit(
|
self._attr_native_unit_of_measurement = get_ha_unit(
|
||||||
self.entity_data.get(ATTR.UNIT)
|
self.entity_data.get(ATTR.UNIT)
|
||||||
@ -145,9 +146,12 @@ class ScreenLogicNumber(ScreenlogicEntity, NumberEntity):
|
|||||||
data_key = data_path[-1]
|
data_key = data_path[-1]
|
||||||
args[data_key] = self.coordinator.gateway.get_value(*data_path, strict=True)
|
args[data_key] = self.coordinator.gateway.get_value(*data_path, strict=True)
|
||||||
|
|
||||||
|
# Current API requires int values for the currently supported numbers.
|
||||||
|
value = int(value)
|
||||||
|
|
||||||
args[self._data_key] = value
|
args[self._data_key] = value
|
||||||
|
|
||||||
if self._set_value_func(*args.values()):
|
if await self._set_value_func(*args.values()):
|
||||||
_LOGGER.debug("Set '%s' to %s", self._data_key, value)
|
_LOGGER.debug("Set '%s' to %s", self._data_key, value)
|
||||||
await self._async_refresh()
|
await self._async_refresh()
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user