Add editor support for go2rtc modes.
This commit is contained in:
@@ -115,7 +115,9 @@ export class FrigateCardGo2RTC extends LitElement {
|
|||||||
this._player.src = address;
|
this._player.src = address;
|
||||||
this._player.visibilityCheck = false;
|
this._player.visibilityCheck = false;
|
||||||
this._player.background = true;
|
this._player.background = true;
|
||||||
this._player.mode = 'webrtc';
|
if (this.cameraConfig?.go2rtc?.modes) {
|
||||||
|
this._player.mode = this.cameraConfig.go2rtc.modes.join(',');
|
||||||
|
}
|
||||||
|
|
||||||
this.requestUpdate();
|
this.requestUpdate();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export const CONF_CAMERAS_ARRAY_FRIGATE_LABEL =
|
|||||||
`${CONF_CAMERAS}.#.frigate.label` as const;
|
`${CONF_CAMERAS}.#.frigate.label` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_FRIGATE_URL = `${CONF_CAMERAS}.#.frigate.url` as const;
|
export const CONF_CAMERAS_ARRAY_FRIGATE_URL = `${CONF_CAMERAS}.#.frigate.url` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_FRIGATE_ZONE = `${CONF_CAMERAS}.#.frigate.zone` as const;
|
export const CONF_CAMERAS_ARRAY_FRIGATE_ZONE = `${CONF_CAMERAS}.#.frigate.zone` as const;
|
||||||
|
export const CONF_CAMERAS_ARRAY_GO2RTC_MODES = `${CONF_CAMERAS}.#.go2rtc.modes` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_ID = `${CONF_CAMERAS}.#.id` as const;
|
export const CONF_CAMERAS_ARRAY_ID = `${CONF_CAMERAS}.#.id` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_TITLE = `${CONF_CAMERAS}.#.title` as const;
|
export const CONF_CAMERAS_ARRAY_TITLE = `${CONF_CAMERAS}.#.title` as const;
|
||||||
export const CONF_CAMERAS_ARRAY_ICON = `${CONF_CAMERAS}.#.icon` as const;
|
export const CONF_CAMERAS_ARRAY_ICON = `${CONF_CAMERAS}.#.icon` as const;
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ import {
|
|||||||
CONF_VIEW_UPDATE_SECONDS,
|
CONF_VIEW_UPDATE_SECONDS,
|
||||||
CONF_PERFORMANCE_FEATURES_MEDIA_CHUNK_SIZE,
|
CONF_PERFORMANCE_FEATURES_MEDIA_CHUNK_SIZE,
|
||||||
MEDIA_CHUNK_SIZE_MAX,
|
MEDIA_CHUNK_SIZE_MAX,
|
||||||
|
CONF_CAMERAS_ARRAY_GO2RTC_MODES,
|
||||||
} from './const.js';
|
} from './const.js';
|
||||||
import { localize } from './localize/localize.js';
|
import { localize } from './localize/localize.js';
|
||||||
import frigate_card_editor_style from './scss/editor.scss';
|
import frigate_card_editor_style from './scss/editor.scss';
|
||||||
@@ -156,6 +157,7 @@ const MENU_BUTTONS = 'buttons';
|
|||||||
const MENU_CAMERAS = 'cameras';
|
const MENU_CAMERAS = 'cameras';
|
||||||
const MENU_CAMERAS_DEPENDENCIES = 'cameras.dependencies';
|
const MENU_CAMERAS_DEPENDENCIES = 'cameras.dependencies';
|
||||||
const MENU_CAMERAS_FRIGATE = 'cameras.frigate';
|
const MENU_CAMERAS_FRIGATE = 'cameras.frigate';
|
||||||
|
const MENU_CAMERAS_GO2RTC = 'cameras.go2rtc';
|
||||||
const MENU_CAMERAS_TRIGGERS = 'cameras.triggers';
|
const MENU_CAMERAS_TRIGGERS = 'cameras.triggers';
|
||||||
const MENU_CAMERAS_WEBRTC = 'cameras.webrtc';
|
const MENU_CAMERAS_WEBRTC = 'cameras.webrtc';
|
||||||
const MENU_IMAGE_LAYOUT = 'image.layout';
|
const MENU_IMAGE_LAYOUT = 'image.layout';
|
||||||
@@ -491,6 +493,14 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor
|
|||||||
{ value: 'high', label: localize('config.performance.profiles.high') },
|
{ value: 'high', label: localize('config.performance.profiles.high') },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
protected _go2rtcModes: EditorSelectOption[] = [
|
||||||
|
{ value: '', label: '' },
|
||||||
|
{ value: 'mse', label: localize('config.cameras.go2rtc.modes.mse') },
|
||||||
|
{ value: 'webrtc', label: localize('config.cameras.go2rtc.modes.webrtc') },
|
||||||
|
{ value: 'mp4', label: localize('config.cameras.go2rtc.modes.mp4') },
|
||||||
|
{ value: 'mjpeg', label: localize('config.cameras.go2rtc.modes.mjpeg') },
|
||||||
|
];
|
||||||
|
|
||||||
public setConfig(config: RawFrigateCardConfig): void {
|
public setConfig(config: RawFrigateCardConfig): void {
|
||||||
// Note: This does not use Zod to parse the configuration, so it may be
|
// Note: This does not use Zod to parse the configuration, so it may be
|
||||||
// partially or completely invalid. It's more useful to have a partially
|
// partially or completely invalid. It's more useful to have a partially
|
||||||
@@ -1404,6 +1414,23 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor
|
|||||||
},
|
},
|
||||||
)}`,
|
)}`,
|
||||||
)}
|
)}
|
||||||
|
${this._putInSubmenu(
|
||||||
|
MENU_CAMERAS_GO2RTC,
|
||||||
|
cameraIndex,
|
||||||
|
'config.cameras.go2rtc.editor_label',
|
||||||
|
{ name: 'mdi:alpha-g-circle' },
|
||||||
|
html`${this._renderOptionSelector(
|
||||||
|
getArrayConfigPath(CONF_CAMERAS_ARRAY_GO2RTC_MODES, cameraIndex),
|
||||||
|
this._go2rtcModes,
|
||||||
|
{
|
||||||
|
multiple: true,
|
||||||
|
label: localize('config.cameras.go2rtc.modes.editor_label')
|
||||||
|
}
|
||||||
|
)}
|
||||||
|
${this._renderStringInput(
|
||||||
|
getArrayConfigPath(CONF_CAMERAS_ARRAY_WEBRTC_CARD_URL, cameraIndex),
|
||||||
|
)}`,
|
||||||
|
)}
|
||||||
${this._putInSubmenu(
|
${this._putInSubmenu(
|
||||||
MENU_CAMERAS_WEBRTC,
|
MENU_CAMERAS_WEBRTC,
|
||||||
cameraIndex,
|
cameraIndex,
|
||||||
|
|||||||
@@ -23,6 +23,16 @@
|
|||||||
"url": "Frigate server URL",
|
"url": "Frigate server URL",
|
||||||
"zone": "Frigate zone"
|
"zone": "Frigate zone"
|
||||||
},
|
},
|
||||||
|
"go2rtc": {
|
||||||
|
"editor_label": "go2rtc Options",
|
||||||
|
"modes": {
|
||||||
|
"editor_label": "go2rtc Modes",
|
||||||
|
"mse": "Media Source Extensions (MSE)",
|
||||||
|
"webrtc": "Web Real-Time Communication (WebRTC)",
|
||||||
|
"mp4": "MPEG-4 (MP4)",
|
||||||
|
"mjpeg": "Motion JPEG (MJPEG)"
|
||||||
|
}
|
||||||
|
},
|
||||||
"icon": "Icon for this camera (Autodetected from entity)",
|
"icon": "Icon for this camera (Autodetected from entity)",
|
||||||
"id": "Unique id for this camera in this card",
|
"id": "Unique id for this camera in this card",
|
||||||
"live_provider": "Live view provider for this camera",
|
"live_provider": "Live view provider for this camera",
|
||||||
|
|||||||
@@ -435,6 +435,12 @@ const cameraConfigSchema = z
|
|||||||
})
|
})
|
||||||
.default(cameraConfigDefault.frigate),
|
.default(cameraConfigDefault.frigate),
|
||||||
|
|
||||||
|
go2rtc: z
|
||||||
|
.object({
|
||||||
|
modes: z.enum(['webrtc', 'mse', 'mp4', 'mjpeg']).array(),
|
||||||
|
})
|
||||||
|
.optional(),
|
||||||
|
|
||||||
// Camera identifiers for WebRTC.
|
// Camera identifiers for WebRTC.
|
||||||
webrtc_card: webrtcCardCameraConfigSchema.optional(),
|
webrtc_card: webrtcCardCameraConfigSchema.optional(),
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user