|
58 | 58 | ATTR_VALUE, |
59 | 59 | DATA_CLIENT, |
60 | 60 | DOMAIN, |
61 | | - ENTITY_DESC_KEY_BATTERY, |
| 61 | + ENTITY_DESC_KEY_BATTERY_LEVEL, |
| 62 | + ENTITY_DESC_KEY_BATTERY_LIST_STATE, |
| 63 | + ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY, |
| 64 | + ENTITY_DESC_KEY_BATTERY_TEMPERATURE, |
62 | 65 | ENTITY_DESC_KEY_CO, |
63 | 66 | ENTITY_DESC_KEY_CO2, |
64 | 67 | ENTITY_DESC_KEY_CURRENT, |
|
95 | 98 | PARALLEL_UPDATES = 0 |
96 | 99 |
|
97 | 100 |
|
98 | | -# These descriptions should include device class. |
99 | | -ENTITY_DESCRIPTION_KEY_DEVICE_CLASS_MAP: dict[ |
100 | | - tuple[str, str], SensorEntityDescription |
101 | | -] = { |
102 | | - (ENTITY_DESC_KEY_BATTERY, PERCENTAGE): SensorEntityDescription( |
103 | | - key=ENTITY_DESC_KEY_BATTERY, |
| 101 | +# These descriptions should have a non None unit of measurement. |
| 102 | +ENTITY_DESCRIPTION_KEY_UNIT_MAP: dict[tuple[str, str], SensorEntityDescription] = { |
| 103 | + (ENTITY_DESC_KEY_BATTERY_LEVEL, PERCENTAGE): SensorEntityDescription( |
| 104 | + key=ENTITY_DESC_KEY_BATTERY_LEVEL, |
104 | 105 | device_class=SensorDeviceClass.BATTERY, |
105 | 106 | entity_category=EntityCategory.DIAGNOSTIC, |
106 | 107 | state_class=SensorStateClass.MEASUREMENT, |
107 | 108 | native_unit_of_measurement=PERCENTAGE, |
108 | 109 | ), |
| 110 | + (ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY, PERCENTAGE): SensorEntityDescription( |
| 111 | + key=ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY, |
| 112 | + entity_category=EntityCategory.DIAGNOSTIC, |
| 113 | + state_class=SensorStateClass.MEASUREMENT, |
| 114 | + native_unit_of_measurement=PERCENTAGE, |
| 115 | + entity_registry_enabled_default=False, |
| 116 | + ), |
| 117 | + ( |
| 118 | + ENTITY_DESC_KEY_BATTERY_TEMPERATURE, |
| 119 | + UnitOfTemperature.CELSIUS, |
| 120 | + ): SensorEntityDescription( |
| 121 | + key=ENTITY_DESC_KEY_BATTERY_TEMPERATURE, |
| 122 | + device_class=SensorDeviceClass.TEMPERATURE, |
| 123 | + entity_category=EntityCategory.DIAGNOSTIC, |
| 124 | + state_class=SensorStateClass.MEASUREMENT, |
| 125 | + native_unit_of_measurement=UnitOfTemperature.CELSIUS, |
| 126 | + entity_registry_enabled_default=False, |
| 127 | + ), |
109 | 128 | (ENTITY_DESC_KEY_CURRENT, UnitOfElectricCurrent.AMPERE): SensorEntityDescription( |
110 | 129 | key=ENTITY_DESC_KEY_CURRENT, |
111 | 130 | device_class=SensorDeviceClass.CURRENT, |
|
285 | 304 | ), |
286 | 305 | } |
287 | 306 |
|
288 | | -# These descriptions are without device class. |
| 307 | +# These descriptions are without unit of measurement. |
289 | 308 | ENTITY_DESCRIPTION_KEY_MAP = { |
| 309 | + ENTITY_DESC_KEY_BATTERY_LIST_STATE: SensorEntityDescription( |
| 310 | + key=ENTITY_DESC_KEY_BATTERY_LIST_STATE, |
| 311 | + device_class=SensorDeviceClass.ENUM, |
| 312 | + entity_category=EntityCategory.DIAGNOSTIC, |
| 313 | + entity_registry_enabled_default=False, |
| 314 | + ), |
290 | 315 | ENTITY_DESC_KEY_CO: SensorEntityDescription( |
291 | 316 | key=ENTITY_DESC_KEY_CO, |
292 | 317 | state_class=SensorStateClass.MEASUREMENT, |
@@ -538,7 +563,7 @@ def get_entity_description( |
538 | 563 | """Return the entity description for the given data.""" |
539 | 564 | data_description_key = data.entity_description_key or "" |
540 | 565 | data_unit = data.unit_of_measurement or "" |
541 | | - return ENTITY_DESCRIPTION_KEY_DEVICE_CLASS_MAP.get( |
| 566 | + return ENTITY_DESCRIPTION_KEY_UNIT_MAP.get( |
542 | 567 | (data_description_key, data_unit), |
543 | 568 | ENTITY_DESCRIPTION_KEY_MAP.get( |
544 | 569 | data_description_key, |
@@ -588,6 +613,10 @@ def async_add_sensor(info: ZwaveDiscoveryInfo) -> None: |
588 | 613 | entities.append( |
589 | 614 | ZWaveListSensor(config_entry, driver, info, entity_description) |
590 | 615 | ) |
| 616 | + elif info.platform_hint == "list": |
| 617 | + entities.append( |
| 618 | + ZWaveListSensor(config_entry, driver, info, entity_description) |
| 619 | + ) |
591 | 620 | elif info.platform_hint == "config_parameter": |
592 | 621 | entities.append( |
593 | 622 | ZWaveConfigParameterSensor( |
|
0 commit comments