iobroker.frigate
Version:
1,053 lines • 52.1 kB
JSON
{
"i18n": true,
"type": "tabs",
"items": {
"_general": {
"type": "panel",
"label": "General Settings",
"items": {
"dockerFrigate.enabled": {
"newLine": true,
"type": "checkDocker",
"label": "Use self-hosted Frigate in Docker",
"help": "docker_explanation",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4
},
"_headerApi": {
"type": "header",
"text": "Frigate API",
"size": 4,
"hidden": "!!data.dockerFrigate?.enabled",
"newLine": true
},
"_frigateHost": {
"type": "header",
"text": "frigate_host_hint",
"hidden": "!!data.dockerFrigate?.enabled || data.mqttMode === 'client'",
"size": 5,
"newLine": true
},
"friurl": {
"type": "text",
"label": "Frigate Hostname:Port",
"help": "frigate_url_help",
"hidden": "!!data.dockerFrigate?.enabled",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4,
"newLine": true
},
"frigateUsername": {
"type": "text",
"label": "Frigate Username",
"help": "frigate_auth_help",
"hidden": "!!data.dockerFrigate?.enabled",
"xs": 12,
"sm": 6,
"md": 4,
"lg": 4,
"xl": 4
},
"frigatePassword": {
"type": "password",
"label": "Frigate Password",
"help": "frigate_auth_help",
"hidden": "!!data.dockerFrigate?.enabled",
"xs": 12,
"sm": 6,
"md": 4,
"lg": 4,
"xl": 4
},
"_headerMqtt": {
"type": "header",
"text": "MQTT",
"size": 4,
"hidden": "!!data.dockerFrigate?.enabled",
"newLine": true
},
"mqttMode": {
"type": "select",
"label": "MQTT Mode",
"help": "Built-in Broker: Frigate connects directly to this adapter. External Broker: Adapter connects to an existing MQTT broker (e.g. Mosquitto).",
"options": [
{
"value": "broker",
"label": "Built-in MQTT Broker (default)"
},
{
"value": "client",
"label": "External MQTT Broker"
}
],
"default": "broker",
"hidden": "!!data.dockerFrigate?.enabled",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"mqttPort": {
"type": "number",
"label": "MQTT Server Port",
"help": "Port for the built-in MQTT broker",
"hidden": "data.mqttMode === 'client'",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"mqttHost": {
"type": "text",
"label": "External MQTT Broker Host",
"help": "Hostname or IP of the external MQTT broker (e.g. 192.168.1.100 or mqtt://192.168.1.100:1883)",
"hidden": "data.mqttMode !== 'client'",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"mqttUsername": {
"type": "text",
"label": "MQTT Username",
"help": "Optional: Username for the external MQTT broker",
"hidden": "data.mqttMode !== 'client'",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"mqttPassword": {
"type": "password",
"label": "MQTT Password",
"help": "Optional: Password for the external MQTT broker",
"hidden": "data.mqttMode !== 'client'",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4
},
"mqttTopicPrefix": {
"type": "text",
"label": "MQTT Topic Prefix",
"help": "The topic prefix used by Frigate (default: frigate)",
"hidden": "data.mqttMode !== 'client'",
"placeholder": "frigate",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"_headerHistory": {
"type": "header",
"text": "Event History",
"size": 4,
"hidden": "!!data.dockerFrigate?.enabled",
"newLine": true
},
"webnum": {
"type": "number",
"label": "Number of last Events History frigate.0.events.history",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
}
}
},
"_notification": {
"type": "panel",
"label": "Notification Settings",
"items": {
"notificationActive": {
"type": "checkbox",
"label": "Enable Notifications",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationInstances": {
"type": "text",
"label": "Instances to notify",
"help": "Comma separated",
"hidden": "!data.notificationActive",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationUsers": {
"type": "text",
"label": "Optional: Users to notify",
"hidden": "!data.notificationActive || !data.notificationInstances",
"help": "Comma separated",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventSnapshot": {
"type": "checkbox",
"label": "Send snapshot from event end",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventSnapshotStart": {
"type": "checkbox",
"label": "Send snapshot from event start",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventSnapshotUpdateOnce": {
"type": "checkbox",
"label": "If no start snapshot send then send one update snapshot instead",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventSnapshotUpdate": {
"type": "checkbox",
"label": "Send snapshot from event update",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventClip": {
"type": "checkbox",
"label": "Send Clip from event end",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventClipLink": {
"type": "checkbox",
"label": "Send only Clip Url from event end",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationEventClipWaitTime": {
"type": "number",
"label": "Wait time after Events end for Clip creation in seconds",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
},
"notificationMinScore": {
"type": "number",
"label": "Minimum Event Score 0.1-1.0 to notify. 0 = Disabled.",
"help": "Minimum Event Score 0.1-1.0 to notify. 0 = Disabled. Camera specific: frigate.0.remote.notificationMinScore",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"placeholder": "0.5",
"newLine": true
},
"notificationTextTemplate": {
"type": "text",
"label": "Notification Text Template",
"help": "Camera specific: frigate.0.remote.notificationTextTemplate",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"placeholder": "{{source}} {{type}} detected {{status}} {{score}} {{state}}",
"newLine": true
},
"notificationExcludeList": {
"type": "text",
"label": "Exclude cameras from notification",
"help": "Comma separated",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"placeholder": "camera1,camera2",
"newLine": true
},
"notificationExcludeZoneList": {
"type": "text",
"label": "Exclude zones from notification",
"help": "Comma separated",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"placeholder": "zone1,zone2",
"newLine": true
},
"notificationExcludeEmptyZoneList": {
"type": "text",
"label": "Don't send notification when zone list of the event is empty for this cameras",
"help": "Comma separated",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"placeholder": "camera1,camera2",
"newLine": true
},
"notificationCamera": {
"type": "checkbox",
"label": "Send detailed object snapshot",
"hidden": "!data.notificationActive || !data.notificationInstances",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"newLine": true
}
}
},
"_dockerFrigate": {
"type": "panel",
"label": "Frigate Docker",
"hidden": "!data.dockerFrigate?.enabled",
"items": {
"dockerFrigate.bind": {
"newLine": true,
"type": "ip",
"label": "Start container on IP",
"xs": 12,
"sm": 12,
"md": 8,
"lg": 8,
"xl": 8
},
"dockerFrigate.port": {
"type": "port",
"label": "Port",
"help": "The port on which the container will be reachable on localhost",
"default": 5000,
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.stopIfInstanceStopped": {
"newLine": true,
"type": "checkbox",
"label": "Stop container when instance stops",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 6,
"xl": 6
},
"dockerFrigate.autoImageUpdate": {
"type": "checkbox",
"label": "Auto-update Docker image",
"help": "If enabled, the latest Docker image will be pulled when the adapter starts.",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 6,
"xl": 6
},
"dockerFrigate.shmSize": {
"newLine": true,
"type": "number",
"label": "Temp directory size",
"help": "MB",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4
},
"dockerFrigate.location": {
"newLine": true,
"type": "text",
"validator": "data.dockerFrigate?.location?.endsWith('/')",
"validatorErrorText": "Frigate directory location must end with a slash (/) and must not be empty",
"label": "Frigate directory location",
"help": "As frigate saves a large amount of data, it is recommended to use a separate directory or disk for it.",
"xs": 12,
"sm": 12,
"md": 12,
"lg": 12,
"xl": 12
}
}
},
"_dockerFrigateSettings": {
"type": "panel",
"label": "Frigate Settings",
"hidden": "!data.dockerFrigate?.enabled",
"items": {
"dockerFrigate.configType": {
"type": "select",
"label": "Frigate configuration type",
"options": [
{
"value": "yaml",
"label": "YAML configuration file"
},
{
"value": "ui",
"label": "Configure via UI"
}
],
"default": "yaml",
"help": "Choose how to configure Frigate. The YAML configuration file option allows you to provide a custom configuration file, while the UI option provides a user-friendly interface for configuring Frigate without needing to edit YAML files directly.",
"xs": 12,
"sm": 12,
"md": 12,
"lg": 6,
"xl": 4
},
"dockerFrigate.yaml": {
"hidden": "data.dockerFrigate.configType !== 'yaml'",
"type": "yamlEditor",
"label": "Frigate YAML configuration",
"doNotApplyWithError": true,
"xs": 12,
"sm": 12,
"md": 12,
"lg": 12,
"xl": 12
},
"dockerFrigate.detectors": {
"hidden": "data.dockerFrigate.configType !== 'ui'",
"newLine": true,
"type": "select",
"label": "Detectors",
"options": [
{
"value": "auto",
"label": "Auto-detect (recommended)"
},
{
"value": "cpu",
"label": "CPU"
},
{
"value": "coral",
"label": "Google Coral"
}
],
"help": "The type of detectors to use. CPU is the default and works without additional hardware, but may have higher CPU usage. Google Coral is an optional hardware accelerator that can significantly reduce CPU usage if supported.",
"xs": 12,
"sm": 12,
"md": 12,
"lg": 6,
"xl": 4
},
"dockerFrigate.detectorsCoralType": {
"newLine": true,
"type": "select",
"label": "Coral Type",
"options": [
{
"value": "usb",
"label": "USB"
},
{
"value": "pci",
"label": "PCIe"
}
],
"help": "The type of Google Coral accelerator to use. USB is the most common and compatible option, while PCIe may offer better performance but requires a compatible motherboard and additional setup.",
"hidden": "data.dockerFrigate.configType !== 'ui' || data.dockerFrigate.detectors !== 'coral'",
"xs": 12,
"sm": 12,
"md": 12,
"lg": 6,
"xl": 4
},
"dockerFrigate.face_recognition.enabled": {
"hidden": "data.dockerFrigate.configType !== 'ui'",
"newLine": true,
"type": "checkbox",
"label": "Enable face recognition",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.face_recognition.model_size": {
"type": "select",
"label": "Face recognition model size",
"options": [
{
"value": "small",
"label": "Small (faster, less accurate)"
},
{
"value": "medium",
"label": "Medium (balanced speed and accuracy)"
},
{
"value": "large",
"label": "Large (slower, more accurate)"
}
],
"tooltip": "The size of the face recognition model to use. Small is faster but less accurate, while large is slower but more accurate. Medium is a balanced option that may work well for most users.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.face_recognition?.enabled",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.face_recognition.min_area": {
"type": "number",
"label": "Minimum area for face recognition",
"tooltip": "The minimum area (in pixels) of a detected object for face recognition to be applied. Setting this can help reduce false positives by ignoring small objects that are unlikely to be faces.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.face_recognition?.enabled",
"min": 50,
"unit": "px",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.lpr.enabled": {
"hidden": "data.dockerFrigate.configType !== 'ui'",
"newLine": true,
"type": "checkbox",
"label": "Enable license plate recognition",
"tooltip": "Enable Frigate's built-in license plate recognition (LPR). Requires Frigate >= 0.15. Cameras must track 'car' to detect plates.",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.lpr.device": {
"type": "select",
"label": "LPR device",
"options": [
{
"value": "CPU",
"label": "CPU"
},
{
"value": "GPU",
"label": "GPU"
}
],
"tooltip": "Run the LPR model on CPU or GPU. GPU is faster but requires a supported GPU configured for Frigate.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.lpr?.enabled",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.lpr.model_size": {
"type": "select",
"label": "LPR model size",
"options": [
{
"value": "small",
"label": "Small (default, less RAM)"
},
{
"value": "large",
"label": "Large (more accurate, more RAM)"
}
],
"tooltip": "Small is the default and fits most setups. Large is more accurate but uses significantly more RAM (~3 GB).",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.lpr?.enabled",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.record.enabled": {
"hidden": "data.dockerFrigate.configType !== 'ui'",
"newLine": true,
"type": "checkbox",
"label": "Enable recording",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.record.pre_capture": {
"type": "number",
"label": "Pre-capture recording time",
"tooltip": "The amount of time (in seconds) to include in the recording before the event is triggered. This can help capture important context leading up to the event.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.record?.enabled",
"unit": "sec",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.record.post_capture": {
"type": "number",
"label": "Post-capture recording time",
"tooltip": "The amount of time (in seconds) to include in the recording after the event is triggered. This can help capture important context following the event.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.record?.enabled",
"unit": "sec",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.record.max_clip_length": {
"type": "number",
"label": "Maximum clip length",
"tooltip": "The maximum length of recorded clips in seconds. Setting this can help manage storage usage by limiting the duration of recorded events.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.record?.enabled",
"unit": "sec",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.record.retain_days": {
"type": "number",
"label": "Retain recordings",
"tooltip": "The number of days to retain recorded clips. Setting this can help manage storage usage by automatically deleting older recordings.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.record?.enabled",
"unit": "days",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.detect.enabled": {
"hidden": "data.dockerFrigate.configType !== 'ui'",
"newLine": true,
"type": "checkbox",
"label": "Enable object detection",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.detect.width": {
"type": "number",
"label": "Detection width",
"tooltip": "The width (in pixels) to which the input frames will be resized for object detection. Setting this can help improve performance by reducing the resolution of the input frames, but may also reduce detection accuracy if set too low.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.detect?.enabled",
"unit": "px",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.detect.height": {
"type": "number",
"label": "Detection height",
"tooltip": "The height (in pixels) to which the input frames will be resized for object detection. Setting this can help improve performance by reducing the resolution of the input frames, but may also reduce detection accuracy if set too low.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.detect?.enabled",
"unit": "px",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.objects.min_score": {
"type": "slider",
"min": 0,
"max": 100,
"label": "Person detection minimal score",
"help": "0% - 100% (0 = Disabled, 100 - absolute sure)",
"tooltip": "The minimal score to start the object detection.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.detect?.enabled",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.objects.threshold": {
"type": "slider",
"min": 0,
"max": 100,
"label": "Person Detection threshold",
"help": "0% - 100% (0 = Disabled, 100 - absolute sure)",
"tooltip": "The confidence threshold for object detection. Setting this can help reduce false positives by ignoring detections with low confidence scores.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.detect?.enabled || !data.dockerFrigate.objects?.min_score",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"dockerFrigate.detect.fps": {
"type": "number",
"label": "Detection FPS",
"tooltip": "The target frames per second (FPS) for object detection. Setting this can help manage performance by controlling the frequency of detection, but may also result in missed detections if set too low.",
"hidden": "data.dockerFrigate.configType !== 'ui' || !data.dockerFrigate.detect?.enabled",
"xs": 12,
"sm": 12,
"md": 4,
"lg": 4,
"xl": 4
},
"_showConfig": {
"newLine": true,
"hidden": "data.dockerFrigate.configType !== 'ui'",
"type": "sendTo",
"command": "readConfig",
"label": "Show current Frigate configuration",
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4,
"variant": "outlined",
"jsonData": "${JSON.stringify(data)}"
},
"_recreateContainer": {
"newLine": true,
"type": "sendTo",
"command": "recreateContainer",
"label": "Delete and re-create Frigate container",
"variant": "contained",
"color": "secondary",
"showProcess": true,
"useNative": false,
"confirm": {
"title": "Delete and re-create Frigate container",
"text": "The Frigate Docker container will be deleted and the instance will restart to create a fresh container. Recordings and configuration on disk are kept. Continue?",
"ok": "Delete and re-create",
"cancel": "Cancel",
"type": "warning"
},
"xs": 12,
"sm": 12,
"md": 6,
"lg": 4,
"xl": 4
},
"_header1": {
"type": "header",
"text": "Cameras Configuration",
"size": 2,
"xs": 12,
"sm": 12,
"md": 12,
"lg": 12,
"xl": 12,
"newLine": true,
"hidden": "data.dockerFrigate.configType !== 'ui'"
},
"dockerFrigate.cameras": {
"hidden": "data.dockerFrigate.configType !== 'ui'",
"type": "table",
"label": "Cameras configuration",
"xs": 12,
"sm": 12,
"md": 12,
"lg": 12,
"xl": 12,
"compact": true,
"useCardFor": ["xs", "sm", "md", "lg", "xl"],
"titleAttribute": "name",
"items": [
{
"attr": "enabled",
"title": "Enabled",
"type": "checkbox",
"default": true
},
{
"attr": "name",
"title": "Name",
"type": "text",
"tooltip": "Unique camera name without spaces",
"validator": "data.name?.length && !data.name.includes(' ')",
"validatorErrorText": "Camera name must not be empty and must not contain spaces"
},
{
"attr": "inputs_path",
"title": "FFMPEG Camera Input Path",
"validator": "data.name?.trim()?.length",
"tooltip": "The input path for the camera stream (e.g., RTSP URL)",
"validatorErrorText": "Camera input path must not be empty",
"type": "text"
},
{
"attr": "ffmpeg_hwaccel_args",
"title": "FFMPEG hardware acceleration arguments",
"type": "text",
"tooltip": "Additional FFMPEG arguments for the input stream (optional)"
},
{
"attr": "use_go2rtc",
"title": "Restream via go2rtc",
"type": "checkbox",
"default": false,
"tooltip": "Read the camera stream only once and let Frigate (and other clients) consume it from go2rtc at rtsp://127.0.0.1:8554/<name>"
},
{
"attr": "_text_go2rtc",
"container": "text",
"label": "go2rtc Stream URL",
"copyToClipboard": true,
"alsoDependsOn": ["use_go2rtc"],
"type": "textSendTo",
"command": "showLink",
"hidden": "!data.use_go2rtc",
"jsonData": "{\"href\": \"${_href}\", \"name\": \"${data.name}\"}"
},
{
"attr": "inputs_roles_detect",
"title": "Object Detection",
"type": "checkbox",
"hidden": "!globalData.dockerFrigate?.detect?.enabled",
"defaultFunc": "!!globalData.dockerFrigate?.detect?.enabled"
},
{
"attr": "detect_width",
"title": "Detection Width",
"type": "number",
"hidden": "!data.inputs_roles_detect || !globalData.dockerFrigate?.detect?.enabled"
},
{
"attr": "detect_height",
"title": "Detection Height",
"type": "number",
"hidden": "!data.inputs_roles_detect || !globalData.dockerFrigate?.detect?.enabled"
},
{
"attr": "detect_fps",
"title": "Detection FPS",
"type": "number",
"hidden": "!data.inputs_roles_detect || !globalData.dockerFrigate?.detect?.enabled"
},
{
"attr": "objects_min_score",
"title": "Min Score",
"type": "slider",
"unit": "%",
"min": 0,
"max": 100,
"tooltip": "Minimum confidence score (0-100%) to start object detection. Leave empty to use global setting.",
"hidden": "!data.inputs_roles_detect || !globalData.dockerFrigate?.detect?.enabled"
},
{
"attr": "objects_threshold",
"title": "Threshold",
"unit": "%",
"type": "slider",
"min": 0,
"max": 100,
"validator": "!data.objects_threshold || !data.objects_min_score || data.objects_threshold >= data.objects_min_score",
"validatorErrorText": "Threshold must be greater than or equal to Min Score",
"tooltip": "Confidence threshold (0-100%) for confirmed detection. Must be >= Min Score. Leave empty to use global setting.",
"hidden": "!data.inputs_roles_detect || !globalData.dockerFrigate?.detect?.enabled"
},
{
"attr": "objects_track",
"title": "Track Objects",
"type": "select",
"multiple": true,
"options": [
{
"label": "People & Vehicles",
"items": [
{ "value": "person", "label": "Person" },
{ "value": "bicycle", "label": "Bicycle" },
{ "value": "car", "label": "Car" },
{ "value": "motorcycle", "label": "Motorcycle" },
{ "value": "airplane", "label": "Airplane" },
{ "value": "bus", "label": "Bus" },
{ "value": "train", "label": "Train" },
{ "value": "boat", "label": "Boat" }
]
},
{
"label": "Traffic & Street",
"items": [
{ "value": "traffic light", "label": "Traffic light" },
{ "value": "fire hydrant", "label": "Fire hydrant" },
{ "value": "street sign", "label": "Street sign" },
{ "value": "stop sign", "label": "Stop sign" },
{ "value": "parking meter", "label": "Parking meter" },
{ "value": "bench", "label": "Bench" }
]
},
{
"label": "Animals",
"items": [
{ "value": "bird", "label": "Bird" },
{ "value": "cat", "label": "Cat" },
{ "value": "dog", "label": "Dog" },
{ "value": "horse", "label": "Horse" },
{ "value": "sheep", "label": "Sheep" },
{ "value": "cow", "label": "Cow" },
{ "value": "elephant", "label": "Elephant" },
{ "value": "bear", "label": "Bear" },
{ "value": "zebra", "label": "Zebra" },
{ "value": "giraffe", "label": "Giraffe" }
]
},
{
"label": "Accessories",
"items": [
{ "value": "hat", "label": "Hat" },
{ "value": "backpack", "label": "Backpack" },
{ "value": "umbrella", "label": "Umbrella" },
{ "value": "shoe", "label": "Shoe" },
{ "value": "eye glasses", "label": "Eye glasses" },
{ "value": "handbag", "label": "Handbag" },
{ "value": "tie", "label": "Tie" },
{ "value": "suitcase", "label": "Suitcase" }
]
},
{
"label": "Sports",
"items": [
{ "value": "frisbee", "label": "Frisbee" },
{ "value": "skis", "label": "Skis" },
{ "value": "snowboard", "label": "Snowboard" },
{ "value": "sports ball", "label": "Sports ball" },
{ "value": "kite", "label": "Kite" },
{ "value": "baseball bat", "label": "Baseball bat" },
{ "value": "baseball glove", "label": "Baseball glove" },
{ "value": "skateboard", "label": "Skateboard" },
{ "value": "surfboard", "label": "Surfboard" },
{ "value": "tennis racket", "label": "Tennis racket" }
]
},
{
"label": "Kitchen & Food",
"items": [
{ "value": "bottle", "label": "Bottle" },
{ "value": "plate", "label": "Plate" },
{ "value": "wine glass", "label": "Wine glass" },
{ "value": "cup", "label": "Cup" },
{ "value": "fork", "label": "Fork" },
{ "value": "knife", "label": "Knife" },
{ "value": "spoon", "label": "Spoon" },
{ "value": "bowl", "label": "Bowl" },
{ "value": "banana", "label": "Banana" },
{ "value": "apple", "label": "Apple" },
{ "value": "sandwich", "label": "Sandwich" },
{ "value": "orange", "label": "Orange" },
{ "value": "broccoli", "label": "Broccoli" },
{ "value": "carrot", "label": "Carrot" },
{ "value": "hot dog", "label": "Hot dog" },
{ "value": "pizza", "label": "Pizza" },
{ "value": "donut", "label": "Donut" },
{ "value": "cake", "label": "Cake" }
]
},
{
"label": "Furniture & Household",
"items": [
{ "value": "chair", "label": "Chair" },
{ "value": "couch", "label": "Couch" },
{ "value": "potted plant", "label": "Potted plant" },
{ "value": "bed", "label": "Bed" },
{ "value": "mirror", "label": "Mirror" },
{ "value": "dining table", "label": "Dining table" },
{ "value": "window", "label": "Window" },
{ "value": "desk", "label": "Desk" },
{ "value": "toilet", "label": "Toilet" },
{ "value": "door", "label": "Door" }
]
},
{
"label": "Electronics",
"items": [
{ "value": "tv", "label": "TV" },
{ "value": "laptop", "label": "Laptop" },
{ "value": "mouse", "label": "Mouse" },
{ "value": "remote", "label": "Remote" },
{ "value": "keyboard", "label": "Keyboard" },
{ "value": "cell phone", "label": "Cell phone" },
{ "value": "microwave", "label": "Microwave" },
{ "value": "oven", "label": "Oven" },
{ "value": "toaster", "label": "Toaster" },
{ "value": "sink", "label": "Sink" },
{ "value": "refrigerator", "label": "Refrigerator" },
{ "value": "blender", "label": "Blender" }
]
},
{
"label": "Other",
"items": [
{ "value": "book", "label": "Book" },
{ "value": "clock", "label": "Clock" },
{ "value": "vase", "label": "Vase" },
{ "value": "scissors", "label": "Scissors" },
{ "value": "teddy bear", "label": "Teddy bear" },
{ "value": "hair drier", "label": "Hair