1 """The Wolf SmartSet sensors."""
3 from __future__
import annotations
5 from wolf_comm.models
import (
23 from .const
import COORDINATOR, DEVICE_ID, DOMAIN, MANUFACTURER, PARAMETERS, STATES
28 config_entry: ConfigEntry,
29 async_add_entities: AddEntitiesCallback,
31 """Set up all entries for Wolf Platform."""
33 coordinator = hass.data[DOMAIN][config_entry.entry_id][COORDINATOR]
34 parameters = hass.data[DOMAIN][config_entry.entry_id][PARAMETERS]
35 device_id = hass.data[DOMAIN][config_entry.entry_id][DEVICE_ID]
37 entities: list[WolfLinkSensor] = []
38 for parameter
in parameters:
39 if isinstance(parameter, Temperature):
41 if isinstance(parameter, Pressure):
43 if isinstance(parameter, PercentageParameter):
45 if isinstance(parameter, ListItemParameter):
46 entities.append(
WolfLinkState(coordinator, parameter, device_id))
47 if isinstance(parameter, HoursParameter):
48 entities.append(
WolfLinkHours(coordinator, parameter, device_id))
49 if isinstance(parameter, SimpleParameter):
56 """Base class for all Wolf entities."""
58 def __init__(self, coordinator, wolf_object: Parameter, device_id) ->
None:
66 identifiers={(DOMAIN,
str(device_id))},
67 configuration_url=
"https://www.wolf-smartset.com/",
68 manufacturer=MANUFACTURER,
73 """Return the state. Wolf Client is returning only changed values so we need to store old value here."""
74 if self.
wolf_objectwolf_object.parameter_id
in self.coordinator.data:
75 new_state = self.coordinator.data[self.
wolf_objectwolf_object.parameter_id]
77 self.
_state_state = new_state[1]
82 """Return the state attributes."""
84 "parameter_id": self.
wolf_objectwolf_object.parameter_id,
91 """Class for hour based entities."""
93 _attr_icon =
"mdi:clock"
94 _attr_native_unit_of_measurement = UnitOfTime.HOURS
98 """Class for temperature based entities."""
100 _attr_device_class = SensorDeviceClass.TEMPERATURE
101 _attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
105 """Class for pressure based entities."""
107 _attr_device_class = SensorDeviceClass.PRESSURE
108 _attr_native_unit_of_measurement = UnitOfPressure.BAR
112 """Class for percentage based entities."""
116 """Return the unit the value is expressed in."""
121 """Class for entities which has defined list of state."""
123 _attr_translation_key =
"state"
127 """Return the state converting with supported values."""
128 state = super().native_value
129 if state
is not None:
131 item
for item
in self.
wolf_objectwolf_object.items
if item.value ==
int(state)
134 resolved_name = resolved_state[0].name
135 return STATES.get(resolved_name, resolved_name)
def native_unit_of_measurement(self)
def extra_state_attributes(self)
None __init__(self, coordinator, Parameter wolf_object, device_id)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)