1 """Number platform for Sensibo integration."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
9 from pysensibo.model
import SensiboDevice
14 NumberEntityDescription,
20 from .
import SensiboConfigEntry
21 from .coordinator
import SensiboDataUpdateCoordinator
22 from .entity
import SensiboDeviceBaseEntity, async_handle_api_call
27 @dataclass(frozen=True, kw_only=True)
29 """Class describing Sensibo Number entities."""
32 value_fn: Callable[[SensiboDevice], float |
None]
35 DEVICE_NUMBER_TYPES = (
37 key=
"calibration_temp",
38 translation_key=
"calibration_temperature",
39 device_class=NumberDeviceClass.TEMPERATURE,
40 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
41 remote_key=
"temperature",
42 entity_category=EntityCategory.CONFIG,
43 entity_registry_enabled_default=
False,
47 value_fn=
lambda data: data.calibration_temp,
50 key=
"calibration_hum",
51 translation_key=
"calibration_humidity",
52 device_class=NumberDeviceClass.HUMIDITY,
53 native_unit_of_measurement=PERCENTAGE,
54 remote_key=
"humidity",
55 entity_category=EntityCategory.CONFIG,
56 entity_registry_enabled_default=
False,
60 value_fn=
lambda data: data.calibration_hum,
67 entry: SensiboConfigEntry,
68 async_add_entities: AddEntitiesCallback,
70 """Set up Sensibo number platform."""
72 coordinator = entry.runtime_data
76 for device_id, device_data
in coordinator.data.parsed.items()
77 for description
in DEVICE_NUMBER_TYPES
82 """Representation of a Sensibo numbers."""
84 entity_description: SensiboNumberEntityDescription
88 coordinator: SensiboDataUpdateCoordinator,
90 entity_description: SensiboNumberEntityDescription,
92 """Initiate Sensibo Number."""
93 super().
__init__(coordinator, device_id)
99 """Return the value from coordinator data."""
103 """Set value for calibration."""
106 @async_handle_api_call
108 """Make service call to api."""
110 result = await self.
_client_client.async_set_calibration(
114 return bool(result.get(
"status") ==
"success")
SensiboDevice device_data(self)
bool async_send_api_call(self, str key, Any value)
None __init__(self, SensiboDataUpdateCoordinator coordinator, str device_id, SensiboNumberEntityDescription entity_description)
float|None native_value(self)
None async_set_native_value(self, float value)
None async_setup_entry(HomeAssistant hass, SensiboConfigEntry entry, AddEntitiesCallback async_add_entities)