homebridge-kasa-python
Version:
Plugin that uses Python-Kasa API to communicate with Kasa Devices.
64 lines (63 loc) • 2.52 kB
TypeScript
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;
}