homebridge-aplvibe
Version:
Homebridge plugin for SleepMe devices using APL as core logic engine
93 lines • 2.62 kB
TypeScript
import { PlatformConfig, Service } from 'homebridge';
export interface APLVibeConfig extends PlatformConfig {
apiToken: string;
unit: 'C' | 'F';
pollingInterval: number;
devices?: DeviceConfig[];
}
export interface DeviceConfig {
deviceId: string;
name: string;
schedules?: ScheduleConfig[];
}
export interface ScheduleConfig {
time: string;
temperature: number;
}
export interface SleepMeDevice {
id: string;
name: string;
model: string;
status: 'online' | 'offline';
}
export interface DeviceState {
device_id: string;
characteristic: string;
value: any;
timestamp: number;
}
export interface QueueRequest {
id: string;
priority: 'CRITICAL' | 'HIGH' | 'NORMAL' | 'LOW';
timestamp: number;
action: string;
device_id: string;
data?: any;
}
export interface RateLimitState {
count: number;
minute_start: number;
}
export interface APLResult {
success: boolean;
data?: any;
error?: string;
}
export interface APLEngine {
init(config: string): Promise<APLResult>;
getDevices(): Promise<APLResult>;
restoreAccessory(uuid: string): Promise<APLResult>;
getState(deviceId: string, characteristic: string): Promise<APLResult>;
setState(deviceId: string, characteristic: string, value: any): Promise<APLResult>;
queueRequest(request: QueueRequest): Promise<APLResult>;
processQueue(): Promise<APLResult>;
convertTemperature(value: number, unit: 'C' | 'F'): Promise<APLResult>;
validateTemperature(value: number, unit: 'C' | 'F'): Promise<APLResult>;
applySchedule(deviceId: string): Promise<APLResult>;
}
export interface APLVibeAccessory {
UUID: string;
displayName: string;
deviceId: string;
services: {
information: Service;
thermostat?: Service;
switch?: Service;
battery?: Service;
};
}
export declare enum Priority {
CRITICAL = 0,
HIGH = 1,
NORMAL = 2,
LOW = 3
}
export declare enum Characteristics {
CURRENT_TEMPERATURE = "CurrentTemperature",
TARGET_TEMPERATURE = "TargetTemperature",
HEATING_COOLING_STATE = "CurrentHeatingCoolingState",
TARGET_HEATING_COOLING_STATE = "TargetHeatingCoolingState",
TEMPERATURE_UNITS = "TemperatureDisplayUnits",
POWER_STATE = "On",
BATTERY_LEVEL = "BatteryLevel",
WATER_LEVEL = "WaterLevel"
}
export interface APLVibeHomebridgeApi {
hap: any;
registerPlatform: (name: string, constructor: any) => void;
user: {
configPath: () => string;
storagePath: () => string;
};
}
//# sourceMappingURL=types.d.ts.map