homebridge-homeconnect
Version:
A Homebridge plugin that connects Home Connect appliances to Apple HomeKit
83 lines • 4 kB
TypeScript
import { Logger } from 'homebridge';
import { EventEmitter } from 'events';
import { HomeConnectAPI } from './api.js';
import { HomeAppliance } from './api-types.js';
import { OperationState, OptionValues, ProgramKey } from './api-value-types.js';
import { CommandKV, EventKey, EventKV, EventValue, KVKey, KVValue, OptionKey, OptionValue, ProgramDefinitionKV, ProgramKV, ProgramListKV, SettingKey, SettingKV, SettingValue, StatusKey, StatusKV, StatusValue } from './api-value.js';
import { Scope } from './api-auth-types.js';
interface DeviceExtraValues {
connected?: boolean;
}
type DeviceExtraKey = KVKey<DeviceExtraValues>;
type DeviceKey = DeviceExtraKey | OptionKey | StatusKey | SettingKey | EventKey;
type DeviceExtraValue<Key> = KVValue<DeviceExtraValues, Key>;
type DeviceValue<Key> = DeviceExtraValue<Key> | OptionValue<Key> | StatusValue<Key> | SettingValue<Key> | EventValue<Key>;
type Item<KeyU extends DeviceKey = DeviceKey> = {
[Key in KeyU]: {
key: Key;
value: DeviceValue<Key>;
unit?: string;
};
}[KeyU];
export type OperationStateKey = keyof typeof OperationState;
export declare class HomeConnectDevice extends EventEmitter {
readonly log: Logger;
readonly api: HomeConnectAPI;
readonly ha: HomeAppliance;
readonly items: {
[Key in DeviceKey]?: Item<Key>;
};
private stopEvents;
private setConnectedScheduled?;
private stopScheduled?;
private readAllActions?;
private readAllScheduled?;
private readPrograms?;
constructor(log: Logger, api: HomeConnectAPI, ha: HomeAppliance);
stop(): void;
describe<Key extends DeviceKey>(item: Item<Key>): string;
update<Key extends DeviceKey>(items: Item<Key>[]): void;
getItem<Key extends DeviceKey>(key: Key): DeviceValue<Key> | undefined;
getAppliance(): Promise<HomeAppliance>;
getStatus(): Promise<StatusKV[]>;
getSettings(): Promise<SettingKV[]>;
getSetting<Key extends SettingKey>(settingKey: Key): Promise<SettingKV<Key> | null>;
setSetting<Key extends SettingKey>(settingKey: Key, value: SettingValue<Key>): Promise<void>;
getAllPrograms(): Promise<ProgramListKV[]>;
getAvailablePrograms(): Promise<ProgramListKV[]>;
getAvailableProgram<Key extends ProgramKey>(programKey: Key): Promise<ProgramDefinitionKV<Key>>;
getSelectedProgram(): Promise<ProgramKV | null>;
setSelectedProgram(programKey: ProgramKey, options?: OptionValues): Promise<void>;
getActiveProgram(): Promise<ProgramKV | null>;
startProgram(programKey?: ProgramKey, options?: OptionValues): Promise<void>;
stopProgram(): Promise<void>;
getCommands(): Promise<CommandKV[]>;
pauseProgram(pause?: boolean): Promise<void>;
openDoor(fully?: boolean): Promise<void>;
setActiveProgramOption<Key extends OptionKey>(optionKey: Key, value: OptionValue<Key>): Promise<void>;
waitConnected(immediate?: boolean): Promise<void>;
waitOperationState(states: OperationStateKey[], milliseconds?: number): Promise<void>;
inferPowerState(): void;
setConnectedState(isConnected?: boolean): void;
onConnected(): void;
onDisconnected(): void;
readAll(): Promise<void>;
isOperationState(...states: OperationStateKey[]): boolean;
requireConnected(): void;
requireIdentify(): void;
requireMonitor(): void;
requireSettings(): void;
requireControl(): void;
requireRemoteControl(): void;
requireRemoteStart(): void;
hasScope(scope: Scope): boolean;
pollPrograms(enable?: boolean): void;
processEvents(): Promise<void>;
eventListener(event: EventKV): void;
on<Key extends DeviceKey>(key: Key, listener: (value: DeviceValue<Key>) => void): this;
off<Key extends DeviceKey>(key: Key, listener: (value: DeviceValue<Key>) => void): this;
onceWait<Key extends DeviceKey>(key: Key): Promise<DeviceValue<Key>>;
emit<Key extends DeviceKey>(key: Key, value: DeviceValue<Key>): boolean;
}
export {};
//# sourceMappingURL=homeconnect-device.d.ts.map