feat: Add new option to always error on entity unavailable (#1770)
This commit is contained in:
@@ -17,7 +17,8 @@ cameras_global:
|
|||||||
```
|
```
|
||||||
|
|
||||||
| Option | Default | Description |
|
| Option | Default | Description |
|
||||||
| --------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------ | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `always_error_if_entity_unavailable` | `false` | When `true` and when `camera_entity` is specified, attempting to live stream this camera will always error out if the entity state is `unavailable`, even if the `live_provider` does not actually need the `camera_entity`. |
|
||||||
| `camera_entity` | | The Home Assistant camera entity to use with the `frigate` live provider view. Also used to automatically detect the name of the underlying Frigate camera, and the title/icon of the camera. |
|
| `camera_entity` | | The Home Assistant camera entity to use with the `frigate` live provider view. Also used to automatically detect the name of the underlying Frigate camera, and the title/icon of the camera. |
|
||||||
| `capabilities` | | Allows selective disabling of camera capabilities. See below. |
|
| `capabilities` | | Allows selective disabling of camera capabilities. See below. |
|
||||||
| `cast` | | Configuration that controls how this camera is "casted" / sent to media players. See below. |
|
| `cast` | | Configuration that controls how this camera is "casted" / sent to media players. See below. |
|
||||||
|
|||||||
@@ -271,7 +271,12 @@ export class FrigateCardLiveProvider
|
|||||||
hidden: showImageDuringLoading,
|
hidden: showImageDuringLoading,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (provider === 'ha' || provider === 'image') {
|
if (
|
||||||
|
provider === 'ha' ||
|
||||||
|
provider === 'image' ||
|
||||||
|
(this.cameraConfig?.camera_entity &&
|
||||||
|
this.cameraConfig.always_error_if_entity_unavailable)
|
||||||
|
) {
|
||||||
if (!this.cameraConfig?.camera_entity) {
|
if (!this.cameraConfig?.camera_entity) {
|
||||||
dispatchLiveErrorEvent(this);
|
dispatchLiveErrorEvent(this);
|
||||||
return renderMessage({
|
return renderMessage({
|
||||||
|
|||||||
@@ -1359,6 +1359,7 @@ const cameraConfigDefault = {
|
|||||||
ssl_verification: 'auto' as const,
|
ssl_verification: 'auto' as const,
|
||||||
ssl_ciphers: 'auto' as const,
|
ssl_ciphers: 'auto' as const,
|
||||||
},
|
},
|
||||||
|
always_error_if_entity_unavailable: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const SSL_CIPHERS = ['default', 'insecure', 'intermediate', 'modern'] as const;
|
const SSL_CIPHERS = ['default', 'insecure', 'intermediate', 'modern'] as const;
|
||||||
@@ -1485,6 +1486,11 @@ export const cameraConfigSchema = z
|
|||||||
.optional(),
|
.optional(),
|
||||||
|
|
||||||
proxy: proxyConfigSchema.default(cameraConfigDefault.proxy),
|
proxy: proxyConfigSchema.default(cameraConfigDefault.proxy),
|
||||||
|
|
||||||
|
// See: https://github.com/dermotduffy/frigate-hass-card/issues/1650
|
||||||
|
always_error_if_entity_unavailable: z
|
||||||
|
.boolean()
|
||||||
|
.default(cameraConfigDefault.always_error_if_entity_unavailable),
|
||||||
})
|
})
|
||||||
.default(cameraConfigDefault);
|
.default(cameraConfigDefault);
|
||||||
export type CameraConfig = z.infer<typeof cameraConfigSchema>;
|
export type CameraConfig = z.infer<typeof cameraConfigSchema>;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ describe('config defaults', () => {
|
|||||||
expect(createConfig()).toEqual({
|
expect(createConfig()).toEqual({
|
||||||
cameras: [{}],
|
cameras: [{}],
|
||||||
cameras_global: {
|
cameras_global: {
|
||||||
|
always_error_if_entity_unavailable: false,
|
||||||
dependencies: {
|
dependencies: {
|
||||||
all_cameras: false,
|
all_cameras: false,
|
||||||
cameras: [],
|
cameras: [],
|
||||||
|
|||||||
Reference in New Issue
Block a user