Improve engine identification and id generation.

This commit is contained in:
Dermot Duffy
2023-10-08 14:53:05 -07:00
parent fb5fbe4ce1
commit 7a33f75889
12 changed files with 222 additions and 142 deletions
+5
View File
@@ -96,6 +96,11 @@ export class CameraManagerEngineFactory {
// Frigate technically does not need an entity, if the camera name is
// manually set the camera is assumed to be Frigate.
engine = Engine.Frigate;
} else if (
cameraConfig.webrtc_card?.url ||
(cameraConfig.go2rtc?.url && cameraConfig.go2rtc?.stream)
) {
engine = Engine.Generic;
}
}
+5 -2
View File
@@ -31,7 +31,7 @@ import {
RecordingSegmentsQuery,
RecordingSegmentsQueryResultsMap,
} from '../types';
import { getDefaultGo2RTCEndpoint } from '../utils.js';
import { getCameraEntityFromConfig, getDefaultGo2RTCEndpoint } from '../utils.js';
export class GenericCameraManagerEngine implements CameraManagerEngine {
public getEngineType(): Engine {
@@ -159,6 +159,7 @@ export class GenericCameraManagerEngine implements CameraManagerEngine {
hass: HomeAssistant,
cameraConfig: CameraConfig,
): CameraManagerCameraMetadata {
const cameraEntity = getCameraEntityFromConfig(cameraConfig);
return {
title:
cameraConfig.title ??
@@ -166,7 +167,9 @@ export class GenericCameraManagerEngine implements CameraManagerEngine {
getEntityTitle(hass, cameraConfig.webrtc_card?.entity) ??
cameraConfig.id ??
'',
icon: cameraConfig?.icon ?? getEntityIcon(hass, cameraConfig.camera_entity),
icon:
cameraConfig?.icon ??
(cameraEntity ? getEntityIcon(hass, cameraEntity, 'mdi:video') : 'mdi:video'),
};
}
+3
View File
@@ -259,6 +259,9 @@ export class CameraManager {
);
}
// Always ensure the actual ID used in the card is in the configuration itself.
result.initializedConfig.id = id;
this._store.addCamera(id, result.initializedConfig, result.engine);
});