From 33cc6839f98c19e9e87f8f375380e09e632d0ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Strandberg?= Date: Wed, 2 Sep 2026 19:27:17 +0200 Subject: [PATCH] Add missing state_class for miele filling level sensors (#181093) --- homeassistant/components/miele/sensor.py | 5 + .../miele/snapshots/test_sensor.ambr | 280 ++++++++++++++---- 2 files changed, 229 insertions(+), 56 deletions(-) diff --git a/homeassistant/components/miele/sensor.py b/homeassistant/components/miele/sensor.py index 1f4c9f3b2f12..bf507a218426 100644 --- a/homeassistant/components/miele/sensor.py +++ b/homeassistant/components/miele/sensor.py @@ -723,6 +723,7 @@ POLLED_SENSOR_TYPES: Final[tuple[MieleSensorDefinition[MieleFillingLevel], ...]] value_fn=lambda value: value.twin_dos_container_1_filling_level, native_unit_of_measurement=PERCENTAGE, entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, ), ), MieleSensorDefinition( @@ -736,6 +737,7 @@ POLLED_SENSOR_TYPES: Final[tuple[MieleSensorDefinition[MieleFillingLevel], ...]] value_fn=lambda value: value.twin_dos_container_2_filling_level, native_unit_of_measurement=PERCENTAGE, entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, ), ), MieleSensorDefinition( @@ -745,6 +747,7 @@ POLLED_SENSOR_TYPES: Final[tuple[MieleSensorDefinition[MieleFillingLevel], ...]] translation_key="power_disk_level", value_fn=lambda value: value.power_disc_filling_level, native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ), ), @@ -755,6 +758,7 @@ POLLED_SENSOR_TYPES: Final[tuple[MieleSensorDefinition[MieleFillingLevel], ...]] translation_key="salt_level", value_fn=lambda value: value.salt_filling_level, native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ), ), @@ -765,6 +769,7 @@ POLLED_SENSOR_TYPES: Final[tuple[MieleSensorDefinition[MieleFillingLevel], ...]] translation_key="rinse_aid_level", value_fn=lambda value: value.rinse_aid_filling_level, native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ), ), diff --git a/tests/components/miele/snapshots/test_sensor.ambr b/tests/components/miele/snapshots/test_sensor.ambr index bf685098aa28..a1b0ee9b6f66 100644 --- a/tests/components/miele/snapshots/test_sensor.ambr +++ b/tests/components/miele/snapshots/test_sensor.ambr @@ -526,7 +526,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -561,6 +563,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -577,7 +580,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -612,6 +617,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -628,7 +634,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -663,6 +671,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -679,7 +688,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -714,6 +725,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -730,7 +742,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -765,6 +779,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -781,7 +796,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -816,6 +833,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -832,7 +850,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -867,6 +887,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -2227,7 +2248,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2262,6 +2285,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -2278,7 +2302,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2313,6 +2339,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -2329,7 +2356,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2364,6 +2393,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -2380,7 +2410,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2415,6 +2447,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -2431,7 +2464,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2466,6 +2501,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -2482,7 +2518,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2517,6 +2555,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -2533,7 +2572,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -2568,6 +2609,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -3107,7 +3149,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3142,6 +3186,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -3158,7 +3203,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3193,6 +3240,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -3209,7 +3257,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3244,6 +3294,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -3260,7 +3311,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3295,6 +3348,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -3311,7 +3365,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3346,6 +3402,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -3362,7 +3419,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3397,6 +3456,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -3413,7 +3473,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -3448,6 +3510,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -4218,7 +4281,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4253,6 +4318,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -4269,7 +4335,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4304,6 +4372,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -4320,7 +4389,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4355,6 +4426,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -4371,7 +4443,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4406,6 +4480,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -4422,7 +4497,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4457,6 +4534,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -4473,7 +4551,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4508,6 +4588,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -4524,7 +4605,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -4559,6 +4642,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -4982,7 +5066,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -5017,6 +5103,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -5033,7 +5120,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -5068,6 +5157,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -5084,7 +5174,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -5119,6 +5211,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -5135,7 +5228,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -5170,6 +5265,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -5186,7 +5282,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -5221,6 +5319,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -8180,7 +8279,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -8215,6 +8316,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Washing machine TwinDos 1 level', + : , : '%', }), 'context': , @@ -8231,7 +8333,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -8266,6 +8370,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Washing machine TwinDos 2 level', + : , : '%', }), 'context': , @@ -8798,7 +8903,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -8833,6 +8940,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -8849,7 +8957,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -8884,6 +8994,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -8900,7 +9011,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -8935,6 +9048,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -8951,7 +9065,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -8986,6 +9102,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -9002,7 +9119,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -9037,6 +9156,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -11996,7 +12116,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12031,6 +12153,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Washing machine TwinDos 1 level', + : , : '%', }), 'context': , @@ -12047,7 +12170,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12082,6 +12207,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Washing machine TwinDos 2 level', + : , : '%', }), 'context': , @@ -12614,7 +12740,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12649,6 +12777,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -12665,7 +12794,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12700,6 +12831,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -12716,7 +12848,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12751,6 +12885,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -12767,7 +12902,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12802,6 +12939,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -12818,7 +12956,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -12853,6 +12993,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -15812,7 +15953,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -15847,6 +15990,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Washing machine TwinDos 1 level', + : , : '%', }), 'context': , @@ -15863,7 +16007,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -15898,6 +16044,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Washing machine TwinDos 2 level', + : , : '%', }), 'context': , @@ -16182,7 +16329,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16217,6 +16366,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test PowerDisk level', + : , : '%', }), 'context': , @@ -16233,7 +16383,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16268,6 +16420,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Rinse aid level', + : , : '%', }), 'context': , @@ -16284,7 +16437,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16319,6 +16474,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test Salt level', + : , : '%', }), 'context': , @@ -16335,7 +16491,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16370,6 +16528,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -16386,7 +16545,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16421,6 +16582,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 1 level', + : , : '%', }), 'context': , @@ -16437,7 +16599,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16472,6 +16636,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': , @@ -16488,7 +16653,9 @@ None, ]), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + : , + }), 'config_entry_id': , 'config_subentry_id': , 'device_class': None, @@ -16523,6 +16690,7 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ : 'Miele test TwinDos 2 level', + : , : '%', }), 'context': ,