@@ -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