diff --git a/homeassistant/components/unifiprotect/select.py b/homeassistant/components/unifiprotect/select.py index d948222b5fd..dd2e6051c2b 100644 --- a/homeassistant/components/unifiprotect/select.py +++ b/homeassistant/components/unifiprotect/select.py @@ -122,7 +122,14 @@ def _get_viewer_options(api: ProtectApiClient) -> list[dict[str, Any]]: def _get_doorbell_options(api: ProtectApiClient) -> list[dict[str, Any]]: default_message = api.bootstrap.nvr.doorbell_settings.default_message_text messages = api.bootstrap.nvr.doorbell_settings.all_messages - built_messages = ({"id": item.type.value, "name": item.text} for item in messages) + built_messages: list[dict[str, str]] = [] + + for item in messages: + msg_type = item.type.value + if item.type == DoorbellMessageType.CUSTOM_MESSAGE: + msg_type = f"{DoorbellMessageType.CUSTOM_MESSAGE}:{item.text}" + + built_messages.append({"id": msg_type, "name": item.text}) return [ {"id": "", "name": f"Default Message ({default_message})"}, @@ -176,6 +183,7 @@ async def _set_paired_camera(obj: Light | Sensor | Doorlock, camera_id: str) -> async def _set_doorbell_message(obj: Camera, message: str) -> None: if message.startswith(DoorbellMessageType.CUSTOM_MESSAGE.value): + message = message.split(":")[-1] await obj.set_lcd_text(DoorbellMessageType.CUSTOM_MESSAGE, text=message) elif message == TYPE_EMPTY_VALUE: await obj.set_lcd_text(None) diff --git a/tests/components/unifiprotect/test_select.py b/tests/components/unifiprotect/test_select.py index a328e92835d..d09fa421ec3 100644 --- a/tests/components/unifiprotect/test_select.py +++ b/tests/components/unifiprotect/test_select.py @@ -512,6 +512,10 @@ async def test_select_set_option_camera_doorbell_custom( blocking=True, ) + camera.set_lcd_text.assert_called_once_with( + DoorbellMessageType.CUSTOM_MESSAGE, text="Test" + ) + async def test_select_set_option_camera_doorbell_unifi( hass: HomeAssistant,