1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-02 08:26:41 +01:00

Add HDFury audio offset numbers (#164315)

This commit is contained in:
Glenn de Haan
2026-02-27 21:02:34 +01:00
committed by GitHub
parent faad3de02c
commit fb23a6fbf8
7 changed files with 172 additions and 0 deletions

View File

@@ -6,6 +6,12 @@
}
},
"number": {
"audio_unmute": {
"default": "mdi:volume-high"
},
"earc_unmute": {
"default": "mdi:volume-high"
},
"oled_fade": {
"default": "mdi:cellphone-information"
},

View File

@@ -31,6 +31,32 @@ class HDFuryNumberEntityDescription(NumberEntityDescription):
NUMBERS: tuple[HDFuryNumberEntityDescription, ...] = (
HDFuryNumberEntityDescription(
key="unmutecnt",
translation_key="audio_unmute",
entity_registry_enabled_default=False,
mode=NumberMode.BOX,
native_min_value=50,
native_max_value=1000,
native_step=1,
device_class=NumberDeviceClass.DURATION,
native_unit_of_measurement=UnitOfTime.MILLISECONDS,
entity_category=EntityCategory.CONFIG,
set_value_fn=lambda client, value: client.set_audio_unmute(value),
),
HDFuryNumberEntityDescription(
key="earcunmutecnt",
translation_key="earc_unmute",
entity_registry_enabled_default=False,
mode=NumberMode.BOX,
native_min_value=0,
native_max_value=1000,
native_step=1,
device_class=NumberDeviceClass.DURATION,
native_unit_of_measurement=UnitOfTime.MILLISECONDS,
entity_category=EntityCategory.CONFIG,
set_value_fn=lambda client, value: client.set_earc_unmute(value),
),
HDFuryNumberEntityDescription(
key="oledfade",
translation_key="oled_fade",

View File

@@ -41,6 +41,12 @@
}
},
"number": {
"audio_unmute": {
"name": "Unmute delay"
},
"earc_unmute": {
"name": "eARC unmute delay"
},
"oled_fade": {
"name": "OLED fade timer"
},

View File

@@ -104,6 +104,8 @@ def mock_hdfury_client() -> Generator[AsyncMock]:
"relay": "0",
"macaddr": "c7:1c:df:9d:f6:40",
"reboottimer": "0",
"unmutecnt": "500",
"earcunmutecnt": "0",
"oled": "1",
"oledfade": "30",
}

View File

@@ -15,6 +15,7 @@
'cec1en': '1',
'cec2en': '1',
'cec3en': '1',
'earcunmutecnt': '0',
'htpcmode0': '0',
'htpcmode1': '0',
'htpcmode2': '0',
@@ -29,6 +30,7 @@
'relay': '0',
'tx0plus5': '1',
'tx1plus5': '1',
'unmutecnt': '500',
}),
'info': dict({
'AUD0': 'bitstream 48kHz',

View File

@@ -1,4 +1,64 @@
# serializer version: 1
# name: test_number_entities[number.hdfury_vrroom_02_earc_unmute_delay-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'max': 1000,
'min': 0,
'mode': <NumberMode.BOX: 'box'>,
'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.hdfury_vrroom_02_earc_unmute_delay',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'object_id_base': 'eARC unmute delay',
'options': dict({
}),
'original_device_class': <NumberDeviceClass.DURATION: 'duration'>,
'original_icon': None,
'original_name': 'eARC unmute delay',
'platform': 'hdfury',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'earc_unmute',
'unique_id': '000123456789_earcunmutecnt',
'unit_of_measurement': <UnitOfTime.MILLISECONDS: 'ms'>,
})
# ---
# name: test_number_entities[number.hdfury_vrroom_02_earc_unmute_delay-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'HDFury VRROOM-02 eARC unmute delay',
'max': 1000,
'min': 0,
'mode': <NumberMode.BOX: 'box'>,
'step': 1,
'unit_of_measurement': <UnitOfTime.MILLISECONDS: 'ms'>,
}),
'context': <ANY>,
'entity_id': 'number.hdfury_vrroom_02_earc_unmute_delay',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_number_entities[number.hdfury_vrroom_02_oled_fade_timer-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@@ -119,3 +179,63 @@
'state': '0.0',
})
# ---
# name: test_number_entities[number.hdfury_vrroom_02_unmute_delay-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'max': 1000,
'min': 50,
'mode': <NumberMode.BOX: 'box'>,
'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.hdfury_vrroom_02_unmute_delay',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'object_id_base': 'Unmute delay',
'options': dict({
}),
'original_device_class': <NumberDeviceClass.DURATION: 'duration'>,
'original_icon': None,
'original_name': 'Unmute delay',
'platform': 'hdfury',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'audio_unmute',
'unique_id': '000123456789_unmutecnt',
'unit_of_measurement': <UnitOfTime.MILLISECONDS: 'ms'>,
})
# ---
# name: test_number_entities[number.hdfury_vrroom_02_unmute_delay-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'HDFury VRROOM-02 Unmute delay',
'max': 1000,
'min': 50,
'mode': <NumberMode.BOX: 'box'>,
'step': 1,
'unit_of_measurement': <UnitOfTime.MILLISECONDS: 'ms'>,
}),
'context': <ANY>,
'entity_id': 'number.hdfury_vrroom_02_unmute_delay',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '500.0',
})
# ---

View File

@@ -23,6 +23,7 @@ from . import setup_integration
from tests.common import MockConfigEntry, async_fire_time_changed, snapshot_platform
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_number_entities(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
@@ -40,8 +41,11 @@ async def test_number_entities(
[
("number.hdfury_vrroom_02_oled_fade_timer", "set_oled_fade"),
("number.hdfury_vrroom_02_restart_timer", "set_reboot_timer"),
("number.hdfury_vrroom_02_unmute_delay", "set_audio_unmute"),
("number.hdfury_vrroom_02_earc_unmute_delay", "set_earc_unmute"),
],
)
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_number_set_value(
hass: HomeAssistant,
mock_hdfury_client: AsyncMock,
@@ -68,8 +72,11 @@ async def test_number_set_value(
[
("number.hdfury_vrroom_02_oled_fade_timer", "set_oled_fade"),
("number.hdfury_vrroom_02_restart_timer", "set_reboot_timer"),
("number.hdfury_vrroom_02_unmute_delay", "set_audio_unmute"),
("number.hdfury_vrroom_02_earc_unmute_delay", "set_earc_unmute"),
],
)
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_number_error(
hass: HomeAssistant,
mock_hdfury_client: AsyncMock,
@@ -100,8 +107,11 @@ async def test_number_error(
[
("number.hdfury_vrroom_02_oled_fade_timer"),
("number.hdfury_vrroom_02_restart_timer"),
("number.hdfury_vrroom_02_unmute_delay"),
("number.hdfury_vrroom_02_earc_unmute_delay"),
],
)
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_number_entities_unavailable_on_error(
hass: HomeAssistant,
mock_hdfury_client: AsyncMock,