node-switchbot 2.1.2-beta.1 → 2.1.2-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/CHANGELOG.md +11 -1
- package/dist/advertising.d.ts +77 -44
- package/dist/advertising.d.ts.map +1 -1
- package/dist/advertising.js +59 -48
- package/dist/advertising.js.map +1 -1
- package/dist/device/woblindtilt.d.ts +4 -2
- package/dist/device/woblindtilt.d.ts.map +1 -1
- package/dist/device/woblindtilt.js +4 -2
- package/dist/device/woblindtilt.js.map +1 -1
- package/dist/device/wobulb.d.ts +4 -2
- package/dist/device/wobulb.d.ts.map +1 -1
- package/dist/device/wobulb.js +4 -2
- package/dist/device/wobulb.js.map +1 -1
- package/dist/device/wocontact.d.ts +4 -2
- package/dist/device/wocontact.d.ts.map +1 -1
- package/dist/device/wocontact.js +4 -2
- package/dist/device/wocontact.js.map +1 -1
- package/dist/device/wocurtain.d.ts +3 -1
- package/dist/device/wocurtain.d.ts.map +1 -1
- package/dist/device/wocurtain.js +6 -2
- package/dist/device/wocurtain.js.map +1 -1
- package/dist/device/wohand.d.ts +4 -2
- package/dist/device/wohand.d.ts.map +1 -1
- package/dist/device/wohand.js +4 -2
- package/dist/device/wohand.js.map +1 -1
- package/dist/device/wohub2.d.ts +6 -4
- package/dist/device/wohub2.d.ts.map +1 -1
- package/dist/device/wohub2.js +17 -14
- package/dist/device/wohub2.js.map +1 -1
- package/dist/device/wohumi.d.ts +4 -2
- package/dist/device/wohumi.d.ts.map +1 -1
- package/dist/device/wohumi.js +4 -2
- package/dist/device/wohumi.js.map +1 -1
- package/dist/device/woiosensorth.d.ts +4 -2
- package/dist/device/woiosensorth.d.ts.map +1 -1
- package/dist/device/woiosensorth.js +4 -2
- package/dist/device/woiosensorth.js.map +1 -1
- package/dist/device/woplugmini.d.ts +7 -4
- package/dist/device/woplugmini.d.ts.map +1 -1
- package/dist/device/woplugmini.js +7 -4
- package/dist/device/woplugmini.js.map +1 -1
- package/dist/device/wopresence.d.ts +4 -2
- package/dist/device/wopresence.d.ts.map +1 -1
- package/dist/device/wopresence.js +4 -2
- package/dist/device/wopresence.js.map +1 -1
- package/dist/device/wosensorth.d.ts +7 -4
- package/dist/device/wosensorth.d.ts.map +1 -1
- package/dist/device/wosensorth.js +7 -4
- package/dist/device/wosensorth.js.map +1 -1
- package/dist/device/wosmartlock.d.ts +6 -2
- package/dist/device/wosmartlock.d.ts.map +1 -1
- package/dist/device/wosmartlock.js +6 -2
- package/dist/device/wosmartlock.js.map +1 -1
- package/dist/device/wosmartlockpro.d.ts +50 -0
- package/dist/device/wosmartlockpro.d.ts.map +1 -0
- package/dist/device/wosmartlockpro.js +257 -0
- package/dist/device/wosmartlockpro.js.map +1 -0
- package/dist/device/wostrip.d.ts +4 -2
- package/dist/device/wostrip.d.ts.map +1 -1
- package/dist/device/wostrip.js +4 -2
- package/dist/device/wostrip.js.map +1 -1
- package/dist/device.d.ts +2 -2
- package/dist/device.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/switchbot.d.ts.map +1 -1
- package/dist/switchbot.js +71 -54
- package/dist/switchbot.js.map +1 -1
- package/dist/types.d.ts +228 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +110 -0
- package/dist/types.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { SwitchbotDevice } from '../device.js';
|
|
3
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelName, SwitchBotBLEModelFriendlyName } from '../types.js';
|
|
4
|
+
import Noble from '@stoprocent/noble';
|
|
5
|
+
export declare class WoSmartLockPro extends SwitchbotDevice {
|
|
6
|
+
_iv: Buffer | null;
|
|
7
|
+
_key_id: string;
|
|
8
|
+
_encryption_key: Buffer | null;
|
|
9
|
+
static COMMAND_GET_CK_IV: string;
|
|
10
|
+
static COMMAND_LOCK_INFO: string;
|
|
11
|
+
static COMMAND_UNLOCK: string;
|
|
12
|
+
static COMMAND_UNLOCK_NO_UNLATCH: string;
|
|
13
|
+
static COMMAND_LOCK: string;
|
|
14
|
+
static COMMAND_ENABLE_NOTIFICATIONS: string;
|
|
15
|
+
static COMMAND_DISABLE_NOTIFICATIONS: string;
|
|
16
|
+
static Result: {
|
|
17
|
+
ERROR: number;
|
|
18
|
+
SUCCESS: number;
|
|
19
|
+
SUCCESS_LOW_BATTERY: number;
|
|
20
|
+
};
|
|
21
|
+
static validateResponse(res: Buffer): number;
|
|
22
|
+
static getLockStatus(code: number): "LOCKED" | "UNLOCKED" | "LOCKING" | "UNLOCKING" | "LOCKING_STOP" | "UNLOCKING_STOP" | "NOT_FULLY_LOCKED" | "UNKNOWN";
|
|
23
|
+
static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): {
|
|
24
|
+
model: SwitchBotBLEModel;
|
|
25
|
+
modelName: SwitchBotBLEModelName;
|
|
26
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
27
|
+
battery: number;
|
|
28
|
+
calibration: boolean;
|
|
29
|
+
status: string;
|
|
30
|
+
update_from_secondary_lock: boolean;
|
|
31
|
+
door_open: boolean;
|
|
32
|
+
double_lock_mode: boolean;
|
|
33
|
+
unclosed_alarm: boolean;
|
|
34
|
+
unlocked_alarm: boolean;
|
|
35
|
+
auto_lock_paused: boolean;
|
|
36
|
+
night_latch: boolean;
|
|
37
|
+
} | null;
|
|
38
|
+
constructor(peripheral: Noble.Peripheral, noble: typeof Noble);
|
|
39
|
+
setKey(keyId: string, encryptionKey: string): void;
|
|
40
|
+
unlock(): Promise<number>;
|
|
41
|
+
unlockNoUnlatch(): Promise<number>;
|
|
42
|
+
lock(): Promise<number>;
|
|
43
|
+
info(): Promise<unknown>;
|
|
44
|
+
_encrypt(str: string): string;
|
|
45
|
+
_decrypt(data: Buffer): Buffer;
|
|
46
|
+
_getIv(): Promise<Buffer>;
|
|
47
|
+
_encryptedCommand(key: string): Promise<Buffer>;
|
|
48
|
+
_operateLock(key: string, encrypt?: boolean): Promise<Buffer>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=wosmartlockpro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wosmartlockpro.d.ts","sourceRoot":"","sources":["../../src/device/wosmartlockpro.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAGtC,qBAAa,cAAe,SAAQ,eAAe;IACjD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,MAAM,CAAC,iBAAiB,SAAc;IACtC,MAAM,CAAC,iBAAiB,SAAgB;IACxC,MAAM,CAAC,cAAc,SAAoB;IACzC,MAAM,CAAC,yBAAyB,SAAoB;IACpD,MAAM,CAAC,YAAY,SAAoB;IACvC,MAAM,CAAC,4BAA4B,SAAsB;IACzD,MAAM,CAAC,6BAA6B,SAAU;IAE9C,MAAM,CAAC,MAAM;;;;MAIX;IAEF,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAYnC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM;IAqBjC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;;;;;;gBA8CzG,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK;IAiB7D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAiB3C,MAAM;IAsBN,eAAe;IAsBf,IAAI;IAsBJ,IAAI;IAkBJ,QAAQ,CAAC,GAAG,EAAE,MAAM;IAKpB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAKf,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAQzB,iBAAiB,CAAC,GAAG,EAAE,MAAM;IAoBnC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAwBpE"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* wosmartlock.ts: Switchbot BLE API registration.
|
|
3
|
+
* adapted off the work done by [pySwitchbot](https://github.com/Danielhiversen/pySwitchbot)
|
|
4
|
+
*/
|
|
5
|
+
import { SwitchbotDevice } from '../device.js';
|
|
6
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelName, SwitchBotBLEModelFriendlyName } from '../types.js';
|
|
7
|
+
import * as Crypto from 'crypto';
|
|
8
|
+
export class WoSmartLockPro extends SwitchbotDevice {
|
|
9
|
+
_iv;
|
|
10
|
+
_key_id;
|
|
11
|
+
_encryption_key;
|
|
12
|
+
static COMMAND_GET_CK_IV = '570f2103';
|
|
13
|
+
static COMMAND_LOCK_INFO = '570f4f8102';
|
|
14
|
+
static COMMAND_UNLOCK = '0f4e0101000180';
|
|
15
|
+
static COMMAND_UNLOCK_NO_UNLATCH = '570f4e010110a0';
|
|
16
|
+
static COMMAND_LOCK = '0f4e0101000100';
|
|
17
|
+
static COMMAND_ENABLE_NOTIFICATIONS = '0e01001e00008101';
|
|
18
|
+
static COMMAND_DISABLE_NOTIFICATIONS = '0e00';
|
|
19
|
+
static Result = {
|
|
20
|
+
ERROR: 0x00,
|
|
21
|
+
SUCCESS: 0x01,
|
|
22
|
+
SUCCESS_LOW_BATTERY: 0x06,
|
|
23
|
+
};
|
|
24
|
+
static validateResponse(res) {
|
|
25
|
+
if (res.length >= 3) {
|
|
26
|
+
switch (res.readUInt8(0)) {
|
|
27
|
+
case WoSmartLockPro.Result.SUCCESS:
|
|
28
|
+
return WoSmartLockPro.Result.SUCCESS;
|
|
29
|
+
case WoSmartLockPro.Result.SUCCESS_LOW_BATTERY:
|
|
30
|
+
return WoSmartLockPro.Result.SUCCESS_LOW_BATTERY;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return WoSmartLockPro.Result.ERROR;
|
|
34
|
+
}
|
|
35
|
+
static getLockStatus(code) {
|
|
36
|
+
switch (code) {
|
|
37
|
+
case 0b0000000:
|
|
38
|
+
return 'LOCKED';
|
|
39
|
+
case 0b0010000:
|
|
40
|
+
return 'UNLOCKED';
|
|
41
|
+
case 0b0100000:
|
|
42
|
+
return 'LOCKING';
|
|
43
|
+
case 0b0110000:
|
|
44
|
+
return 'UNLOCKING';
|
|
45
|
+
case 0b1000000:
|
|
46
|
+
return 'LOCKING_STOP';
|
|
47
|
+
case 0b1010000:
|
|
48
|
+
return 'UNLOCKING_STOP';
|
|
49
|
+
case 0b1100000: //Only EU lock type
|
|
50
|
+
return 'NOT_FULLY_LOCKED';
|
|
51
|
+
default:
|
|
52
|
+
return 'UNKNOWN';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static parseServiceData(serviceData, manufacturerData, onlog) {
|
|
56
|
+
if (manufacturerData.length < 11) {
|
|
57
|
+
if (onlog && typeof onlog === 'function') {
|
|
58
|
+
onlog(`[parseServiceDataForWoSmartLockPro] Buffer length ${manufacturerData.length} is too short!`);
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
// adv data needs both service data and manufacturer data
|
|
63
|
+
// byte var names based on documentation
|
|
64
|
+
const byte2 = serviceData.readUInt8(2);
|
|
65
|
+
const byte15 = manufacturerData.readUInt8(9);
|
|
66
|
+
const byte16 = manufacturerData.readUInt8(10);
|
|
67
|
+
const battery = byte2 & 0b01111111; // %
|
|
68
|
+
const calibration = byte15 & 0b10000000 ? true : false;
|
|
69
|
+
const status = WoSmartLockPro.getLockStatus(byte15 & 0b01110000);
|
|
70
|
+
const update_from_secondary_lock = byte15 & 0b00001000 ? true : false;
|
|
71
|
+
const door_open = byte15 & 0b00000100 ? true : false;
|
|
72
|
+
const double_lock_mode = byte16 & 0b10000000 ? true : false;
|
|
73
|
+
const unclosed_alarm = byte16 & 0b00100000 ? true : false;
|
|
74
|
+
const unlocked_alarm = byte16 & 0b00010000 ? true : false;
|
|
75
|
+
const auto_lock_paused = byte16 & 0b00000010 ? true : false;
|
|
76
|
+
const night_latch = manufacturerData.length > 11 && manufacturerData.readUInt8(11) & 0b00000001 ? true : false;
|
|
77
|
+
const data = {
|
|
78
|
+
model: SwitchBotBLEModel.LockPro,
|
|
79
|
+
modelName: SwitchBotBLEModelName.LockPro,
|
|
80
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.LockPro,
|
|
81
|
+
battery: battery,
|
|
82
|
+
calibration: calibration,
|
|
83
|
+
status: status,
|
|
84
|
+
update_from_secondary_lock: update_from_secondary_lock,
|
|
85
|
+
door_open: door_open,
|
|
86
|
+
double_lock_mode: double_lock_mode,
|
|
87
|
+
unclosed_alarm: unclosed_alarm,
|
|
88
|
+
unlocked_alarm: unlocked_alarm,
|
|
89
|
+
auto_lock_paused: auto_lock_paused,
|
|
90
|
+
night_latch: night_latch,
|
|
91
|
+
};
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
constructor(peripheral, noble) {
|
|
95
|
+
super(peripheral, noble);
|
|
96
|
+
this._iv = null;
|
|
97
|
+
this._key_id = '';
|
|
98
|
+
this._encryption_key = null;
|
|
99
|
+
}
|
|
100
|
+
/* ------------------------------------------------------------------
|
|
101
|
+
* setKey()
|
|
102
|
+
* - initialise the encryption key info for valid lock communication, this currently must be retrived externally
|
|
103
|
+
*
|
|
104
|
+
* [Arguments]
|
|
105
|
+
* - keyId, encryptionKey
|
|
106
|
+
*
|
|
107
|
+
* [Return value]
|
|
108
|
+
* - void
|
|
109
|
+
* ---------------------------------------------------------------- */
|
|
110
|
+
setKey(keyId, encryptionKey) {
|
|
111
|
+
this._iv = null;
|
|
112
|
+
this._key_id = keyId;
|
|
113
|
+
this._encryption_key = Buffer.from(encryptionKey, 'hex');
|
|
114
|
+
}
|
|
115
|
+
/* ------------------------------------------------------------------
|
|
116
|
+
* unlock()
|
|
117
|
+
* - Unlock the Smart Lock
|
|
118
|
+
*
|
|
119
|
+
* [Arguments]
|
|
120
|
+
* - none
|
|
121
|
+
*
|
|
122
|
+
* [Return value]
|
|
123
|
+
* - Promise object
|
|
124
|
+
* WoSmartLockPro.LockResult will be passed to the `resolve()`.
|
|
125
|
+
* ---------------------------------------------------------------- */
|
|
126
|
+
unlock() {
|
|
127
|
+
return new Promise((resolve, reject) => {
|
|
128
|
+
this._operateLock(WoSmartLockPro.COMMAND_UNLOCK)
|
|
129
|
+
.then((resBuf) => {
|
|
130
|
+
resolve(WoSmartLockPro.validateResponse(resBuf));
|
|
131
|
+
}).catch((error) => {
|
|
132
|
+
reject(error);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/* ------------------------------------------------------------------
|
|
137
|
+
* unlockNoUnlatch()
|
|
138
|
+
* - Unlock the Smart Lock without unlatching door
|
|
139
|
+
*
|
|
140
|
+
* [Arguments]
|
|
141
|
+
* - none
|
|
142
|
+
*
|
|
143
|
+
* [Return value]
|
|
144
|
+
* - Promise object
|
|
145
|
+
* WoSmartLockPro.LockResult will be passed to the `resolve()`.
|
|
146
|
+
* ---------------------------------------------------------------- */
|
|
147
|
+
unlockNoUnlatch() {
|
|
148
|
+
return new Promise((resolve, reject) => {
|
|
149
|
+
this._operateLock(WoSmartLockPro.COMMAND_UNLOCK_NO_UNLATCH)
|
|
150
|
+
.then((resBuf) => {
|
|
151
|
+
resolve(WoSmartLockPro.validateResponse(resBuf));
|
|
152
|
+
}).catch((error) => {
|
|
153
|
+
reject(error);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/* ------------------------------------------------------------------
|
|
158
|
+
* lock()
|
|
159
|
+
* - Lock the Smart Lock
|
|
160
|
+
*
|
|
161
|
+
* [Arguments]
|
|
162
|
+
* - none
|
|
163
|
+
*
|
|
164
|
+
* [Return value]
|
|
165
|
+
* - Promise object
|
|
166
|
+
* WoSmartLockPro.LockResult will be passed to the `resolve()`.
|
|
167
|
+
* ---------------------------------------------------------------- */
|
|
168
|
+
lock() {
|
|
169
|
+
return new Promise((resolve, reject) => {
|
|
170
|
+
this._operateLock(WoSmartLockPro.COMMAND_LOCK)
|
|
171
|
+
.then((resBuf) => {
|
|
172
|
+
resolve(WoSmartLockPro.validateResponse(resBuf));
|
|
173
|
+
}).catch((error) => {
|
|
174
|
+
reject(error);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/* ------------------------------------------------------------------
|
|
179
|
+
* info()
|
|
180
|
+
* - Get general state info from the Smart Lock
|
|
181
|
+
*
|
|
182
|
+
* [Arguments]
|
|
183
|
+
* - none
|
|
184
|
+
*
|
|
185
|
+
* [Return value]
|
|
186
|
+
* - Promise object
|
|
187
|
+
* state object will be passed to the `resolve()`
|
|
188
|
+
* ---------------------------------------------------------------- */
|
|
189
|
+
info() {
|
|
190
|
+
return new Promise((resolve, reject) => {
|
|
191
|
+
this._operateLock(WoSmartLockPro.COMMAND_LOCK_INFO)
|
|
192
|
+
.then(resBuf => {
|
|
193
|
+
const data = {
|
|
194
|
+
'calibration': Boolean(resBuf[1] & 0b10000000),
|
|
195
|
+
'status': WoSmartLockPro.getLockStatus((resBuf[1] & 0b01110000)),
|
|
196
|
+
'door_open': Boolean(resBuf[1] & 0b00000100),
|
|
197
|
+
'unclosed_alarm': Boolean(resBuf[2] & 0b00100000),
|
|
198
|
+
'unlocked_alarm': Boolean(resBuf[2] & 0b00010000),
|
|
199
|
+
};
|
|
200
|
+
resolve(data);
|
|
201
|
+
}).catch((error) => {
|
|
202
|
+
reject(error);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
_encrypt(str) {
|
|
207
|
+
const cipher = Crypto.createCipheriv('aes-128-ctr', this._encryption_key, this._iv);
|
|
208
|
+
return Buffer.concat([cipher.update(str, 'hex'), cipher.final()]).toString('hex');
|
|
209
|
+
}
|
|
210
|
+
_decrypt(data) {
|
|
211
|
+
const decipher = Crypto.createDecipheriv('aes-128-ctr', this._encryption_key, this._iv);
|
|
212
|
+
return Buffer.concat([decipher.update(data), decipher.final()]);
|
|
213
|
+
}
|
|
214
|
+
async _getIv() {
|
|
215
|
+
if (this._iv === null) {
|
|
216
|
+
const res = await this._operateLock(WoSmartLockPro.COMMAND_GET_CK_IV + this._key_id, false);
|
|
217
|
+
this._iv = res.subarray(4);
|
|
218
|
+
}
|
|
219
|
+
return this._iv;
|
|
220
|
+
}
|
|
221
|
+
async _encryptedCommand(key) {
|
|
222
|
+
const iv = await this._getIv();
|
|
223
|
+
const req = Buffer.from(key.substring(0, 2) + this._key_id + Buffer.from(iv.subarray(0, 2)).toString('hex') + this._encrypt(key.substring(2)), 'hex');
|
|
224
|
+
const bytes = await this._command(req);
|
|
225
|
+
const buf = Buffer.from(bytes);
|
|
226
|
+
const code = WoSmartLockPro.validateResponse(buf);
|
|
227
|
+
if (code !== WoSmartLockPro.Result.ERROR) {
|
|
228
|
+
return Buffer.concat([buf.subarray(0, 1), this._decrypt(buf.subarray(4))]);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
throw (new Error('The device returned an error: 0x' + buf.toString('hex')));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
_operateLock(key, encrypt = true) {
|
|
235
|
+
//encrypted command
|
|
236
|
+
if (encrypt) {
|
|
237
|
+
return this._encryptedCommand(key);
|
|
238
|
+
}
|
|
239
|
+
//unencypted command
|
|
240
|
+
return new Promise((resolve, reject) => {
|
|
241
|
+
const req = Buffer.from(key.substring(0, 2) + '000000' + key.substring(2), 'hex');
|
|
242
|
+
this._command(req).then(bytes => {
|
|
243
|
+
const buf = Buffer.from(bytes);
|
|
244
|
+
const code = WoSmartLockPro.validateResponse(buf);
|
|
245
|
+
if (code === WoSmartLockPro.Result.ERROR) {
|
|
246
|
+
reject(new Error('The device returned an error: 0x' + buf.toString('hex')));
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
resolve(buf);
|
|
250
|
+
}
|
|
251
|
+
}).catch(error => {
|
|
252
|
+
reject(error);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=wosmartlockpro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wosmartlockpro.js","sourceRoot":"","sources":["../../src/device/wosmartlockpro.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEtG,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,OAAO,cAAe,SAAQ,eAAe;IACjD,GAAG,CAAgB;IACnB,OAAO,CAAS;IAChB,eAAe,CAAgB;IAE/B,MAAM,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACtC,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC;IACxC,MAAM,CAAC,cAAc,GAAG,gBAAgB,CAAC;IACzC,MAAM,CAAC,yBAAyB,GAAG,gBAAgB,CAAC;IACpD,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAC;IACvC,MAAM,CAAC,4BAA4B,GAAG,kBAAkB,CAAC;IACzD,MAAM,CAAC,6BAA6B,GAAG,MAAM,CAAC;IAE9C,MAAM,CAAC,MAAM,GAAG;QACd,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,mBAAmB,EAAE,IAAI;KAC1B,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,GAAW;QACjC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,KAAK,cAAc,CAAC,MAAM,CAAC,OAAO;oBAChC,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;gBACvC,KAAK,cAAc,CAAC,MAAM,CAAC,mBAAmB;oBAC5C,OAAO,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACrD,CAAC;QACH,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,UAAU,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,WAAW,CAAC;YACrB,KAAK,SAAS;gBACZ,OAAO,cAAc,CAAC;YACxB,KAAK,SAAS;gBACZ,OAAO,gBAAgB,CAAC;YAC1B,KAAK,SAAS,EAAE,mBAAmB;gBACjC,OAAO,kBAAkB,CAAC;YAC5B;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,WAAmB,EAAE,gBAAwB,EAAE,KAA8C;QACnH,IAAI,gBAAgB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,qDAAqD,gBAAgB,CAAC,MAAM,gBAAgB,CAC7F,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yDAAyD;QACzD,wCAAwC;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,IAAI;QACxC,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACjE,MAAM,0BAA0B,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACrD,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,GAAG,EAAE,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAE/G,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,OAAO;YAChC,SAAS,EAAE,qBAAqB,CAAC,OAAO;YACxC,iBAAiB,EAAE,6BAA6B,CAAC,OAAO;YACxD,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,MAAM;YACd,0BAA0B,EAAE,0BAA0B;YACtD,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,gBAAgB;YAClC,cAAc,EAAE,cAAc;YAC9B,cAAc,EAAE,cAAc;YAC9B,gBAAgB,EAAE,gBAAgB;YAClC,WAAW,EAAE,WAAW;SACzB,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,UAA4B,EAAE,KAAmB;QAC3D,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;0EASsE;IACtE,MAAM,CAAC,KAAa,EAAE,aAAqB;QACzC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,MAAM;QACJ,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC;iBAC7C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,eAAe;QACb,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,yBAAyB,CAAC;iBACxD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,IAAI;QACF,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC;iBAC3C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,IAAI;QACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,CAAC;iBAChD,IAAI,CAAC,MAAM,CAAC,EAAE;gBACb,MAAM,IAAI,GAAG;oBACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;oBAC9C,QAAQ,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;oBAChE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;oBAC5C,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;oBACjD,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;iBAClD,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,eAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5F,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW;QACjC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CACrB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACnH,KAAK,CAAC,CAAC;QAEX,MAAM,KAAK,GAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,IAAI,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,MAAM,CACJ,IAAI,KAAK,CAAC,kCAAkC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CACjE,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,UAAmB,IAAI;QAC/C,mBAAmB;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,oBAAoB;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAElF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAElD,IAAI,IAAI,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC"}
|
package/dist/device/wostrip.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { SwitchbotDevice } from '../device.js';
|
|
3
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelName, SwitchBotBLEModelFriendlyName } from '../types.js';
|
|
3
4
|
/**
|
|
4
5
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/colorbulb.md
|
|
5
6
|
*/
|
|
6
7
|
export declare class WoStrip extends SwitchbotDevice {
|
|
7
8
|
static parseServiceData(buf: Buffer, onlog: ((message: string) => void) | undefined): {
|
|
8
|
-
model:
|
|
9
|
-
modelName:
|
|
9
|
+
model: SwitchBotBLEModel;
|
|
10
|
+
modelName: SwitchBotBLEModelName;
|
|
11
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
10
12
|
state: boolean;
|
|
11
13
|
brightness: number;
|
|
12
14
|
red: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wostrip.d.ts","sourceRoot":"","sources":["../../src/device/wostrip.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wostrip.d.ts","sourceRoot":"","sources":["../../src/device/wostrip.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEtG;;GAEG;AACH,qBAAa,OAAQ,SAAQ,eAAe;IAC1C,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;;;;;;IAkDnF;;OAEG;IACH,SAAS;IAIT;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE;IAKhC;;OAEG;IACH,MAAM;IAIN;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM;IAmBhC;;OAEG;IACH,mBAAmB,CAAC,iBAAiB,EAAE,OAAO;IAa9C;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAgEnE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;CAgC5B"}
|
package/dist/device/wostrip.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* wostrip.ts: Switchbot BLE API registration.
|
|
4
4
|
*/
|
|
5
5
|
import { SwitchbotDevice } from '../device.js';
|
|
6
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelName, SwitchBotBLEModelFriendlyName } from '../types.js';
|
|
6
7
|
/**
|
|
7
8
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/colorbulb.md
|
|
8
9
|
*/
|
|
@@ -34,8 +35,9 @@ export class WoStrip extends SwitchbotDevice {
|
|
|
34
35
|
const speed = byte9 & 0b01111111;
|
|
35
36
|
const loop_index = byte10 & 0b11111110;
|
|
36
37
|
const data = {
|
|
37
|
-
model:
|
|
38
|
-
modelName:
|
|
38
|
+
model: SwitchBotBLEModel.StripLight,
|
|
39
|
+
modelName: SwitchBotBLEModelName.StripLight,
|
|
40
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.StripLight,
|
|
39
41
|
state: state,
|
|
40
42
|
brightness: brightness,
|
|
41
43
|
red: red,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wostrip.js","sourceRoot":"","sources":["../../src/device/wostrip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wostrip.js","sourceRoot":"","sources":["../../src/device/wostrip.ts"],"names":[],"mappings":"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"}
|
package/dist/device.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare class SwitchbotDevice {
|
|
|
19
19
|
_id: string | null;
|
|
20
20
|
_address: string | null;
|
|
21
21
|
_model: string | null;
|
|
22
|
-
_modelName:
|
|
22
|
+
_modelName: import("./types.js").SwitchBotBLEModelName | null;
|
|
23
23
|
_was_connected_explicitly: boolean;
|
|
24
24
|
_connected: boolean;
|
|
25
25
|
_onconnect: () => void;
|
|
@@ -30,7 +30,7 @@ export declare class SwitchbotDevice {
|
|
|
30
30
|
get id(): string | null;
|
|
31
31
|
get address(): string | null;
|
|
32
32
|
get model(): string | null;
|
|
33
|
-
get modelName():
|
|
33
|
+
get modelName(): import("./types.js").SwitchBotBLEModelName | null;
|
|
34
34
|
get connectionState(): "error" | "connected" | "connecting" | "disconnected" | "disconnecting";
|
|
35
35
|
set onconnect(func: () => void);
|
|
36
36
|
set ondisconnect(func: () => void);
|
package/dist/device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAItC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;CACrC,GAAG,IAAI,CAAC;AAET,qBAAa,eAAe;IAC1B,WAAW,mBAAC;IACZ,MAAM,eAAC;IACP,MAAM,EAAE,KAAK,CAAC;IACd,kBAAkB,SAAsC;IACxD,gBAAgB,SAAsC;IACtD,iBAAiB,SAAsC;IACvD,iBAAiB,SAAU;IAC3B,kBAAkB,SAAQ;IAC1B,mBAAmB,SAAQ;IAC3B,qBAAqB,SAAQ;IAC7B,GAAG,gBAAC;IACJ,QAAQ,gBAAC;IACT,MAAM,gBAAC;IACP,UAAU,
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAItC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;CACrC,GAAG,IAAI,CAAC;AAET,qBAAa,eAAe;IAC1B,WAAW,mBAAC;IACZ,MAAM,eAAC;IACP,MAAM,EAAE,KAAK,CAAC;IACd,kBAAkB,SAAsC;IACxD,gBAAgB,SAAsC;IACtD,iBAAiB,SAAsC;IACvD,iBAAiB,SAAU;IAC3B,kBAAkB,SAAQ;IAC1B,mBAAmB,SAAQ;IAC3B,qBAAqB,SAAQ;IAC7B,GAAG,gBAAC;IACJ,QAAQ,gBAAC;IACT,MAAM,gBAAC;IACP,UAAU,oDAAC;IACX,yBAAyB,UAAC;IAC1B,UAAU,UAAC;IACX,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;gBAS9B,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK;IAuB7D,IAAI,EAAE,kBAEL;IAED,IAAI,OAAO,kBAEV;IAED,IAAI,KAAK,kBAER;IAED,IAAI,SAAS,sDAEZ;IAED,IAAI,eAAe,4EAMlB;IAGD,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAK7B;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,EAKhC;IAaD,OAAO;IAKP,QAAQ;IA4DR,mBAAmB,IAAI,OAAO,CAAC,KAAK,CAAC;IAsErC,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAwB7C,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IAYjF,UAAU;IAoBV,YAAY;IAyBZ,UAAU;IAyBV,WAAW;IAmBX,aAAa;IAwCb,aAAa,CAAC,IAAI,EAAE,MAAM;IA4C1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgC1C,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAoBvC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBlD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;CAqBxE"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/switchbot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgB9C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAGtC,KAAK,MAAM,GAAG;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAA;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAgB;IAC7B,KAAK,EAAG,OAAO,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/C,0BAA0B,SAAQ;IAClC,yBAAyB,UAAM;gBAanB,MAAM,CAAC,EAAE,MAAM;IAKrB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM;IAmD1B,QAAQ,CAAC,MAAM,GAAE,MAAW;IAqHtB,KAAK;IAwCX,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IA+DvE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAgFnD,SAAS,CAAC,MAAM,GAAE,MAAW;IA6F7B,QAAQ;IAoBR,IAAI,CAAC,IAAI,EAAE,MAAM;CAmBlB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/switchbot.js
CHANGED
|
@@ -8,11 +8,14 @@ import { WoPresence } from './device/wopresence.js';
|
|
|
8
8
|
import { WoContact } from './device/wocontact.js';
|
|
9
9
|
import { WoSensorTH } from './device/wosensorth.js';
|
|
10
10
|
import { WoIOSensorTH } from './device/woiosensorth.js';
|
|
11
|
+
import { WoHub2 } from './device/wohub2.js';
|
|
11
12
|
import { WoHumi } from './device/wohumi.js';
|
|
12
13
|
import { WoPlugMini } from './device/woplugmini.js';
|
|
13
14
|
import { WoBulb } from './device/wobulb.js';
|
|
14
15
|
import { WoStrip } from './device/wostrip.js';
|
|
15
16
|
import { WoSmartLock } from './device/wosmartlock.js';
|
|
17
|
+
import { WoSmartLockPro } from './device/wosmartlockpro.js';
|
|
18
|
+
import { SwitchBotBLEModel } from './types.js';
|
|
16
19
|
export class SwitchBot {
|
|
17
20
|
ready;
|
|
18
21
|
noble;
|
|
@@ -66,6 +69,7 @@ export class SwitchBot {
|
|
|
66
69
|
* | | | If "u" is specified, this method will discover only Color Bulbs.
|
|
67
70
|
* | | | If "g" is specified, this method will discover only Plugs.
|
|
68
71
|
* | | | If "o" is specified, this method will discover only Locks.
|
|
72
|
+
* | | | If "$" is specified, this method will discover only Lock Pros.
|
|
69
73
|
* | | | If "i" is specified, this method will discover only Meter Pluses.
|
|
70
74
|
* | | | If "r" is specified, this method will discover only Locks.
|
|
71
75
|
* - id | String | Optional | If this value is set, this method will discover
|
|
@@ -93,21 +97,23 @@ export class SwitchBot {
|
|
|
93
97
|
required: false,
|
|
94
98
|
type: 'string',
|
|
95
99
|
enum: [
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
100
|
+
SwitchBotBLEModel.Bot,
|
|
101
|
+
SwitchBotBLEModel.Curtain,
|
|
102
|
+
SwitchBotBLEModel.Curtain3,
|
|
103
|
+
SwitchBotBLEModel.Humidifier,
|
|
104
|
+
SwitchBotBLEModel.Meter,
|
|
105
|
+
SwitchBotBLEModel.MeterPlus,
|
|
106
|
+
SwitchBotBLEModel.Hub2,
|
|
107
|
+
SwitchBotBLEModel.OutdoorMeter,
|
|
108
|
+
SwitchBotBLEModel.MotionSensor,
|
|
109
|
+
SwitchBotBLEModel.ContactSensor,
|
|
110
|
+
SwitchBotBLEModel.ColorBulb,
|
|
111
|
+
SwitchBotBLEModel.StripLight,
|
|
112
|
+
SwitchBotBLEModel.PlugMiniUS,
|
|
113
|
+
SwitchBotBLEModel.PlugMiniJP,
|
|
114
|
+
SwitchBotBLEModel.Lock,
|
|
115
|
+
SwitchBotBLEModel.LockPro,
|
|
116
|
+
SwitchBotBLEModel.BlindTilt,
|
|
111
117
|
],
|
|
112
118
|
},
|
|
113
119
|
id: { required: false, type: 'string', min: 12, max: 17 },
|
|
@@ -219,46 +225,52 @@ export class SwitchBot {
|
|
|
219
225
|
let device;
|
|
220
226
|
if (ad && ad.serviceData && ad.serviceData.model) {
|
|
221
227
|
switch (ad.serviceData.model) {
|
|
222
|
-
case
|
|
228
|
+
case SwitchBotBLEModel.Bot:
|
|
223
229
|
device = new WoHand(peripheral, this.noble);
|
|
224
230
|
break;
|
|
225
|
-
case
|
|
226
|
-
|
|
231
|
+
case SwitchBotBLEModel.Curtain:
|
|
232
|
+
case SwitchBotBLEModel.Curtain3:
|
|
233
|
+
device = new WoCurtain(peripheral, this.noble);
|
|
227
234
|
break;
|
|
228
|
-
case
|
|
235
|
+
case SwitchBotBLEModel.Humidifier:
|
|
229
236
|
device = new WoHumi(peripheral, this.noble);
|
|
230
237
|
break;
|
|
231
|
-
case
|
|
232
|
-
device = new
|
|
238
|
+
case SwitchBotBLEModel.Meter:
|
|
239
|
+
device = new WoSensorTH(peripheral, this.noble);
|
|
233
240
|
break;
|
|
234
|
-
case
|
|
235
|
-
device = new
|
|
241
|
+
case SwitchBotBLEModel.MeterPlus:
|
|
242
|
+
device = new WoSensorTH(peripheral, this.noble);
|
|
236
243
|
break;
|
|
237
|
-
case
|
|
238
|
-
|
|
239
|
-
device = new WoCurtain(peripheral, this.noble);
|
|
244
|
+
case SwitchBotBLEModel.Hub2:
|
|
245
|
+
device = new WoHub2(peripheral, this.noble);
|
|
240
246
|
break;
|
|
241
|
-
case
|
|
242
|
-
device = new
|
|
247
|
+
case SwitchBotBLEModel.OutdoorMeter:
|
|
248
|
+
device = new WoIOSensorTH(peripheral, this.noble);
|
|
249
|
+
break;
|
|
250
|
+
case SwitchBotBLEModel.MotionSensor:
|
|
251
|
+
device = new WoPresence(peripheral, this.noble);
|
|
243
252
|
break;
|
|
244
|
-
case
|
|
253
|
+
case SwitchBotBLEModel.ContactSensor:
|
|
254
|
+
device = new WoContact(peripheral, this.noble);
|
|
255
|
+
break;
|
|
256
|
+
case SwitchBotBLEModel.ColorBulb:
|
|
245
257
|
device = new WoBulb(peripheral, this.noble);
|
|
246
258
|
break;
|
|
247
|
-
case
|
|
248
|
-
|
|
259
|
+
case SwitchBotBLEModel.StripLight:
|
|
260
|
+
device = new WoStrip(peripheral, this.noble);
|
|
261
|
+
break;
|
|
262
|
+
case SwitchBotBLEModel.PlugMiniUS:
|
|
263
|
+
case SwitchBotBLEModel.PlugMiniJP:
|
|
249
264
|
device = new WoPlugMini(peripheral, this.noble);
|
|
250
265
|
break;
|
|
251
|
-
case
|
|
266
|
+
case SwitchBotBLEModel.Lock:
|
|
252
267
|
device = new WoSmartLock(peripheral, this.noble);
|
|
253
268
|
break;
|
|
254
|
-
case
|
|
255
|
-
device = new
|
|
256
|
-
break;
|
|
257
|
-
case 'w':
|
|
258
|
-
device = new WoIOSensorTH(peripheral, this.noble);
|
|
269
|
+
case SwitchBotBLEModel.LockPro:
|
|
270
|
+
device = new WoSmartLockPro(peripheral, this.noble);
|
|
259
271
|
break;
|
|
260
|
-
case
|
|
261
|
-
device = new
|
|
272
|
+
case SwitchBotBLEModel.BlindTilt:
|
|
273
|
+
device = new WoBlindTilt(peripheral, this.noble);
|
|
262
274
|
break;
|
|
263
275
|
default: // 'resetting', 'unknown'
|
|
264
276
|
device = new SwitchbotDevice(peripheral, this.noble);
|
|
@@ -328,6 +340,9 @@ export class SwitchBot {
|
|
|
328
340
|
* | | | If "o" is specified, the `onadvertisement`
|
|
329
341
|
* | | | event handler will be called only when advertising
|
|
330
342
|
* | | | packets comes from Smart Lock.
|
|
343
|
+
* | | | If "$" is specified, the `onadvertisement`
|
|
344
|
+
* | | | event handler will be called only when advertising
|
|
345
|
+
* | | | packets comes from Smart Lock Pro.
|
|
331
346
|
* | | | If "i" is specified, the `onadvertisement`
|
|
332
347
|
* | | | event handler will be called only when advertising
|
|
333
348
|
* | | | packets comes from Meter Plus.
|
|
@@ -354,21 +369,23 @@ export class SwitchBot {
|
|
|
354
369
|
required: false,
|
|
355
370
|
type: 'string',
|
|
356
371
|
enum: [
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
+
SwitchBotBLEModel.Bot,
|
|
373
|
+
SwitchBotBLEModel.Curtain,
|
|
374
|
+
SwitchBotBLEModel.Curtain3,
|
|
375
|
+
SwitchBotBLEModel.Humidifier,
|
|
376
|
+
SwitchBotBLEModel.Meter,
|
|
377
|
+
SwitchBotBLEModel.MeterPlus,
|
|
378
|
+
SwitchBotBLEModel.Hub2,
|
|
379
|
+
SwitchBotBLEModel.OutdoorMeter,
|
|
380
|
+
SwitchBotBLEModel.MotionSensor,
|
|
381
|
+
SwitchBotBLEModel.ContactSensor,
|
|
382
|
+
SwitchBotBLEModel.ColorBulb,
|
|
383
|
+
SwitchBotBLEModel.StripLight,
|
|
384
|
+
SwitchBotBLEModel.PlugMiniUS,
|
|
385
|
+
SwitchBotBLEModel.PlugMiniJP,
|
|
386
|
+
SwitchBotBLEModel.Lock,
|
|
387
|
+
SwitchBotBLEModel.LockPro,
|
|
388
|
+
SwitchBotBLEModel.BlindTilt,
|
|
372
389
|
],
|
|
373
390
|
},
|
|
374
391
|
id: { required: false, type: 'string', min: 12, max: 17 },
|