Move some Frigate specific interfaces under the Frigate engine.
This commit is contained in:
@@ -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,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;
|
||||
}
|
||||
@@ -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
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user