mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Add system LED brightness to eheimdigital (#144915)
This commit is contained in:
parent
4b7650f2d2
commit
0eb6c88bc5
@ -15,6 +15,12 @@
|
|||||||
},
|
},
|
||||||
"night_temperature_offset": {
|
"night_temperature_offset": {
|
||||||
"default": "mdi:thermometer"
|
"default": "mdi:thermometer"
|
||||||
|
},
|
||||||
|
"system_led": {
|
||||||
|
"default": "mdi:led-on",
|
||||||
|
"state": {
|
||||||
|
"0": "mdi:led-off"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sensor": {
|
"sensor": {
|
||||||
|
@ -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(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
@ -138,6 +152,10 @@ async def async_setup_entry(
|
|||||||
)
|
)
|
||||||
for description in HEATER_DESCRIPTIONS
|
for description in HEATER_DESCRIPTIONS
|
||||||
)
|
)
|
||||||
|
entities.extend(
|
||||||
|
EheimDigitalNumber[EheimDigitalDevice](coordinator, device, description)
|
||||||
|
for description in GENERAL_DESCRIPTIONS
|
||||||
|
)
|
||||||
|
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
@ -62,6 +62,9 @@
|
|||||||
},
|
},
|
||||||
"night_temperature_offset": {
|
"night_temperature_offset": {
|
||||||
"name": "Night temperature offset"
|
"name": "Night temperature offset"
|
||||||
|
},
|
||||||
|
"system_led": {
|
||||||
|
"name": "System LED brightness"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sensor": {
|
"sensor": {
|
||||||
|
@ -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.sw_version = "1.0.0_1.0.0"
|
||||||
classic_led_ctrl_mock.light_mode = LightMode.DAYCL_MODE
|
classic_led_ctrl_mock.light_mode = LightMode.DAYCL_MODE
|
||||||
classic_led_ctrl_mock.light_level = (10, 39)
|
classic_led_ctrl_mock.light_level = (10, 39)
|
||||||
|
classic_led_ctrl_mock.sys_led = 20
|
||||||
return classic_led_ctrl_mock
|
return classic_led_ctrl_mock
|
||||||
|
|
||||||
|
|
||||||
@ -69,6 +70,7 @@ def heater_mock():
|
|||||||
heater_mock.operation_mode = HeaterMode.MANUAL
|
heater_mock.operation_mode = HeaterMode.MANUAL
|
||||||
heater_mock.day_start_time = time(8, 0, tzinfo=timezone(timedelta(hours=1)))
|
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.night_start_time = time(20, 0, tzinfo=timezone(timedelta(hours=1)))
|
||||||
|
heater_mock.sys_led = 20
|
||||||
return heater_mock
|
return heater_mock
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,61 @@
|
|||||||
# serializer version: 1
|
# 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]
|
# name: test_setup[number.mock_classicvario_day_speed-entry]
|
||||||
EntityRegistryEntrySnapshot({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
@ -170,6 +227,63 @@
|
|||||||
'state': 'unknown',
|
'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]
|
# name: test_setup[number.mock_heater_night_temperature_offset-entry]
|
||||||
EntityRegistryEntrySnapshot({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
@ -227,6 +341,63 @@
|
|||||||
'state': 'unknown',
|
'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]
|
# name: test_setup[number.mock_heater_temperature_offset-entry]
|
||||||
EntityRegistryEntrySnapshot({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
|
@ -67,6 +67,12 @@ async def test_setup(
|
|||||||
"set_night_temperature_offset",
|
"set_night_temperature_offset",
|
||||||
(0.4,),
|
(0.4,),
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"number.mock_heater_system_led_brightness",
|
||||||
|
20,
|
||||||
|
"set_sys_led",
|
||||||
|
(20,),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -90,6 +96,12 @@ async def test_setup(
|
|||||||
"set_night_speed",
|
"set_night_speed",
|
||||||
(int(72.1),),
|
(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",
|
"night_temperature_offset",
|
||||||
2.3,
|
2.3,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"number.mock_heater_system_led_brightness",
|
||||||
|
"sys_led",
|
||||||
|
87,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -160,6 +177,11 @@ async def test_set_value(
|
|||||||
"night_speed",
|
"night_speed",
|
||||||
12,
|
12,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"number.mock_classicvario_system_led_brightness",
|
||||||
|
"sys_led",
|
||||||
|
35,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user