@viguza/homebridge-ezviz
Version:
A short description about what your plugin does.
61 lines (60 loc) • 2.41 kB
TypeScript
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;
}