mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Update UniFi Protect select entities to use snake_case state values with proper translations (#159284)
Co-authored-by: RaHehl <rahehl@users.noreply.github.com> Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
@@ -48,37 +48,37 @@ _KEY_LIGHT_MOTION = "light_motion"
|
||||
PARALLEL_UPDATES = 0
|
||||
|
||||
HDR_MODES = [
|
||||
{"id": "always", "name": "Always On"},
|
||||
{"id": "off", "name": "Always Off"},
|
||||
{"id": "auto", "name": "Auto"},
|
||||
{"id": "always", "name": "always"},
|
||||
{"id": "off", "name": "off"},
|
||||
{"id": "auto", "name": "auto"},
|
||||
]
|
||||
|
||||
INFRARED_MODES = [
|
||||
{"id": IRLEDMode.AUTO.value, "name": "Auto"},
|
||||
{"id": IRLEDMode.ON.value, "name": "Always Enable"},
|
||||
{"id": IRLEDMode.AUTO_NO_LED.value, "name": "Auto (Filter Only, no LED's)"},
|
||||
{"id": IRLEDMode.CUSTOM.value, "name": "Auto (Custom Lux)"},
|
||||
{"id": IRLEDMode.OFF.value, "name": "Always Disable"},
|
||||
{"id": IRLEDMode.AUTO.value, "name": "auto"},
|
||||
{"id": IRLEDMode.ON.value, "name": "on"},
|
||||
{"id": IRLEDMode.AUTO_NO_LED.value, "name": "auto_filter_only"},
|
||||
{"id": IRLEDMode.CUSTOM.value, "name": "custom"},
|
||||
{"id": IRLEDMode.OFF.value, "name": "off"},
|
||||
]
|
||||
|
||||
CHIME_TYPES = [
|
||||
{"id": ChimeType.NONE.value, "name": "None"},
|
||||
{"id": ChimeType.MECHANICAL.value, "name": "Mechanical"},
|
||||
{"id": ChimeType.DIGITAL.value, "name": "Digital"},
|
||||
{"id": ChimeType.NONE.value, "name": "none"},
|
||||
{"id": ChimeType.MECHANICAL.value, "name": "mechanical"},
|
||||
{"id": ChimeType.DIGITAL.value, "name": "digital"},
|
||||
]
|
||||
|
||||
MOUNT_TYPES = [
|
||||
{"id": MountType.NONE.value, "name": "None"},
|
||||
{"id": MountType.DOOR.value, "name": "Door"},
|
||||
{"id": MountType.WINDOW.value, "name": "Window"},
|
||||
{"id": MountType.GARAGE.value, "name": "Garage"},
|
||||
{"id": MountType.LEAK.value, "name": "Leak"},
|
||||
{"id": MountType.NONE.value, "name": MountType.NONE.value},
|
||||
{"id": MountType.DOOR.value, "name": MountType.DOOR.value},
|
||||
{"id": MountType.WINDOW.value, "name": MountType.WINDOW.value},
|
||||
{"id": MountType.GARAGE.value, "name": MountType.GARAGE.value},
|
||||
{"id": MountType.LEAK.value, "name": MountType.LEAK.value},
|
||||
]
|
||||
|
||||
LIGHT_MODE_MOTION = "On Motion - Always"
|
||||
LIGHT_MODE_MOTION_DARK = "On Motion - When Dark"
|
||||
LIGHT_MODE_DARK = "When Dark"
|
||||
LIGHT_MODE_OFF = "Manual"
|
||||
LIGHT_MODE_MOTION = "motion"
|
||||
LIGHT_MODE_MOTION_DARK = "motion_dark"
|
||||
LIGHT_MODE_DARK = "when_dark"
|
||||
LIGHT_MODE_OFF = "manual"
|
||||
LIGHT_MODES = [LIGHT_MODE_MOTION, LIGHT_MODE_DARK, LIGHT_MODE_OFF]
|
||||
|
||||
LIGHT_MODE_TO_SETTINGS = {
|
||||
@@ -93,13 +93,13 @@ LIGHT_MODE_TO_SETTINGS = {
|
||||
|
||||
MOTION_MODE_TO_LIGHT_MODE = [
|
||||
{"id": LightModeType.MOTION.value, "name": LIGHT_MODE_MOTION},
|
||||
{"id": f"{LightModeType.MOTION.value}Dark", "name": LIGHT_MODE_MOTION_DARK},
|
||||
{"id": f"{LightModeType.MOTION.value}_dark", "name": LIGHT_MODE_MOTION_DARK},
|
||||
{"id": LightModeType.WHEN_DARK.value, "name": LIGHT_MODE_DARK},
|
||||
{"id": LightModeType.MANUAL.value, "name": LIGHT_MODE_OFF},
|
||||
]
|
||||
|
||||
DEVICE_RECORDING_MODES = [
|
||||
{"id": mode.value, "name": mode.value.title()} for mode in list(RecordingMode)
|
||||
{"id": mode.value, "name": mode.value} for mode in list(RecordingMode)
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -350,31 +350,68 @@
|
||||
},
|
||||
"select": {
|
||||
"chime_type": {
|
||||
"name": "Chime type"
|
||||
"name": "Chime type",
|
||||
"state": {
|
||||
"digital": "Digital",
|
||||
"mechanical": "Mechanical",
|
||||
"none": "[%key:common::state::off%]"
|
||||
}
|
||||
},
|
||||
"doorbell_text": {
|
||||
"name": "Doorbell text"
|
||||
},
|
||||
"hdr_mode": {
|
||||
"name": "[%key:component::unifiprotect::entity::binary_sensor::hdr_mode::name%]"
|
||||
"name": "[%key:component::unifiprotect::entity::binary_sensor::hdr_mode::name%]",
|
||||
"state": {
|
||||
"always": "Always on",
|
||||
"auto": "Auto",
|
||||
"off": "Always off"
|
||||
}
|
||||
},
|
||||
"infrared_mode": {
|
||||
"name": "Infrared mode"
|
||||
"name": "Infrared mode",
|
||||
"state": {
|
||||
"auto": "Auto",
|
||||
"auto_filter_only": "Auto (filter only, no LEDs)",
|
||||
"custom": "Auto (custom lux)",
|
||||
"off": "Always disable",
|
||||
"on": "Always enable"
|
||||
}
|
||||
},
|
||||
"light_mode": {
|
||||
"name": "Light mode"
|
||||
"name": "Light mode",
|
||||
"state": {
|
||||
"manual": "Manual",
|
||||
"motion": "On motion - always",
|
||||
"motion_dark": "On motion - when dark",
|
||||
"when_dark": "When dark"
|
||||
}
|
||||
},
|
||||
"liveview": {
|
||||
"name": "Liveview"
|
||||
},
|
||||
"mount_type": {
|
||||
"name": "Mount type"
|
||||
"name": "Mount type",
|
||||
"state": {
|
||||
"door": "Door",
|
||||
"garage": "Garage",
|
||||
"leak": "Leak",
|
||||
"none": "[%key:common::state::off%]",
|
||||
"window": "Window"
|
||||
}
|
||||
},
|
||||
"paired_camera": {
|
||||
"name": "Paired camera"
|
||||
},
|
||||
"recording_mode": {
|
||||
"name": "Recording mode"
|
||||
"name": "Recording mode",
|
||||
"state": {
|
||||
"adaptive": "Adaptive",
|
||||
"always": "Always",
|
||||
"detections": "Detections",
|
||||
"never": "Never",
|
||||
"schedule": "Schedule"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sensor": {
|
||||
|
||||
@@ -104,7 +104,7 @@ def async_get_light_motion_current(obj: Light) -> str:
|
||||
obj.light_mode_settings.mode is LightModeType.MOTION
|
||||
and obj.light_mode_settings.enable_at is LightModeEnableType.DARK
|
||||
):
|
||||
return f"{LightModeType.MOTION.value}Dark"
|
||||
return f"{LightModeType.MOTION.value}_dark"
|
||||
return obj.light_mode_settings.mode.value
|
||||
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ async def test_select_setup_light(
|
||||
await init_entry(hass, ufp, [light])
|
||||
assert_entity_counts(hass, Platform.SELECT, 2, 2)
|
||||
|
||||
expected_values = ("On Motion - When Dark", "Not Paired")
|
||||
expected_values = ("motion_dark", "Not Paired")
|
||||
|
||||
for index, description in enumerate(LIGHT_SELECTS):
|
||||
unique_id, entity_id = await ids_from_device_description(
|
||||
@@ -153,11 +153,11 @@ async def test_select_setup_camera_all(
|
||||
assert_entity_counts(hass, Platform.SELECT, 5, 5)
|
||||
|
||||
expected_values = (
|
||||
"Always",
|
||||
"Auto",
|
||||
"always",
|
||||
"auto",
|
||||
"Default Message (Welcome)",
|
||||
"None",
|
||||
"Always Off",
|
||||
"none",
|
||||
"off",
|
||||
)
|
||||
|
||||
for index, description in enumerate(CAMERA_SELECTS):
|
||||
@@ -186,7 +186,7 @@ async def test_select_setup_camera_none(
|
||||
await init_entry(hass, ufp, [camera])
|
||||
assert_entity_counts(hass, Platform.SELECT, 2, 2)
|
||||
|
||||
expected_values = ("Always", "Auto", "Default Message (Welcome)")
|
||||
expected_values = ("always", "auto", "Default Message (Welcome)")
|
||||
|
||||
for index, description in enumerate(CAMERA_SELECTS):
|
||||
if index == 2:
|
||||
@@ -403,7 +403,7 @@ async def test_select_set_option_camera_recording(
|
||||
await hass.services.async_call(
|
||||
"select",
|
||||
"select_option",
|
||||
{ATTR_ENTITY_ID: entity_id, ATTR_OPTION: "Never"},
|
||||
{ATTR_ENTITY_ID: entity_id, ATTR_OPTION: "never"},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
@@ -428,7 +428,7 @@ async def test_select_set_option_camera_ir(
|
||||
await hass.services.async_call(
|
||||
"select",
|
||||
"select_option",
|
||||
{ATTR_ENTITY_ID: entity_id, ATTR_OPTION: "Always Enable"},
|
||||
{ATTR_ENTITY_ID: entity_id, ATTR_OPTION: "on"},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user