Skip to content

Commit 1df3858

Browse files
authored
Merge pull request #26 from dala318/attr_unique_id
Integration has invalid propery function overrides
2 parents df06992 + 3dab331 commit 1df3858

1 file changed

Lines changed: 43 additions & 59 deletions

File tree

sensor.py

Lines changed: 43 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -55,79 +55,37 @@ def __init__(
5555
super().__init__(coordinator)
5656
self._account = account
5757
self._latest_measurement = meas
58-
59-
@callback
60-
def _handle_coordinator_update(self) -> None:
61-
"""Handle updated data from the coordinator."""
62-
try:
63-
self._latest_measurement = self.coordinator.data.get_measurement(
64-
self._account.id, self._latest_measurement.parameter
65-
)
66-
self.async_write_ha_state()
67-
except StopIteration:
68-
_LOGGER.error(
69-
"Could not find a measurement matching id:%s and parameter:%s",
70-
self._account.id,
71-
self._latest_measurement.parameter,
72-
)
73-
74-
@property
75-
def _attr_unique_id(self) -> str:
76-
return "%s_account%s_%s" % (
58+
59+
self._attr_unique_id = "%s_account%s_%s" % (
7760
self.coordinator.data.id,
7861
self._account.id,
79-
self._latest_measurement.parameter.replace(" ", "_")
80-
.replace("-", "_")
81-
.lower(),
62+
self._latest_measurement.parameter.replace(" ", "_").replace("-", "_").lower(),
8263
)
83-
84-
@property
85-
def _attr_name(self) -> str:
86-
return "%s %s" % (self._account.full_name, self._latest_measurement.parameter)
87-
88-
@property
89-
def _attr_device_info(self) -> DeviceInfo:
90-
"""Return a inique set of attributes for each vehicle."""
91-
return DeviceInfo(
64+
self._attr_name = "%s %s" % (
65+
self._account.full_name,
66+
self._latest_measurement.parameter
67+
)
68+
self._attr_device_info = DeviceInfo(
9269
identifiers={(DOMAIN, self._account.id)},
9370
name=self._account.full_name,
9471
model="%sm3" % self._account.volume,
9572
manufacturer="PoolLab",
9673
)
97-
98-
@property
99-
def _attr_native_value(self):
100-
return self._latest_measurement.value
101-
102-
@property
103-
def _attr_native_unit_of_measurement(self) -> str:
104-
return self._latest_measurement.unit.split(" ")[0]
105-
106-
@property
107-
def _attr_suggested_display_precision(self) -> int:
74+
self._attr_native_unit_of_measurement = self._latest_measurement.unit.split(" ")[0]
10875
try:
10976
meas_value = float(self._latest_measurement.value)
11077
if meas_value >= 100:
111-
return 0
78+
self._attr_suggested_display_precision = 0
11279
elif meas_value >= 10:
113-
return 1
80+
self._attr_suggested_display_precision = 1
11481
else:
115-
return 2
82+
self._attr_suggested_display_precision = 2
11683
except:
117-
return 1
118-
119-
@property
120-
def _attr_state_class(self) -> SensorStateClass:
121-
return SensorStateClass.MEASUREMENT
122-
123-
@property
124-
def _attr_icon(self) -> str:
125-
return "mdi:water-percent"
126-
127-
@property
128-
def _attr_extra_state_attributes(self):
129-
"""Provide attributes for the entity"""
130-
return {
84+
pass
85+
self._attr_state_class = SensorStateClass.MEASUREMENT
86+
self._attr_icon = "mdi:water-percent"
87+
self._attr_native_value = self._latest_measurement.value
88+
self._attr_extra_state_attributes = {
13189
"measured_at": self._latest_measurement.timestamp,
13290
"measure": self._latest_measurement.id,
13391
"ideal_low": self._latest_measurement.ideal_low,
@@ -136,3 +94,29 @@ def _attr_extra_state_attributes(self):
13694
"operator_name": self._latest_measurement.operator_name,
13795
"comment": self._latest_measurement.comment,
13896
}
97+
98+
@callback
99+
def _handle_coordinator_update(self) -> None:
100+
"""Handle updated data from the coordinator."""
101+
try:
102+
self._latest_measurement = self.coordinator.data.get_measurement(
103+
self._account.id, self._latest_measurement.parameter
104+
)
105+
self._attr_native_value = self._latest_measurement.value
106+
self._attr_extra_state_attributes = {
107+
"measured_at": self._latest_measurement.timestamp,
108+
"measure": self._latest_measurement.id,
109+
"ideal_low": self._latest_measurement.ideal_low,
110+
"ideal_high": self._latest_measurement.ideal_high,
111+
"device_serial": self._latest_measurement.device_serial,
112+
"operator_name": self._latest_measurement.operator_name,
113+
"comment": self._latest_measurement.comment,
114+
}
115+
self.async_write_ha_state()
116+
except StopIteration:
117+
_LOGGER.error(
118+
"Could not find a measurement matching id:%s and parameter:%s",
119+
self._account.id,
120+
self._latest_measurement.parameter,
121+
)
122+

0 commit comments

Comments
 (0)