Add system LED brightness to eheimdigital (#144915)

This commit is contained in:
Sid 2025-05-14 20:45:58 +02:00 committed by GitHub
parent 4b7650f2d2
commit 0eb6c88bc5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 222 additions and 0 deletions

View File

@ -15,6 +15,12 @@
},
"night_temperature_offset": {
"default": "mdi:thermometer"
},
"system_led": {
"default": "mdi:led-on",
"state": {
"0": "mdi:led-off"
}
}
},
"sensor": {

View File

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

View File

@ -62,6 +62,9 @@
},
"night_temperature_offset": {
"name": "Night temperature offset"
},
"system_led": {
"name": "System LED brightness"
}
},
"sensor": {

View File

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

View File

@ -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': <NumberMode.AUTO: 'auto'>,
'step': 1,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'number',
'entity_category': <EntityCategory.CONFIG: 'config'>,
'entity_id': 'number.mock_classicledcontrol_e_system_led_brightness',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'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': <NumberMode.AUTO: 'auto'>,
'step': 1,
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'number.mock_classicledcontrol_e_system_led_brightness',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <NumberMode.AUTO: 'auto'>,
'step': 1,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'number',
'entity_category': <EntityCategory.CONFIG: 'config'>,
'entity_id': 'number.mock_classicvario_system_led_brightness',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'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': <NumberMode.AUTO: 'auto'>,
'step': 1,
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'number.mock_classicvario_system_led_brightness',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <NumberMode.AUTO: 'auto'>,
'step': 1,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'number',
'entity_category': <EntityCategory.CONFIG: 'config'>,
'entity_id': 'number.mock_heater_system_led_brightness',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'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': <NumberMode.AUTO: 'auto'>,
'step': 1,
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'number.mock_heater_system_led_brightness',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---
# name: test_setup[number.mock_heater_temperature_offset-entry]
EntityRegistryEntrySnapshot({
'aliases': set({

View File

@ -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,
),
],
),
],