Move some Frigate specific interfaces under the Frigate engine.

This commit is contained in:
Dermot Duffy
2023-01-24 19:36:54 -08:00
parent e08cb95b16
commit 5385d4d5fd
9 changed files with 39 additions and 43 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ import endOfHour from 'date-fns/endOfHour';
import getUnixTime from 'date-fns/getUnixTime';
import startOfHour from 'date-fns/startOfHour';
import { CAMERA_BIRDSEYE } from '../../const';
import { CameraConfig, FrigateRecording, RecordingSegment } from '../../types';
import { CameraConfig, RecordingSegment } from '../../types';
import { MediaQueries, MediaQueriesResults } from '../../view';
import { ViewMedia, ViewMediaClassifier, ViewMediaFactory } from '../../view-media';
import { errorToConsole } from '../../utils/basic';
@@ -31,7 +31,7 @@ import {
RecordingQuery,
RecordingSegmentsQuery,
} from '../types';
import { RecordingSummary } from './schema';
import { FrigateRecording, RecordingSummary } from './types';
import { getEvents, getRecordingSegments, getRecordingsSummary, NativeFrigateEventQuery, NativeFrigateRecordingSegmentsQuery, retainEvent } from './requests';
const EVENT_REQUEST_CACHE_MAX_AGE_SECONDS = 60;
+2 -4
View File
@@ -2,12 +2,10 @@ import { HomeAssistant } from 'custom-card-helpers';
import { localize } from '../../localize/localize';
import {
FrigateCardError,
FrigateEvents,
frigateEventsSchema,
RecordingSegment,
} from '../../types';
import { homeAssistantWSRequest } from '../../utils/ha';
import { recordingSegmentsSchema, RecordingSummary, recordingSummarySchema, RetainResult, retainResultSchema } from './schema';
import { FrigateEvent, frigateEventsSchema, recordingSegmentsSchema, RecordingSummary, recordingSummarySchema, RetainResult, retainResultSchema } from './types';
/**
* Get the recordings summary. May throw.
@@ -115,7 +113,7 @@ export interface NativeFrigateEventQuery {
export const getEvents = async (
hass: HomeAssistant,
params?: NativeFrigateEventQuery,
): Promise<FrigateEvents> => {
): Promise<FrigateEvent[]> => {
return await homeAssistantWSRequest(
hass,
frigateEventsSchema,
@@ -1,5 +1,22 @@
import { z } from 'zod';
export const eventSchema = z.object({
camera: z.string(),
end_time: z.number().nullable(),
false_positive: z.boolean().nullable(),
has_clip: z.boolean(),
has_snapshot: z.boolean(),
id: z.string(),
label: z.string(),
start_time: z.number(),
top_score: z.number(),
zones: z.string().array(),
retain_indefinitely: z.boolean().optional(),
});
export const frigateEventsSchema = eventSchema.array();
export type FrigateEvent = z.infer<typeof eventSchema>;
const recordingSummaryHourSchema = z.object({
hour: z.preprocess((arg) => Number(arg), z.number().min(0).max(23)),
duration: z.number().min(0),
@@ -31,3 +48,11 @@ export const retainResultSchema = z.object({
message: z.string(),
});
export type RetainResult = z.infer<typeof retainResultSchema>;
export interface FrigateRecording {
// Frigate camera name (may not be unique)
camera: string;
start_time: number;
end_time: number;
events: number;
}
+2 -5
View File
@@ -1,11 +1,8 @@
import utcToZonedTime from 'date-fns-tz/utcToZonedTime';
import fromUnixTime from 'date-fns/fromUnixTime';
import {
ClipsOrSnapshots,
FrigateEvent,
FrigateRecording,
} from '../../types';
import { ClipsOrSnapshots } from '../../types';
import { formatDateAndTime, prettifyTitle } from '../../utils/basic';
import { FrigateEvent, FrigateRecording } from './types';
/**
* Given an event generate a title.
+3 -2
View File
@@ -1,4 +1,5 @@
import { FrigateEvents, FrigateRecording, RecordingSegment } from '../types';
import { RecordingSegment } from '../types';
import { FrigateEvent, FrigateRecording } from './frigate/types';
// ====
// Base
@@ -119,7 +120,7 @@ export interface RecordingSegmentsQueryResults extends QueryResults {
export interface FrigateEventQueryResults extends EventQueryResults {
engine: Engine.Frigate;
events: FrigateEvents;
events: FrigateEvent[];
}
export interface FrigateRecordingQueryResults extends RecordingQueryResults {