Move icons to icons.json for unifiprotect (#158800)

Co-authored-by: RaHehl <rahehl@users.noreply.github.com>
This commit is contained in:
Raphael Hehl
2025-12-12 16:23:11 +01:00
committed by GitHub
parent 41ad15e577
commit 1da31c0530
8 changed files with 418 additions and 152 deletions
@@ -67,13 +67,11 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="dark",
translation_key="is_dark",
icon="mdi:brightness-6",
ufp_value="is_dark",
),
ProtectBinaryEntityDescription(
key="ssh",
translation_key="ssh_enabled",
icon="mdi:lock",
entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="is_ssh_enabled",
@@ -82,7 +80,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="feature_flags.has_led_status",
ufp_value="led_settings.is_enabled",
@@ -91,7 +88,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="hdr_mode",
translation_key="hdr_mode",
icon="mdi:brightness-7",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="feature_flags.has_hdr",
ufp_value="hdr_mode",
@@ -100,7 +96,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="high_fps",
translation_key="high_fps",
icon="mdi:video-high-definition",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="feature_flags.has_highfps",
ufp_value="is_high_fps_enabled",
@@ -109,7 +104,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="system_sounds",
translation_key="system_sounds",
icon="mdi:speaker",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="has_speaker",
ufp_value="speaker_settings.are_system_sounds_enabled",
@@ -119,7 +113,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="osd_name",
translation_key="overlay_show_name",
icon="mdi:fullscreen",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="osd_settings.is_name_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -127,7 +120,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="osd_date",
translation_key="overlay_show_date",
icon="mdi:fullscreen",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="osd_settings.is_date_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -135,7 +127,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="osd_logo",
translation_key="overlay_show_logo",
icon="mdi:fullscreen",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="osd_settings.is_logo_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -143,7 +134,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="osd_bitrate",
translation_key="overlay_show_nerd_mode",
icon="mdi:fullscreen",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="osd_settings.is_debug_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -151,14 +141,12 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="motion_enabled",
translation_key="detections_motion",
icon="mdi:run-fast",
ufp_value="recording_settings.enable_motion_detection",
ufp_perm=PermRequired.NO_WRITE,
),
ProtectBinaryEntityDescription(
key="smart_person",
translation_key="detections_person",
icon="mdi:walk",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_person",
ufp_value="is_person_detection_on",
@@ -167,7 +155,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_vehicle",
translation_key="detections_vehicle",
icon="mdi:car",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_vehicle",
ufp_value="is_vehicle_detection_on",
@@ -176,7 +163,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_animal",
translation_key="detections_animal",
icon="mdi:paw",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_animal",
ufp_value="is_animal_detection_on",
@@ -185,7 +171,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_package",
translation_key="detections_package",
icon="mdi:package-variant-closed",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_package",
ufp_value="is_package_detection_on",
@@ -194,7 +179,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_licenseplate",
translation_key="detections_license_plate",
icon="mdi:car",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_license_plate",
ufp_value="is_license_plate_detection_on",
@@ -203,7 +187,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_smoke",
translation_key="detections_smoke",
icon="mdi:fire",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_smoke",
ufp_value="is_smoke_detection_on",
@@ -212,7 +195,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_cmonx",
translation_key="detections_co_alarm",
icon="mdi:molecule-co",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_co",
ufp_value="is_co_detection_on",
@@ -221,7 +203,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_siren",
translation_key="detections_siren",
icon="mdi:alarm-bell",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_siren",
ufp_value="is_siren_detection_on",
@@ -230,7 +211,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_baby_cry",
translation_key="detections_baby_cry",
icon="mdi:cradle",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_baby_cry",
ufp_value="is_baby_cry_detection_on",
@@ -239,7 +219,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_speak",
translation_key="detections_speaking",
icon="mdi:account-voice",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_speaking",
ufp_value="is_speaking_detection_on",
@@ -248,7 +227,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_bark",
translation_key="detections_barking",
icon="mdi:dog",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_bark",
ufp_value="is_bark_detection_on",
@@ -257,7 +235,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_car_alarm",
translation_key="detections_car_alarm",
icon="mdi:car",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_car_alarm",
ufp_value="is_car_alarm_detection_on",
@@ -266,7 +243,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_car_horn",
translation_key="detections_car_horn",
icon="mdi:bugle",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_car_horn",
ufp_value="is_car_horn_detection_on",
@@ -275,7 +251,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="smart_glass_break",
translation_key="detections_glass_break",
icon="mdi:glass-fragile",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="can_detect_glass_break",
ufp_value="is_glass_break_detection_on",
@@ -284,7 +259,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="track_person",
translation_key="tracking_person",
icon="mdi:walk",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="feature_flags.is_ptz",
ufp_value="is_person_tracking_enabled",
@@ -296,7 +270,6 @@ LIGHT_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="dark",
translation_key="is_dark",
icon="mdi:brightness-6",
ufp_value="is_dark",
),
ProtectBinaryEntityDescription(
@@ -307,7 +280,6 @@ LIGHT_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="light",
translation_key="flood_light",
icon="mdi:spotlight-beam",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="is_light_on",
ufp_perm=PermRequired.NO_WRITE,
@@ -315,7 +287,6 @@ LIGHT_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="ssh",
translation_key="ssh_enabled",
icon="mdi:lock",
entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="is_ssh_enabled",
@@ -324,7 +295,6 @@ LIGHT_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="light_device_settings.is_indicator_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -370,7 +340,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="led_settings.is_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -378,7 +347,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="motion_enabled",
translation_key="detections_motion",
icon="mdi:walk",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="motion_settings.is_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -386,7 +354,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="temperature",
translation_key="temperature_sensor",
icon="mdi:thermometer",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="temperature_settings.is_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -394,7 +361,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="humidity",
translation_key="humidity_sensor",
icon="mdi:water-percent",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="humidity_settings.is_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -402,7 +368,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="light",
translation_key="light_sensor",
icon="mdi:brightness-5",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="light_settings.is_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -421,7 +386,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
key="doorbell",
translation_key="doorbell",
device_class=BinarySensorDeviceClass.OCCUPANCY,
icon="mdi:doorbell-video",
ufp_required_field="feature_flags.is_doorbell",
ufp_event_obj="last_ring_event",
),
@@ -434,7 +398,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_obj_any",
translation_key="object_detected",
icon="mdi:eye",
ufp_required_field="feature_flags.has_smart_detect",
ufp_event_obj="last_smart_detect_event",
entity_registry_enabled_default=False,
@@ -442,7 +405,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_obj_person",
translation_key="person_detected",
icon="mdi:walk",
ufp_obj_type=SmartDetectObjectType.PERSON,
ufp_required_field="can_detect_person",
ufp_enabled="is_person_detection_on",
@@ -451,7 +413,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_obj_vehicle",
translation_key="vehicle_detected",
icon="mdi:car",
ufp_obj_type=SmartDetectObjectType.VEHICLE,
ufp_required_field="can_detect_vehicle",
ufp_enabled="is_vehicle_detection_on",
@@ -460,7 +421,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_obj_animal",
translation_key="animal_detected",
icon="mdi:paw",
ufp_obj_type=SmartDetectObjectType.ANIMAL,
ufp_required_field="can_detect_animal",
ufp_enabled="is_animal_detection_on",
@@ -469,7 +429,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_obj_package",
translation_key="package_detected",
icon="mdi:package-variant-closed",
entity_registry_enabled_default=False,
ufp_obj_type=SmartDetectObjectType.PACKAGE,
ufp_required_field="can_detect_package",
@@ -479,7 +438,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_any",
translation_key="audio_object_detected",
icon="mdi:eye",
ufp_required_field="feature_flags.has_smart_detect",
ufp_event_obj="last_smart_audio_detect_event",
entity_registry_enabled_default=False,
@@ -487,7 +445,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_smoke",
translation_key="smoke_alarm_detected",
icon="mdi:fire",
ufp_obj_type=SmartDetectObjectType.SMOKE,
ufp_required_field="can_detect_smoke",
ufp_enabled="is_smoke_detection_on",
@@ -496,7 +453,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_cmonx",
translation_key="co_alarm_detected",
icon="mdi:molecule-co",
ufp_required_field="can_detect_co",
ufp_enabled="is_co_detection_on",
ufp_event_obj="last_cmonx_detect_event",
@@ -505,7 +461,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_siren",
translation_key="siren_detected",
icon="mdi:alarm-bell",
ufp_obj_type=SmartDetectObjectType.SIREN,
ufp_required_field="can_detect_siren",
ufp_enabled="is_siren_detection_on",
@@ -514,7 +469,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_baby_cry",
translation_key="baby_cry_detected",
icon="mdi:cradle",
ufp_obj_type=SmartDetectObjectType.BABY_CRY,
ufp_required_field="can_detect_baby_cry",
ufp_enabled="is_baby_cry_detection_on",
@@ -523,7 +477,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_speak",
translation_key="speaking_detected",
icon="mdi:account-voice",
ufp_obj_type=SmartDetectObjectType.SPEAK,
ufp_required_field="can_detect_speaking",
ufp_enabled="is_speaking_detection_on",
@@ -532,7 +485,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_bark",
translation_key="barking_detected",
icon="mdi:dog",
ufp_obj_type=SmartDetectObjectType.BARK,
ufp_required_field="can_detect_bark",
ufp_enabled="is_bark_detection_on",
@@ -541,7 +493,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_car_alarm",
translation_key="car_alarm_detected",
icon="mdi:car",
ufp_obj_type=SmartDetectObjectType.BURGLAR,
ufp_required_field="can_detect_car_alarm",
ufp_enabled="is_car_alarm_detection_on",
@@ -550,7 +501,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_car_horn",
translation_key="car_horn_detected",
icon="mdi:bugle",
ufp_obj_type=SmartDetectObjectType.CAR_HORN,
ufp_required_field="can_detect_car_horn",
ufp_enabled="is_car_horn_detection_on",
@@ -559,7 +509,6 @@ EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...] = (
ProtectBinaryEventEntityDescription(
key="smart_audio_glass_break",
translation_key="glass_break_detected",
icon="mdi:glass-fragile",
ufp_obj_type=SmartDetectObjectType.GLASS_BREAK,
ufp_required_field="can_detect_glass_break",
ufp_enabled="is_glass_break_detection_on",
@@ -577,7 +526,6 @@ DOORLOCK_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="led_settings.is_enabled",
ufp_perm=PermRequired.NO_WRITE,
@@ -588,7 +536,6 @@ VIEWER_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
ProtectBinaryEntityDescription(
key="ssh",
translation_key="ssh_enabled",
icon="mdi:lock",
entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="is_ssh_enabled",
@@ -60,7 +60,6 @@ ALL_DEVICE_BUTTONS: tuple[ProtectButtonEntityDescription, ...] = (
key="unadopt",
translation_key="unadopt_device",
entity_registry_enabled_default=False,
icon="mdi:delete",
ufp_press="unadopt",
ufp_perm=PermRequired.DELETE,
),
@@ -69,7 +68,6 @@ ALL_DEVICE_BUTTONS: tuple[ProtectButtonEntityDescription, ...] = (
ADOPT_BUTTON = ProtectButtonEntityDescription[ProtectAdoptableDeviceModel](
key="adopt",
translation_key="adopt_device",
icon="mdi:plus-circle",
ufp_press="adopt",
)
@@ -77,7 +75,6 @@ SENSOR_BUTTONS: tuple[ProtectButtonEntityDescription, ...] = (
ProtectButtonEntityDescription(
key="clear_tamper",
translation_key="clear_tamper",
icon="mdi:notification-clear-all",
ufp_press="clear_tamper",
ufp_perm=PermRequired.WRITE,
),
@@ -88,13 +85,11 @@ CHIME_BUTTONS: tuple[ProtectButtonEntityDescription, ...] = (
key="play",
translation_key="play_chime",
device_class=DEVICE_CLASS_CHIME_BUTTON,
icon="mdi:play",
ufp_press="play",
),
ProtectButtonEntityDescription(
key="play_buzzer",
translation_key="play_buzzer",
icon="mdi:play",
ufp_press="play_buzzer",
),
)
@@ -365,7 +365,6 @@ EVENT_DESCRIPTIONS: tuple[ProtectEventEntityDescription, ...] = (
key="doorbell",
translation_key="doorbell",
device_class=EventDeviceClass.DOORBELL,
icon="mdi:doorbell-video",
ufp_required_field="feature_flags.is_doorbell",
ufp_event_obj="last_ring_event",
event_types=[EVENT_TYPE_DOORBELL_RING],
@@ -374,7 +373,6 @@ EVENT_DESCRIPTIONS: tuple[ProtectEventEntityDescription, ...] = (
ProtectEventEntityDescription(
key="nfc",
translation_key="nfc",
icon="mdi:nfc",
ufp_required_field="feature_flags.support_nfc",
ufp_event_obj="last_nfc_card_scanned_event",
event_types=[EVENT_TYPE_NFC_SCANNED],
@@ -383,7 +381,6 @@ EVENT_DESCRIPTIONS: tuple[ProtectEventEntityDescription, ...] = (
ProtectEventEntityDescription(
key="fingerprint",
translation_key="fingerprint",
icon="mdi:fingerprint",
ufp_required_field="feature_flags.has_fingerprint_sensor",
ufp_event_obj="last_fingerprint_identified_event",
event_types=[
@@ -395,7 +392,6 @@ EVENT_DESCRIPTIONS: tuple[ProtectEventEntityDescription, ...] = (
ProtectEventEntityDescription(
key="vehicle",
translation_key="vehicle",
icon="mdi:car",
ufp_required_field="feature_flags.has_smart_detect",
ufp_event_obj="last_smart_detect_event",
event_types=[EVENT_TYPE_VEHICLE_DETECTED],
@@ -1,4 +1,422 @@
{
"entity": {
"binary_sensor": {
"animal_detected": {
"default": "mdi:paw"
},
"audio_object_detected": {
"default": "mdi:eye"
},
"baby_cry_detected": {
"default": "mdi:cradle"
},
"barking_detected": {
"default": "mdi:dog"
},
"car_alarm_detected": {
"default": "mdi:car"
},
"car_horn_detected": {
"default": "mdi:bugle"
},
"co_alarm_detected": {
"default": "mdi:molecule-co"
},
"detections_animal": {
"default": "mdi:paw"
},
"detections_baby_cry": {
"default": "mdi:cradle"
},
"detections_barking": {
"default": "mdi:dog"
},
"detections_car_alarm": {
"default": "mdi:car"
},
"detections_car_horn": {
"default": "mdi:bugle"
},
"detections_co_alarm": {
"default": "mdi:molecule-co"
},
"detections_glass_break": {
"default": "mdi:glass-fragile"
},
"detections_license_plate": {
"default": "mdi:car"
},
"detections_motion": {
"default": "mdi:run-fast"
},
"detections_package": {
"default": "mdi:package-variant-closed"
},
"detections_person": {
"default": "mdi:walk"
},
"detections_siren": {
"default": "mdi:alarm-bell"
},
"detections_smoke": {
"default": "mdi:fire"
},
"detections_speaking": {
"default": "mdi:account-voice"
},
"detections_vehicle": {
"default": "mdi:car"
},
"doorbell": {
"default": "mdi:doorbell-video"
},
"flood_light": {
"default": "mdi:spotlight-beam"
},
"glass_break_detected": {
"default": "mdi:glass-fragile"
},
"hdr_mode": {
"default": "mdi:brightness-7"
},
"high_fps": {
"default": "mdi:video-high-definition"
},
"humidity_sensor": {
"default": "mdi:water-percent"
},
"is_dark": {
"default": "mdi:brightness-6"
},
"light_sensor": {
"default": "mdi:brightness-5"
},
"object_detected": {
"default": "mdi:eye"
},
"overlay_show_date": {
"default": "mdi:fullscreen"
},
"overlay_show_logo": {
"default": "mdi:fullscreen"
},
"overlay_show_name": {
"default": "mdi:fullscreen"
},
"overlay_show_nerd_mode": {
"default": "mdi:fullscreen"
},
"package_detected": {
"default": "mdi:package-variant-closed"
},
"person_detected": {
"default": "mdi:walk"
},
"siren_detected": {
"default": "mdi:alarm-bell"
},
"smoke_alarm_detected": {
"default": "mdi:fire"
},
"speaking_detected": {
"default": "mdi:account-voice"
},
"ssh_enabled": {
"default": "mdi:lock"
},
"status_light": {
"default": "mdi:led-on"
},
"system_sounds": {
"default": "mdi:speaker"
},
"temperature_sensor": {
"default": "mdi:thermometer"
},
"tracking_person": {
"default": "mdi:walk"
},
"vehicle_detected": {
"default": "mdi:car"
}
},
"button": {
"adopt_device": {
"default": "mdi:plus-circle"
},
"clear_tamper": {
"default": "mdi:notification-clear-all"
},
"play_buzzer": {
"default": "mdi:play"
},
"play_chime": {
"default": "mdi:play"
},
"unadopt_device": {
"default": "mdi:delete"
}
},
"event": {
"doorbell": {
"default": "mdi:doorbell-video"
},
"fingerprint": {
"default": "mdi:fingerprint"
},
"nfc": {
"default": "mdi:nfc"
},
"vehicle": {
"default": "mdi:car"
}
},
"number": {
"auto_lock_timeout": {
"default": "mdi:walk"
},
"auto_shutoff_duration": {
"default": "mdi:camera-timer"
},
"chime_duration": {
"default": "mdi:bell"
},
"doorbell_ring_volume": {
"default": "mdi:bell-ring"
},
"infrared_custom_lux_trigger": {
"default": "mdi:white-balance-sunny"
},
"microphone_level": {
"default": "mdi:microphone"
},
"motion_sensitivity": {
"default": "mdi:walk"
},
"system_sounds_volume": {
"default": "mdi:volume-high"
},
"volume": {
"default": "mdi:speaker"
},
"wide_dynamic_range": {
"default": "mdi:state-machine"
},
"zoom_level": {
"default": "mdi:magnify-plus-outline"
}
},
"select": {
"chime_type": {
"default": "mdi:bell"
},
"doorbell_text": {
"default": "mdi:card-text"
},
"hdr_mode": {
"default": "mdi:brightness-7"
},
"infrared_mode": {
"default": "mdi:circle-opacity"
},
"light_mode": {
"default": "mdi:spotlight"
},
"liveview": {
"default": "mdi:view-dashboard"
},
"mount_type": {
"default": "mdi:screwdriver"
},
"paired_camera": {
"default": "mdi:cctv"
},
"recording_mode": {
"default": "mdi:video-outline"
}
},
"sensor": {
"chime_type": {
"default": "mdi:bell"
},
"cpu_utilization": {
"default": "mdi:speedometer"
},
"doorbell_text": {
"default": "mdi:card-text"
},
"infrared_mode": {
"default": "mdi:circle-opacity"
},
"last_doorbell_ring": {
"default": "mdi:doorbell-video"
},
"last_ring": {
"default": "mdi:bell"
},
"lens_type": {
"default": "mdi:camera-iris"
},
"light_mode": {
"default": "mdi:spotlight"
},
"liveview": {
"default": "mdi:view-dashboard"
},
"memory_utilization": {
"default": "mdi:memory"
},
"microphone_level": {
"default": "mdi:microphone"
},
"motion_sensitivity": {
"default": "mdi:walk"
},
"mount_type": {
"default": "mdi:screwdriver"
},
"paired_camera": {
"default": "mdi:cctv"
},
"recording_capacity": {
"default": "mdi:record-rec"
},
"recording_mode": {
"default": "mdi:video-outline"
},
"resolution_4k_video": {
"default": "mdi:cctv"
},
"resolution_free_space": {
"default": "mdi:cctv"
},
"resolution_hd_video": {
"default": "mdi:cctv"
},
"sensitivity": {
"default": "mdi:walk"
},
"storage_utilization": {
"default": "mdi:harddisk"
},
"type_continuous_video": {
"default": "mdi:server"
},
"type_detections_video": {
"default": "mdi:server"
},
"type_timelapse_video": {
"default": "mdi:server"
},
"uptime": {
"default": "mdi:clock"
},
"volume": {
"default": "mdi:speaker"
}
},
"switch": {
"analytics_enabled": {
"default": "mdi:google-analytics"
},
"color_night_vision": {
"default": "mdi:light-flood-down"
},
"detections_animal": {
"default": "mdi:paw"
},
"detections_baby_cry": {
"default": "mdi:cradle"
},
"detections_bark": {
"default": "mdi:dog"
},
"detections_car_alarm": {
"default": "mdi:car"
},
"detections_car_horn": {
"default": "mdi:bugle"
},
"detections_co_alarm": {
"default": "mdi:molecule-co"
},
"detections_glass_break": {
"default": "mdi:glass-fragile"
},
"detections_license_plate": {
"default": "mdi:car"
},
"detections_motion": {
"default": "mdi:walk"
},
"detections_package": {
"default": "mdi:package-variant-closed"
},
"detections_person": {
"default": "mdi:walk"
},
"detections_siren": {
"default": "mdi:alarm-bell"
},
"detections_smoke": {
"default": "mdi:fire"
},
"detections_speak": {
"default": "mdi:account-voice"
},
"detections_vehicle": {
"default": "mdi:car"
},
"hdr_mode": {
"default": "mdi:brightness-7"
},
"high_fps": {
"default": "mdi:video-high-definition"
},
"humidity_sensor": {
"default": "mdi:water-percent"
},
"insights_enabled": {
"default": "mdi:magnify"
},
"light_sensor": {
"default": "mdi:brightness-5"
},
"motion": {
"default": "mdi:run-fast"
},
"overlay_show_date": {
"default": "mdi:fullscreen"
},
"overlay_show_logo": {
"default": "mdi:fullscreen"
},
"overlay_show_name": {
"default": "mdi:fullscreen"
},
"overlay_show_nerd_mode": {
"default": "mdi:fullscreen"
},
"privacy_mode": {
"default": "mdi:eye-settings"
},
"ssh_enabled": {
"default": "mdi:lock"
},
"status_light": {
"default": "mdi:led-on"
},
"system_sounds": {
"default": "mdi:speaker"
},
"temperature_sensor": {
"default": "mdi:thermometer"
},
"tracking_person": {
"default": "mdi:walk"
}
}
},
"services": {
"add_doorbell_text": {
"service": "mdi:message-plus"
@@ -67,7 +67,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="wdr_value",
translation_key="wide_dynamic_range",
icon="mdi:state-machine",
entity_category=EntityCategory.CONFIG,
ufp_min=0,
ufp_max=3,
@@ -80,7 +79,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="mic_level",
translation_key="microphone_level",
icon="mdi:microphone",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -95,7 +93,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="system_sounds_volume",
translation_key="system_sounds_volume",
icon="mdi:volume-high",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -110,7 +107,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="doorbell_ring_volume",
translation_key="doorbell_ring_volume",
icon="mdi:bell-ring",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -125,7 +121,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="zoom_position",
translation_key="zoom_level",
icon="mdi:magnify-plus-outline",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -139,7 +134,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="chime_duration",
translation_key="chime_duration",
icon="mdi:bell",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=UnitOfTime.SECONDS,
ufp_min=1,
@@ -154,7 +148,6 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="icr_lux",
translation_key="infrared_custom_lux_trigger",
icon="mdi:white-balance-sunny",
entity_category=EntityCategory.CONFIG,
ufp_min=0,
ufp_max=30,
@@ -171,7 +164,6 @@ LIGHT_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="sensitivity",
translation_key="motion_sensitivity",
icon="mdi:walk",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -185,7 +177,6 @@ LIGHT_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription[Light](
key="duration",
translation_key="auto_shutoff_duration",
icon="mdi:camera-timer",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=UnitOfTime.SECONDS,
ufp_min=15,
@@ -202,7 +193,6 @@ SENSE_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="sensitivity",
translation_key="motion_sensitivity",
icon="mdi:walk",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -219,7 +209,6 @@ DOORLOCK_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription[Doorlock](
key="auto_lock_time",
translation_key="auto_lock_timeout",
icon="mdi:walk",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=UnitOfTime.SECONDS,
ufp_min=0,
@@ -236,7 +225,6 @@ CHIME_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
ProtectNumberEntityDescription(
key="volume",
translation_key="volume",
icon="mdi:speaker",
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=PERCENTAGE,
ufp_min=0,
@@ -195,7 +195,6 @@ CAMERA_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription(
key="recording_mode",
translation_key="recording_mode",
icon="mdi:video-outline",
entity_category=EntityCategory.CONFIG,
ufp_options=DEVICE_RECORDING_MODES,
ufp_enum_type=RecordingMode,
@@ -206,7 +205,6 @@ CAMERA_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription(
key="infrared",
translation_key="infrared_mode",
icon="mdi:circle-opacity",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.has_led_ir",
ufp_options=INFRARED_MODES,
@@ -218,7 +216,6 @@ CAMERA_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription[Camera](
key="doorbell_text",
translation_key="doorbell_text",
icon="mdi:card-text",
entity_category=EntityCategory.CONFIG,
device_class=DEVICE_CLASS_LCD_MESSAGE,
ufp_required_field="feature_flags.has_lcd_screen",
@@ -230,7 +227,6 @@ CAMERA_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription(
key="chime_type",
translation_key="chime_type",
icon="mdi:bell",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.has_chime",
ufp_options=CHIME_TYPES,
@@ -242,7 +238,6 @@ CAMERA_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription(
key="hdr_mode",
translation_key="hdr_mode",
icon="mdi:brightness-7",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.has_hdr",
ufp_options=HDR_MODES,
@@ -256,7 +251,6 @@ LIGHT_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription[Light](
key=_KEY_LIGHT_MOTION,
translation_key="light_mode",
icon="mdi:spotlight",
entity_category=EntityCategory.CONFIG,
ufp_options=MOTION_MODE_TO_LIGHT_MODE,
ufp_value_fn=async_get_light_motion_current,
@@ -266,7 +260,6 @@ LIGHT_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription[Light](
key="paired_camera",
translation_key="paired_camera",
icon="mdi:cctv",
entity_category=EntityCategory.CONFIG,
ufp_value="camera_id",
ufp_options_fn=_get_paired_camera_options,
@@ -279,7 +272,6 @@ SENSE_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription(
key="mount_type",
translation_key="mount_type",
icon="mdi:screwdriver",
entity_category=EntityCategory.CONFIG,
ufp_options=MOUNT_TYPES,
ufp_enum_type=MountType,
@@ -290,7 +282,6 @@ SENSE_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription[Sensor](
key="paired_camera",
translation_key="paired_camera",
icon="mdi:cctv",
entity_category=EntityCategory.CONFIG,
ufp_value="camera_id",
ufp_options_fn=_get_paired_camera_options,
@@ -303,7 +294,6 @@ DOORLOCK_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription[Doorlock](
key="paired_camera",
translation_key="paired_camera",
icon="mdi:cctv",
entity_category=EntityCategory.CONFIG,
ufp_value="camera_id",
ufp_options_fn=_get_paired_camera_options,
@@ -316,7 +306,6 @@ VIEWER_SELECTS: tuple[ProtectSelectEntityDescription, ...] = (
ProtectSelectEntityDescription[Viewer](
key="viewer",
translation_key="liveview",
icon="mdi:view-dashboard",
entity_category=None,
ufp_options_fn=_get_viewer_options,
ufp_value_fn=_get_viewer_current,
@@ -126,7 +126,6 @@ ALL_DEVICES_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="uptime",
translation_key="uptime",
icon="mdi:clock",
device_class=SensorDeviceClass.TIMESTAMP,
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
@@ -215,7 +214,6 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="doorbell_last_trip_time",
translation_key="last_doorbell_ring",
device_class=SensorDeviceClass.TIMESTAMP,
icon="mdi:doorbell-video",
ufp_required_field="feature_flags.is_doorbell",
ufp_value="last_ring",
entity_registry_enabled_default=False,
@@ -224,14 +222,12 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="lens_type",
translation_key="lens_type",
entity_category=EntityCategory.DIAGNOSTIC,
icon="mdi:camera-iris",
ufp_required_field="has_removable_lens",
ufp_value="feature_flags.lens_type",
),
ProtectSensorEntityDescription(
key="mic_level",
translation_key="microphone_level",
icon="mdi:microphone",
native_unit_of_measurement=PERCENTAGE,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="has_mic",
@@ -242,7 +238,6 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="recording_mode",
translation_key="recording_mode",
icon="mdi:video-outline",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="recording_settings.mode.value",
ufp_perm=PermRequired.NO_WRITE,
@@ -250,7 +245,6 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="infrared",
translation_key="infrared_mode",
icon="mdi:circle-opacity",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="feature_flags.has_led_ir",
ufp_value="isp_settings.ir_led_mode.value",
@@ -259,7 +253,6 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="doorbell_text",
translation_key="doorbell_text",
icon="mdi:card-text",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_required_field="feature_flags.has_lcd_screen",
ufp_value="lcd_message.text",
@@ -268,7 +261,6 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="chime_type",
translation_key="chime_type",
icon="mdi:bell",
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
ufp_required_field="feature_flags.has_chime",
@@ -366,7 +358,6 @@ SENSE_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="sensitivity",
translation_key="sensitivity",
icon="mdi:walk",
native_unit_of_measurement=PERCENTAGE,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="motion_settings.sensitivity",
@@ -375,7 +366,6 @@ SENSE_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="mount_type",
translation_key="mount_type",
icon="mdi:screwdriver",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="mount_type",
ufp_perm=PermRequired.NO_WRITE,
@@ -383,7 +373,6 @@ SENSE_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="paired_camera",
translation_key="paired_camera",
icon="mdi:cctv",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="camera.display_name",
ufp_perm=PermRequired.NO_WRITE,
@@ -402,7 +391,6 @@ DOORLOCK_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="paired_camera",
translation_key="paired_camera",
icon="mdi:cctv",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="camera.display_name",
ufp_perm=PermRequired.NO_WRITE,
@@ -413,7 +401,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="uptime",
translation_key="uptime",
icon="mdi:clock",
device_class=SensorDeviceClass.TIMESTAMP,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value_fn=_get_uptime,
@@ -422,7 +409,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="storage_utilization",
translation_key="storage_utilization",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:harddisk",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.utilization",
@@ -432,7 +418,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="record_rotating",
translation_key="type_timelapse_video",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:server",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.storage_distribution.timelapse_recordings.percentage",
@@ -442,7 +427,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="record_timelapse",
translation_key="type_continuous_video",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:server",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.storage_distribution.continuous_recordings.percentage",
@@ -452,7 +436,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="record_detections",
translation_key="type_detections_video",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:server",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.storage_distribution.detections_recordings.percentage",
@@ -462,7 +445,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="resolution_HD",
translation_key="resolution_hd_video",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:cctv",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.storage_distribution.hd_usage.percentage",
@@ -472,7 +454,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="resolution_4K",
translation_key="resolution_4k_video",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:cctv",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.storage_distribution.uhd_usage.percentage",
@@ -482,7 +463,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="resolution_free",
translation_key="resolution_free_space",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:cctv",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value="storage_stats.storage_distribution.free.percentage",
@@ -492,7 +472,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="record_capacity",
translation_key="recording_capacity",
native_unit_of_measurement=UnitOfTime.SECONDS,
icon="mdi:record-rec",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
ufp_value_fn=_get_nvr_recording_capacity,
@@ -504,7 +483,6 @@ NVR_DISABLED_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="cpu_utilization",
translation_key="cpu_utilization",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:speedometer",
entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
@@ -524,7 +502,6 @@ NVR_DISABLED_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="memory_utilization",
translation_key="memory_utilization",
native_unit_of_measurement=PERCENTAGE,
icon="mdi:memory",
entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
@@ -544,7 +521,6 @@ LIGHT_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="sensitivity",
translation_key="motion_sensitivity",
icon="mdi:walk",
native_unit_of_measurement=PERCENTAGE,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="light_device_settings.pir_sensitivity",
@@ -553,7 +529,6 @@ LIGHT_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription[Light](
key="light_motion",
translation_key="light_mode",
icon="mdi:spotlight",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value_fn=async_get_light_motion_current,
ufp_perm=PermRequired.NO_WRITE,
@@ -561,7 +536,6 @@ LIGHT_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="paired_camera",
translation_key="paired_camera",
icon="mdi:cctv",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="camera.display_name",
ufp_perm=PermRequired.NO_WRITE,
@@ -583,13 +557,11 @@ CHIME_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
key="last_ring",
translation_key="last_ring",
device_class=SensorDeviceClass.TIMESTAMP,
icon="mdi:bell",
ufp_value="last_ring",
),
ProtectSensorEntityDescription(
key="volume",
translation_key="volume",
icon="mdi:speaker",
native_unit_of_measurement=PERCENTAGE,
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="volume",
@@ -601,7 +573,6 @@ VIEWER_SENSORS: tuple[ProtectSensorEntityDescription, ...] = (
ProtectSensorEntityDescription(
key="viewer",
translation_key="liveview",
icon="mdi:view-dashboard",
entity_category=EntityCategory.DIAGNOSTIC,
ufp_value="liveview.name",
ufp_perm=PermRequired.NO_WRITE,
@@ -54,7 +54,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="ssh",
translation_key="ssh_enabled",
icon="mdi:lock",
entity_registry_enabled_default=False,
entity_category=EntityCategory.CONFIG,
ufp_value="is_ssh_enabled",
@@ -64,7 +63,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.has_led_status",
ufp_value="led_settings.is_enabled",
@@ -74,7 +72,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="hdr_mode",
translation_key="hdr_mode",
icon="mdi:brightness-7",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
ufp_required_field="feature_flags.has_hdr",
@@ -85,7 +82,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription[Camera](
key="high_fps",
translation_key="high_fps",
icon="mdi:video-high-definition",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.has_highfps",
ufp_value="is_high_fps_enabled",
@@ -95,7 +91,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="system_sounds",
translation_key="system_sounds",
icon="mdi:speaker",
entity_category=EntityCategory.CONFIG,
ufp_required_field="has_speaker",
ufp_value="speaker_settings.are_system_sounds_enabled",
@@ -106,7 +101,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="osd_name",
translation_key="overlay_show_name",
icon="mdi:fullscreen",
entity_category=EntityCategory.CONFIG,
ufp_value="osd_settings.is_name_enabled",
ufp_set_method="set_osd_name",
@@ -115,7 +109,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="osd_date",
translation_key="overlay_show_date",
icon="mdi:fullscreen",
entity_category=EntityCategory.CONFIG,
ufp_value="osd_settings.is_date_enabled",
ufp_set_method="set_osd_date",
@@ -124,7 +117,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="osd_logo",
translation_key="overlay_show_logo",
icon="mdi:fullscreen",
entity_category=EntityCategory.CONFIG,
ufp_value="osd_settings.is_logo_enabled",
ufp_set_method="set_osd_logo",
@@ -133,7 +125,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="osd_bitrate",
translation_key="overlay_show_nerd_mode",
icon="mdi:fullscreen",
entity_category=EntityCategory.CONFIG,
ufp_value="osd_settings.is_debug_enabled",
ufp_set_method="set_osd_bitrate",
@@ -142,7 +133,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="color_night_vision",
translation_key="color_night_vision",
icon="mdi:light-flood-down",
entity_category=EntityCategory.CONFIG,
ufp_required_field="has_color_night_vision",
ufp_value="isp_settings.is_color_night_vision_enabled",
@@ -152,7 +142,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="motion",
translation_key="motion",
icon="mdi:run-fast",
entity_category=EntityCategory.CONFIG,
ufp_value="recording_settings.enable_motion_detection",
ufp_enabled="is_recording_enabled",
@@ -162,7 +151,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_person",
translation_key="detections_person",
icon="mdi:walk",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_person",
ufp_value="is_person_detection_on",
@@ -173,7 +161,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_vehicle",
translation_key="detections_vehicle",
icon="mdi:car",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_vehicle",
ufp_value="is_vehicle_detection_on",
@@ -184,7 +171,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_animal",
translation_key="detections_animal",
icon="mdi:paw",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_animal",
ufp_value="is_animal_detection_on",
@@ -195,7 +181,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_package",
translation_key="detections_package",
icon="mdi:package-variant-closed",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_package",
ufp_value="is_package_detection_on",
@@ -206,7 +191,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_licenseplate",
translation_key="detections_license_plate",
icon="mdi:car",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_license_plate",
ufp_value="is_license_plate_detection_on",
@@ -217,7 +201,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_smoke",
translation_key="detections_smoke",
icon="mdi:fire",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_smoke",
ufp_value="is_smoke_detection_on",
@@ -228,7 +211,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_cmonx",
translation_key="detections_co_alarm",
icon="mdi:molecule-co",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_co",
ufp_value="is_co_detection_on",
@@ -239,7 +221,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_siren",
translation_key="detections_siren",
icon="mdi:alarm-bell",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_siren",
ufp_value="is_siren_detection_on",
@@ -250,7 +231,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_baby_cry",
translation_key="detections_baby_cry",
icon="mdi:cradle",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_baby_cry",
ufp_value="is_baby_cry_detection_on",
@@ -261,7 +241,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_speak",
translation_key="detections_speak",
icon="mdi:account-voice",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_speaking",
ufp_value="is_speaking_detection_on",
@@ -272,7 +251,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_bark",
translation_key="detections_bark",
icon="mdi:dog",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_bark",
ufp_value="is_bark_detection_on",
@@ -283,7 +261,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_car_alarm",
translation_key="detections_car_alarm",
icon="mdi:car",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_car_alarm",
ufp_value="is_car_alarm_detection_on",
@@ -294,7 +271,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_car_horn",
translation_key="detections_car_horn",
icon="mdi:bugle",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_car_horn",
ufp_value="is_car_horn_detection_on",
@@ -305,7 +281,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="smart_glass_break",
translation_key="detections_glass_break",
icon="mdi:glass-fragile",
entity_category=EntityCategory.CONFIG,
ufp_required_field="can_detect_glass_break",
ufp_value="is_glass_break_detection_on",
@@ -316,7 +291,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="track_person",
translation_key="tracking_person",
icon="mdi:walk",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.is_ptz",
ufp_value="is_person_tracking_enabled",
@@ -328,7 +302,6 @@ CAMERA_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
PRIVACY_MODE_SWITCH = ProtectSwitchEntityDescription[Camera](
key="privacy_mode",
translation_key="privacy_mode",
icon="mdi:eye-settings",
entity_category=EntityCategory.CONFIG,
ufp_required_field="feature_flags.has_privacy_mask",
ufp_value="is_privacy_on",
@@ -339,7 +312,6 @@ SENSE_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.CONFIG,
ufp_value="led_settings.is_enabled",
ufp_set_method="set_status_light",
@@ -348,7 +320,6 @@ SENSE_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="motion",
translation_key="detections_motion",
icon="mdi:walk",
entity_category=EntityCategory.CONFIG,
ufp_value="motion_settings.is_enabled",
ufp_set_method="set_motion_status",
@@ -357,7 +328,6 @@ SENSE_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="temperature",
translation_key="temperature_sensor",
icon="mdi:thermometer",
entity_category=EntityCategory.CONFIG,
ufp_value="temperature_settings.is_enabled",
ufp_set_method="set_temperature_status",
@@ -366,7 +336,6 @@ SENSE_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="humidity",
translation_key="humidity_sensor",
icon="mdi:water-percent",
entity_category=EntityCategory.CONFIG,
ufp_value="humidity_settings.is_enabled",
ufp_set_method="set_humidity_status",
@@ -375,7 +344,6 @@ SENSE_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="light",
translation_key="light_sensor",
icon="mdi:brightness-5",
entity_category=EntityCategory.CONFIG,
ufp_value="light_settings.is_enabled",
ufp_set_method="set_light_status",
@@ -396,7 +364,6 @@ LIGHT_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="ssh",
translation_key="ssh_enabled",
icon="mdi:lock",
entity_registry_enabled_default=False,
entity_category=EntityCategory.CONFIG,
ufp_value="is_ssh_enabled",
@@ -406,7 +373,6 @@ LIGHT_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.CONFIG,
ufp_value="light_device_settings.is_indicator_enabled",
ufp_set_method="set_status_light",
@@ -418,7 +384,6 @@ DOORLOCK_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="status_light",
translation_key="status_light",
icon="mdi:led-on",
entity_category=EntityCategory.CONFIG,
ufp_value="led_settings.is_enabled",
ufp_set_method="set_status_light",
@@ -430,7 +395,6 @@ VIEWER_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="ssh",
translation_key="ssh_enabled",
icon="mdi:lock",
entity_registry_enabled_default=False,
entity_category=EntityCategory.CONFIG,
ufp_value="is_ssh_enabled",
@@ -443,7 +407,6 @@ NVR_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="analytics_enabled",
translation_key="analytics_enabled",
icon="mdi:google-analytics",
entity_category=EntityCategory.CONFIG,
ufp_value="is_analytics_enabled",
ufp_set_method="set_anonymous_analytics",
@@ -451,7 +414,6 @@ NVR_SWITCHES: tuple[ProtectSwitchEntityDescription, ...] = (
ProtectSwitchEntityDescription(
key="insights_enabled",
translation_key="insights_enabled",
icon="mdi:magnify",
entity_category=EntityCategory.CONFIG,
ufp_value="is_insights_enabled",
ufp_set_method="set_insights",