@switchbot/homebridge-switchbot 3.5.1-beta.1 → 3.5.1-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/device/blindtilt.d.ts +15 -6
- package/dist/device/blindtilt.d.ts.map +1 -1
- package/dist/device/blindtilt.js +203 -255
- package/dist/device/blindtilt.js.map +1 -1
- package/dist/device/bot.d.ts +9 -4
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js +196 -218
- package/dist/device/bot.js.map +1 -1
- package/dist/device/ceilinglight.d.ts +9 -4
- package/dist/device/ceilinglight.d.ts.map +1 -1
- package/dist/device/ceilinglight.js +202 -247
- package/dist/device/ceilinglight.js.map +1 -1
- package/dist/device/colorbulb.d.ts +10 -5
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +329 -378
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/contact.d.ts +9 -4
- package/dist/device/contact.d.ts.map +1 -1
- package/dist/device/contact.js +99 -142
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.d.ts +19 -7
- package/dist/device/curtain.d.ts.map +1 -1
- package/dist/device/curtain.js +203 -264
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/device.d.ts +28 -32
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +186 -225
- package/dist/device/device.js.map +1 -1
- package/dist/device/fan.d.ts +9 -4
- package/dist/device/fan.d.ts.map +1 -1
- package/dist/device/fan.js +198 -227
- package/dist/device/fan.js.map +1 -1
- package/dist/device/hub.d.ts +9 -5
- package/dist/device/hub.d.ts.map +1 -1
- package/dist/device/hub.js +106 -231
- package/dist/device/hub.js.map +1 -1
- package/dist/device/humidifier.d.ts +12 -4
- package/dist/device/humidifier.d.ts.map +1 -1
- package/dist/device/humidifier.js +192 -232
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/iosensor.d.ts +9 -4
- package/dist/device/iosensor.d.ts.map +1 -1
- package/dist/device/iosensor.js +91 -157
- package/dist/device/iosensor.js.map +1 -1
- package/dist/device/lightstrip.d.ts +10 -5
- package/dist/device/lightstrip.d.ts.map +1 -1
- package/dist/device/lightstrip.js +287 -367
- package/dist/device/lightstrip.js.map +1 -1
- package/dist/device/lock.d.ts +10 -5
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +171 -216
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts +9 -4
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js +93 -158
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts +9 -4
- package/dist/device/meterplus.d.ts.map +1 -1
- package/dist/device/meterplus.js +94 -155
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/motion.d.ts +9 -4
- package/dist/device/motion.d.ts.map +1 -1
- package/dist/device/motion.js +84 -142
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.d.ts +9 -4
- package/dist/device/plug.d.ts.map +1 -1
- package/dist/device/plug.js +99 -124
- package/dist/device/plug.js.map +1 -1
- package/dist/device/robotvacuumcleaner.d.ts +9 -6
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js +170 -253
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/device/waterdetector.d.ts +12 -4
- package/dist/device/waterdetector.d.ts.map +1 -1
- package/dist/device/waterdetector.js +105 -129
- package/dist/device/waterdetector.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts +2 -1
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js.map +1 -1
- package/dist/irdevice/airpurifier.d.ts +2 -1
- package/dist/irdevice/airpurifier.d.ts.map +1 -1
- package/dist/irdevice/airpurifier.js.map +1 -1
- package/dist/irdevice/camera.d.ts +2 -1
- package/dist/irdevice/camera.d.ts.map +1 -1
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts +2 -1
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js.map +1 -1
- package/dist/irdevice/irdevice.d.ts +2 -1
- package/dist/irdevice/irdevice.d.ts.map +1 -1
- package/dist/irdevice/irdevice.js +1 -1
- package/dist/irdevice/irdevice.js.map +1 -1
- package/dist/irdevice/light.d.ts +2 -1
- package/dist/irdevice/light.d.ts.map +1 -1
- package/dist/irdevice/light.js.map +1 -1
- package/dist/irdevice/other.d.ts +2 -1
- package/dist/irdevice/other.d.ts.map +1 -1
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts +2 -1
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js.map +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts +2 -1
- package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
- package/dist/irdevice/vacuumcleaner.js.map +1 -1
- package/dist/irdevice/waterheater.d.ts +2 -1
- package/dist/irdevice/waterheater.d.ts.map +1 -1
- package/dist/irdevice/waterheater.js.map +1 -1
- package/dist/platform.d.ts +14 -14
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +102 -86
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +49 -191
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +19 -0
- package/dist/settings.js.map +1 -1
- package/dist/types/bledevicestatus.d.ts +279 -0
- package/dist/types/bledevicestatus.d.ts.map +1 -0
- package/dist/types/bledevicestatus.js +2 -0
- package/dist/types/bledevicestatus.js.map +1 -0
- package/dist/types/devicelist.d.ts +89 -0
- package/dist/types/devicelist.d.ts.map +1 -0
- package/dist/types/devicelist.js +6 -0
- package/dist/types/devicelist.js.map +1 -0
- package/dist/types/deviceresponse.d.ts +13 -0
- package/dist/types/deviceresponse.d.ts.map +1 -0
- package/dist/types/deviceresponse.js +2 -0
- package/dist/types/deviceresponse.js.map +1 -0
- package/dist/types/devicestatus.d.ts +149 -0
- package/dist/types/devicestatus.d.ts.map +1 -0
- package/dist/types/devicestatus.js +3 -0
- package/dist/types/devicestatus.js.map +1 -0
- package/dist/types/devicewebhookstatus.d.ts +156 -0
- package/dist/types/devicewebhookstatus.d.ts.map +1 -0
- package/dist/types/devicewebhookstatus.js +2 -0
- package/dist/types/devicewebhookstatus.js.map +1 -0
- package/dist/types/irdevicelist.d.ts +10 -0
- package/dist/types/irdevicelist.d.ts.map +1 -0
- package/dist/types/irdevicelist.js +2 -0
- package/dist/types/irdevicelist.js.map +1 -0
- package/dist/types/pushbody.d.ts +6 -0
- package/dist/types/pushbody.d.ts.map +1 -0
- package/dist/types/pushbody.js +2 -0
- package/dist/types/pushbody.js.map +1 -0
- package/dist/utils.d.ts +25 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +28 -0
- package/dist/utils.js.map +1 -1
- package/package.json +10 -10
- package/src/device/blindtilt.ts +224 -264
- package/src/device/bot.ts +208 -221
- package/src/device/ceilinglight.ts +210 -257
- package/src/device/colorbulb.ts +334 -397
- package/src/device/contact.ts +111 -146
- package/src/device/curtain.ts +220 -283
- package/src/device/device.ts +194 -245
- package/src/device/fan.ts +214 -230
- package/src/device/hub.ts +126 -246
- package/src/device/humidifier.ts +216 -243
- package/src/device/iosensor.ts +114 -166
- package/src/device/lightstrip.ts +302 -377
- package/src/device/lock.ts +187 -221
- package/src/device/meter.ts +116 -177
- package/src/device/meterplus.ts +117 -174
- package/src/device/motion.ts +99 -144
- package/src/device/plug.ts +110 -128
- package/src/device/robotvacuumcleaner.ts +189 -252
- package/src/device/waterdetector.ts +123 -139
- package/src/irdevice/airconditioner.ts +2 -1
- package/src/irdevice/airpurifier.ts +2 -1
- package/src/irdevice/camera.ts +2 -1
- package/src/irdevice/fan.ts +2 -1
- package/src/irdevice/irdevice.ts +3 -2
- package/src/irdevice/light.ts +2 -1
- package/src/irdevice/other.ts +2 -1
- package/src/irdevice/tv.ts +2 -1
- package/src/irdevice/vacuumcleaner.ts +2 -1
- package/src/irdevice/waterheater.ts +2 -1
- package/src/platform.ts +104 -87
- package/src/settings.ts +30 -239
- package/src/types/bledevicestatus.ts +305 -0
- package/src/types/devicelist.ts +124 -0
- package/src/types/deviceresponse.ts +15 -0
- package/src/types/devicestatus.ts +178 -0
- package/src/types/devicewebhookstatus.ts +196 -0
- package/src/types/irdevicelist.ts +15 -0
- package/src/types/pushbody.ts +9 -0
- package/src/utils.ts +33 -0
package/src/settings.ts
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* settings.ts: @switchbot/homebridge-switchbot platform class.
|
|
4
4
|
*/
|
|
5
5
|
import type { IClientOptions } from 'async-mqtt';
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
6
|
+
import type { PlatformConfig } from 'homebridge';
|
|
7
|
+
import type { device } from './types/devicelist';
|
|
8
|
+
import type { irdevice } from './types/irdevicelist';
|
|
9
|
+
import type { SwitchBotBLEModel, SwitchBotBLEModelName, SwitchBotBLEModelFriendlyName } from 'node-switchbot';
|
|
8
10
|
/**
|
|
9
11
|
* This is the name of the platform that users will use to register the plugin in the Homebridge config.json
|
|
10
12
|
*/
|
|
@@ -40,20 +42,20 @@ export const updateWebhook = 'https://api.switch-bot.com/v1.1/webhook/updateWebh
|
|
|
40
42
|
*/
|
|
41
43
|
export const deleteWebhook = 'https://api.switch-bot.com/v1.1/webhook/deleteWebhook';
|
|
42
44
|
|
|
45
|
+
|
|
43
46
|
//Config
|
|
44
47
|
export interface SwitchBotPlatformConfig extends PlatformConfig {
|
|
45
48
|
credentials?: credentials;
|
|
46
|
-
options?: options
|
|
49
|
+
options?: options;
|
|
47
50
|
}
|
|
48
|
-
|
|
49
|
-
export type credentials = {
|
|
51
|
+
interface credentials {
|
|
50
52
|
token?: any;
|
|
51
53
|
secret?: any;
|
|
52
54
|
notice?: any;
|
|
53
55
|
openToken?: any;
|
|
54
|
-
}
|
|
56
|
+
}
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
interface options {
|
|
57
59
|
refreshRate?: number;
|
|
58
60
|
updateRate?: number;
|
|
59
61
|
pushRate?: number;
|
|
@@ -71,8 +73,9 @@ export type options = {
|
|
|
71
73
|
export interface devicesConfig extends device {
|
|
72
74
|
bleMac?: string;
|
|
73
75
|
model?: string;
|
|
74
|
-
bleModel
|
|
75
|
-
bleModelName
|
|
76
|
+
bleModel: SwitchBotBLEModel;
|
|
77
|
+
bleModelName: SwitchBotBLEModelName;
|
|
78
|
+
bleModelFriednlyName: SwitchBotBLEModelFriendlyName;
|
|
76
79
|
configDeviceType: string;
|
|
77
80
|
configDeviceName?: string;
|
|
78
81
|
deviceId: string;
|
|
@@ -113,19 +116,19 @@ export interface devicesConfig extends device {
|
|
|
113
116
|
hub?: hub;
|
|
114
117
|
}
|
|
115
118
|
|
|
116
|
-
|
|
119
|
+
interface meter {
|
|
117
120
|
hide_temperature?: boolean;
|
|
118
121
|
convertUnitTo?: string;
|
|
119
122
|
hide_humidity?: boolean;
|
|
120
123
|
};
|
|
121
124
|
|
|
122
|
-
|
|
125
|
+
interface iosensor {
|
|
123
126
|
hide_temperature?: boolean;
|
|
124
127
|
convertUnitTo?: string;
|
|
125
128
|
hide_humidity?: boolean;
|
|
126
129
|
};
|
|
127
130
|
|
|
128
|
-
|
|
131
|
+
interface bot {
|
|
129
132
|
mode?: string;
|
|
130
133
|
deviceType?: string;
|
|
131
134
|
doublePress?: number;
|
|
@@ -134,12 +137,12 @@ export type bot = {
|
|
|
134
137
|
multiPress?: boolean;
|
|
135
138
|
};
|
|
136
139
|
|
|
137
|
-
|
|
140
|
+
interface humidifier {
|
|
138
141
|
hide_temperature?: boolean;
|
|
139
142
|
set_minStep?: number;
|
|
140
143
|
};
|
|
141
144
|
|
|
142
|
-
|
|
145
|
+
interface curtain {
|
|
143
146
|
disable_group?: boolean;
|
|
144
147
|
hide_lightsensor?: boolean;
|
|
145
148
|
set_minLux?: number;
|
|
@@ -151,7 +154,7 @@ export type curtain = {
|
|
|
151
154
|
setOpenMode?: string;
|
|
152
155
|
};
|
|
153
156
|
|
|
154
|
-
|
|
157
|
+
interface blindTilt {
|
|
155
158
|
mode?: string;
|
|
156
159
|
hide_lightsensor?: boolean;
|
|
157
160
|
set_minLux?: number;
|
|
@@ -163,44 +166,44 @@ export type blindTilt = {
|
|
|
163
166
|
setOpenMode?: string;
|
|
164
167
|
};
|
|
165
168
|
|
|
166
|
-
|
|
169
|
+
interface contact {
|
|
167
170
|
hide_lightsensor?: boolean;
|
|
168
171
|
set_minLux?: number;
|
|
169
172
|
set_maxLux?: number;
|
|
170
173
|
hide_motionsensor?: boolean;
|
|
171
174
|
};
|
|
172
175
|
|
|
173
|
-
|
|
176
|
+
interface motion {
|
|
174
177
|
hide_lightsensor?: boolean;
|
|
175
178
|
set_minLux?: number;
|
|
176
179
|
set_maxLux?: number;
|
|
177
180
|
};
|
|
178
181
|
|
|
179
|
-
|
|
182
|
+
interface waterdetector {
|
|
180
183
|
hide_leak?: boolean;
|
|
181
184
|
};
|
|
182
185
|
|
|
183
|
-
|
|
186
|
+
interface colorbulb {
|
|
184
187
|
set_minStep?: number;
|
|
185
188
|
adaptiveLightingShift?: number;
|
|
186
189
|
};
|
|
187
190
|
|
|
188
|
-
|
|
191
|
+
interface striplight {
|
|
189
192
|
set_minStep?: number;
|
|
190
193
|
adaptiveLightingShift?: number;
|
|
191
194
|
};
|
|
192
195
|
|
|
193
|
-
|
|
196
|
+
interface ceilinglight {
|
|
194
197
|
set_minStep?: number;
|
|
195
198
|
adaptiveLightingShift?: number;
|
|
196
199
|
};
|
|
197
200
|
|
|
198
|
-
|
|
201
|
+
interface lock {
|
|
199
202
|
hide_contactsensor?: boolean;
|
|
200
203
|
activate_latchbutton?: boolean;
|
|
201
204
|
};
|
|
202
205
|
|
|
203
|
-
|
|
206
|
+
interface hub {
|
|
204
207
|
hide_temperature?: boolean;
|
|
205
208
|
convertUnitTo?: string;
|
|
206
209
|
hide_humidity?: boolean;
|
|
@@ -233,7 +236,7 @@ export interface irDevicesConfig extends irdevice {
|
|
|
233
236
|
other?: other;
|
|
234
237
|
}
|
|
235
238
|
|
|
236
|
-
|
|
239
|
+
interface irfan {
|
|
237
240
|
swing_mode?: boolean;
|
|
238
241
|
rotation_speed?: boolean;
|
|
239
242
|
set_minStep?: number;
|
|
@@ -241,11 +244,11 @@ export type irfan = {
|
|
|
241
244
|
set_min?: number;
|
|
242
245
|
};
|
|
243
246
|
|
|
244
|
-
|
|
247
|
+
interface irlight {
|
|
245
248
|
stateless?: boolean;
|
|
246
249
|
};
|
|
247
250
|
|
|
248
|
-
|
|
251
|
+
interface irair {
|
|
249
252
|
hide_automode?: boolean;
|
|
250
253
|
set_max_heat?: number;
|
|
251
254
|
set_min_heat?: number;
|
|
@@ -256,218 +259,6 @@ export type irair = {
|
|
|
256
259
|
meterUuid?: string;
|
|
257
260
|
};
|
|
258
261
|
|
|
259
|
-
|
|
262
|
+
interface other {
|
|
260
263
|
deviceType?: string;
|
|
261
264
|
};
|
|
262
|
-
|
|
263
|
-
export type body = {
|
|
264
|
-
command: string;
|
|
265
|
-
parameter: string;
|
|
266
|
-
commandType: string;
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
//a list of physical devices.
|
|
270
|
-
export type deviceList = {
|
|
271
|
-
device: device[];
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
export type device = {
|
|
275
|
-
//device ID.
|
|
276
|
-
deviceId?: string;
|
|
277
|
-
//device name.
|
|
278
|
-
deviceName: string;
|
|
279
|
-
//device type.
|
|
280
|
-
deviceType: string;
|
|
281
|
-
//determines if Cloud Service is enabled or not for the current device.
|
|
282
|
-
enableCloudService: boolean;
|
|
283
|
-
//device's parent Hub ID.
|
|
284
|
-
hubDeviceId: string;
|
|
285
|
-
//only available for Curtain devices. a list of Curtain device IDs such that the Curtain devices are being paired or grouped.
|
|
286
|
-
curtainDevicesIds?: string[];
|
|
287
|
-
//only available for Blind Titl devices. a list of Blind Tilt device IDs such that the Blind Tilt devices are being paired or grouped.
|
|
288
|
-
blindTiltDevicesIds?: string[];
|
|
289
|
-
//only available for Curtain/Lock devices. determines if the open position and the close position of a device have been properly calibrated or not
|
|
290
|
-
calibrate?: boolean;
|
|
291
|
-
//only available for Curtain devices. determines if a Curtain is paired with or grouped with another Curtain or not.
|
|
292
|
-
group?: boolean;
|
|
293
|
-
//only available for Curtain devices. determines if a Curtain is the master device or not when paired with or grouped with another Curtain.
|
|
294
|
-
master?: boolean;
|
|
295
|
-
//only available for Curtain devices. the opening direction of a Curtain.
|
|
296
|
-
openDirection?: string;
|
|
297
|
-
//the opening direction of a Blind Tilt device
|
|
298
|
-
direction?: string;
|
|
299
|
-
//the current position, 0-100
|
|
300
|
-
slidePosition?: string;
|
|
301
|
-
//the version of the device
|
|
302
|
-
version?: string;
|
|
303
|
-
// Fan Mode: direct mode: direct; natural mode: "natural"; sleep mode: "sleep"; ultra quiet mode: "baby"
|
|
304
|
-
mode: string;
|
|
305
|
-
//the current battery level
|
|
306
|
-
battery: number;
|
|
307
|
-
//ON/OFF state
|
|
308
|
-
power: string;
|
|
309
|
-
//set nightlight status. turn off: off; mode 1: 1; mode 2: 2
|
|
310
|
-
nightStatus: number;
|
|
311
|
-
//set horizontal oscillation. turn on: on; turn off: off
|
|
312
|
-
oscillation: string;
|
|
313
|
-
//set vertical oscillation. turn on: on; turn off: off
|
|
314
|
-
verticalOscillation: string;
|
|
315
|
-
//battery charge status. charging or uncharged
|
|
316
|
-
chargingStatus: string;
|
|
317
|
-
//fan speed. 1~100
|
|
318
|
-
fanSpeed: number;
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
//a list of virtual infrared remote devices.
|
|
322
|
-
export type infraredRemoteList = {
|
|
323
|
-
device: irdevice[];
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
export type irdevice = {
|
|
327
|
-
deviceId?: string; //device ID
|
|
328
|
-
deviceName: string; //device name
|
|
329
|
-
remoteType: string; //device type
|
|
330
|
-
hubDeviceId: string; //remote device's parent Hub ID
|
|
331
|
-
model: string; //device model
|
|
332
|
-
};
|
|
333
|
-
|
|
334
|
-
export type deviceStatus = {
|
|
335
|
-
statusCode: number;
|
|
336
|
-
message: string;
|
|
337
|
-
body: deviceStatusBody;
|
|
338
|
-
};
|
|
339
|
-
|
|
340
|
-
export type deviceStatusBody = {
|
|
341
|
-
//v1.1 of API
|
|
342
|
-
deviceId: string;
|
|
343
|
-
deviceType: string;
|
|
344
|
-
hubDeviceId: string;
|
|
345
|
-
power?: string;
|
|
346
|
-
calibrate?: boolean;
|
|
347
|
-
group?: boolean;
|
|
348
|
-
moving?: boolean;
|
|
349
|
-
slidePosition?: number;
|
|
350
|
-
temperature?: number;
|
|
351
|
-
humidity?: number;
|
|
352
|
-
lockState?: string;
|
|
353
|
-
doorState?: string;
|
|
354
|
-
moveDetected?: boolean;
|
|
355
|
-
brightness?: string | number;
|
|
356
|
-
openState?: string;
|
|
357
|
-
colorTemperature?: number;
|
|
358
|
-
voltage?: number;
|
|
359
|
-
weight?: number;
|
|
360
|
-
electricityOfDay?: number;
|
|
361
|
-
electricCurrent?: number;
|
|
362
|
-
color?: string;
|
|
363
|
-
workingStatus?: string;
|
|
364
|
-
onlineStatus?: string;
|
|
365
|
-
battery?: number;
|
|
366
|
-
deviceName?: string;
|
|
367
|
-
nebulizationEfficiency?: number;
|
|
368
|
-
auto?: boolean;
|
|
369
|
-
childLock?: boolean;
|
|
370
|
-
sound?: boolean;
|
|
371
|
-
lackWater?: boolean;
|
|
372
|
-
version?: number;
|
|
373
|
-
direction?: string;
|
|
374
|
-
runStatus?: string;
|
|
375
|
-
mode?: number | string;
|
|
376
|
-
speed?: number;
|
|
377
|
-
shaking?: boolean;
|
|
378
|
-
shakeCenter?: string;
|
|
379
|
-
shakeRange?: string;
|
|
380
|
-
status?: number;
|
|
381
|
-
lightLevel?: number;
|
|
382
|
-
nightStatus: number;
|
|
383
|
-
oscillation: string;
|
|
384
|
-
verticalOscillation: string;
|
|
385
|
-
chargingStatus: string;
|
|
386
|
-
fanSpeed: number;
|
|
387
|
-
};
|
|
388
|
-
|
|
389
|
-
export type ad = {
|
|
390
|
-
id: string;
|
|
391
|
-
address: string;
|
|
392
|
-
rssi: number;
|
|
393
|
-
serviceData: serviceData;
|
|
394
|
-
};
|
|
395
|
-
|
|
396
|
-
export type serviceData = {
|
|
397
|
-
//Model of BLE SwitchBot Device
|
|
398
|
-
model: string;
|
|
399
|
-
//Model Name of BLE SwitchBot Device
|
|
400
|
-
modelName: string;
|
|
401
|
-
//Mode for Bot either Press or Switch
|
|
402
|
-
mode?: boolean;
|
|
403
|
-
//Bot/ColorBulb State
|
|
404
|
-
state?: string | boolean;
|
|
405
|
-
//Lock door open
|
|
406
|
-
door_open?: string;
|
|
407
|
-
//Lock Status
|
|
408
|
-
status?: string;
|
|
409
|
-
//ColorBulb Power
|
|
410
|
-
power?: boolean;
|
|
411
|
-
//ColorBulb R
|
|
412
|
-
red?: number;
|
|
413
|
-
//ColorBulb G
|
|
414
|
-
green?: number;
|
|
415
|
-
//ColorBulb B
|
|
416
|
-
blue?: number;
|
|
417
|
-
//ColorBulb Color temperature
|
|
418
|
-
color_temperature?: number;
|
|
419
|
-
//Battery percentage left on Bot, Meter, Motion, Contact, PlugMini, and Curtain
|
|
420
|
-
battery?: number;
|
|
421
|
-
//Humidifier's humidity level percentage
|
|
422
|
-
percentage?: boolean | string;
|
|
423
|
-
//Humidifier's state
|
|
424
|
-
onState?: boolean;
|
|
425
|
-
//Humidifier's AutoMode
|
|
426
|
-
autoMode?: boolean;
|
|
427
|
-
//Meter Temperature Levels
|
|
428
|
-
temperature?: temperature;
|
|
429
|
-
// Fahrenheit enabled for Meter
|
|
430
|
-
fahrenheit?: boolean;
|
|
431
|
-
// Humidity level for Meter
|
|
432
|
-
humidity?: number;
|
|
433
|
-
//Motion Detected for Contact or Motion Sensors
|
|
434
|
-
movement?: boolean;
|
|
435
|
-
//Motion ((lightLevel == 1) ? 'dark' : ((lightLevel == 2) ? 'bright' : 'unknown'))
|
|
436
|
-
//Contact ((lightLevel == 0) ? 'dark' : 'bright')
|
|
437
|
-
//Curtain (light sensor level (1-10))
|
|
438
|
-
//Light Level
|
|
439
|
-
lightLevel?: number | string | boolean;
|
|
440
|
-
//Contact DoorState
|
|
441
|
-
doorState?: number | string;
|
|
442
|
-
//Is Curtain Calibrated
|
|
443
|
-
calibration?: boolean;
|
|
444
|
-
//Current Curtain Positon %
|
|
445
|
-
position?: number;
|
|
446
|
-
//Is Curtain Moving?
|
|
447
|
-
inMotion?: boolean;
|
|
448
|
-
//PlugMini - Is there a delay?
|
|
449
|
-
delay?: boolean;
|
|
450
|
-
//PlugMini - Is there a Timer?
|
|
451
|
-
timer?: boolean;
|
|
452
|
-
//PlugMini - Is the UTC time has been synchronized?
|
|
453
|
-
syncUtcTime?: boolean;
|
|
454
|
-
//PlugMini - The Wifi RSSI Signal
|
|
455
|
-
wifiRssi?: number;
|
|
456
|
-
//PlugMini - Whether the Plug Mini is overloaded, more than 15A current overload
|
|
457
|
-
overload?: boolean;
|
|
458
|
-
//PlugMini - Plug Mini current power value of the load
|
|
459
|
-
currentPower?: number;
|
|
460
|
-
//Color Bulb's brightness level
|
|
461
|
-
brightness?: boolean | string;
|
|
462
|
-
};
|
|
463
|
-
|
|
464
|
-
export type temperature = {
|
|
465
|
-
c: number;
|
|
466
|
-
f: number;
|
|
467
|
-
};
|
|
468
|
-
|
|
469
|
-
export type switchbot = {
|
|
470
|
-
discover: (arg0: { duration?: any; model: string; quick: boolean; id?: MacAddress }) => Promise<any>;
|
|
471
|
-
wait: (arg0: number) => any;
|
|
472
|
-
};
|
|
473
|
-
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* bledevicestatus.ts: @switchbot/homebridge-switchbot platform class.
|
|
4
|
+
*/
|
|
5
|
+
import type { MacAddress } from 'homebridge';
|
|
6
|
+
import type { SwitchBotBLEModel, SwitchBotBLEModelName, SwitchBotBLEModelFriendlyName } from 'node-switchbot';
|
|
7
|
+
|
|
8
|
+
export type switchbot = {
|
|
9
|
+
discover: (arg0: { duration?: any; model: string; quick: boolean; id?: MacAddress }) => Promise<any>;
|
|
10
|
+
wait: (arg0: number) => any;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type ad = {
|
|
14
|
+
id: string;
|
|
15
|
+
address: string;
|
|
16
|
+
rssi: number;
|
|
17
|
+
serviceData: botServiceData | colorBulbServiceData | contactSensorServiceData |
|
|
18
|
+
curtainServiceData | curtain3ServiceData | stripLightServiceData | lockServiceData |
|
|
19
|
+
lockProServiceData | meterServiceData | meterPlusServiceData | motionSensorServiceData |
|
|
20
|
+
plugMiniUSServiceData | plugMiniJPServiceData | blindTiltServiceData;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
type serviceData = {
|
|
24
|
+
model: string,
|
|
25
|
+
modelName: string,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type botServiceData = serviceData & {
|
|
29
|
+
model: SwitchBotBLEModel.Bot,
|
|
30
|
+
modelName: SwitchBotBLEModelName.Bot,
|
|
31
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Bot,
|
|
32
|
+
mode: string;
|
|
33
|
+
state: boolean;
|
|
34
|
+
battery: number;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type colorBulbServiceData = serviceData & {
|
|
38
|
+
model: SwitchBotBLEModel.ColorBulb,
|
|
39
|
+
modelName: SwitchBotBLEModelName.ColorBulb,
|
|
40
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb,
|
|
41
|
+
color_temperature: number;
|
|
42
|
+
power: boolean;
|
|
43
|
+
state: boolean;
|
|
44
|
+
red: number;
|
|
45
|
+
green: number;
|
|
46
|
+
blue: number;
|
|
47
|
+
brightness: number;
|
|
48
|
+
delay: number;
|
|
49
|
+
preset: number;
|
|
50
|
+
color_mode: number;
|
|
51
|
+
speed: number;
|
|
52
|
+
loop_index: number;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export type contactSensorServiceData = serviceData & {
|
|
56
|
+
model: SwitchBotBLEModel.ContactSensor,
|
|
57
|
+
modelName: SwitchBotBLEModelName.ContactSensor,
|
|
58
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor,
|
|
59
|
+
movement: boolean;
|
|
60
|
+
tested: boolean;
|
|
61
|
+
battery: number;
|
|
62
|
+
contact_open: boolean;
|
|
63
|
+
contact_timeout: boolean;
|
|
64
|
+
lightLevel: string;
|
|
65
|
+
button_count: number;
|
|
66
|
+
doorState: string;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export type curtainServiceData = serviceData & {
|
|
70
|
+
model: SwitchBotBLEModel.Curtain,
|
|
71
|
+
modelName: SwitchBotBLEModelName.Curtain,
|
|
72
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain,
|
|
73
|
+
calibration: boolean;
|
|
74
|
+
battery: number;
|
|
75
|
+
inMotion: boolean;
|
|
76
|
+
position: number;
|
|
77
|
+
lightLevel: number;
|
|
78
|
+
deviceChain: number;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export type curtain3ServiceData = serviceData & {
|
|
82
|
+
model: SwitchBotBLEModel.Curtain3,
|
|
83
|
+
modelName: SwitchBotBLEModelName.Curtain3,
|
|
84
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain3,
|
|
85
|
+
calibration: boolean;
|
|
86
|
+
battery: number;
|
|
87
|
+
inMotion: boolean;
|
|
88
|
+
position: number;
|
|
89
|
+
lightLevel: number;
|
|
90
|
+
deviceChain: number;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export type stripLightServiceData = serviceData & {
|
|
94
|
+
model: SwitchBotBLEModel.StripLight,
|
|
95
|
+
modelName: SwitchBotBLEModelName.StripLight,
|
|
96
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.StripLight,
|
|
97
|
+
power: boolean;
|
|
98
|
+
state: boolean;
|
|
99
|
+
red: number;
|
|
100
|
+
green: number;
|
|
101
|
+
blue: number;
|
|
102
|
+
brightness: number;
|
|
103
|
+
delay: number;
|
|
104
|
+
preset: number;
|
|
105
|
+
color_mode: number;
|
|
106
|
+
speed: number;
|
|
107
|
+
loop_index: number;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export type lockServiceData = serviceData & {
|
|
111
|
+
model: SwitchBotBLEModel.Lock,
|
|
112
|
+
modelName: SwitchBotBLEModelName.Lock,
|
|
113
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Lock,
|
|
114
|
+
battery: number;
|
|
115
|
+
calibration: boolean;
|
|
116
|
+
status: string;
|
|
117
|
+
update_from_secondary_lock: boolean;
|
|
118
|
+
door_open: string;
|
|
119
|
+
double_lock_mode: boolean;
|
|
120
|
+
unclosed_alarm: boolean;
|
|
121
|
+
unlocked_alarm: boolean;
|
|
122
|
+
auto_lock_paused: boolean;
|
|
123
|
+
night_latch: boolean;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export type lockProServiceData = serviceData & {
|
|
127
|
+
model: SwitchBotBLEModel.LockPro,
|
|
128
|
+
modelName: SwitchBotBLEModelName.LockPro,
|
|
129
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.LockPro,
|
|
130
|
+
battery: number;
|
|
131
|
+
calibration: boolean;
|
|
132
|
+
status: string;
|
|
133
|
+
update_from_secondary_lock: boolean;
|
|
134
|
+
door_open: string;
|
|
135
|
+
double_lock_mode: boolean;
|
|
136
|
+
unclosed_alarm: boolean;
|
|
137
|
+
unlocked_alarm: boolean;
|
|
138
|
+
auto_lock_paused: boolean;
|
|
139
|
+
night_latch: boolean;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export type meterServiceData = serviceData & {
|
|
143
|
+
model: SwitchBotBLEModel.Meter,
|
|
144
|
+
modelName: SwitchBotBLEModelName.Meter,
|
|
145
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter,
|
|
146
|
+
temperature: temperature;
|
|
147
|
+
fahrenheit: boolean;
|
|
148
|
+
humidity: number;
|
|
149
|
+
battery: number;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export type meterPlusServiceData = serviceData & {
|
|
153
|
+
model: SwitchBotBLEModel.MeterPlus,
|
|
154
|
+
modelName: SwitchBotBLEModelName.MeterPlus,
|
|
155
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus,
|
|
156
|
+
temperature: temperature;
|
|
157
|
+
fahrenheit: boolean;
|
|
158
|
+
humidity: number;
|
|
159
|
+
battery: number;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export type outdoorMeterServiceData = serviceData & {
|
|
163
|
+
model: SwitchBotBLEModel.OutdoorMeter,
|
|
164
|
+
modelName: SwitchBotBLEModelName.OutdoorMeter,
|
|
165
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.OutdoorMeter,
|
|
166
|
+
temperature: temperature;
|
|
167
|
+
fahrenheit: boolean;
|
|
168
|
+
humidity: number;
|
|
169
|
+
battery: number;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export type motionSensorServiceData = serviceData & {
|
|
173
|
+
model: SwitchBotBLEModel.MotionSensor,
|
|
174
|
+
modelName: SwitchBotBLEModelName.MotionSensor,
|
|
175
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.MotionSensor,
|
|
176
|
+
tested: boolean;
|
|
177
|
+
movement: boolean;
|
|
178
|
+
battery: number;
|
|
179
|
+
led: number;
|
|
180
|
+
iot: number;
|
|
181
|
+
sense_distance: number;
|
|
182
|
+
lightLevel: string;
|
|
183
|
+
is_light: boolean;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export type plugMiniUSServiceData = serviceData & {
|
|
187
|
+
model: SwitchBotBLEModel.PlugMiniUS,
|
|
188
|
+
modelName: SwitchBotBLEModelName.PlugMini,
|
|
189
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
|
|
190
|
+
state: string;
|
|
191
|
+
delay: boolean;
|
|
192
|
+
timer: boolean;
|
|
193
|
+
syncUtcTime: boolean;
|
|
194
|
+
wifiRssi: number;
|
|
195
|
+
overload: boolean;
|
|
196
|
+
currentPower: number;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export type plugMiniJPServiceData = serviceData & {
|
|
200
|
+
model: SwitchBotBLEModel.PlugMiniUS,
|
|
201
|
+
modelName: SwitchBotBLEModelName.PlugMini,
|
|
202
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
|
|
203
|
+
state: string;
|
|
204
|
+
delay: boolean;
|
|
205
|
+
timer: boolean;
|
|
206
|
+
syncUtcTime: boolean;
|
|
207
|
+
wifiRssi: number;
|
|
208
|
+
overload: boolean;
|
|
209
|
+
currentPower: number;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
export type blindTiltServiceData = serviceData & {
|
|
213
|
+
model: SwitchBotBLEModel.BlindTilt,
|
|
214
|
+
modelName: SwitchBotBLEModelName.BlindTilt,
|
|
215
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.BlindTilt,
|
|
216
|
+
calibration: boolean;
|
|
217
|
+
battery: number;
|
|
218
|
+
inMotion: boolean;
|
|
219
|
+
tilt: number;
|
|
220
|
+
lightLevel: number;
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export type ceilingLightServiceData = serviceData & {
|
|
224
|
+
model: SwitchBotBLEModel.CeilingLight,
|
|
225
|
+
modelName: SwitchBotBLEModelName.CeilingLight,
|
|
226
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLight,
|
|
227
|
+
color_temperature: number;
|
|
228
|
+
power: boolean;
|
|
229
|
+
state: boolean;
|
|
230
|
+
red: number;
|
|
231
|
+
green: number;
|
|
232
|
+
blue: number;
|
|
233
|
+
brightness: number;
|
|
234
|
+
delay: number;
|
|
235
|
+
preset: number;
|
|
236
|
+
color_mode: number;
|
|
237
|
+
speed: number;
|
|
238
|
+
loop_index: number;
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
export type ceilingLightProServiceData = serviceData & {
|
|
242
|
+
model: SwitchBotBLEModel.CeilingLightPro,
|
|
243
|
+
modelName: SwitchBotBLEModelName.CeilingLightPro,
|
|
244
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLightPro,
|
|
245
|
+
color_temperature: number;
|
|
246
|
+
power: boolean;
|
|
247
|
+
state: boolean;
|
|
248
|
+
red: number;
|
|
249
|
+
green: number;
|
|
250
|
+
blue: number;
|
|
251
|
+
brightness: number;
|
|
252
|
+
delay: number;
|
|
253
|
+
preset: number;
|
|
254
|
+
color_mode: number;
|
|
255
|
+
speed: number;
|
|
256
|
+
loop_index: number;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
export type hub2ServiceData = serviceData & {
|
|
260
|
+
model: SwitchBotBLEModel.Hub2,
|
|
261
|
+
modelName: SwitchBotBLEModelName.Hub2,
|
|
262
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub2,
|
|
263
|
+
temperature: temperature;
|
|
264
|
+
fahrenheit: boolean;
|
|
265
|
+
humidity: number;
|
|
266
|
+
lightLevel: number;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
export type batteryCirculatorFanServiceData = serviceData & {
|
|
270
|
+
model: SwitchBotBLEModel.Unknown,
|
|
271
|
+
modelName: SwitchBotBLEModelName.Unknown,
|
|
272
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown,
|
|
273
|
+
state: string;
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
export type waterLeakDetectorServiceData = serviceData & {
|
|
277
|
+
model: SwitchBotBLEModel.Unknown,
|
|
278
|
+
modelName: SwitchBotBLEModelName.Unknown,
|
|
279
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown,
|
|
280
|
+
state: boolean;
|
|
281
|
+
status: number;
|
|
282
|
+
battery: number;
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
export type humidifierServiceData = serviceData & {
|
|
286
|
+
model: SwitchBotBLEModel.Humidifier,
|
|
287
|
+
modelName: SwitchBotBLEModelName.Humidifier,
|
|
288
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier,
|
|
289
|
+
onState: boolean;
|
|
290
|
+
autoMode: boolean;
|
|
291
|
+
percentage: number;
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
export type robotVacuumCleanerServiceData = serviceData & {
|
|
295
|
+
model: SwitchBotBLEModel.Unknown,
|
|
296
|
+
modelName: SwitchBotBLEModelName.Unknown,
|
|
297
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown,
|
|
298
|
+
state: string;
|
|
299
|
+
battery: number;
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export type temperature = {
|
|
303
|
+
c: number;
|
|
304
|
+
f: number;
|
|
305
|
+
};
|