feat: Add support for Frigate reviews / detections [initial PR] (#2315)
- Add support for Frigate reviews / detections. - Add support for GenAI metadata. - Significant internal refactor to more flexible "UnifiedQuery" to allow mixing cameras with simple metadata and review metadata (e.g. a timeline view of a Frigate camera with reviews, and a Reolink camera with simple metadata). - Add support for folder media as camera media. There are a few more PRs to commit prior to this going live, but commiting this for now due to the scale of the change. BREAKING CHANGE: `media_type` and `events_type` are retired under `live`, `viewer` and `timeline` configuration sections, instead media type is associated (once) with the camera under `media`.
This commit is contained in:
+27
-10
@@ -109,6 +109,15 @@ export const CONF_CAMERAS_ARRAY_TRIGGERS_ENTITIES =
|
||||
`${CONF_CAMERAS}.#.triggers.entities` as const;
|
||||
export const CONF_CAMERAS_ARRAY_TRIGGERS_EVENTS =
|
||||
`${CONF_CAMERAS}.#.triggers.events` as const;
|
||||
export const CONF_CAMERAS_ARRAY_TRIGGERS_REVIEWS_SEVERITIES =
|
||||
`${CONF_CAMERAS}.#.triggers.reviews.severities` as const;
|
||||
export const CONF_CAMERAS_ARRAY_TRIGGERS_REVIEWS_DESCRIPTION =
|
||||
`${CONF_CAMERAS}.#.triggers.reviews.description` as const;
|
||||
export const CONF_CAMERAS_ARRAY_MEDIA_TYPE = `${CONF_CAMERAS}.#.media.type` as const;
|
||||
export const CONF_CAMERAS_ARRAY_MEDIA_EVENTS_TYPE =
|
||||
`${CONF_CAMERAS}.#.media.events_type` as const;
|
||||
export const CONF_CAMERAS_ARRAY_MEDIA_FOLDERS =
|
||||
`${CONF_CAMERAS}.#.media.folders` as const;
|
||||
|
||||
const CONF_CAMERAS_GLOBAL = 'cameras_global' as const;
|
||||
export const CONF_CAMERAS_GLOBAL_LIVE_PROVIDER =
|
||||
@@ -190,6 +199,10 @@ export const CONF_MEDIA_GALLERY_CONTROLS_THUMBNAILS_SHOW_FAVORITE_CONTROL =
|
||||
`${CONF_MEDIA_GALLERY}.controls.thumbnails.show_favorite_control` as const;
|
||||
export const CONF_MEDIA_GALLERY_CONTROLS_THUMBNAILS_SHOW_TIMELINE_CONTROL =
|
||||
`${CONF_MEDIA_GALLERY}.controls.thumbnails.show_timeline_control` as const;
|
||||
export const CONF_MEDIA_GALLERY_CONTROLS_THUMBNAILS_SHOW_REVIEW_CONTROL =
|
||||
`${CONF_MEDIA_GALLERY}.controls.thumbnails.show_review_control` as const;
|
||||
export const CONF_MEDIA_GALLERY_CONTROLS_THUMBNAILS_SHOW_INFO_CONTROL =
|
||||
`${CONF_MEDIA_GALLERY}.controls.thumbnails.show_info_control` as const;
|
||||
export const CONF_MEDIA_GALLERY_CONTROLS_THUMBNAILS_SIZE =
|
||||
`${CONF_MEDIA_GALLERY}.controls.thumbnails.size` as const;
|
||||
|
||||
@@ -230,12 +243,15 @@ export const CONF_MEDIA_VIEWER_CONTROLS_THUMBNAILS_SHOW_FAVORITE_CONTROL =
|
||||
`${CONF_MEDIA_VIEWER}.controls.thumbnails.show_favorite_control` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_THUMBNAILS_SHOW_TIMELINE_CONTROL =
|
||||
`${CONF_MEDIA_VIEWER}.controls.thumbnails.show_timeline_control` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_THUMBNAILS_SHOW_REVIEW_CONTROL =
|
||||
`${CONF_MEDIA_VIEWER}.controls.thumbnails.show_review_control` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_THUMBNAILS_SHOW_INFO_CONTROL =
|
||||
`${CONF_MEDIA_VIEWER}.controls.thumbnails.show_info_control` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_THUMBNAILS_SIZE =
|
||||
`${CONF_MEDIA_VIEWER}.controls.thumbnails.size` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_TIMELINE_CLUSTERING_THRESHOLD =
|
||||
`${CONF_MEDIA_VIEWER}.controls.timeline.clustering_threshold` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_TIMELINE_EVENTS_MEDIA_TYPE =
|
||||
`${CONF_MEDIA_VIEWER}.controls.timeline.events_media_type` as const;
|
||||
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_TIMELINE_FORMAT_24H =
|
||||
`${CONF_MEDIA_VIEWER}.controls.timeline.format.24h` as const;
|
||||
export const CONF_MEDIA_VIEWER_CONTROLS_TIMELINE_MODE =
|
||||
@@ -274,10 +290,7 @@ export const CONF_LIVE_CONTROLS_PTZ_ORIENTATION =
|
||||
export const CONF_LIVE_CONTROLS_PTZ_POSITION =
|
||||
`${CONF_LIVE}.controls.ptz.position` as const;
|
||||
export const CONF_LIVE_CONTROLS_WHEEL = `${CONF_LIVE}.controls.wheel` as const;
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_MEDIA_TYPE =
|
||||
`${CONF_LIVE}.controls.thumbnails.media_type` as const;
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_EVENTS_MEDIA_TYPE =
|
||||
`${CONF_LIVE}.controls.thumbnails.events_media_type` as const;
|
||||
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_MODE =
|
||||
`${CONF_LIVE}.controls.thumbnails.mode` as const;
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_SIZE =
|
||||
@@ -290,10 +303,12 @@ export const CONF_LIVE_CONTROLS_THUMBNAILS_SHOW_FAVORITE_CONTROL =
|
||||
`${CONF_LIVE}.controls.thumbnails.show_favorite_control` as const;
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_SHOW_TIMELINE_CONTROL =
|
||||
`${CONF_LIVE}.controls.thumbnails.show_timeline_control` as const;
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_SHOW_REVIEW_CONTROL =
|
||||
`${CONF_LIVE}.controls.thumbnails.show_review_control` as const;
|
||||
export const CONF_LIVE_CONTROLS_THUMBNAILS_SHOW_INFO_CONTROL =
|
||||
`${CONF_LIVE}.controls.thumbnails.show_info_control` as const;
|
||||
export const CONF_LIVE_CONTROLS_TIMELINE_CLUSTERING_THRESHOLD =
|
||||
`${CONF_LIVE}.controls.timeline.clustering_threshold` as const;
|
||||
export const CONF_LIVE_CONTROLS_TIMELINE_EVENTS_MEDIA_TYPE =
|
||||
`${CONF_LIVE}.controls.timeline.events_media_type` as const;
|
||||
export const CONF_LIVE_CONTROLS_TIMELINE_FORMAT_24H =
|
||||
`${CONF_LIVE}.controls.timeline.format.24h` as const;
|
||||
export const CONF_LIVE_CONTROLS_TIMELINE_MODE =
|
||||
@@ -341,8 +356,6 @@ const CONF_TIMELINE = 'timeline' as const;
|
||||
export const CONF_TIMELINE_WINDOW_SECONDS = `${CONF_TIMELINE}.window_seconds` as const;
|
||||
export const CONF_TIMELINE_CLUSTERING_THRESHOLD =
|
||||
`${CONF_TIMELINE}.clustering_threshold` as const;
|
||||
export const CONF_TIMELINE_EVENTS_MEDIA_TYPE =
|
||||
`${CONF_TIMELINE}.events_media_type` as const;
|
||||
export const CONF_TIMELINE_FORMAT_24H = `${CONF_TIMELINE}.format.24h` as const;
|
||||
export const CONF_TIMELINE_SHOW_RECORDINGS = `${CONF_TIMELINE}.show_recordings` as const;
|
||||
export const CONF_TIMELINE_STYLE = `${CONF_TIMELINE}.style` as const;
|
||||
@@ -358,6 +371,10 @@ export const CONF_TIMELINE_CONTROLS_THUMBNAILS_SHOW_FAVORITE_CONTROL =
|
||||
`${CONF_TIMELINE}.controls.thumbnails.show_favorite_control` as const;
|
||||
export const CONF_TIMELINE_CONTROLS_THUMBNAILS_SHOW_TIMELINE_CONTROL =
|
||||
`${CONF_TIMELINE}.controls.thumbnails.show_timeline_control` as const;
|
||||
export const CONF_TIMELINE_CONTROLS_THUMBNAILS_SHOW_REVIEW_CONTROL =
|
||||
`${CONF_TIMELINE}.controls.thumbnails.show_review_control` as const;
|
||||
export const CONF_TIMELINE_CONTROLS_THUMBNAILS_SHOW_INFO_CONTROL =
|
||||
`${CONF_TIMELINE}.controls.thumbnails.show_info_control` as const;
|
||||
|
||||
const CONF_MENU = 'menu' as const;
|
||||
export const CONF_MENU_ALIGNMENT = `${CONF_MENU}.alignment` as const;
|
||||
|
||||
Reference in New Issue
Block a user