homebridge-mhi-wfrac
Version:
A homebridge plugin for Mitshubishi WF-RAC aircos (using the Smart M-Air app)
113 lines (112 loc) • 3.37 kB
TypeScript
import { Logging } from 'homebridge';
export declare class DeviceStatus {
static outdoorTempList: number[];
static indoorTempList: number[];
static OPERATION_MODES: {
0: 'auto';
1: 'cool';
2: 'heat';
3: 'fan';
4: 'dry';
};
static AIRFLOW: {
0: 'auto';
1: 'lowest';
2: 'low';
3: 'high';
4: 'highest';
};
static HORIZONTAL_POSITIONS: {
0: 'auto';
1: 'left-left';
2: 'left-center';
3: 'center-center';
4: 'center-right';
5: 'right-right';
6: 'left-right';
7: 'right-left';
};
static VERTICAL_POSITIONS: {
0: 'auto';
1: 'highest';
2: 'middle';
3: 'normal';
4: 'lowest';
};
airFlow: number;
coolHotJudge: boolean;
electric: number;
entrust: boolean;
errorCode: string;
indoorTemp: number | null;
isAutoHeating: boolean;
isSelfCleanOperation: boolean;
isSelfCleanReset: boolean;
isVacantProperty: number;
modelNo: number;
operation: boolean;
operationMode: number | null;
outdoorTemp: number | null;
presetTemp: number | null;
windDirectionLR: number;
windDirectionUD: number;
constructor();
static fromBase64(base64: string): DeviceStatus;
private static crc16ccitt;
toBase64(): string;
commandToByte(): number[];
static receiveToBytes(status: DeviceStatus): number[];
}
type RequestContents = Record<string, unknown>;
interface DeviceResponse {
command: string;
apiVer: string;
operatorId: string;
deviceId: string;
timestamp: number;
result: number;
contents: any;
}
interface DeviceInfoContents {
airconId: string;
macAddress: string;
apMode: number;
}
export declare class DeviceClient {
private static readonly MIN_REQUEST_GAP_MS;
private readonly ipAddress;
private readonly port;
private readonly operatorId;
private readonly deviceId;
private airconId;
private readonly log;
private readonly ignoreConnectionErrors;
status: DeviceStatus;
private commandQueue;
isCommandInProgress: boolean;
private nextRequestAfter;
private useHttps;
private readonly httpsAgent;
constructor(ipAddress: string, port: number, operatorId: string, deviceId: string, airconId: string, log: Logging, ignoreConnectionErrors?: boolean);
isConnectionError(error: Error): boolean;
private enqueue;
getDeviceStatus(): Promise<DeviceStatus>;
getDeviceInfo(): Promise<DeviceInfoContents>;
getAirconId(): string;
updateAccountInfo(timezone: string): Promise<number>;
deleteAccountInfo(): Promise<number>;
setAirflow(airFlow: number): Promise<DeviceStatus>;
setOperationMode(operationMode: number): Promise<DeviceStatus>;
setOperation(operation: boolean): Promise<DeviceStatus>;
setPresetTemp(presetTemp: number): Promise<DeviceStatus>;
setAwayMode(awayMode: boolean): Promise<DeviceStatus>;
setDeviceStatus(status: DeviceStatus): Promise<DeviceStatus>;
private sleep;
private waitForNextRequestSlot;
private sendRequest;
private getBaseUrl;
private getAxiosConfig;
private detectProtocol;
call(command: string, contents?: RequestContents | null, retries?: number): Promise<DeviceResponse>;
}
export {};