mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-27 18:48:22 +03:00
don't use properties wrapper when generating config i18n json
This commit is contained in:
parent
68c74fef05
commit
425e68c51c
@ -38,8 +38,8 @@ def process_model_fields(model: type[BaseModel]) -> Dict[str, Any]:
|
|||||||
"""
|
"""
|
||||||
Recursively process a Pydantic model to extract translations.
|
Recursively process a Pydantic model to extract translations.
|
||||||
|
|
||||||
Returns a nested dictionary structure matching the config schema,
|
Returns a dictionary structure with nested fields directly under their
|
||||||
with title and description for each field.
|
parent keys.
|
||||||
"""
|
"""
|
||||||
translations = {}
|
translations = {}
|
||||||
|
|
||||||
@ -73,11 +73,11 @@ def process_model_fields(model: type[BaseModel]) -> Dict[str, Any]:
|
|||||||
nested_translations = process_model_fields(value_type)
|
nested_translations = process_model_fields(value_type)
|
||||||
|
|
||||||
if nested_translations:
|
if nested_translations:
|
||||||
field_translations["properties"] = nested_translations
|
field_translations.update(nested_translations)
|
||||||
elif isinstance(field_type, type) and issubclass(field_type, BaseModel):
|
elif isinstance(field_type, type) and issubclass(field_type, BaseModel):
|
||||||
nested_translations = process_model_fields(field_type)
|
nested_translations = process_model_fields(field_type)
|
||||||
if nested_translations:
|
if nested_translations:
|
||||||
field_translations["properties"] = nested_translations
|
field_translations.update(nested_translations)
|
||||||
|
|
||||||
if field_translations:
|
if field_translations:
|
||||||
translations[field_name] = field_translations
|
translations[field_name] = field_translations
|
||||||
@ -90,6 +90,8 @@ def generate_section_translation(
|
|||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
Generate translation structure for a top-level config section.
|
Generate translation structure for a top-level config section.
|
||||||
|
Returns a structure with label and description at root level,
|
||||||
|
and nested fields directly under their parent keys.
|
||||||
"""
|
"""
|
||||||
section_translations = get_field_translations(field_info)
|
section_translations = get_field_translations(field_info)
|
||||||
field_type = field_info.annotation
|
field_type = field_info.annotation
|
||||||
@ -109,13 +111,13 @@ def generate_section_translation(
|
|||||||
if isinstance(value_type, type) and issubclass(value_type, BaseModel):
|
if isinstance(value_type, type) and issubclass(value_type, BaseModel):
|
||||||
nested = process_model_fields(value_type)
|
nested = process_model_fields(value_type)
|
||||||
if nested:
|
if nested:
|
||||||
section_translations["properties"] = nested
|
section_translations.update(nested)
|
||||||
|
|
||||||
# If the field itself is a BaseModel, process it
|
# If the field itself is a BaseModel, process it and add nested translations
|
||||||
elif isinstance(field_type, type) and issubclass(field_type, BaseModel):
|
elif isinstance(field_type, type) and issubclass(field_type, BaseModel):
|
||||||
nested = process_model_fields(field_type)
|
nested = process_model_fields(field_type)
|
||||||
if nested:
|
if nested:
|
||||||
section_translations["properties"] = nested
|
section_translations.update(nested)
|
||||||
|
|
||||||
return section_translations
|
return section_translations
|
||||||
|
|
||||||
|
|||||||
@ -150,7 +150,10 @@
|
|||||||
"export": "Export",
|
"export": "Export",
|
||||||
"deleteNow": "Delete Now",
|
"deleteNow": "Delete Now",
|
||||||
"next": "Next",
|
"next": "Next",
|
||||||
"continue": "Continue"
|
"continue": "Continue",
|
||||||
|
"modified": "Modified",
|
||||||
|
"overridden": "Overridden",
|
||||||
|
"resetToGlobal": "Reset to Global"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"system": "System",
|
"system": "System",
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global Audio events configuration.",
|
"label": "Global Audio events configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable audio events."
|
"label": "Enable audio events."
|
||||||
},
|
},
|
||||||
@ -22,5 +21,4 @@
|
|||||||
"num_threads": {
|
"num_threads": {
|
||||||
"label": "Number of detection threads"
|
"label": "Number of detection threads"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Audio transcription config.",
|
"label": "Audio transcription config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable audio transcription."
|
"label": "Enable audio transcription."
|
||||||
},
|
},
|
||||||
@ -8,16 +7,12 @@
|
|||||||
"label": "Language abbreviation to use for audio event transcription/translation."
|
"label": "Language abbreviation to use for audio event transcription/translation."
|
||||||
},
|
},
|
||||||
"device": {
|
"device": {
|
||||||
"label": "The device used for license plate recognition."
|
"label": "The device used for audio transcription."
|
||||||
},
|
},
|
||||||
"model_size": {
|
"model_size": {
|
||||||
"label": "The size of the embeddings model used."
|
"label": "The size of the embeddings model used."
|
||||||
},
|
},
|
||||||
"enabled_in_config": {
|
|
||||||
"label": "Keep track of original state of camera."
|
|
||||||
},
|
|
||||||
"live_enabled": {
|
"live_enabled": {
|
||||||
"label": "Enable live transcriptions."
|
"label": "Enable live transcriptions."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Auth configuration.",
|
"label": "Auth configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable authentication"
|
"label": "Enable authentication"
|
||||||
},
|
},
|
||||||
@ -30,6 +29,9 @@
|
|||||||
},
|
},
|
||||||
"roles": {
|
"roles": {
|
||||||
"label": "Role to camera mappings. Empty list grants access to all cameras."
|
"label": "Role to camera mappings. Empty list grants access to all cameras."
|
||||||
}
|
},
|
||||||
|
"admin_first_time_login": {
|
||||||
|
"label": "Internal field to expose first-time admin login flag to the UI",
|
||||||
|
"description": "When true the UI may show a help link on the login page informing users how to sign in after an admin password reset. "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Birdseye configuration.",
|
"label": "Birdseye configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable birdseye view."
|
"label": "Enable birdseye view."
|
||||||
},
|
},
|
||||||
@ -24,14 +23,14 @@
|
|||||||
},
|
},
|
||||||
"layout": {
|
"layout": {
|
||||||
"label": "Birdseye Layout Config",
|
"label": "Birdseye Layout Config",
|
||||||
"properties": {
|
|
||||||
"scaling_factor": {
|
"scaling_factor": {
|
||||||
"label": "Birdseye Scaling Factor"
|
"label": "Birdseye Scaling Factor"
|
||||||
},
|
},
|
||||||
"max_cameras": {
|
"max_cameras": {
|
||||||
"label": "Max cameras"
|
"label": "Max cameras"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
"idle_heartbeat_fps": {
|
||||||
|
"label": "Idle heartbeat FPS (0 disables, max 10)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Camera group configuration",
|
"label": "Camera group configuration",
|
||||||
"properties": {
|
|
||||||
"cameras": {
|
"cameras": {
|
||||||
"label": "List of cameras in this group."
|
"label": "List of cameras in this group."
|
||||||
},
|
},
|
||||||
@ -10,5 +9,4 @@
|
|||||||
"order": {
|
"order": {
|
||||||
"label": "Sort order for group."
|
"label": "Sort order for group."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Camera configuration.",
|
"label": "Camera configuration.",
|
||||||
"properties": {
|
|
||||||
"name": {
|
"name": {
|
||||||
"label": "Camera name."
|
"label": "Camera name."
|
||||||
},
|
},
|
||||||
@ -12,7 +11,6 @@
|
|||||||
},
|
},
|
||||||
"audio": {
|
"audio": {
|
||||||
"label": "Audio events configuration.",
|
"label": "Audio events configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable audio events."
|
"label": "Enable audio events."
|
||||||
},
|
},
|
||||||
@ -34,34 +32,21 @@
|
|||||||
"num_threads": {
|
"num_threads": {
|
||||||
"label": "Number of detection threads"
|
"label": "Number of detection threads"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"audio_transcription": {
|
"audio_transcription": {
|
||||||
"label": "Audio transcription config.",
|
"label": "Audio transcription config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable audio transcription."
|
"label": "Enable audio transcription."
|
||||||
},
|
},
|
||||||
"language": {
|
|
||||||
"label": "Language abbreviation to use for audio event transcription/translation."
|
|
||||||
},
|
|
||||||
"device": {
|
|
||||||
"label": "The device used for license plate recognition."
|
|
||||||
},
|
|
||||||
"model_size": {
|
|
||||||
"label": "The size of the embeddings model used."
|
|
||||||
},
|
|
||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of camera."
|
"label": "Keep track of original state of audio transcription."
|
||||||
},
|
},
|
||||||
"live_enabled": {
|
"live_enabled": {
|
||||||
"label": "Enable live transcriptions."
|
"label": "Enable live transcriptions."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"birdseye": {
|
"birdseye": {
|
||||||
"label": "Birdseye camera configuration.",
|
"label": "Birdseye camera configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable birdseye view for camera."
|
"label": "Enable birdseye view for camera."
|
||||||
},
|
},
|
||||||
@ -71,11 +56,9 @@
|
|||||||
"order": {
|
"order": {
|
||||||
"label": "Position of the camera in the birdseye view."
|
"label": "Position of the camera in the birdseye view."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"detect": {
|
"detect": {
|
||||||
"label": "Object detection configuration.",
|
"label": "Object detection configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Detection Enabled."
|
"label": "Detection Enabled."
|
||||||
},
|
},
|
||||||
@ -96,7 +79,6 @@
|
|||||||
},
|
},
|
||||||
"stationary": {
|
"stationary": {
|
||||||
"label": "Stationary objects config.",
|
"label": "Stationary objects config.",
|
||||||
"properties": {
|
|
||||||
"interval": {
|
"interval": {
|
||||||
"label": "Frame interval for checking stationary objects."
|
"label": "Frame interval for checking stationary objects."
|
||||||
},
|
},
|
||||||
@ -105,39 +87,32 @@
|
|||||||
},
|
},
|
||||||
"max_frames": {
|
"max_frames": {
|
||||||
"label": "Max frames for stationary objects.",
|
"label": "Max frames for stationary objects.",
|
||||||
"properties": {
|
|
||||||
"default": {
|
"default": {
|
||||||
"label": "Default max frames."
|
"label": "Default max frames."
|
||||||
},
|
},
|
||||||
"objects": {
|
"objects": {
|
||||||
"label": "Object specific max frames."
|
"label": "Object specific max frames."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"classifier": {
|
"classifier": {
|
||||||
"label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
|
"label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"annotation_offset": {
|
"annotation_offset": {
|
||||||
"label": "Milliseconds to offset detect annotations by."
|
"label": "Milliseconds to offset detect annotations by."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"face_recognition": {
|
"face_recognition": {
|
||||||
"label": "Face recognition config.",
|
"label": "Face recognition config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable face recognition."
|
"label": "Enable face recognition."
|
||||||
},
|
},
|
||||||
"min_area": {
|
"min_area": {
|
||||||
"label": "Min area of face box to consider running face recognition."
|
"label": "Min area of face box to consider running face recognition."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"ffmpeg": {
|
"ffmpeg": {
|
||||||
"label": "FFmpeg configuration for the camera.",
|
"label": "FFmpeg configuration for the camera.",
|
||||||
"properties": {
|
|
||||||
"path": {
|
"path": {
|
||||||
"label": "FFmpeg path"
|
"label": "FFmpeg path"
|
||||||
},
|
},
|
||||||
@ -152,14 +127,12 @@
|
|||||||
},
|
},
|
||||||
"output_args": {
|
"output_args": {
|
||||||
"label": "FFmpeg output arguments per role.",
|
"label": "FFmpeg output arguments per role.",
|
||||||
"properties": {
|
|
||||||
"detect": {
|
"detect": {
|
||||||
"label": "Detect role FFmpeg output arguments."
|
"label": "Detect role FFmpeg output arguments."
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
"label": "Record role FFmpeg output arguments."
|
"label": "Record role FFmpeg output arguments."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"retry_interval": {
|
"retry_interval": {
|
||||||
"label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
|
"label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
|
||||||
@ -167,14 +140,15 @@
|
|||||||
"apple_compatibility": {
|
"apple_compatibility": {
|
||||||
"label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
|
"label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
|
||||||
},
|
},
|
||||||
|
"gpu": {
|
||||||
|
"label": "GPU index to use for hardware acceleration."
|
||||||
|
},
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"label": "Camera inputs."
|
"label": "Camera inputs."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"live": {
|
"live": {
|
||||||
"label": "Live playback settings.",
|
"label": "Live playback settings.",
|
||||||
"properties": {
|
|
||||||
"streams": {
|
"streams": {
|
||||||
"label": "Friendly names and restream names to use for live view."
|
"label": "Friendly names and restream names to use for live view."
|
||||||
},
|
},
|
||||||
@ -184,11 +158,9 @@
|
|||||||
"quality": {
|
"quality": {
|
||||||
"label": "Live camera view quality"
|
"label": "Live camera view quality"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"lpr": {
|
"lpr": {
|
||||||
"label": "LPR config.",
|
"label": "LPR config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable license plate recognition."
|
"label": "Enable license plate recognition."
|
||||||
},
|
},
|
||||||
@ -201,11 +173,9 @@
|
|||||||
"enhancement": {
|
"enhancement": {
|
||||||
"label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition."
|
"label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"motion": {
|
"motion": {
|
||||||
"label": "Motion detection configuration.",
|
"label": "Motion detection configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable motion on all cameras."
|
"label": "Enable motion on all cameras."
|
||||||
},
|
},
|
||||||
@ -239,17 +209,14 @@
|
|||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of motion detection."
|
"label": "Keep track of original state of motion detection."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"objects": {
|
"objects": {
|
||||||
"label": "Object configuration.",
|
"label": "Object configuration.",
|
||||||
"properties": {
|
|
||||||
"track": {
|
"track": {
|
||||||
"label": "Objects to track."
|
"label": "Objects to track."
|
||||||
},
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"label": "Object filters.",
|
"label": "Object filters.",
|
||||||
"properties": {
|
|
||||||
"min_area": {
|
"min_area": {
|
||||||
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||||
},
|
},
|
||||||
@ -271,14 +238,12 @@
|
|||||||
"mask": {
|
"mask": {
|
||||||
"label": "Detection area polygon mask for this filter configuration."
|
"label": "Detection area polygon mask for this filter configuration."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"mask": {
|
"mask": {
|
||||||
"label": "Object mask."
|
"label": "Object mask."
|
||||||
},
|
},
|
||||||
"genai": {
|
"genai": {
|
||||||
"label": "Config for using genai to analyze objects.",
|
"label": "Config for using genai to analyze objects.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable GenAI for camera."
|
"label": "Enable GenAI for camera."
|
||||||
},
|
},
|
||||||
@ -302,25 +267,20 @@
|
|||||||
},
|
},
|
||||||
"send_triggers": {
|
"send_triggers": {
|
||||||
"label": "What triggers to use to send frames to generative AI for a tracked object.",
|
"label": "What triggers to use to send frames to generative AI for a tracked object.",
|
||||||
"properties": {
|
|
||||||
"tracked_object_end": {
|
"tracked_object_end": {
|
||||||
"label": "Send once the object is no longer tracked."
|
"label": "Send once the object is no longer tracked."
|
||||||
},
|
},
|
||||||
"after_significant_updates": {
|
"after_significant_updates": {
|
||||||
"label": "Send an early request to generative AI when X frames accumulated."
|
"label": "Send an early request to generative AI when X frames accumulated."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of generative AI."
|
"label": "Keep track of original state of generative AI."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
"label": "Record configuration.",
|
"label": "Record configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable record on all cameras."
|
"label": "Enable record on all cameras."
|
||||||
},
|
},
|
||||||
@ -329,23 +289,18 @@
|
|||||||
},
|
},
|
||||||
"continuous": {
|
"continuous": {
|
||||||
"label": "Continuous recording retention settings.",
|
"label": "Continuous recording retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"motion": {
|
"motion": {
|
||||||
"label": "Motion recording retention settings.",
|
"label": "Motion recording retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"detections": {
|
"detections": {
|
||||||
"label": "Detection specific retention settings.",
|
"label": "Detection specific retention settings.",
|
||||||
"properties": {
|
|
||||||
"pre_capture": {
|
"pre_capture": {
|
||||||
"label": "Seconds to retain before event starts."
|
"label": "Seconds to retain before event starts."
|
||||||
},
|
},
|
||||||
@ -354,7 +309,6 @@
|
|||||||
},
|
},
|
||||||
"retain": {
|
"retain": {
|
||||||
"label": "Event retention settings.",
|
"label": "Event retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
},
|
},
|
||||||
@ -362,12 +316,9 @@
|
|||||||
"label": "Retain mode."
|
"label": "Retain mode."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"label": "Alert specific retention settings.",
|
"label": "Alert specific retention settings.",
|
||||||
"properties": {
|
|
||||||
"pre_capture": {
|
"pre_capture": {
|
||||||
"label": "Seconds to retain before event starts."
|
"label": "Seconds to retain before event starts."
|
||||||
},
|
},
|
||||||
@ -376,7 +327,6 @@
|
|||||||
},
|
},
|
||||||
"retain": {
|
"retain": {
|
||||||
"label": "Event retention settings.",
|
"label": "Event retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
},
|
},
|
||||||
@ -384,36 +334,27 @@
|
|||||||
"label": "Retain mode."
|
"label": "Retain mode."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"export": {
|
"export": {
|
||||||
"label": "Recording Export Config",
|
"label": "Recording Export Config",
|
||||||
"properties": {
|
"hwaccel_args": {
|
||||||
"timelapse_args": {
|
"label": "Export-specific FFmpeg hardware acceleration arguments."
|
||||||
"label": "Timelapse Args"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"label": "Recording Preview Config",
|
"label": "Recording Preview Config",
|
||||||
"properties": {
|
|
||||||
"quality": {
|
"quality": {
|
||||||
"label": "Quality of recording preview."
|
"label": "Quality of recording preview."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of recording."
|
"label": "Keep track of original state of recording."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"review": {
|
"review": {
|
||||||
"label": "Review configuration.",
|
"label": "Review configuration.",
|
||||||
"properties": {
|
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"label": "Review alerts config.",
|
"label": "Review alerts config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable alerts."
|
"label": "Enable alerts."
|
||||||
},
|
},
|
||||||
@ -429,11 +370,9 @@
|
|||||||
"cutoff_time": {
|
"cutoff_time": {
|
||||||
"label": "Time to cutoff alerts after no alert-causing activity has occurred."
|
"label": "Time to cutoff alerts after no alert-causing activity has occurred."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"detections": {
|
"detections": {
|
||||||
"label": "Review detections config.",
|
"label": "Review detections config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable detections."
|
"label": "Enable detections."
|
||||||
},
|
},
|
||||||
@ -449,11 +388,9 @@
|
|||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of detections."
|
"label": "Keep track of original state of detections."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"genai": {
|
"genai": {
|
||||||
"label": "Review description genai config.",
|
"label": "Review description genai config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable GenAI descriptions for review items."
|
"label": "Enable GenAI descriptions for review items."
|
||||||
},
|
},
|
||||||
@ -463,6 +400,9 @@
|
|||||||
"detections": {
|
"detections": {
|
||||||
"label": "Enable GenAI for detections."
|
"label": "Enable GenAI for detections."
|
||||||
},
|
},
|
||||||
|
"image_source": {
|
||||||
|
"label": "Image source for review descriptions."
|
||||||
|
},
|
||||||
"additional_concerns": {
|
"additional_concerns": {
|
||||||
"label": "Additional concerns that GenAI should make note of on this camera."
|
"label": "Additional concerns that GenAI should make note of on this camera."
|
||||||
},
|
},
|
||||||
@ -476,18 +416,17 @@
|
|||||||
"label": "Preferred language for GenAI Response"
|
"label": "Preferred language for GenAI Response"
|
||||||
},
|
},
|
||||||
"activity_context_prompt": {
|
"activity_context_prompt": {
|
||||||
"label": "Custom activity context prompt defining normal activity patterns for this property."
|
"label": "Custom activity context prompt defining normal and suspicious activity patterns for this property."
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"semantic_search": {
|
"semantic_search": {
|
||||||
"label": "Semantic search configuration.",
|
"label": "Semantic search configuration.",
|
||||||
"properties": {
|
|
||||||
"triggers": {
|
"triggers": {
|
||||||
"label": "Trigger actions on tracked objects that match existing thumbnails or descriptions",
|
"label": "Trigger actions on tracked objects that match existing thumbnails or descriptions",
|
||||||
"properties": {
|
"friendly_name": {
|
||||||
|
"label": "Trigger friendly name used in the Frigate UI."
|
||||||
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable this trigger"
|
"label": "Enable this trigger"
|
||||||
},
|
},
|
||||||
@ -504,12 +443,9 @@
|
|||||||
"label": "Actions to perform when trigger is matched"
|
"label": "Actions to perform when trigger is matched"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"snapshots": {
|
"snapshots": {
|
||||||
"label": "Snapshot configuration.",
|
"label": "Snapshot configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Snapshots enabled."
|
"label": "Snapshots enabled."
|
||||||
},
|
},
|
||||||
@ -533,7 +469,6 @@
|
|||||||
},
|
},
|
||||||
"retain": {
|
"retain": {
|
||||||
"label": "Snapshot retention.",
|
"label": "Snapshot retention.",
|
||||||
"properties": {
|
|
||||||
"default": {
|
"default": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
},
|
},
|
||||||
@ -543,16 +478,13 @@
|
|||||||
"objects": {
|
"objects": {
|
||||||
"label": "Object retention period."
|
"label": "Object retention period."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"quality": {
|
"quality": {
|
||||||
"label": "Quality of the encoded jpeg (0-100)."
|
"label": "Quality of the encoded jpeg (0-100)."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"timestamp_style": {
|
"timestamp_style": {
|
||||||
"label": "Timestamp style configuration.",
|
"label": "Timestamp style configuration.",
|
||||||
"properties": {
|
|
||||||
"position": {
|
"position": {
|
||||||
"label": "Timestamp position."
|
"label": "Timestamp position."
|
||||||
},
|
},
|
||||||
@ -561,7 +493,6 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"label": "Timestamp color.",
|
"label": "Timestamp color.",
|
||||||
"properties": {
|
|
||||||
"red": {
|
"red": {
|
||||||
"label": "Red"
|
"label": "Red"
|
||||||
},
|
},
|
||||||
@ -571,7 +502,6 @@
|
|||||||
"blue": {
|
"blue": {
|
||||||
"label": "Blue"
|
"label": "Blue"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"thickness": {
|
"thickness": {
|
||||||
"label": "Timestamp thickness."
|
"label": "Timestamp thickness."
|
||||||
@ -579,14 +509,12 @@
|
|||||||
"effect": {
|
"effect": {
|
||||||
"label": "Timestamp effect."
|
"label": "Timestamp effect."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"best_image_timeout": {
|
"best_image_timeout": {
|
||||||
"label": "How long to wait for the image with the highest confidence score."
|
"label": "How long to wait for the image with the highest confidence score."
|
||||||
},
|
},
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"label": "MQTT configuration.",
|
"label": "MQTT configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Send image over MQTT."
|
"label": "Send image over MQTT."
|
||||||
},
|
},
|
||||||
@ -608,11 +536,9 @@
|
|||||||
"quality": {
|
"quality": {
|
||||||
"label": "Quality of the encoded jpeg (0-100)."
|
"label": "Quality of the encoded jpeg (0-100)."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
"label": "Notifications configuration.",
|
"label": "Notifications configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable notifications"
|
"label": "Enable notifications"
|
||||||
},
|
},
|
||||||
@ -625,11 +551,9 @@
|
|||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of notifications."
|
"label": "Keep track of original state of notifications."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"onvif": {
|
"onvif": {
|
||||||
"label": "Camera Onvif Configuration.",
|
"label": "Camera Onvif Configuration.",
|
||||||
"properties": {
|
|
||||||
"host": {
|
"host": {
|
||||||
"label": "Onvif Host"
|
"label": "Onvif Host"
|
||||||
},
|
},
|
||||||
@ -647,7 +571,6 @@
|
|||||||
},
|
},
|
||||||
"autotracking": {
|
"autotracking": {
|
||||||
"label": "PTZ auto tracking config.",
|
"label": "PTZ auto tracking config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable PTZ object autotracking."
|
"label": "Enable PTZ object autotracking."
|
||||||
},
|
},
|
||||||
@ -678,36 +601,33 @@
|
|||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of autotracking."
|
"label": "Keep track of original state of autotracking."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"ignore_time_mismatch": {
|
"ignore_time_mismatch": {
|
||||||
"label": "Onvif Ignore Time Synchronization Mismatch Between Camera and Server"
|
"label": "Onvif Ignore Time Synchronization Mismatch Between Camera and Server"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"type": {
|
"type": {
|
||||||
"label": "Camera Type"
|
"label": "Camera Type"
|
||||||
},
|
},
|
||||||
"ui": {
|
"ui": {
|
||||||
"label": "Camera UI Modifications.",
|
"label": "Camera UI Modifications.",
|
||||||
"properties": {
|
|
||||||
"order": {
|
"order": {
|
||||||
"label": "Order of camera in UI."
|
"label": "Order of camera in UI."
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"label": "Show this camera in Frigate dashboard UI."
|
"label": "Show this camera in Frigate dashboard UI."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"webui_url": {
|
"webui_url": {
|
||||||
"label": "URL to visit the camera directly from system page"
|
"label": "URL to visit the camera directly from system page"
|
||||||
},
|
},
|
||||||
"zones": {
|
"zones": {
|
||||||
"label": "Zone configuration.",
|
"label": "Zone configuration.",
|
||||||
"properties": {
|
"friendly_name": {
|
||||||
|
"label": "Zone friendly name used in the Frigate UI."
|
||||||
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"label": "Zone filters.",
|
"label": "Zone filters.",
|
||||||
"properties": {
|
|
||||||
"min_area": {
|
"min_area": {
|
||||||
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||||
},
|
},
|
||||||
@ -729,7 +649,6 @@
|
|||||||
"mask": {
|
"mask": {
|
||||||
"label": "Detection area polygon mask for this filter configuration."
|
"label": "Detection area polygon mask for this filter configuration."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"coordinates": {
|
"coordinates": {
|
||||||
"label": "Coordinates polygon for the defined zone."
|
"label": "Coordinates polygon for the defined zone."
|
||||||
@ -749,10 +668,8 @@
|
|||||||
"objects": {
|
"objects": {
|
||||||
"label": "List of objects that can trigger the zone."
|
"label": "List of objects that can trigger the zone."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of camera."
|
"label": "Keep track of original state of camera."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,20 +1,16 @@
|
|||||||
{
|
{
|
||||||
"label": "Object classification config.",
|
"label": "Object classification config.",
|
||||||
"properties": {
|
|
||||||
"bird": {
|
"bird": {
|
||||||
"label": "Bird classification config.",
|
"label": "Bird classification config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable bird classification."
|
"label": "Enable bird classification."
|
||||||
},
|
},
|
||||||
"threshold": {
|
"threshold": {
|
||||||
"label": "Minimum classification score required to be considered a match."
|
"label": "Minimum classification score required to be considered a match."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
"label": "Custom Classification Model Configs.",
|
"label": "Custom Classification Model Configs.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable running the model."
|
"label": "Enable running the model."
|
||||||
},
|
},
|
||||||
@ -24,25 +20,23 @@
|
|||||||
"threshold": {
|
"threshold": {
|
||||||
"label": "Classification score threshold to change the state."
|
"label": "Classification score threshold to change the state."
|
||||||
},
|
},
|
||||||
|
"save_attempts": {
|
||||||
|
"label": "Number of classification attempts to save in the recent classifications tab. If not specified, defaults to 200 for object classification and 100 for state classification."
|
||||||
|
},
|
||||||
"object_config": {
|
"object_config": {
|
||||||
"properties": {
|
|
||||||
"objects": {
|
"objects": {
|
||||||
"label": "Object types to classify."
|
"label": "Object types to classify."
|
||||||
},
|
},
|
||||||
"classification_type": {
|
"classification_type": {
|
||||||
"label": "Type of classification that is applied."
|
"label": "Type of classification that is applied."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"state_config": {
|
"state_config": {
|
||||||
"properties": {
|
|
||||||
"cameras": {
|
"cameras": {
|
||||||
"label": "Cameras to run classification on.",
|
"label": "Cameras to run classification on.",
|
||||||
"properties": {
|
|
||||||
"crop": {
|
"crop": {
|
||||||
"label": "Crop of image frame on this camera to run classification on."
|
"label": "Crop of image frame on this camera to run classification on."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"motion": {
|
"motion": {
|
||||||
"label": "If classification should be run when motion is detected in the crop."
|
"label": "If classification should be run when motion is detected in the crop."
|
||||||
@ -52,7 +46,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
"label": "Database configuration.",
|
"label": "Database configuration.",
|
||||||
"properties": {
|
|
||||||
"path": {
|
"path": {
|
||||||
"label": "Database path."
|
"label": "Database path."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global object tracking configuration.",
|
"label": "Global object tracking configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Detection Enabled."
|
"label": "Detection Enabled."
|
||||||
},
|
},
|
||||||
@ -21,7 +20,6 @@
|
|||||||
},
|
},
|
||||||
"stationary": {
|
"stationary": {
|
||||||
"label": "Stationary objects config.",
|
"label": "Stationary objects config.",
|
||||||
"properties": {
|
|
||||||
"interval": {
|
"interval": {
|
||||||
"label": "Frame interval for checking stationary objects."
|
"label": "Frame interval for checking stationary objects."
|
||||||
},
|
},
|
||||||
@ -30,22 +28,18 @@
|
|||||||
},
|
},
|
||||||
"max_frames": {
|
"max_frames": {
|
||||||
"label": "Max frames for stationary objects.",
|
"label": "Max frames for stationary objects.",
|
||||||
"properties": {
|
|
||||||
"default": {
|
"default": {
|
||||||
"label": "Default max frames."
|
"label": "Default max frames."
|
||||||
},
|
},
|
||||||
"objects": {
|
"objects": {
|
||||||
"label": "Object specific max frames."
|
"label": "Object specific max frames."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"classifier": {
|
"classifier": {
|
||||||
"label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
|
"label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"annotation_offset": {
|
"annotation_offset": {
|
||||||
"label": "Milliseconds to offset detect annotations by."
|
"label": "Milliseconds to offset detect annotations by."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Detector hardware configuration.",
|
"label": "Detector hardware configuration.",
|
||||||
"properties": {
|
|
||||||
"type": {
|
"type": {
|
||||||
"label": "Detector Type"
|
"label": "Detector Type"
|
||||||
},
|
},
|
||||||
@ -10,5 +9,4 @@
|
|||||||
"model_path": {
|
"model_path": {
|
||||||
"label": "Detector specific model path."
|
"label": "Detector specific model path."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Face recognition config.",
|
"label": "Face recognition config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable face recognition."
|
"label": "Enable face recognition."
|
||||||
},
|
},
|
||||||
@ -32,5 +31,4 @@
|
|||||||
"label": "The device key to use for face recognition.",
|
"label": "The device key to use for face recognition.",
|
||||||
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global FFmpeg configuration.",
|
"label": "Global FFmpeg configuration.",
|
||||||
"properties": {
|
|
||||||
"path": {
|
"path": {
|
||||||
"label": "FFmpeg path"
|
"label": "FFmpeg path"
|
||||||
},
|
},
|
||||||
@ -15,20 +14,20 @@
|
|||||||
},
|
},
|
||||||
"output_args": {
|
"output_args": {
|
||||||
"label": "FFmpeg output arguments per role.",
|
"label": "FFmpeg output arguments per role.",
|
||||||
"properties": {
|
|
||||||
"detect": {
|
"detect": {
|
||||||
"label": "Detect role FFmpeg output arguments."
|
"label": "Detect role FFmpeg output arguments."
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
"label": "Record role FFmpeg output arguments."
|
"label": "Record role FFmpeg output arguments."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"retry_interval": {
|
"retry_interval": {
|
||||||
"label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
|
"label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
|
||||||
},
|
},
|
||||||
"apple_compatibility": {
|
"apple_compatibility": {
|
||||||
"label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
|
"label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
|
||||||
}
|
},
|
||||||
|
"gpu": {
|
||||||
|
"label": "GPU index to use for hardware acceleration."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Live playback settings.",
|
"label": "Live playback settings.",
|
||||||
"properties": {
|
|
||||||
"streams": {
|
"streams": {
|
||||||
"label": "Friendly names and restream names to use for live view."
|
"label": "Friendly names and restream names to use for live view."
|
||||||
},
|
},
|
||||||
@ -10,5 +9,4 @@
|
|||||||
"quality": {
|
"quality": {
|
||||||
"label": "Live camera view quality"
|
"label": "Live camera view quality"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,11 +1,9 @@
|
|||||||
{
|
{
|
||||||
"label": "Logging configuration.",
|
"label": "Logging configuration.",
|
||||||
"properties": {
|
|
||||||
"default": {
|
"default": {
|
||||||
"label": "Default logging level."
|
"label": "Default logging level."
|
||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
"label": "Log level for specified processes."
|
"label": "Log level for specified processes."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "License Plate recognition config.",
|
"label": "License Plate recognition config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable license plate recognition."
|
"label": "Enable license plate recognition."
|
||||||
},
|
},
|
||||||
@ -41,5 +40,4 @@
|
|||||||
"replace_rules": {
|
"replace_rules": {
|
||||||
"label": "List of regex replacement rules for normalizing detected plates. Each rule has 'pattern' and 'replacement'."
|
"label": "List of regex replacement rules for normalizing detected plates. Each rule has 'pattern' and 'replacement'."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Detection model configuration.",
|
"label": "Detection model configuration.",
|
||||||
"properties": {
|
|
||||||
"path": {
|
"path": {
|
||||||
"label": "Custom Object detection model path."
|
"label": "Custom Object detection model path."
|
||||||
},
|
},
|
||||||
@ -31,5 +30,4 @@
|
|||||||
"model_type": {
|
"model_type": {
|
||||||
"label": "Object Detection Model Type"
|
"label": "Object Detection Model Type"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "MQTT configuration.",
|
"label": "MQTT configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable MQTT Communication."
|
"label": "Enable MQTT Communication."
|
||||||
},
|
},
|
||||||
@ -40,5 +39,4 @@
|
|||||||
"qos": {
|
"qos": {
|
||||||
"label": "MQTT QoS"
|
"label": "MQTT QoS"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,13 +1,9 @@
|
|||||||
{
|
{
|
||||||
"label": "Networking configuration",
|
"label": "Networking configuration",
|
||||||
"properties": {
|
|
||||||
"ipv6": {
|
"ipv6": {
|
||||||
"label": "IPv6 configuration",
|
"label": "IPv6 configuration",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable IPv6 for port 5000 and/or 8971"
|
"label": "Enable IPv6 for port 5000 and/or 8971"
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"listen": {
|
"listen": {
|
||||||
"label": "Listening ports configuration",
|
"label": "Listening ports configuration",
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global notification configuration.",
|
"label": "Global notification configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable notifications"
|
"label": "Enable notifications"
|
||||||
},
|
},
|
||||||
@ -13,5 +12,4 @@
|
|||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of notifications."
|
"label": "Keep track of original state of notifications."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,12 +1,10 @@
|
|||||||
{
|
{
|
||||||
"label": "Global object configuration.",
|
"label": "Global object configuration.",
|
||||||
"properties": {
|
|
||||||
"track": {
|
"track": {
|
||||||
"label": "Objects to track."
|
"label": "Objects to track."
|
||||||
},
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"label": "Object filters.",
|
"label": "Object filters.",
|
||||||
"properties": {
|
|
||||||
"min_area": {
|
"min_area": {
|
||||||
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||||
},
|
},
|
||||||
@ -28,14 +26,12 @@
|
|||||||
"mask": {
|
"mask": {
|
||||||
"label": "Detection area polygon mask for this filter configuration."
|
"label": "Detection area polygon mask for this filter configuration."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"mask": {
|
"mask": {
|
||||||
"label": "Object mask."
|
"label": "Object mask."
|
||||||
},
|
},
|
||||||
"genai": {
|
"genai": {
|
||||||
"label": "Config for using genai to analyze objects.",
|
"label": "Config for using genai to analyze objects.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable GenAI for camera."
|
"label": "Enable GenAI for camera."
|
||||||
},
|
},
|
||||||
@ -59,19 +55,15 @@
|
|||||||
},
|
},
|
||||||
"send_triggers": {
|
"send_triggers": {
|
||||||
"label": "What triggers to use to send frames to generative AI for a tracked object.",
|
"label": "What triggers to use to send frames to generative AI for a tracked object.",
|
||||||
"properties": {
|
|
||||||
"tracked_object_end": {
|
"tracked_object_end": {
|
||||||
"label": "Send once the object is no longer tracked."
|
"label": "Send once the object is no longer tracked."
|
||||||
},
|
},
|
||||||
"after_significant_updates": {
|
"after_significant_updates": {
|
||||||
"label": "Send an early request to generative AI when X frames accumulated."
|
"label": "Send an early request to generative AI when X frames accumulated."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of generative AI."
|
"label": "Keep track of original state of generative AI."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,9 +1,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Proxy configuration.",
|
"label": "Proxy configuration.",
|
||||||
"properties": {
|
|
||||||
"header_map": {
|
"header_map": {
|
||||||
"label": "Header mapping definitions for proxy user passing.",
|
"label": "Header mapping definitions for proxy user passing.",
|
||||||
"properties": {
|
|
||||||
"user": {
|
"user": {
|
||||||
"label": "Header name from upstream proxy to identify user."
|
"label": "Header name from upstream proxy to identify user."
|
||||||
},
|
},
|
||||||
@ -13,7 +11,6 @@
|
|||||||
"role_map": {
|
"role_map": {
|
||||||
"label": "Mapping of Frigate roles to upstream group values. "
|
"label": "Mapping of Frigate roles to upstream group values. "
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"logout_url": {
|
"logout_url": {
|
||||||
"label": "Redirect url for logging out with proxy."
|
"label": "Redirect url for logging out with proxy."
|
||||||
@ -27,5 +24,4 @@
|
|||||||
"separator": {
|
"separator": {
|
||||||
"label": "The character used to separate values in a mapped header."
|
"label": "The character used to separate values in a mapped header."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global record configuration.",
|
"label": "Global record configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable record on all cameras."
|
"label": "Enable record on all cameras."
|
||||||
},
|
},
|
||||||
@ -9,23 +8,18 @@
|
|||||||
},
|
},
|
||||||
"continuous": {
|
"continuous": {
|
||||||
"label": "Continuous recording retention settings.",
|
"label": "Continuous recording retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"motion": {
|
"motion": {
|
||||||
"label": "Motion recording retention settings.",
|
"label": "Motion recording retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"detections": {
|
"detections": {
|
||||||
"label": "Detection specific retention settings.",
|
"label": "Detection specific retention settings.",
|
||||||
"properties": {
|
|
||||||
"pre_capture": {
|
"pre_capture": {
|
||||||
"label": "Seconds to retain before event starts."
|
"label": "Seconds to retain before event starts."
|
||||||
},
|
},
|
||||||
@ -34,7 +28,6 @@
|
|||||||
},
|
},
|
||||||
"retain": {
|
"retain": {
|
||||||
"label": "Event retention settings.",
|
"label": "Event retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
},
|
},
|
||||||
@ -42,12 +35,9 @@
|
|||||||
"label": "Retain mode."
|
"label": "Retain mode."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"label": "Alert specific retention settings.",
|
"label": "Alert specific retention settings.",
|
||||||
"properties": {
|
|
||||||
"pre_capture": {
|
"pre_capture": {
|
||||||
"label": "Seconds to retain before event starts."
|
"label": "Seconds to retain before event starts."
|
||||||
},
|
},
|
||||||
@ -56,7 +46,6 @@
|
|||||||
},
|
},
|
||||||
"retain": {
|
"retain": {
|
||||||
"label": "Event retention settings.",
|
"label": "Event retention settings.",
|
||||||
"properties": {
|
|
||||||
"days": {
|
"days": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
},
|
},
|
||||||
@ -64,27 +53,20 @@
|
|||||||
"label": "Retain mode."
|
"label": "Retain mode."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"export": {
|
"export": {
|
||||||
"label": "Recording Export Config",
|
"label": "Recording Export Config",
|
||||||
"properties": {
|
"hwaccel_args": {
|
||||||
"timelapse_args": {
|
"label": "Export-specific FFmpeg hardware acceleration arguments."
|
||||||
"label": "Timelapse Args"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"label": "Recording Preview Config",
|
"label": "Recording Preview Config",
|
||||||
"properties": {
|
|
||||||
"quality": {
|
"quality": {
|
||||||
"label": "Quality of recording preview."
|
"label": "Quality of recording preview."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of recording."
|
"label": "Keep track of original state of recording."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,9 +1,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Review configuration.",
|
"label": "Review configuration.",
|
||||||
"properties": {
|
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"label": "Review alerts config.",
|
"label": "Review alerts config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable alerts."
|
"label": "Enable alerts."
|
||||||
},
|
},
|
||||||
@ -19,11 +17,9 @@
|
|||||||
"cutoff_time": {
|
"cutoff_time": {
|
||||||
"label": "Time to cutoff alerts after no alert-causing activity has occurred."
|
"label": "Time to cutoff alerts after no alert-causing activity has occurred."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"detections": {
|
"detections": {
|
||||||
"label": "Review detections config.",
|
"label": "Review detections config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable detections."
|
"label": "Enable detections."
|
||||||
},
|
},
|
||||||
@ -39,11 +35,9 @@
|
|||||||
"enabled_in_config": {
|
"enabled_in_config": {
|
||||||
"label": "Keep track of original state of detections."
|
"label": "Keep track of original state of detections."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"genai": {
|
"genai": {
|
||||||
"label": "Review description genai config.",
|
"label": "Review description genai config.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable GenAI descriptions for review items."
|
"label": "Enable GenAI descriptions for review items."
|
||||||
},
|
},
|
||||||
@ -53,6 +47,9 @@
|
|||||||
"detections": {
|
"detections": {
|
||||||
"label": "Enable GenAI for detections."
|
"label": "Enable GenAI for detections."
|
||||||
},
|
},
|
||||||
|
"image_source": {
|
||||||
|
"label": "Image source for review descriptions."
|
||||||
|
},
|
||||||
"additional_concerns": {
|
"additional_concerns": {
|
||||||
"label": "Additional concerns that GenAI should make note of on this camera."
|
"label": "Additional concerns that GenAI should make note of on this camera."
|
||||||
},
|
},
|
||||||
@ -66,9 +63,7 @@
|
|||||||
"label": "Preferred language for GenAI Response"
|
"label": "Preferred language for GenAI Response"
|
||||||
},
|
},
|
||||||
"activity_context_prompt": {
|
"activity_context_prompt": {
|
||||||
"label": "Custom activity context prompt defining normal activity patterns for this property."
|
"label": "Custom activity context prompt defining normal and suspicious activity patterns for this property."
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Semantic search configuration.",
|
"label": "Semantic search configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable semantic search."
|
"label": "Enable semantic search."
|
||||||
},
|
},
|
||||||
@ -17,5 +16,4 @@
|
|||||||
"label": "The device key to use for semantic search.",
|
"label": "The device key to use for semantic search.",
|
||||||
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global snapshots configuration.",
|
"label": "Global snapshots configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Snapshots enabled."
|
"label": "Snapshots enabled."
|
||||||
},
|
},
|
||||||
@ -24,7 +23,6 @@
|
|||||||
},
|
},
|
||||||
"retain": {
|
"retain": {
|
||||||
"label": "Snapshot retention.",
|
"label": "Snapshot retention.",
|
||||||
"properties": {
|
|
||||||
"default": {
|
"default": {
|
||||||
"label": "Default retention period."
|
"label": "Default retention period."
|
||||||
},
|
},
|
||||||
@ -34,10 +32,8 @@
|
|||||||
"objects": {
|
"objects": {
|
||||||
"label": "Object retention period."
|
"label": "Object retention period."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"quality": {
|
"quality": {
|
||||||
"label": "Quality of the encoded jpeg (0-100)."
|
"label": "Quality of the encoded jpeg (0-100)."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,12 +1,10 @@
|
|||||||
{
|
{
|
||||||
"label": "Telemetry configuration.",
|
"label": "Telemetry configuration.",
|
||||||
"properties": {
|
|
||||||
"network_interfaces": {
|
"network_interfaces": {
|
||||||
"label": "Enabled network interfaces for bandwidth calculation."
|
"label": "Enabled network interfaces for bandwidth calculation."
|
||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"label": "System Stats Configuration",
|
"label": "System Stats Configuration",
|
||||||
"properties": {
|
|
||||||
"amd_gpu_stats": {
|
"amd_gpu_stats": {
|
||||||
"label": "Enable AMD GPU stats."
|
"label": "Enable AMD GPU stats."
|
||||||
},
|
},
|
||||||
@ -19,10 +17,8 @@
|
|||||||
"intel_gpu_device": {
|
"intel_gpu_device": {
|
||||||
"label": "Define the device to use when gathering SR-IOV stats."
|
"label": "Define the device to use when gathering SR-IOV stats."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"version_check": {
|
"version_check": {
|
||||||
"label": "Enable latest version check."
|
"label": "Enable latest version check."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Global timestamp style configuration.",
|
"label": "Global timestamp style configuration.",
|
||||||
"properties": {
|
|
||||||
"position": {
|
"position": {
|
||||||
"label": "Timestamp position."
|
"label": "Timestamp position."
|
||||||
},
|
},
|
||||||
@ -9,7 +8,6 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"label": "Timestamp color.",
|
"label": "Timestamp color.",
|
||||||
"properties": {
|
|
||||||
"red": {
|
"red": {
|
||||||
"label": "Red"
|
"label": "Red"
|
||||||
},
|
},
|
||||||
@ -19,7 +17,6 @@
|
|||||||
"blue": {
|
"blue": {
|
||||||
"label": "Blue"
|
"label": "Blue"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"thickness": {
|
"thickness": {
|
||||||
"label": "Timestamp thickness."
|
"label": "Timestamp thickness."
|
||||||
@ -27,5 +24,4 @@
|
|||||||
"effect": {
|
"effect": {
|
||||||
"label": "Timestamp effect."
|
"label": "Timestamp effect."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
"label": "TLS configuration.",
|
"label": "TLS configuration.",
|
||||||
"properties": {
|
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"label": "Enable TLS for port 8971"
|
"label": "Enable TLS for port 8971"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "UI configuration.",
|
"label": "UI configuration.",
|
||||||
"properties": {
|
|
||||||
"timezone": {
|
"timezone": {
|
||||||
"label": "Override UI timezone."
|
"label": "Override UI timezone."
|
||||||
},
|
},
|
||||||
@ -16,5 +15,4 @@
|
|||||||
"unit_system": {
|
"unit_system": {
|
||||||
"label": "The unit system to use for measurements."
|
"label": "The unit system to use for measurements."
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1266,10 +1266,12 @@
|
|||||||
"error": "Failed to save camera settings"
|
"error": "Failed to save camera settings"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"common": {
|
"toast": {
|
||||||
"overridden": "Overridden",
|
"success": "Settings saved successfully",
|
||||||
"resetToGlobal": "Reset to Global",
|
"error": "Failed to save settings",
|
||||||
"save": "Save",
|
"validationError": "Validation failed: {{message}}",
|
||||||
"cancel": "Cancel"
|
"resetSuccess": "Reset to global defaults",
|
||||||
}
|
"resetError": "Failed to reset settings"
|
||||||
|
},
|
||||||
|
"unsavedChanges": "You have unsaved changes"
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user