UNPKG

homebridge-tapo-camera

Version:

Homebridge plugin for TP-Link TAPO security cameras

248 lines (247 loc) 5.35 kB
import { EventEmitter } from "events"; export type VideoSource = { framerate: number; resolution: { width: number; height: number; }; }; export interface Bounds { $: { height: number; width: number; y: number; x: number; }; } export interface VideoSourceConfiguration { $: { token: string; }; name: string; useCount: number; sourceToken: string; bounds: Bounds; } export interface AudioSourceConfiguration { $: { token: string; }; name: string; useCount: number; sourceToken: string; } export interface Resolution { width: number; height: number; } export interface RateControl { frameRateLimit: number; encodingInterval: number; bitrateLimit: number; } export interface H264 { govLength: number; H264Profile: string; } export interface Address { type: string; IPv4Address: string; } export interface Multicast { address: Address; port: number; TTL: number; autoStart: boolean; } export interface VideoEncoderConfiguration { $: { token: string; }; name: string; useCount: number; encoding: string; resolution: Resolution; quality: number; rateControl: RateControl; H264: H264; multicast: Multicast; sessionTimeout: string; } export interface Address2 { type: string; IPv4Address: string; } export interface Multicast2 { address: Address2; port: number; TTL: number; autoStart: boolean; } export interface AudioEncoderConfiguration { $: { token: string; }; name: string; useCount: number; encoding: string; bitrate: number; sampleRate: number; multicast: Multicast2; sessionTimeout: string; } export interface SimpleItem { $: { Value: string | boolean; Name: string; }; } export interface Translate { $: { y: number; x: number; }; } export interface Scale { $: { y: number; x: number; }; } export interface Transformation { translate: Translate; scale: Scale; } export interface CellLayout { $: { Rows: number; Columns: number; }; transformation: Transformation; } export interface ElementItem { $: { Name: string; }; cellLayout: CellLayout; } export interface Parameters { simpleItem: SimpleItem[]; elementItem: ElementItem; } export interface AnalyticsModule { parameters: Parameters; } export interface AnalyticsEngineConfiguration { analyticsModule: AnalyticsModule[]; } export interface Rule { $: { Name: string; Type: string; }; parameters: any; } export interface RuleEngineConfiguration { rule: Rule[]; } export interface VideoAnalyticsConfiguration { $: { token: string; }; name: string; useCount: number; analyticsEngineConfiguration: AnalyticsEngineConfiguration; ruleEngineConfiguration: RuleEngineConfiguration; } export interface PanTilt { $: { space: string; y: number; x: number; }; } export interface DefaultPTZSpeed { panTilt: PanTilt; } export interface XRange { min: number; max: number; } export interface YRange { min: number; max: number; } export interface Range { URI: string; XRange: XRange; YRange: YRange; } export interface PanTiltLimits { range: Range; } export interface PTZConfiguration { $: { token: string; }; name: string; useCount: number; nodeToken: string; defaultAbsolutePantTiltPositionSpace: string; defaultRelativePanTiltTranslationSpace: string; defaultContinuousPanTiltVelocitySpace: string; defaultPTZSpeed: DefaultPTZSpeed; defaultPTZTimeout: string; panTiltLimits: PanTiltLimits; } export interface Profile { $: { fixed: boolean; token: string; }; name: string; videoSourceConfiguration: VideoSourceConfiguration; audioSourceConfiguration: AudioSourceConfiguration; videoEncoderConfiguration: VideoEncoderConfiguration; audioEncoderConfiguration: AudioEncoderConfiguration; videoAnalyticsConfiguration: VideoAnalyticsConfiguration; PTZConfiguration: PTZConfiguration; } export type DeviceInformation = { manufacturer: string; model: string; firmwareVersion: string; serialNumber: string; hardwareId: string; }; export type ConnectionCallback = (error?: Error) => void; export interface NotificationMessage { topic: { _: string; }; message: { message: { $: object; source: object; data: { simpleItem: SimpleItem; }; }; }; } export interface CamOptions { hostname: string; username?: string; password?: string; port?: number; path?: string; timeout?: number; preserveAddress?: boolean; } export interface Cam extends EventEmitter { connect(callback: ConnectionCallback): void; on(event: "event", listener: (message: NotificationMessage) => void): this; getDeviceInformation(callback: (error: Error, deviceInformation: DeviceInformation) => void): void; getProfiles(callback: (error: Error, profiles: Profile[]) => void): void; videoSources: VideoSource[]; }