node-switchbot
Version:
The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).
635 lines • 17.3 kB
TypeScript
export interface deviceList {
device: device[];
}
export interface device {
deviceId: string;
deviceName: string;
deviceType: string;
enableCloudService: boolean;
hubDeviceId: string;
version?: number;
}
export type bot = device;
export type curtain = device & {
curtainDevicesIds: string[];
calibrate: boolean;
group: boolean;
master: boolean;
openDirection: string;
};
export type curtain3 = device & {
curtainDevicesIds: string[];
calibrate: boolean;
group: boolean;
master: boolean;
openDirection?: string;
};
export type hub2 = device;
export type meter = device;
export type meterPlus = device;
export type meterPro = device;
export type outdoorMeter = device;
export type lock = device & {
group: boolean;
master: boolean;
groupName: string;
lockDevicesIds: string[];
};
export type lockPro = device & {
group: boolean;
master: boolean;
groupName: string;
lockDevicesIds: string[];
};
export type keypad = device & {
remoteType: string;
lockDeviceId: string;
keyList: keyList;
};
export type keypadTouch = device & {
remoteType: string;
lockDeviceId: string;
keyList: keyList;
};
interface keyList {
id: number;
name: string;
type: string;
password: string;
iv: string;
status: string;
createTime: number;
}
export type remote = device;
export type motionSensor = device;
export type presenceSensor = device;
export type contactSensor = device;
export type waterLeakDetector = device;
export type ceilingLight = device;
export type ceilingLightPro = device;
export type plug = device;
export type plugMini = device;
export type airPurifier = device;
export type airPurifierTable = device;
export type airPurifierVOC = device;
export type airPurifierTableVOC = device;
export type stripLight = device;
export type colorBulb = device;
export type robotVacuumCleanerS1 = device;
export type robotVacuumCleanerS1Plus = device;
export type floorCleaningRobotS10 = device;
export type humidifier = device;
export type IndoorCam = device;
export type pantiltCam = device;
export type pantiltCam2k = device;
export type blindTilt = device & {
blindTiltDevicesIds: string[];
calibrate: boolean;
group: boolean;
master: boolean;
direction: string;
slidePosition: number;
};
export type batteryCirculatorFan = device;
/**
* Allowed command types for device control.
*/
export type commandType = 'command' | 'customize';
/**
* Request payload for controlling a device.
*/
export interface pushRequest {
command: string;
parameter: string;
commandType: commandType;
}
/**
* Body of a device push response.
*/
export interface pushResponseBody {
commandId: string;
}
/**
* Response from a device control (push) request.
*/
export interface pushResponse {
statusCode: number;
body: pushResponseBody;
message: string;
}
export interface bodyChange {
command: string;
parameter: string;
commandType: string;
}
export interface devices {
statusCode: number;
message: string;
body: body;
}
export interface body {
deviceList: device[];
infraredRemoteList: infraredRemoteList;
}
export interface deviceStatusRequest {
statusCode: number;
message: string;
body: deviceStatus;
}
export interface deviceStatus extends device {
deviceId: string;
deviceType: string;
hubDeviceId: string;
version: number;
}
export type botStatus = deviceStatus & {
power: string;
battery: number;
mode: 'pressMode' | 'switchMode' | 'customizeMode';
};
export type curtainStatus = deviceStatus & {
calibrate: boolean;
group: boolean;
moving: boolean;
battery: number;
slidePosition: number;
lightLevel?: 'bright' | 'dim';
};
export type meterStatus = deviceStatus & {
temperature: number;
battery: number;
humidity: number;
};
export type meterPlusStatus = deviceStatus & {
temperature: number;
battery: number;
humidity: number;
};
export type meterProStatus = deviceStatus & {
temperature: number;
battery: number;
humidity: number;
version: string;
};
export type meterProCO2Status = deviceStatus & {
temperature: number;
battery: number;
humidity: number;
version: string;
CO2: number;
};
export type outdoorMeterStatus = deviceStatus & {
battery: number;
temperature: number;
humidity: number;
};
export type lockStatus = deviceStatus & {
lockState: string;
doorState: string;
moveDetected: boolean;
battery: number;
};
export type lockProStatus = deviceStatus & {
lockState: string;
doorState: string;
moveDetected: boolean;
battery: number;
};
export type motionSensorStatus = deviceStatus & {
battery: number;
moveDetected: boolean;
brightness: 'bright' | 'dim';
};
export type presenceSensorStatus = deviceStatus & {
battery: number;
version: string;
Detected: boolean;
lightLevel: number;
};
export type contactSensorStatus = deviceStatus & {
battery: number;
moveDetected: boolean;
openState: 'open' | 'close' | 'timeOutNotClose';
brightness: 'bright' | 'dim';
};
export type waterLeakDetectorStatus = deviceStatus & {
battery: number;
status: 0 | 1;
};
export type ceilingLightStatus = deviceStatus & {
power: boolean;
brightness: number;
colorTemperature: number;
};
export type ceilingLightProStatus = deviceStatus & {
power: boolean;
brightness: number;
colorTemperature: number;
};
export type plugStatus = deviceStatus & {
power: string;
version: string;
};
export type plugMiniStatus = deviceStatus & {
voltage: Float64Array;
weight: Float64Array;
electricityOfDay: number;
electricCurrent: Float64Array;
power: string;
};
export type stripLightStatus = deviceStatus & {
power: string;
brightness: number;
color: string;
};
export type colorBulbStatus = deviceStatus & {
power: string;
brightness: number;
color: string;
colorTemperature: number;
};
export type robotVacuumCleanerS1Status = deviceStatus & {
workingStatus: string;
onlineStatus: string;
battery: number;
};
export type robotVacuumCleanerS1PlusStatus = deviceStatus & {
workingStatus: string;
onlineStatus: string;
battery: number;
};
export type floorCleaningRobotS10Status = deviceStatus & {
workingStatus: string;
onlineStatus: string;
battery: number;
waterBaseBattery: number;
taskType: string;
};
export type humidifierStatus = deviceStatus & {
power: string;
humidity: number;
temperature: number;
nebulizationEfficiency: number;
auto: boolean;
childLock: boolean;
sound: boolean;
lackWater: boolean;
};
export type humidifier2Status = deviceStatus & {
power: string;
humidity: number;
temperature: number;
nebulizationEfficiency: number;
auto: boolean;
childLock: boolean;
sound: boolean;
lackWater: boolean;
};
export type blindTiltStatus = deviceStatus & {
calibrate: boolean;
battery: number;
direction: string;
slidePosition: string;
lightLevel?: 'bright' | 'dim';
};
export type hub2Status = deviceStatus & {
temperature: number;
lightLevel: number;
humidity: number;
};
export type batteryCirculatorFanStatus = deviceStatus & {
mode: 'direct' | 'natural' | 'sleep' | 'baby';
version: string;
battery: number;
power: string;
nightStatus: number;
oscillation: string;
verticalOscillation: string;
chargingStatus: string;
fanSpeed: number;
};
export type circulatorFanStatus = deviceStatus & {
mode: 'direct' | 'natural' | 'sleep' | 'baby';
version: string;
power: string;
nightStatus: number;
oscillation: string;
verticalOscillation: string;
fanSpeed: number;
};
export type relaySwitch1Status = deviceStatus & {
switchStatus: 0 | 1;
version: string;
};
export type relaySwitch1PMStatus = deviceStatus & {
switchStatus: 0 | 1;
voltage: number;
version: string;
power: number;
usedElectricity: number;
electricCurrent: number;
};
export type airPurifierStatus = deviceStatus & {
power: string;
mode: number;
childLock: number;
version: string;
};
export type airPurifierTableStatus = deviceStatus & {
power: string;
mode: number;
childLock: number;
version: string;
};
export type airPurifierVOCStatus = deviceStatus & {
power: string;
mode: number;
childLock: number;
version: string;
};
export type airPurifierTableVOCStatus = deviceStatus & {
power: string;
mode: number;
childLock: number;
version: string;
};
export interface webhookRequest {
action: string;
url: string;
deviceList: string;
}
export interface setupWebhookResponse {
statusCode: number;
body: object;
message: string;
}
export interface queryWebhookResponse {
statusCode: number;
body: WebhookDetail[];
message: string;
}
export interface WebhookDetail {
url: string;
createTime: number;
lastUpdateTime: number;
deviceList: string;
enable: boolean;
}
export interface updateWebhookResponse {
statusCode: number;
body: object;
message: string;
}
export interface deleteWebhookResponse {
statusCode: number;
body: object;
message: string;
}
interface deviceWebhook {
eventType: string;
eventVersion: string;
context: deviceWebhookContext;
}
export { deviceWebhook };
export interface deviceWebhookContext {
deviceMac: string;
deviceType: string;
timeOfSample: number;
}
export type botWebhookContext = deviceWebhookContext & {
power: string;
battery: number;
deviceMode: 'pressMode' | 'switchMode' | 'customizeMode';
};
export type curtainWebhookContext = deviceWebhookContext & {
calibrate: boolean;
group: boolean;
slidePosition: number;
battery: number;
};
export type curtain3WebhookContext = deviceWebhookContext & {
calibrate: boolean;
group: boolean;
slidePosition: number;
battery: number;
};
export type motionSensorWebhookContext = deviceWebhookContext & {
detectionState: 'NOT_DETECTED' | 'DETECTED';
battery: number;
};
export type presenceSensorWebhookContext = deviceWebhookContext & {
detectionState: 'NOT_DETECTED' | 'DETECTED';
battery: number;
lightLevel: number;
};
export type contactSensorWebhookContext = deviceWebhookContext & {
detectionState: 'NOT_DETECTED' | 'DETECTED';
battery: number;
doorMode: 'IN_DOOR' | 'OUT_DOOR';
brightness: 'dim' | 'bright';
openState: 'open' | 'close' | 'timeOutNotClose';
};
export type waterLeakDetectorWebhookContext = deviceWebhookContext & {
detectionState: 0 | 1;
battery: number;
};
export type meterWebhookContext = deviceWebhookContext & {
temperature: number;
battery: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
humidity: number;
};
export type meterPlusWebhookContext = deviceWebhookContext & {
temperature: number;
battery: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
humidity: number;
};
export type meterProWebhookContext = deviceWebhookContext & {
temperature: number;
battery: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
humidity: number;
};
export type meterProCO2WebhookContext = deviceWebhookContext & {
temperature: number;
battery: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
humidity: number;
CO2: number;
};
export type outdoorMeterWebhookContext = deviceWebhookContext & {
temperature: number;
battery: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
humidity: number;
};
export type lockWebhookContext = deviceWebhookContext & {
lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED';
battery: number;
};
export type lockProWebhookContext = deviceWebhookContext & {
lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED';
battery: number;
};
export type indoorCameraWebhookContext = deviceWebhookContext & {
detectionState: 'DETECTED';
};
export type panTiltCamWebhookContext = deviceWebhookContext & {
detectionState: 'DETECTED';
};
export type colorBulbWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
brightness: number;
color: string;
colorTemperature: number;
};
export type stripLightWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
brightness: number;
color: string;
};
export type plugWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
};
export type plugMiniUSWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
};
export type plugMiniJPWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
};
export type robotVacuumCleanerS1WebhookContext = deviceWebhookContext & {
workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting';
onlineStatus: 'online' | 'offline';
battery: number;
};
export type robotVacuumCleanerS1PlusWebhookContext = deviceWebhookContext & {
workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting';
onlineStatus: 'online' | 'offline';
battery: number;
};
export type floorCleaningRobotS10WebhookContext = deviceWebhookContext & {
workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting';
onlineStatus: 'online' | 'offline';
battery: number;
waterBaseBattery: number;
taskType: 'standBy' | 'explore' | 'cleanAll' | 'cleanArea' | 'cleanRoom' | 'fillWater' | 'deepWashing' | 'backToCharge' | 'markingWaterBase' | 'drying' | 'collectDust' | 'remoteControl' | 'cleanWithExplorer' | 'fillWaterForHumi' | 'markingHumi';
};
export type ceilingLightWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
brightness: number;
colorTemperature: number;
};
export type ceilingLightProWebhookContext = deviceWebhookContext & {
powerState: 'ON' | 'OFF';
brightness: number;
colorTemperature: number;
};
export type keypadWebhookContext = deviceWebhookContext & {
eventName: 'createKey' | 'deleteKey';
commandId: string;
result: 'success' | 'failed' | 'timeout';
};
export type keypadTouchWebhookContext = deviceWebhookContext & {
eventName: 'createKey' | 'deleteKey';
commandId: string;
result: 'success' | 'failed' | 'timeout';
};
export type hub2WebhookContext = deviceWebhookContext & {
temperature: number;
humidity: number;
lightLevel: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
};
export type batteryCirculatorFanWebhookContext = deviceWebhookContext & {
mode: 'direct' | 'natural' | 'sleep' | 'baby';
version: string;
battery: number;
powerState: 'ON' | 'OFF';
nightStatus: 'off' | 1 | 2;
oscillation: 'on' | 'off';
verticalOscillation: 'on' | 'off';
chargingStatus: 'charging' | 'uncharged';
fanSpeed: number;
};
export type circulatorFanWebhookContext = deviceWebhookContext & {
mode: 'direct' | 'natural' | 'sleep' | 'baby';
version: string;
battery: number;
powerState: 'ON' | 'OFF';
nightStatus: 'off' | 1 | 2;
oscillation: 'on' | 'off';
verticalOscillation: 'on' | 'off';
fanSpeed: number;
};
export type blindTiltWebhookContext = deviceWebhookContext & {
version: string;
calibrate: boolean;
group: boolean;
direction: string;
slidePosition: number;
battery: number;
};
export type humidifierWebhookContext = deviceWebhookContext & {
temperature: number;
humidity: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
};
export type humidifier2WebhookContext = deviceWebhookContext & {
temperature: number;
humidity: number;
scale: 'CELSIUS' | 'FAHRENHEIT';
};
export type relaySwitch1Context = deviceWebhookContext & {
online: boolean;
overTemperature: boolean;
switchStatus: 0 | 1;
version: string;
};
export type relaySwitch1PMContext = deviceWebhookContext & {
online: boolean;
overTemperature: boolean;
switchStatus: 0 | 1;
overload: boolean;
version: string;
};
export type airPurifierVOCWebhookContext = deviceWebhookContext & {
power: string;
mode: number;
childLock: number;
};
export type airPurifierTableVOCWebhookContext = deviceWebhookContext & {
power: string;
mode: number;
childLock: number;
};
export type airPurifierPM25WebhookContext = deviceWebhookContext & {
power: string;
mode: number;
childLock: number;
};
export type airPurifierTablePM25WebhookContext = deviceWebhookContext & {
power: string;
mode: number;
childLock: number;
};
export type airPurifierWebhookContext = deviceWebhookContext & {
power: string;
mode: number;
childLock: number;
};
export type airPurifierTableWebhookContext = deviceWebhookContext & {
power: string;
mode: number;
childLock: number;
};
export interface infraredRemoteList {
device: irdevice[];
}
export interface irdevice {
deviceId?: string;
deviceName: string;
remoteType: string;
hubDeviceId: string;
}
//# sourceMappingURL=openapi.d.ts.map