UNPKG

@viguza/homebridge-ezviz

Version:

A short description about what your plugin does.

61 lines (60 loc) 2.41 kB
import type { API, Characteristic, DynamicPlatformPlugin, Logging, PlatformAccessory, Service } from 'homebridge'; import { EZVIZAPI } from './api/ezviz-api.js'; import { EZVIZConfig, CameraConfig } from './types/config.js'; import { Credentials } from './types/login.js'; import { ListDevicesResponse } from './types/devices.js'; import { DeviceData } from './types/data.js'; /** * EZVIZ Platform for Homebridge * Handles device discovery, authentication, and accessory management */ export declare class EZVIZPlatform implements DynamicPlatformPlugin { readonly log: Logging; readonly config: EZVIZConfig; readonly api: API; readonly Service: typeof Service; readonly Characteristic: typeof Characteristic; readonly accessories: Map<string, PlatformAccessory>; readonly discoveredCacheUUIDs: string[]; constructor(log: Logging, config: EZVIZConfig, api: API); /** * Called when Homebridge finishes launching * Handles authentication and device discovery */ didFinishLaunching(): Promise<void>; /** * Authenticates with the EZVIZ API * @param ezvizAPI - The EZVIZ API instance * @returns Promise resolving to credentials or undefined if authentication fails */ authenticate(ezvizAPI: EZVIZAPI): Promise<Credentials | undefined>; /** * Configures an accessory from cache * @param accessory - The accessory to configure */ configureAccessory(accessory: PlatformAccessory): void; /** * Discovers and manages EZVIZ devices * @param ezvizAPI - The EZVIZ API instance */ discoverDevices(ezvizAPI: EZVIZAPI): Promise<void>; /** * Creates the appropriate accessory based on device type * @param ezvizAPI - The EZVIZ API instance * @param accessory - The platform accessory * @param deviceType - The type of device */ private createAccessory; /** * Extracts device data from the API response * @param devicesResponse - The API response containing device information * @returns Array of processed device data */ extractDevicesData(devicesResponse: ListDevicesResponse): DeviceData[]; /** * Validates camera configuration * @param camera - The camera configuration to validate * @returns Error message if validation fails, empty string if valid */ cameraConfigErrors(camera: CameraConfig): string; }