55
66from homeassistant .components .group .sensor import ATTR_MEAN , ATTR_SUM , SensorGroup
77from homeassistant .components .sensor .const import (
8- DEVICE_CLASSES ,
98 DOMAIN as SENSOR_DOMAIN ,
109 SensorDeviceClass ,
1110 SensorStateClass ,
@@ -133,24 +132,32 @@ def create_aggregate_sensors(area: MagicArea) -> list[Entity]:
133132 continue
134133
135134 _LOGGER .debug (
136- "Creating aggregate sensor for device_class '%s' with %d entities (%s)" ,
135+ "%s: Creating aggregate sensor for device_class '%s' with %d entities" ,
136+ area .slug ,
137137 device_class ,
138138 len (entities ),
139- area .slug ,
140139 )
141140
142- # Infer most-popular unit of measurement
143- unit_of_measurements = Counter (unit_of_measurement_map [device_class ])
144- most_common_unit_of_measurement = unit_of_measurements .most_common (1 )[0 ][0 ]
145-
146- aggregates .append (
147- AreaAggregateSensor (
148- area = area ,
149- device_class = device_class ,
150- entity_ids = entities ,
151- unit_of_measurement = most_common_unit_of_measurement ,
141+ try :
142+ # Infer most-popular unit of measurement
143+ unit_of_measurements = Counter (unit_of_measurement_map [device_class ])
144+ most_common_unit_of_measurement = unit_of_measurements .most_common (1 )[0 ][0 ]
145+
146+ aggregates .append (
147+ AreaAggregateSensor (
148+ area = area ,
149+ device_class = device_class ,
150+ entity_ids = entities ,
151+ unit_of_measurement = most_common_unit_of_measurement ,
152+ )
153+ )
154+ except Exception as e : # pylint: disable=broad-exception-caught
155+ _LOGGER .error (
156+ "%s: Error creating '%s' aggregate sensor: %s" ,
157+ area .slug ,
158+ device_class ,
159+ str (e ),
152160 )
153- )
154161
155162 return aggregates
156163
@@ -181,12 +188,11 @@ def __init__(
181188 final_unit_of_measurement = unit_of_measurement
182189
183190 self ._attr_suggested_display_precision = DEFAULT_SENSOR_PRECISION
184- sensor_device_class_object : SensorDeviceClass | None = (
185- SensorDeviceClass [device_class .upper ()]
186- if device_class in DEVICE_CLASSES
187- else None
191+
192+ sensor_device_class : SensorDeviceClass | None = (
193+ SensorDeviceClass (device_class ) if device_class else None
188194 )
189- self .device_class = sensor_device_class_object
195+ self .device_class = sensor_device_class
190196
191197 state_class = SensorStateClass .MEASUREMENT
192198
@@ -198,7 +204,7 @@ def __init__(
198204 SensorGroup .__init__ (
199205 self ,
200206 hass = area .hass ,
201- device_class = sensor_device_class_object ,
207+ device_class = sensor_device_class ,
202208 entity_ids = entity_ids ,
203209 ignore_non_numeric = True ,
204210 sensor_type = ATTR_SUM if device_class in AGGREGATE_MODE_SUM else ATTR_MEAN ,
0 commit comments