1 """Support for Notion sensors."""
3 from dataclasses
import dataclass
5 from aionotion.listener.models
import ListenerKind
10 SensorEntityDescription,
18 from .const
import DOMAIN, SENSOR_MOLD, SENSOR_TEMPERATURE
19 from .coordinator
import NotionDataUpdateCoordinator
20 from .entity
import NotionEntity, NotionEntityDescription
23 @dataclass(frozen=True, kw_only=True)
25 """Describe a Notion sensor."""
28 SENSOR_DESCRIPTIONS = (
29 NotionSensorDescription(
31 translation_key=
"mold_risk",
32 listener_kind=ListenerKind.MOLD,
34 NotionSensorDescription(
35 key=SENSOR_TEMPERATURE,
36 device_class=SensorDeviceClass.TEMPERATURE,
37 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
38 state_class=SensorStateClass.MEASUREMENT,
39 listener_kind=ListenerKind.TEMPERATURE,
45 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
47 """Set up Notion sensors based on a config entry."""
48 coordinator: NotionDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
59 for listener_id, listener
in coordinator.data.listeners.items()
60 for description
in SENSOR_DESCRIPTIONS
61 if description.listener_kind.value == listener.definition_id
62 and (sensor := coordinator.data.sensors[listener.sensor_id])
68 """Define a Notion sensor."""
72 """Return the unit of measurement of the sensor."""
73 if self.
listenerlistener.definition_id == ListenerKind.TEMPERATURE.value:
74 if not self.coordinator.data.user_preferences:
76 if self.coordinator.data.user_preferences.celsius_enabled:
77 return UnitOfTemperature.CELSIUS
78 return UnitOfTemperature.FAHRENHEIT
83 """Return the value reported by the sensor."""
84 if not self.
listenerlistener.status_localized:
86 if self.
listenerlistener.definition_id == ListenerKind.TEMPERATURE.value:
89 return self.
listenerlistener.status_localized.state[:-1]
90 return self.
listenerlistener.status_localized.state
str|None native_unit_of_measurement(self)
str|None native_value(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)