feat(gateway): move to lumi-aqara
Also add gateway search and subdevices discovery. Closes #28, closes #27, closes #26, closes #17 and fixes #12
This commit is contained in:
1
typings/index.d.ts
vendored
Normal file
1
typings/index.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './lumi-aqara.d';
|
||||
129
typings/lumi-aqara.d.ts
vendored
Normal file
129
typings/lumi-aqara.d.ts
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
import { EventEmitter } from "events";
|
||||
|
||||
export module LumiAqara {
|
||||
interface Color {
|
||||
r:number;
|
||||
g:number;
|
||||
b:number;
|
||||
}
|
||||
export interface Gateway extends EventEmitter {
|
||||
ip: string;
|
||||
sid: string;
|
||||
ready: boolean;
|
||||
password: string;
|
||||
color: Color;
|
||||
intensity: number;
|
||||
/* Should be public */
|
||||
_key: string;
|
||||
|
||||
setPassword(password:string);
|
||||
setColor(color:Color);
|
||||
setIntensity(intensity:number);
|
||||
/* Should be public */
|
||||
_sendUnicast(message:string);
|
||||
}
|
||||
|
||||
/*************** Subdevices ***************/
|
||||
interface SubDeviceOptions {
|
||||
sid:string;
|
||||
type?:string;
|
||||
}
|
||||
export interface SubDevice extends EventEmitter {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getSid(): string;
|
||||
getType(): string;
|
||||
getBatteryVoltage(): number;
|
||||
getBatteryPercentage(): number;
|
||||
}
|
||||
export interface Cube extends SubDevice {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getType(): "cube";
|
||||
getStatus(): "rotate"|string;
|
||||
getRotateDegrees(): number|null;
|
||||
/**
|
||||
* @event Emitted when a device value updated.
|
||||
*/
|
||||
on(event: "update", listener: () => void): any;
|
||||
}
|
||||
export interface Leak extends SubDevice {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getType(): "leak";
|
||||
isLeaking(): boolean;
|
||||
/**
|
||||
* @event Emitted when a device value updated.
|
||||
*/
|
||||
on(event: "update", listener: () => void): any;
|
||||
}
|
||||
export interface Magnet extends SubDevice {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getType(): "magnet";
|
||||
isOpen(): boolean;
|
||||
/**
|
||||
* @event Emitted when a the door/window just opend.
|
||||
*/
|
||||
on(event: "open", listener: () => void): any;
|
||||
/**
|
||||
* @event Emitted when a the door/window just closed.
|
||||
*/
|
||||
on(event: "close", listener: () => void): any;
|
||||
}
|
||||
export interface Motion extends SubDevice {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getType(): "motion";
|
||||
hasMotion(): boolean;
|
||||
getLux(): number;
|
||||
getSecondsSinceMotion(): number;
|
||||
/**
|
||||
* @event Emitted when a motion has been detected.
|
||||
*/
|
||||
on(event: "motion", listener: () => void): any;
|
||||
/**
|
||||
* @event Emitted after a motion ends.
|
||||
*/
|
||||
on(event: "noMotion", listener: () => void): any;
|
||||
}
|
||||
export interface Sensor extends SubDevice {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getType(): "sensor";
|
||||
/**
|
||||
* @returns Temperature in degrees.
|
||||
*/
|
||||
getTemperature(): number;
|
||||
/**
|
||||
* @returns Humidity in percent.
|
||||
*/
|
||||
getHumidity(): number;
|
||||
/**
|
||||
* @returns Pressure in kPa
|
||||
*/
|
||||
getPressure(): number;
|
||||
/**
|
||||
* @event Emitted when a device value updated.
|
||||
*/
|
||||
on(event: "update", listener: () => void): any;
|
||||
}
|
||||
export interface Switch extends SubDevice {
|
||||
constructor(opts:SubDeviceOptions);
|
||||
getType(): "switch";
|
||||
/**
|
||||
* @event Emitted when a click is done on the switch.
|
||||
*/
|
||||
on(event: "click", listener: () => void): any;
|
||||
/**
|
||||
* @event Emitted when a double click is done on the switch.
|
||||
*/
|
||||
on(event: "doubleClick", listener: () => void): any;
|
||||
/**
|
||||
* @event Emitted when a double click is done on the switch.
|
||||
*/
|
||||
on(event: "doubleClick", listener: () => void): any;
|
||||
/**
|
||||
* @event Emitted when a long press is done.
|
||||
*/
|
||||
on(event: "longClickPress", listener: () => void): any;
|
||||
/**
|
||||
* @event Emitted when release the switch after a long press.
|
||||
*/
|
||||
on(event: "longClickRelease", listener: () => void): any;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user