node-switchbot 2.3.1-beta.2 → 2.4.0-beta.0
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 +8 -0
- package/dist/advertising.d.ts +137 -6
- package/dist/advertising.d.ts.map +1 -1
- package/dist/advertising.js +19 -17
- package/dist/advertising.js.map +1 -1
- package/dist/device/woblindtilt.d.ts +3 -25
- package/dist/device/woblindtilt.d.ts.map +1 -1
- package/dist/device/woblindtilt.js +31 -135
- package/dist/device/woblindtilt.js.map +1 -1
- package/dist/device/wobulb.d.ts +1 -0
- package/dist/device/wobulb.d.ts.map +1 -1
- package/dist/device/wobulb.js +31 -37
- package/dist/device/wobulb.js.map +1 -1
- package/dist/device/woceilinglight.d.ts +1 -0
- package/dist/device/woceilinglight.d.ts.map +1 -1
- package/dist/device/woceilinglight.js +51 -57
- package/dist/device/woceilinglight.js.map +1 -1
- package/dist/device/wocontact.d.ts +1 -0
- package/dist/device/wocontact.d.ts.map +1 -1
- package/dist/device/wocontact.js +7 -11
- package/dist/device/wocontact.js.map +1 -1
- package/dist/device/wocurtain.d.ts +13 -1
- package/dist/device/wocurtain.d.ts.map +1 -1
- package/dist/device/wocurtain.js +31 -46
- package/dist/device/wocurtain.js.map +1 -1
- package/dist/device/wohand.d.ts +1 -0
- package/dist/device/wohand.d.ts.map +1 -1
- package/dist/device/wohand.js +7 -6
- package/dist/device/wohand.js.map +1 -1
- package/dist/device/wohub2.d.ts +1 -0
- package/dist/device/wohub2.d.ts.map +1 -1
- package/dist/device/wohub2.js +1 -5
- package/dist/device/wohub2.js.map +1 -1
- package/dist/device/wohumi.d.ts +1 -0
- package/dist/device/wohumi.d.ts.map +1 -1
- package/dist/device/wohumi.js +7 -6
- package/dist/device/wohumi.js.map +1 -1
- package/dist/device/woiosensorth.d.ts +4 -1
- package/dist/device/woiosensorth.d.ts.map +1 -1
- package/dist/device/woiosensorth.js +3 -5
- package/dist/device/woiosensorth.js.map +1 -1
- package/dist/device/woplugmini.d.ts +1 -0
- package/dist/device/woplugmini.d.ts.map +1 -1
- package/dist/device/woplugmini.js +19 -19
- package/dist/device/woplugmini.js.map +1 -1
- package/dist/device/wopresence.d.ts +1 -0
- package/dist/device/wopresence.d.ts.map +1 -1
- package/dist/device/wopresence.js +10 -14
- package/dist/device/wopresence.js.map +1 -1
- package/dist/device/wosensorth.d.ts +7 -2
- package/dist/device/wosensorth.d.ts.map +1 -1
- package/dist/device/wosensorth.js +6 -6
- package/dist/device/wosensorth.js.map +1 -1
- package/dist/device/wosmartlock.d.ts +2 -1
- package/dist/device/wosmartlock.d.ts.map +1 -1
- package/dist/device/wosmartlock.js +42 -41
- package/dist/device/wosmartlock.js.map +1 -1
- package/dist/device/wosmartlockpro.d.ts +3 -2
- package/dist/device/wosmartlockpro.d.ts.map +1 -1
- package/dist/device/wosmartlockpro.js +41 -40
- package/dist/device/wosmartlockpro.js.map +1 -1
- package/dist/device/wostrip.d.ts +3 -2
- package/dist/device/wostrip.d.ts.map +1 -1
- package/dist/device/wostrip.js +29 -35
- package/dist/device/wostrip.js.map +1 -1
- package/dist/device.d.ts +12 -9
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +17 -14
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parameter-checker.d.ts +3 -3
- package/dist/parameter-checker.d.ts.map +1 -1
- package/dist/parameter-checker.js +25 -67
- package/dist/parameter-checker.js.map +1 -1
- package/dist/switchbot.d.ts +4 -4
- package/dist/switchbot.d.ts.map +1 -1
- package/dist/switchbot.js +16 -18
- package/dist/switchbot.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/eslint.config.js +41 -76
- package/package.json +38 -38
package/dist/device/wobulb.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* wobulb.ts: Switchbot BLE API registration.
|
|
4
4
|
*/
|
|
5
|
+
import { Buffer } from 'node:buffer';
|
|
5
6
|
import { SwitchbotDevice } from '../device.js';
|
|
6
7
|
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
7
8
|
/**
|
|
@@ -15,22 +16,22 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
15
16
|
}
|
|
16
17
|
return null;
|
|
17
18
|
}
|
|
18
|
-
const byte1 = manufacturerData.readUInt8(1); //power and light status
|
|
19
|
-
//const byte2 = manufacturerData.readUInt8(2);//bulb brightness
|
|
20
|
-
const byte3 = manufacturerData.readUInt8(3); //bulb R
|
|
21
|
-
const byte4 = manufacturerData.readUInt8(4); //bulb G
|
|
22
|
-
const byte5 = manufacturerData.readUInt8(5); //bulb B
|
|
23
|
-
const byte6 = manufacturerData.readUInt8(6); //bulb temperature
|
|
19
|
+
const byte1 = manufacturerData.readUInt8(1); // power and light status
|
|
20
|
+
// const byte2 = manufacturerData.readUInt8(2);//bulb brightness
|
|
21
|
+
const byte3 = manufacturerData.readUInt8(3); // bulb R
|
|
22
|
+
const byte4 = manufacturerData.readUInt8(4); // bulb G
|
|
23
|
+
const byte5 = manufacturerData.readUInt8(5); // bulb B
|
|
24
|
+
const byte6 = manufacturerData.readUInt8(6); // bulb temperature
|
|
24
25
|
const byte7 = manufacturerData.readUInt8(7);
|
|
25
26
|
const byte8 = manufacturerData.readUInt8(8);
|
|
26
27
|
const byte9 = manufacturerData.readUInt8(9);
|
|
27
|
-
const byte10 = manufacturerData.readUInt8(10); //bulb mode
|
|
28
|
+
const byte10 = manufacturerData.readUInt8(10); // bulb mode
|
|
28
29
|
const power = byte1;
|
|
29
30
|
const red = byte3;
|
|
30
31
|
const green = byte4;
|
|
31
32
|
const blue = byte5;
|
|
32
33
|
const color_temperature = byte6;
|
|
33
|
-
const state = byte7 & 0b01111111
|
|
34
|
+
const state = !!(byte7 & 0b01111111);
|
|
34
35
|
const brightness = byte7 & 0b01111111;
|
|
35
36
|
const delay = byte8 & 0b10000000;
|
|
36
37
|
const preset = byte8 & 0b00001000;
|
|
@@ -41,18 +42,18 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
41
42
|
model: SwitchBotBLEModel.ColorBulb,
|
|
42
43
|
modelName: SwitchBotBLEModelName.ColorBulb,
|
|
43
44
|
modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb,
|
|
44
|
-
color_temperature
|
|
45
|
-
power
|
|
46
|
-
state
|
|
47
|
-
red
|
|
48
|
-
green
|
|
49
|
-
blue
|
|
50
|
-
brightness
|
|
51
|
-
delay
|
|
52
|
-
preset
|
|
53
|
-
color_mode
|
|
54
|
-
speed
|
|
55
|
-
loop_index
|
|
45
|
+
color_temperature,
|
|
46
|
+
power,
|
|
47
|
+
state,
|
|
48
|
+
red,
|
|
49
|
+
green,
|
|
50
|
+
blue,
|
|
51
|
+
brightness,
|
|
52
|
+
delay,
|
|
53
|
+
preset,
|
|
54
|
+
color_mode,
|
|
55
|
+
speed,
|
|
56
|
+
loop_index,
|
|
56
57
|
};
|
|
57
58
|
return data;
|
|
58
59
|
}
|
|
@@ -60,13 +61,13 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
60
61
|
* @returns {Promise<boolean>} resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
61
62
|
*/
|
|
62
63
|
readState() {
|
|
63
|
-
return this._operateBot([0x57,
|
|
64
|
+
return this._operateBot([0x57, 0x0F, 0x48, 0x01]);
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
66
67
|
* @private
|
|
67
68
|
*/
|
|
68
69
|
_setState(reqByteArray) {
|
|
69
|
-
const base = [0x57,
|
|
70
|
+
const base = [0x57, 0x0F, 0x47, 0x01];
|
|
70
71
|
return this._operateBot(base.concat(reqByteArray));
|
|
71
72
|
}
|
|
72
73
|
/**
|
|
@@ -87,8 +88,7 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
87
88
|
setBrightness(brightness) {
|
|
88
89
|
if (typeof brightness !== 'number') {
|
|
89
90
|
return new Promise((resolve, reject) => {
|
|
90
|
-
reject(new Error(
|
|
91
|
-
typeof brightness));
|
|
91
|
+
reject(new Error(`The type of target brightness percentage is incorrect: ${typeof brightness}`));
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
if (brightness > 100) {
|
|
@@ -105,8 +105,7 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
105
105
|
setColorTemperature(color_temperature) {
|
|
106
106
|
if (typeof color_temperature !== 'number') {
|
|
107
107
|
return new Promise((resolve, reject) => {
|
|
108
|
-
reject(new Error(
|
|
109
|
-
typeof color_temperature));
|
|
108
|
+
reject(new Error(`The type of target color_temperature percentage is incorrect: ${typeof color_temperature}`));
|
|
110
109
|
});
|
|
111
110
|
}
|
|
112
111
|
if (color_temperature > 100) {
|
|
@@ -123,26 +122,22 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
123
122
|
setRGB(brightness, red, green, blue) {
|
|
124
123
|
if (typeof brightness !== 'number') {
|
|
125
124
|
return new Promise((resolve, reject) => {
|
|
126
|
-
reject(new Error(
|
|
127
|
-
typeof brightness));
|
|
125
|
+
reject(new Error(`The type of target brightness percentage is incorrect: ${typeof brightness}`));
|
|
128
126
|
});
|
|
129
127
|
}
|
|
130
128
|
if (typeof red !== 'number') {
|
|
131
129
|
return new Promise((resolve, reject) => {
|
|
132
|
-
reject(new Error(
|
|
133
|
-
typeof red));
|
|
130
|
+
reject(new Error(`The type of target red is incorrect: ${typeof red}`));
|
|
134
131
|
});
|
|
135
132
|
}
|
|
136
133
|
if (typeof green !== 'number') {
|
|
137
134
|
return new Promise((resolve, reject) => {
|
|
138
|
-
reject(new Error(
|
|
139
|
-
typeof green));
|
|
135
|
+
reject(new Error(`The type of target green is incorrect: ${typeof green}`));
|
|
140
136
|
});
|
|
141
137
|
}
|
|
142
138
|
if (typeof blue !== 'number') {
|
|
143
139
|
return new Promise((resolve, reject) => {
|
|
144
|
-
reject(new Error(
|
|
145
|
-
typeof blue));
|
|
140
|
+
reject(new Error(`The type of target blue is incorrect: ${typeof blue}`));
|
|
146
141
|
});
|
|
147
142
|
}
|
|
148
143
|
if (brightness > 100) {
|
|
@@ -187,12 +182,11 @@ export class WoBulb extends SwitchbotDevice {
|
|
|
187
182
|
resolve(is_on);
|
|
188
183
|
}
|
|
189
184
|
else {
|
|
190
|
-
reject(new Error(
|
|
185
|
+
reject(new Error(`The device returned an error: 0x${res_buf.toString('hex')}`));
|
|
191
186
|
}
|
|
192
187
|
}
|
|
193
188
|
else {
|
|
194
|
-
reject(new Error(
|
|
195
|
-
res_buf.toString('hex')));
|
|
189
|
+
reject(new Error(`Expecting a 2-byte response, got instead: 0x${res_buf.toString('hex')}`));
|
|
196
190
|
}
|
|
197
191
|
})
|
|
198
192
|
.catch((error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wobulb.js","sourceRoot":"","sources":["../../src/device/wobulb.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"wobulb.js","sourceRoot":"","sources":["../../src/device/wobulb.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAErG;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC,MAAM,CAAC,gBAAgB,CAAC,gBAAwB,EAAE,KAA8C;QAC9F,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,6CAA6C,gBAAgB,CAAC,MAAM,UAAU,CAC/E,CAAA;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,yBAAyB;QACpE,gEAAgE;QAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,SAAS;QACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,SAAS;QACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,SAAS;QACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,mBAAmB;QAC9D,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA,CAAA,YAAY;QAEzD,MAAM,KAAK,GAAG,KAAK,CAAA;QACnB,MAAM,GAAG,GAAG,KAAK,CAAA;QACjB,MAAM,KAAK,GAAG,KAAK,CAAA;QACnB,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,MAAM,iBAAiB,GAAG,KAAK,CAAA;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAA;QACpC,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAA;QACrC,MAAM,KAAK,GAAG,KAAK,GAAG,UAAU,CAAA;QAChC,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,CAAA;QACjC,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAA;QACrC,MAAM,KAAK,GAAG,KAAK,GAAG,UAAU,CAAA;QAChC,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,CAAA;QAEtC,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,SAAS;YAClC,SAAS,EAAE,qBAAqB,CAAC,SAAS;YAC1C,iBAAiB,EAAE,6BAA6B,CAAC,SAAS;YAC1D,iBAAiB;YACjB,KAAK;YACL,KAAK;YACL,GAAG;YACH,KAAK;YACL,IAAI;YACJ,UAAU;YACV,KAAK;YACL,MAAM;YACN,UAAU;YACV,KAAK;YACL,UAAU;SACX,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,YAAsB;QAC9B,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAkB;QAC9B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,0DAA0D,OAAO,UAAU,EAAE,CAC9E,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACrB,UAAU,GAAG,GAAG,CAAA;QAClB,CAAC;aAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,iBAAyB;QAC3C,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,iEAAiE,OAAO,iBAAiB,EAAE,CAC5F,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,iBAAiB,GAAG,GAAG,EAAE,CAAC;YAC5B,iBAAiB,GAAG,GAAG,CAAA;QACzB,CAAC;aAAM,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACjC,iBAAiB,GAAG,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAkB,EAAE,GAAW,EAAE,KAAa,EAAE,IAAY;QACjE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,0DAA0D,OAAO,UAAU,EAAE,CAC9E,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,wCAAwC,OAAO,GAAG,EAAE,CACrD,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,0CAA0C,OAAO,KAAK,EAAE,CACzD,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CACJ,IAAI,KAAK,CACP,yCAAyC,OAAO,IAAI,EAAE,CACvD,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACrB,UAAU,GAAG,GAAG,CAAA;QAClB,CAAC;aAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,GAAG,CAAA;QACX,CAAC;aAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACnB,GAAG,GAAG,CAAC,CAAA;QACT,CAAC;QACD,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChB,KAAK,GAAG,GAAG,CAAA;QACb,CAAC;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,GAAG,CAAC,CAAA;QACX,CAAC;QACD,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,CAAA;QACZ,CAAC;aAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,CAAA;QACV,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IACnE,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAe;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACnB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;oBACjC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBACnC,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;wBAC3B,OAAO,CAAC,KAAK,CAAC,CAAA;oBAChB,CAAC;yBAAM,CAAC;wBACN,MAAM,CACJ,IAAI,KAAK,CACP,mCAAmC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAC7D,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CACJ,IAAI,KAAK,CACP,+CAA+C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CACzE,CACF,CAAA;gBACH,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woceilinglight.d.ts","sourceRoot":"","sources":["../../src/device/woceilinglight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"woceilinglight.d.ts","sourceRoot":"","sources":["../../src/device/woceilinglight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAErG;;GAEG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;;;;;;;;IAsDhG,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;;;;;;;;IAsDpG;;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;IAkBhC;;OAEG;IACH,mBAAmB,CAAC,iBAAiB,EAAE,MAAM;IAkB7C;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IA4DnE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;CA+B5B"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* wobulb.ts: Switchbot BLE API registration.
|
|
4
4
|
*/
|
|
5
|
+
import { Buffer } from 'node:buffer';
|
|
5
6
|
import { SwitchbotDevice } from '../device.js';
|
|
6
7
|
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
7
8
|
/**
|
|
@@ -15,22 +16,22 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
15
16
|
}
|
|
16
17
|
return null;
|
|
17
18
|
}
|
|
18
|
-
const byte1 = manufacturerData.readUInt8(1); //power and light status
|
|
19
|
-
//const byte2 = manufacturerData.readUInt8(2);//bulb brightness
|
|
20
|
-
const byte3 = manufacturerData.readUInt8(3); //bulb R
|
|
21
|
-
const byte4 = manufacturerData.readUInt8(4); //bulb G
|
|
22
|
-
const byte5 = manufacturerData.readUInt8(5); //bulb B
|
|
23
|
-
const byte6 = manufacturerData.readUInt8(6); //bulb temperature
|
|
19
|
+
const byte1 = manufacturerData.readUInt8(1); // power and light status
|
|
20
|
+
// const byte2 = manufacturerData.readUInt8(2);//bulb brightness
|
|
21
|
+
const byte3 = manufacturerData.readUInt8(3); // bulb R
|
|
22
|
+
const byte4 = manufacturerData.readUInt8(4); // bulb G
|
|
23
|
+
const byte5 = manufacturerData.readUInt8(5); // bulb B
|
|
24
|
+
const byte6 = manufacturerData.readUInt8(6); // bulb temperature
|
|
24
25
|
const byte7 = manufacturerData.readUInt8(7);
|
|
25
26
|
const byte8 = manufacturerData.readUInt8(8);
|
|
26
27
|
const byte9 = manufacturerData.readUInt8(9);
|
|
27
|
-
const byte10 = manufacturerData.readUInt8(10); //bulb mode
|
|
28
|
+
const byte10 = manufacturerData.readUInt8(10); // bulb mode
|
|
28
29
|
const power = byte1;
|
|
29
30
|
const red = byte3;
|
|
30
31
|
const green = byte4;
|
|
31
32
|
const blue = byte5;
|
|
32
33
|
const color_temperature = byte6;
|
|
33
|
-
const state = byte7 & 0b01111111
|
|
34
|
+
const state = !!(byte7 & 0b01111111);
|
|
34
35
|
const brightness = byte7 & 0b01111111;
|
|
35
36
|
const delay = byte8 & 0b10000000;
|
|
36
37
|
const preset = byte8 & 0b00001000;
|
|
@@ -41,18 +42,18 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
41
42
|
model: SwitchBotBLEModel.CeilingLight,
|
|
42
43
|
modelName: SwitchBotBLEModelName.CeilingLight,
|
|
43
44
|
modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLight,
|
|
44
|
-
color_temperature
|
|
45
|
-
power
|
|
46
|
-
state
|
|
47
|
-
red
|
|
48
|
-
green
|
|
49
|
-
blue
|
|
50
|
-
brightness
|
|
51
|
-
delay
|
|
52
|
-
preset
|
|
53
|
-
color_mode
|
|
54
|
-
speed
|
|
55
|
-
loop_index
|
|
45
|
+
color_temperature,
|
|
46
|
+
power,
|
|
47
|
+
state,
|
|
48
|
+
red,
|
|
49
|
+
green,
|
|
50
|
+
blue,
|
|
51
|
+
brightness,
|
|
52
|
+
delay,
|
|
53
|
+
preset,
|
|
54
|
+
color_mode,
|
|
55
|
+
speed,
|
|
56
|
+
loop_index,
|
|
56
57
|
};
|
|
57
58
|
return data;
|
|
58
59
|
}
|
|
@@ -63,22 +64,22 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
63
64
|
}
|
|
64
65
|
return null;
|
|
65
66
|
}
|
|
66
|
-
const byte1 = manufacturerData.readUInt8(1); //power and light status
|
|
67
|
-
//const byte2 = manufacturerData.readUInt8(2);//bulb brightness
|
|
68
|
-
const byte3 = manufacturerData.readUInt8(3); //bulb R
|
|
69
|
-
const byte4 = manufacturerData.readUInt8(4); //bulb G
|
|
70
|
-
const byte5 = manufacturerData.readUInt8(5); //bulb B
|
|
71
|
-
const byte6 = manufacturerData.readUInt8(6); //bulb temperature
|
|
67
|
+
const byte1 = manufacturerData.readUInt8(1); // power and light status
|
|
68
|
+
// const byte2 = manufacturerData.readUInt8(2);//bulb brightness
|
|
69
|
+
const byte3 = manufacturerData.readUInt8(3); // bulb R
|
|
70
|
+
const byte4 = manufacturerData.readUInt8(4); // bulb G
|
|
71
|
+
const byte5 = manufacturerData.readUInt8(5); // bulb B
|
|
72
|
+
const byte6 = manufacturerData.readUInt8(6); // bulb temperature
|
|
72
73
|
const byte7 = manufacturerData.readUInt8(7);
|
|
73
74
|
const byte8 = manufacturerData.readUInt8(8);
|
|
74
75
|
const byte9 = manufacturerData.readUInt8(9);
|
|
75
|
-
const byte10 = manufacturerData.readUInt8(10); //bulb mode
|
|
76
|
+
const byte10 = manufacturerData.readUInt8(10); // bulb mode
|
|
76
77
|
const power = byte1;
|
|
77
78
|
const red = byte3;
|
|
78
79
|
const green = byte4;
|
|
79
80
|
const blue = byte5;
|
|
80
81
|
const color_temperature = byte6;
|
|
81
|
-
const state = byte7 & 0b01111111
|
|
82
|
+
const state = !!(byte7 & 0b01111111);
|
|
82
83
|
const brightness = byte7 & 0b01111111;
|
|
83
84
|
const delay = byte8 & 0b10000000;
|
|
84
85
|
const preset = byte8 & 0b00001000;
|
|
@@ -89,18 +90,18 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
89
90
|
model: SwitchBotBLEModel.CeilingLightPro,
|
|
90
91
|
modelName: SwitchBotBLEModelName.CeilingLightPro,
|
|
91
92
|
modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLightPro,
|
|
92
|
-
color_temperature
|
|
93
|
-
power
|
|
94
|
-
state
|
|
95
|
-
red
|
|
96
|
-
green
|
|
97
|
-
blue
|
|
98
|
-
brightness
|
|
99
|
-
delay
|
|
100
|
-
preset
|
|
101
|
-
color_mode
|
|
102
|
-
speed
|
|
103
|
-
loop_index
|
|
93
|
+
color_temperature,
|
|
94
|
+
power,
|
|
95
|
+
state,
|
|
96
|
+
red,
|
|
97
|
+
green,
|
|
98
|
+
blue,
|
|
99
|
+
brightness,
|
|
100
|
+
delay,
|
|
101
|
+
preset,
|
|
102
|
+
color_mode,
|
|
103
|
+
speed,
|
|
104
|
+
loop_index,
|
|
104
105
|
};
|
|
105
106
|
return data;
|
|
106
107
|
}
|
|
@@ -108,13 +109,13 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
108
109
|
* @returns {Promise<boolean>} resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
109
110
|
*/
|
|
110
111
|
readState() {
|
|
111
|
-
return this._operateBot([0x57,
|
|
112
|
+
return this._operateBot([0x57, 0x0F, 0x48, 0x01]);
|
|
112
113
|
}
|
|
113
114
|
/**
|
|
114
115
|
* @private
|
|
115
116
|
*/
|
|
116
117
|
_setState(reqByteArray) {
|
|
117
|
-
const base = [0x57,
|
|
118
|
+
const base = [0x57, 0x0F, 0x47, 0x01];
|
|
118
119
|
return this._operateBot(base.concat(reqByteArray));
|
|
119
120
|
}
|
|
120
121
|
/**
|
|
@@ -135,8 +136,7 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
135
136
|
setBrightness(brightness) {
|
|
136
137
|
if (typeof brightness !== 'number') {
|
|
137
138
|
return new Promise((resolve, reject) => {
|
|
138
|
-
reject(new Error(
|
|
139
|
-
typeof brightness));
|
|
139
|
+
reject(new Error(`The type of target brightness percentage is incorrect: ${typeof brightness}`));
|
|
140
140
|
});
|
|
141
141
|
}
|
|
142
142
|
if (brightness > 100) {
|
|
@@ -153,8 +153,7 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
153
153
|
setColorTemperature(color_temperature) {
|
|
154
154
|
if (typeof color_temperature !== 'number') {
|
|
155
155
|
return new Promise((resolve, reject) => {
|
|
156
|
-
reject(new Error(
|
|
157
|
-
typeof color_temperature));
|
|
156
|
+
reject(new Error(`The type of target color_temperature percentage is incorrect: ${typeof color_temperature}`));
|
|
158
157
|
});
|
|
159
158
|
}
|
|
160
159
|
if (color_temperature > 100) {
|
|
@@ -171,26 +170,22 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
171
170
|
setRGB(brightness, red, green, blue) {
|
|
172
171
|
if (typeof brightness !== 'number') {
|
|
173
172
|
return new Promise((resolve, reject) => {
|
|
174
|
-
reject(new Error(
|
|
175
|
-
typeof brightness));
|
|
173
|
+
reject(new Error(`The type of target brightness percentage is incorrect: ${typeof brightness}`));
|
|
176
174
|
});
|
|
177
175
|
}
|
|
178
176
|
if (typeof red !== 'number') {
|
|
179
177
|
return new Promise((resolve, reject) => {
|
|
180
|
-
reject(new Error(
|
|
181
|
-
typeof red));
|
|
178
|
+
reject(new Error(`The type of target red is incorrect: ${typeof red}`));
|
|
182
179
|
});
|
|
183
180
|
}
|
|
184
181
|
if (typeof green !== 'number') {
|
|
185
182
|
return new Promise((resolve, reject) => {
|
|
186
|
-
reject(new Error(
|
|
187
|
-
typeof green));
|
|
183
|
+
reject(new Error(`The type of target green is incorrect: ${typeof green}`));
|
|
188
184
|
});
|
|
189
185
|
}
|
|
190
186
|
if (typeof blue !== 'number') {
|
|
191
187
|
return new Promise((resolve, reject) => {
|
|
192
|
-
reject(new Error(
|
|
193
|
-
typeof blue));
|
|
188
|
+
reject(new Error(`The type of target blue is incorrect: ${typeof blue}`));
|
|
194
189
|
});
|
|
195
190
|
}
|
|
196
191
|
if (brightness > 100) {
|
|
@@ -235,12 +230,11 @@ export class WoCeilingLight extends SwitchbotDevice {
|
|
|
235
230
|
resolve(is_on);
|
|
236
231
|
}
|
|
237
232
|
else {
|
|
238
|
-
reject(new Error(
|
|
233
|
+
reject(new Error(`The device returned an error: 0x${res_buf.toString('hex')}`));
|
|
239
234
|
}
|
|
240
235
|
}
|
|
241
236
|
else {
|
|
242
|
-
reject(new Error(
|
|
243
|
-
res_buf.toString('hex')));
|
|
237
|
+
reject(new Error(`Expecting a 2-byte response, got instead: 0x${res_buf.toString('hex')}`));
|
|
244
238
|
}
|
|
245
239
|
})
|
|
246
240
|
.catch((error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woceilinglight.js","sourceRoot":"","sources":["../../src/device/woceilinglight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"woceilinglight.js","sourceRoot":"","sources":["../../src/device/woceilinglight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wocontact.d.ts","sourceRoot":"","sources":["../../src/device/wocontact.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"wocontact.d.ts","sourceRoot":"","sources":["../../src/device/wocontact.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAErG,qBAAa,SAAU,SAAQ,eAAe;IAC5C,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;;;;CA6CpF"}
|
package/dist/device/wocontact.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
|
-
*
|
|
3
|
-
* wocontact.ts: Switchbot BLE API registration.
|
|
4
|
-
*/
|
|
5
1
|
import { SwitchbotDevice } from '../device.js';
|
|
6
2
|
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
7
3
|
export class WoContact extends SwitchbotDevice {
|
|
@@ -18,7 +14,7 @@ export class WoContact extends SwitchbotDevice {
|
|
|
18
14
|
const byte8 = buf.readUInt8(8);
|
|
19
15
|
const hallState = (byte3 >> 1) & 0b00000011;
|
|
20
16
|
const tested = byte1 & 0b10000000;
|
|
21
|
-
const movement = byte1 & 0b01000000
|
|
17
|
+
const movement = !!(byte1 & 0b01000000); // 1 - Movement detected
|
|
22
18
|
const battery = byte2 & 0b01111111; // %
|
|
23
19
|
const contact_open = (byte3 & 0b00000010) === 0b00000010;
|
|
24
20
|
const contact_timeout = (byte3 & 0b00000100) === 0b00000100;
|
|
@@ -28,13 +24,13 @@ export class WoContact extends SwitchbotDevice {
|
|
|
28
24
|
model: SwitchBotBLEModel.ContactSensor,
|
|
29
25
|
modelName: SwitchBotBLEModelName.ContactSensor,
|
|
30
26
|
modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor,
|
|
31
|
-
movement
|
|
32
|
-
tested
|
|
33
|
-
battery
|
|
34
|
-
contact_open
|
|
35
|
-
contact_timeout
|
|
27
|
+
movement,
|
|
28
|
+
tested,
|
|
29
|
+
battery,
|
|
30
|
+
contact_open,
|
|
31
|
+
contact_timeout,
|
|
36
32
|
lightLevel: lightLevel === 0 ? 'dark' : 'bright',
|
|
37
|
-
button_count
|
|
33
|
+
button_count,
|
|
38
34
|
doorState: hallState === 0
|
|
39
35
|
? 'close'
|
|
40
36
|
: hallState === 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wocontact.js","sourceRoot":"","sources":["../../src/device/wocontact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wocontact.js","sourceRoot":"","sources":["../../src/device/wocontact.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAErG,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC5C,MAAM,CAAC,gBAAgB,CAAC,GAAW,EAAE,KAA8C;QACjF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,gDAAgD,GAAG,CAAC,MAAM,SAAS,CACpE,CAAA;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAE9B,MAAM,SAAS,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;QAC3C,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,CAAA;QACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAA,CAAC,wBAAwB;QAChE,MAAM,OAAO,GAAG,KAAK,GAAG,UAAU,CAAA,CAAC,IAAI;QACvC,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,UAAU,CAAA;QACxD,MAAM,eAAe,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,UAAU,CAAA;QAC3D,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAA;QACrC,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,CAAA;QAEvC,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,aAAa;YACtC,SAAS,EAAE,qBAAqB,CAAC,aAAa;YAC9C,iBAAiB,EAAE,6BAA6B,CAAC,aAAa;YAC9D,QAAQ;YACR,MAAM;YACN,OAAO;YACP,YAAY;YACZ,eAAe;YACf,UAAU,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAChD,YAAY;YACZ,SAAS,EACP,SAAS,KAAK,CAAC;gBACb,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,KAAK,CAAC;oBACf,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,mBAAmB;SAC5B,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
1
2
|
import { SwitchbotDevice } from '../device.js';
|
|
3
|
+
import { SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
2
4
|
export declare class WoCurtain extends SwitchbotDevice {
|
|
3
|
-
static parseServiceData(
|
|
5
|
+
static parseServiceData(buf: Buffer, onlog: ((message: string) => void) | undefined): {
|
|
6
|
+
model: string;
|
|
7
|
+
modelName: SwitchBotBLEModelName;
|
|
8
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
9
|
+
calibration: boolean;
|
|
10
|
+
battery: number;
|
|
11
|
+
inMotion: boolean;
|
|
12
|
+
position: number;
|
|
13
|
+
lightLevel: number;
|
|
14
|
+
deviceChain: number;
|
|
15
|
+
} | null;
|
|
4
16
|
open(mode?: number): Promise<unknown>;
|
|
5
17
|
close(mode?: number): Promise<unknown>;
|
|
6
18
|
pause(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wocurtain.d.ts","sourceRoot":"","sources":["../../src/device/wocurtain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"wocurtain.d.ts","sourceRoot":"","sources":["../../src/device/wocurtain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAElF,qBAAa,SAAU,SAAQ,eAAe;IAC5C,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;;IAkDnF,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM;IAelB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IAenB,KAAK;IAgBL,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAO;IA4BrC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;CAqBhC"}
|