homebridge-rabbitair
Version:
Homebridge plugin for RabbitAir air purifiers
142 lines (141 loc) • 3.39 kB
TypeScript
import { Logger } from 'homebridge';
export declare enum RabbitAirMode {
Auto = 0,
Pollen = 1,
Manual = 2
}
export declare enum RabbitAirSpeed {
SuperSilent = 0,
Silent = 1,
Low = 2,
Medium = 3,
High = 4,
Turbo = 5
}
export declare enum RabbitAirQuality {
Lowest = 0,
Low = 1,
Medium = 2,
High = 3,
Highest = 4
}
export declare enum RabbitAirSensitivity {
High = 0,
Medium = 1,
Low = 2
}
export interface RabbitAirState {
power?: boolean;
mode?: RabbitAirMode;
speed?: RabbitAirSpeed;
quality?: RabbitAirQuality;
sensitivity?: RabbitAirSensitivity;
ionizer?: boolean;
filterLife?: number;
filterCleaning?: boolean;
filterReplacement?: boolean;
error?: number;
rssi?: number;
}
export interface RabbitAirInfo {
name: string;
mac: string;
model?: string;
firmware?: string;
uptime?: number;
}
export interface RabbitAirConfig {
host: string;
token: string;
port?: number;
}
export interface RabbitAirStateResponse {
id: number;
cmd?: number;
data: {
model: number;
firmware: number[];
power: boolean;
mode: RabbitAirMode;
speed: RabbitAirSpeed;
quality: RabbitAirQuality;
sensitivity: RabbitAirSensitivity;
ionizer: boolean;
idle: number;
moodlight: number;
filter_cleaning: boolean;
filter_replacement: boolean;
filter_life: number;
light_sensor: boolean;
filter_timer: number;
all_light_off: number;
error: number;
tag_state: number;
tag_uid: number[];
filter_type: number;
pm_sensor: number[];
color: number[];
lsens_ctl: boolean;
filter_ctl: boolean;
buzzer: boolean;
gas: number;
lock: boolean;
open: boolean;
light_state: number;
timer_mode: number;
timer: number;
schedule: string;
tz: string | null;
s2: string | null;
rssi: number;
v: string;
};
error?: number;
}
export interface RabbitAirInfoResponse {
id: number;
cmd: number;
data: {
name: string;
mac: string;
model?: string;
fv?: string;
uptime?: number;
};
error?: number;
}
export declare class RabbitAirClient {
private socket;
private host;
private port;
private token;
private commandId;
private tsDiff;
private isConnected;
private logger;
private readonly TIMEOUT_MS;
private readonly MAX_RETRIES;
private connectionAttempts;
private readonly MAX_CONNECTION_ATTEMPTS;
constructor(config: RabbitAirConfig, logger: Logger);
private nextId;
private getClock;
private getTimestamp;
private encrypt;
private decrypt;
private sendCommand;
private fallbackUnencryptedCommand;
private testConnection;
private sendCommandWithRetry;
connect(): Promise<void>;
disconnect(): Promise<void>;
getState(): Promise<RabbitAirState>;
setState(state: Partial<RabbitAirState>): Promise<void>;
getInfo(): Promise<RabbitAirInfo>;
checkDeviceCapabilities(): Promise<{
supportsEncryption: boolean;
responsive: boolean;
}>;
maintainConnection(): Promise<void>;
shutdown(): Promise<void>;
}