diff --git a/homeassistant/components/eheimdigital/icons.json b/homeassistant/components/eheimdigital/icons.json index 41a362c757c..cbe2613dd97 100644 --- a/homeassistant/components/eheimdigital/icons.json +++ b/homeassistant/components/eheimdigital/icons.json @@ -15,6 +15,12 @@ }, "night_temperature_offset": { "default": "mdi:thermometer" + }, + "system_led": { + "default": "mdi:led-on", + "state": { + "0": "mdi:led-off" + } } }, "sensor": { diff --git a/homeassistant/components/eheimdigital/number.py b/homeassistant/components/eheimdigital/number.py index f4504be624c..7fd0c6b6de7 100644 --- a/homeassistant/components/eheimdigital/number.py +++ b/homeassistant/components/eheimdigital/number.py @@ -109,6 +109,20 @@ HEATER_DESCRIPTIONS: tuple[EheimDigitalNumberDescription[EheimDigitalHeater], .. ), ) +GENERAL_DESCRIPTIONS: tuple[EheimDigitalNumberDescription[EheimDigitalDevice], ...] = ( + EheimDigitalNumberDescription[EheimDigitalDevice]( + key="system_led", + translation_key="system_led", + entity_category=EntityCategory.CONFIG, + native_min_value=0, + native_max_value=100, + native_step=PRECISION_WHOLE, + native_unit_of_measurement=PERCENTAGE, + value_fn=lambda device: device.sys_led, + set_value_fn=lambda device, value: device.set_sys_led(int(value)), + ), +) + async def async_setup_entry( hass: HomeAssistant, @@ -138,6 +152,10 @@ async def async_setup_entry( ) for description in HEATER_DESCRIPTIONS ) + entities.extend( + EheimDigitalNumber[EheimDigitalDevice](coordinator, device, description) + for description in GENERAL_DESCRIPTIONS + ) async_add_entities(entities) diff --git a/homeassistant/components/eheimdigital/strings.json b/homeassistant/components/eheimdigital/strings.json index 97a3fbe4e0d..f6f6b74a72e 100644 --- a/homeassistant/components/eheimdigital/strings.json +++ b/homeassistant/components/eheimdigital/strings.json @@ -62,6 +62,9 @@ }, "night_temperature_offset": { "name": "Night temperature offset" + }, + "system_led": { + "name": "System LED brightness" } }, "sensor": { diff --git a/tests/components/eheimdigital/conftest.py b/tests/components/eheimdigital/conftest.py index 654028c7c11..5b828f830a4 100644 --- a/tests/components/eheimdigital/conftest.py +++ b/tests/components/eheimdigital/conftest.py @@ -47,6 +47,7 @@ def classic_led_ctrl_mock(): classic_led_ctrl_mock.sw_version = "1.0.0_1.0.0" classic_led_ctrl_mock.light_mode = LightMode.DAYCL_MODE classic_led_ctrl_mock.light_level = (10, 39) + classic_led_ctrl_mock.sys_led = 20 return classic_led_ctrl_mock @@ -69,6 +70,7 @@ def heater_mock(): heater_mock.operation_mode = HeaterMode.MANUAL heater_mock.day_start_time = time(8, 0, tzinfo=timezone(timedelta(hours=1))) heater_mock.night_start_time = time(20, 0, tzinfo=timezone(timedelta(hours=1))) + heater_mock.sys_led = 20 return heater_mock diff --git a/tests/components/eheimdigital/snapshots/test_number.ambr b/tests/components/eheimdigital/snapshots/test_number.ambr index d647b16bf49..554e7c9c3a3 100644 --- a/tests/components/eheimdigital/snapshots/test_number.ambr +++ b/tests/components/eheimdigital/snapshots/test_number.ambr @@ -1,4 +1,61 @@ # serializer version: 1 +# name: test_setup[number.mock_classicledcontrol_e_system_led_brightness-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'max': 100, + 'min': 0, + 'mode': , + 'step': 1, + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'number', + 'entity_category': , + 'entity_id': 'number.mock_classicledcontrol_e_system_led_brightness', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'System LED brightness', + 'platform': 'eheimdigital', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'system_led', + 'unique_id': '00:00:00:00:00:01_system_led', + 'unit_of_measurement': '%', + }) +# --- +# name: test_setup[number.mock_classicledcontrol_e_system_led_brightness-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'Mock classicLEDcontrol+e System LED brightness', + 'max': 100, + 'min': 0, + 'mode': , + 'step': 1, + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'number.mock_classicledcontrol_e_system_led_brightness', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unknown', + }) +# --- # name: test_setup[number.mock_classicvario_day_speed-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -170,6 +227,63 @@ 'state': 'unknown', }) # --- +# name: test_setup[number.mock_classicvario_system_led_brightness-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'max': 100, + 'min': 0, + 'mode': , + 'step': 1, + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'number', + 'entity_category': , + 'entity_id': 'number.mock_classicvario_system_led_brightness', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'System LED brightness', + 'platform': 'eheimdigital', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'system_led', + 'unique_id': '00:00:00:00:00:03_system_led', + 'unit_of_measurement': '%', + }) +# --- +# name: test_setup[number.mock_classicvario_system_led_brightness-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'Mock classicVARIO System LED brightness', + 'max': 100, + 'min': 0, + 'mode': , + 'step': 1, + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'number.mock_classicvario_system_led_brightness', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unknown', + }) +# --- # name: test_setup[number.mock_heater_night_temperature_offset-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -227,6 +341,63 @@ 'state': 'unknown', }) # --- +# name: test_setup[number.mock_heater_system_led_brightness-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'max': 100, + 'min': 0, + 'mode': , + 'step': 1, + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'number', + 'entity_category': , + 'entity_id': 'number.mock_heater_system_led_brightness', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'System LED brightness', + 'platform': 'eheimdigital', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'system_led', + 'unique_id': '00:00:00:00:00:02_system_led', + 'unit_of_measurement': '%', + }) +# --- +# name: test_setup[number.mock_heater_system_led_brightness-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'Mock Heater System LED brightness', + 'max': 100, + 'min': 0, + 'mode': , + 'step': 1, + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'number.mock_heater_system_led_brightness', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unknown', + }) +# --- # name: test_setup[number.mock_heater_temperature_offset-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ diff --git a/tests/components/eheimdigital/test_number.py b/tests/components/eheimdigital/test_number.py index d84c14f95a5..a23f461744a 100644 --- a/tests/components/eheimdigital/test_number.py +++ b/tests/components/eheimdigital/test_number.py @@ -67,6 +67,12 @@ async def test_setup( "set_night_temperature_offset", (0.4,), ), + ( + "number.mock_heater_system_led_brightness", + 20, + "set_sys_led", + (20,), + ), ], ), ( @@ -90,6 +96,12 @@ async def test_setup( "set_night_speed", (int(72.1),), ), + ( + "number.mock_classicvario_system_led_brightness", + 20, + "set_sys_led", + (20,), + ), ], ), ], @@ -140,6 +152,11 @@ async def test_set_value( "night_temperature_offset", 2.3, ), + ( + "number.mock_heater_system_led_brightness", + "sys_led", + 87, + ), ], ), ( @@ -160,6 +177,11 @@ async def test_set_value( "night_speed", 12, ), + ( + "number.mock_classicvario_system_led_brightness", + "sys_led", + 35, + ), ], ), ],