UNPKG

homebridge-kasa-python

Version:

Plugin that uses Python-Kasa API to communicate with Kasa Devices.

64 lines (63 loc) 2.52 kB
import type { API, Characteristic, DynamicPlatformPlugin, Logging, PlatformAccessory, PlatformConfig, Service, WithUUID } from 'homebridge'; import { EventEmitter } from 'node:events'; import DeviceManager from './devices/deviceManager.js'; import { TaskQueue } from './taskQueue.js'; import type { KasaPythonConfig } from './config.js'; export type KasaPythonAccessoryContext = { deviceId?: string; lastSeen?: Date; offline?: boolean; }; export default class KasaPythonPlatform implements DynamicPlatformPlugin { readonly log: Logging; readonly api: API; readonly Characteristic: typeof Characteristic; readonly configuredAccessories: Map<string, PlatformAccessory<KasaPythonAccessoryContext>>; readonly offlineAccessories: Map<string, PlatformAccessory<KasaPythonAccessoryContext>>; readonly Service: typeof Service; readonly storagePath: string; readonly venvPythonExecutable: string; config: KasaPythonConfig; deviceManager: DeviceManager | undefined; isShuttingDown: boolean; periodicDeviceDiscovering: boolean; periodicDeviceDiscoveryEmitter: EventEmitter; port: number; taskQueue: TaskQueue; private readonly homekitDevicesById; private hideHomeKitMatter; private isUpgrade; private kasaProcess; private platformInitialization; constructor(log: Logging, config: PlatformConfig, api: API); private createHomeKitDevice; initializePlatform(): Promise<void>; private logInitializationDetails; private verifyEnvironment; private didFinishLaunching; private periodicDeviceDiscovery; private findDiscoveredDevice; private updateAccessoryDeviceStatus; private updateOrCreateHomeKitDevice; private updateAccessoryStatus; private handleOfflineAccessory; private checkPython; private startKasaApi; private discoverDevices; private stopKasaApi; lsc(serviceOrCharacteristic: Service | Characteristic | { UUID: string; }, characteristic?: Characteristic | { UUID: string; }): string; getServiceName(service: { UUID: string; }): string | undefined; getCharacteristicName(characteristic: WithUUID<{ name?: string | null; displayName?: string | null; }>): string | undefined; registerPlatformAccessory(platformAccessory: PlatformAccessory<KasaPythonAccessoryContext>): void; configureAccessory(platformAccessory: PlatformAccessory<KasaPythonAccessoryContext>): void; private foundDevice; }