node-switchbot 2.4.0 → 2.5.0-beta.1
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/.github/npm-version-script.cjs +81 -0
- package/CHANGELOG.md +1 -1
- package/dist/advertising.d.ts +14 -148
- package/dist/advertising.d.ts.map +1 -1
- package/dist/advertising.js +36 -92
- package/dist/advertising.js.map +1 -1
- package/dist/device/woblindtilt.d.ts +98 -13
- package/dist/device/woblindtilt.d.ts.map +1 -1
- package/dist/device/woblindtilt.js +192 -86
- package/dist/device/woblindtilt.js.map +1 -1
- package/dist/device/woblindtilt.test.d.ts +2 -0
- package/dist/device/woblindtilt.test.d.ts.map +1 -0
- package/dist/device/woblindtilt.test.js +26 -0
- package/dist/device/woblindtilt.test.js.map +1 -0
- package/dist/device/wobulb.d.ts +17 -34
- package/dist/device/wobulb.d.ts.map +1 -1
- package/dist/device/wobulb.js +53 -61
- package/dist/device/wobulb.js.map +1 -1
- package/dist/device/wobulb.test.d.ts +2 -0
- package/dist/device/wobulb.test.d.ts.map +1 -0
- package/dist/device/wobulb.test.js +52 -0
- package/dist/device/wobulb.test.js.map +1 -0
- package/dist/device/woceilinglight.d.ts +21 -51
- package/dist/device/woceilinglight.d.ts.map +1 -1
- package/dist/device/woceilinglight.js +53 -64
- package/dist/device/woceilinglight.js.map +1 -1
- package/dist/device/woceilinglight.test.d.ts +2 -0
- package/dist/device/woceilinglight.test.d.ts.map +1 -0
- package/dist/device/woceilinglight.test.js +63 -0
- package/dist/device/woceilinglight.test.js.map +1 -0
- package/dist/device/wocontact.d.ts +1 -14
- package/dist/device/wocontact.d.ts.map +1 -1
- package/dist/device/wocontact.js +13 -13
- package/dist/device/wocontact.js.map +1 -1
- package/dist/device/wocontact.test.d.ts +2 -0
- package/dist/device/wocontact.test.d.ts.map +1 -0
- package/dist/device/wocontact.test.js +34 -0
- package/dist/device/wocontact.test.js.map +1 -0
- package/dist/device/wocurtain.d.ts +5 -16
- package/dist/device/wocurtain.d.ts.map +1 -1
- package/dist/device/wocurtain.js +58 -47
- package/dist/device/wocurtain.js.map +1 -1
- package/dist/device/wocurtain.test.d.ts +2 -0
- package/dist/device/wocurtain.test.d.ts.map +1 -0
- package/dist/device/wocurtain.test.js +33 -0
- package/dist/device/wocurtain.test.js.map +1 -0
- package/dist/device/wohand.d.ts +2 -10
- package/dist/device/wohand.d.ts.map +1 -1
- package/dist/device/wohand.js +31 -33
- package/dist/device/wohand.js.map +1 -1
- package/dist/device/wohand.test.d.ts +2 -0
- package/dist/device/wohand.test.d.ts.map +1 -0
- package/dist/device/wohand.test.js +62 -0
- package/dist/device/wohand.test.js.map +1 -0
- package/dist/device/wohand2.test.d.ts +2 -0
- package/dist/device/wohand2.test.d.ts.map +1 -0
- package/dist/device/wohand2.test.js +50 -0
- package/dist/device/wohand2.test.js.map +1 -0
- package/dist/device/wohub2.d.ts +1 -19
- package/dist/device/wohub2.d.ts.map +1 -1
- package/dist/device/wohub2.js +6 -2
- package/dist/device/wohub2.js.map +1 -1
- package/dist/device/wohumi.d.ts +2 -11
- package/dist/device/wohumi.d.ts.map +1 -1
- package/dist/device/wohumi.js +31 -33
- package/dist/device/wohumi.js.map +1 -1
- package/dist/device/wohumi.test.d.ts +2 -0
- package/dist/device/wohumi.test.d.ts.map +1 -0
- package/dist/device/wohumi.test.js +61 -0
- package/dist/device/wohumi.test.js.map +1 -0
- package/dist/device/woiosensorth.d.ts +1 -19
- package/dist/device/woiosensorth.d.ts.map +1 -1
- package/dist/device/woiosensorth.js +14 -10
- package/dist/device/woiosensorth.js.map +1 -1
- package/dist/device/woiosensorth.test.d.ts +2 -0
- package/dist/device/woiosensorth.test.d.ts.map +1 -0
- package/dist/device/woiosensorth.test.js +39 -0
- package/dist/device/woiosensorth.test.js.map +1 -0
- package/dist/device/woplugmini.d.ts +12 -38
- package/dist/device/woplugmini.d.ts.map +1 -1
- package/dist/device/woplugmini.js +35 -40
- package/dist/device/woplugmini.js.map +1 -1
- package/dist/device/woplugmini.test.d.ts +2 -0
- package/dist/device/woplugmini.test.d.ts.map +1 -0
- package/dist/device/woplugmini.test.js +91 -0
- package/dist/device/woplugmini.test.js.map +1 -0
- package/dist/device/wopresence.d.ts +2 -14
- package/dist/device/wopresence.d.ts.map +1 -1
- package/dist/device/wopresence.js +11 -7
- package/dist/device/wopresence.js.map +1 -1
- package/dist/device/wopresence.test.d.ts +2 -0
- package/dist/device/wopresence.test.d.ts.map +1 -0
- package/dist/device/wopresence.test.js +42 -0
- package/dist/device/wopresence.test.js.map +1 -0
- package/dist/device/wosensorth.d.ts +3 -37
- package/dist/device/wosensorth.d.ts.map +1 -1
- package/dist/device/wosensorth.js +24 -20
- package/dist/device/wosensorth.js.map +1 -1
- package/dist/device/wosensorth.test.d.ts +2 -0
- package/dist/device/wosensorth.test.d.ts.map +1 -0
- package/dist/device/wosensorth.test.js +59 -0
- package/dist/device/wosensorth.test.js.map +1 -0
- package/dist/device/wosmartlock.d.ts +19 -33
- package/dist/device/wosmartlock.d.ts.map +1 -1
- package/dist/device/wosmartlock.js +104 -83
- package/dist/device/wosmartlock.js.map +1 -1
- package/dist/device/wosmartlock.test.d.ts +2 -0
- package/dist/device/wosmartlock.test.d.ts.map +1 -0
- package/dist/device/wosmartlock.test.js +84 -0
- package/dist/device/wosmartlock.test.js.map +1 -0
- package/dist/device/wosmartlockpro.d.ts +13 -27
- package/dist/device/wosmartlockpro.d.ts.map +1 -1
- package/dist/device/wosmartlockpro.js +90 -70
- package/dist/device/wosmartlockpro.js.map +1 -1
- package/dist/device/wosmartlockpro.test.d.ts +2 -0
- package/dist/device/wosmartlockpro.test.d.ts.map +1 -0
- package/dist/device/wosmartlockpro.test.js +124 -0
- package/dist/device/wosmartlockpro.test.js.map +1 -0
- package/dist/device/wostrip.d.ts +18 -32
- package/dist/device/wostrip.d.ts.map +1 -1
- package/dist/device/wostrip.js +58 -70
- package/dist/device/wostrip.js.map +1 -1
- package/dist/device/wostrip.test.d.ts +2 -0
- package/dist/device/wostrip.test.d.ts.map +1 -0
- package/dist/device/wostrip.test.js +115 -0
- package/dist/device/wostrip.test.js.map +1 -0
- package/dist/device.d.ts +237 -39
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +478 -366
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parameter-checker.d.ts.map +1 -1
- package/dist/parameter-checker.js.map +1 -1
- package/dist/settings.d.ts +8 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +12 -0
- package/dist/settings.js.map +1 -0
- package/dist/switchbot.d.ts +30 -9
- package/dist/switchbot.d.ts.map +1 -1
- package/dist/switchbot.js +48 -78
- package/dist/switchbot.js.map +1 -1
- package/dist/types/bledevicestatus.d.ts +288 -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/{types.d.ts → types/types.d.ts} +9 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +22 -14
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{types.js → types/types.js} +0 -0
|
@@ -1,57 +1,31 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
2
|
import { SwitchbotDevice } from '../device.js';
|
|
3
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
4
3
|
/**
|
|
5
4
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/plugmini.md
|
|
6
5
|
*/
|
|
7
6
|
export declare class WoPlugMini extends SwitchbotDevice {
|
|
8
|
-
static parseServiceData_US(manufacturerData: Buffer, onlog: ((message: string) => void) | undefined):
|
|
9
|
-
|
|
10
|
-
modelName: SwitchBotBLEModelName;
|
|
11
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
12
|
-
state: string | null;
|
|
13
|
-
delay: boolean;
|
|
14
|
-
timer: boolean;
|
|
15
|
-
syncUtcTime: boolean;
|
|
16
|
-
wifiRssi: number;
|
|
17
|
-
overload: boolean;
|
|
18
|
-
currentPower: number;
|
|
19
|
-
} | null;
|
|
20
|
-
static parseServiceData_JP(manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): {
|
|
21
|
-
model: SwitchBotBLEModel;
|
|
22
|
-
modelName: SwitchBotBLEModelName;
|
|
23
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
24
|
-
state: string | null;
|
|
25
|
-
delay: boolean;
|
|
26
|
-
timer: boolean;
|
|
27
|
-
syncUtcTime: boolean;
|
|
28
|
-
wifiRssi: number;
|
|
29
|
-
overload: boolean;
|
|
30
|
-
currentPower: number;
|
|
31
|
-
} | null;
|
|
7
|
+
static parseServiceData_US(manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): Promise<object | null>;
|
|
8
|
+
static parseServiceData_JP(manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): Promise<object | null>;
|
|
32
9
|
/**
|
|
33
|
-
* @returns
|
|
10
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
34
11
|
*/
|
|
35
|
-
readState(): Promise<
|
|
12
|
+
readState(): Promise<void>;
|
|
36
13
|
/**
|
|
37
14
|
* @private
|
|
38
15
|
*/
|
|
39
|
-
|
|
16
|
+
setState(reqByteArray: number[]): Promise<void>;
|
|
40
17
|
/**
|
|
41
|
-
* @returns
|
|
18
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
42
19
|
*/
|
|
43
|
-
turnOn(): Promise<
|
|
20
|
+
turnOn(): Promise<void>;
|
|
44
21
|
/**
|
|
45
|
-
* @returns
|
|
22
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
46
23
|
*/
|
|
47
|
-
turnOff(): Promise<
|
|
24
|
+
turnOff(): Promise<void>;
|
|
48
25
|
/**
|
|
49
|
-
* @returns
|
|
26
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
50
27
|
*/
|
|
51
|
-
toggle(): Promise<
|
|
52
|
-
|
|
53
|
-
* @private
|
|
54
|
-
*/
|
|
55
|
-
_operateBot(bytes: number[]): Promise<unknown>;
|
|
28
|
+
toggle(): Promise<void>;
|
|
29
|
+
operatePlug(bytes: number[]): Promise<void>;
|
|
56
30
|
}
|
|
57
31
|
//# sourceMappingURL=woplugmini.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woplugmini.d.ts","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"woplugmini.d.ts","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAAe;WAChC,mBAAmB,CAC9B,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAsCZ,mBAAmB,CAC9B,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsCzB;;OAEG;IACG,SAAS;IAIf;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;IAKrC;;OAEG;IACG,MAAM;IAIZ;;OAEG;IACG,OAAO;IAIb;;OAEG;IACG,MAAM;IAIN,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;CAqBlC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
1
2
|
/* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
3
|
*
|
|
3
4
|
* woplugmini.ts: Switchbot BLE API registration.
|
|
4
5
|
*/
|
|
5
|
-
import { Buffer } from 'node:buffer';
|
|
6
6
|
import { SwitchbotDevice } from '../device.js';
|
|
7
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
7
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
8
8
|
/**
|
|
9
9
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/plugmini.md
|
|
10
10
|
*/
|
|
11
11
|
export class WoPlugMini extends SwitchbotDevice {
|
|
12
|
-
static parseServiceData_US(manufacturerData, onlog) {
|
|
12
|
+
static async parseServiceData_US(manufacturerData, onlog) {
|
|
13
13
|
if (manufacturerData.length !== 14) {
|
|
14
14
|
if (onlog && typeof onlog === 'function') {
|
|
15
15
|
onlog(`[parseServiceDataForWoPlugMiniUS] Buffer length ${manufacturerData.length} should be 14`);
|
|
@@ -43,7 +43,7 @@ export class WoPlugMini extends SwitchbotDevice {
|
|
|
43
43
|
};
|
|
44
44
|
return data;
|
|
45
45
|
}
|
|
46
|
-
static parseServiceData_JP(manufacturerData, onlog) {
|
|
46
|
+
static async parseServiceData_JP(manufacturerData, onlog) {
|
|
47
47
|
if (manufacturerData.length !== 14) {
|
|
48
48
|
if (onlog && typeof onlog === 'function') {
|
|
49
49
|
onlog(`[parseServiceDataForWoPlugMiniJP] Buffer length ${manufacturerData.length} should be 14`);
|
|
@@ -78,62 +78,57 @@ export class WoPlugMini extends SwitchbotDevice {
|
|
|
78
78
|
return data;
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
81
|
-
* @returns
|
|
81
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
82
82
|
*/
|
|
83
|
-
readState() {
|
|
84
|
-
return this.
|
|
83
|
+
async readState() {
|
|
84
|
+
return await this.operatePlug([0x57, 0x0F, 0x51, 0x01]);
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
87
|
* @private
|
|
88
88
|
*/
|
|
89
|
-
|
|
89
|
+
async setState(reqByteArray) {
|
|
90
90
|
const base = [0x57, 0x0F, 0x50, 0x01];
|
|
91
|
-
return this.
|
|
91
|
+
return await this.operatePlug([...base, ...reqByteArray]);
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
|
-
* @returns
|
|
94
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
95
95
|
*/
|
|
96
|
-
turnOn() {
|
|
97
|
-
return this.
|
|
96
|
+
async turnOn() {
|
|
97
|
+
return await this.setState([0x01, 0x80]);
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
|
-
* @returns
|
|
100
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
101
101
|
*/
|
|
102
|
-
turnOff() {
|
|
103
|
-
return this.
|
|
102
|
+
async turnOff() {
|
|
103
|
+
return await this.setState([0x01, 0x00]);
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
106
|
-
* @returns
|
|
106
|
+
* @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
107
107
|
*/
|
|
108
|
-
toggle() {
|
|
109
|
-
return this.
|
|
108
|
+
async toggle() {
|
|
109
|
+
return await this.setState([0x02, 0x80]);
|
|
110
110
|
}
|
|
111
|
-
|
|
112
|
-
* @private
|
|
113
|
-
*/
|
|
114
|
-
_operateBot(bytes) {
|
|
111
|
+
async operatePlug(bytes) {
|
|
115
112
|
const req_buf = Buffer.from(bytes);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
resolve(is_on);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
reject(new Error(`The device returned an error: 0x${res_buf.toString('hex')}`));
|
|
128
|
-
}
|
|
113
|
+
await this.command(req_buf)
|
|
114
|
+
.then((res_bytes) => {
|
|
115
|
+
const res_buf = Buffer.from(res_bytes);
|
|
116
|
+
if (res_buf.length === 2) {
|
|
117
|
+
const code = res_buf.readUInt8(1);
|
|
118
|
+
if (code === 0x00 || code === 0x80) {
|
|
119
|
+
const is_on = code === 0x80;
|
|
120
|
+
return is_on;
|
|
129
121
|
}
|
|
130
122
|
else {
|
|
131
|
-
|
|
123
|
+
throw new Error(`The device returned an error: 0x${res_buf.toString('hex')}`);
|
|
132
124
|
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
throw new Error(`Expecting a 2-byte response, got instead: 0x${res_buf.toString('hex')}`);
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
.catch((error) => {
|
|
131
|
+
throw error;
|
|
137
132
|
});
|
|
138
133
|
}
|
|
139
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woplugmini.js","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"woplugmini.js","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"woplugmini.test.d.ts","sourceRoot":"","sources":["../../src/device/woplugmini.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
import * as Noble from '@stoprocent/noble';
|
|
3
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
4
|
+
import { WoPlugMini } from './woplugmini.js';
|
|
5
|
+
describe('woPlugMini', () => {
|
|
6
|
+
let manufacturerData;
|
|
7
|
+
let onlog;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
onlog = jest.fn();
|
|
10
|
+
});
|
|
11
|
+
describe('parseServiceData_US', () => {
|
|
12
|
+
it('should return null if manufacturerData length is not 14', async () => {
|
|
13
|
+
manufacturerData = Buffer.alloc(13);
|
|
14
|
+
const result = await WoPlugMini.parseServiceData_US(manufacturerData, onlog);
|
|
15
|
+
expect(result).toBeNull();
|
|
16
|
+
expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoPlugMiniUS] Buffer length 13 should be 14');
|
|
17
|
+
});
|
|
18
|
+
it('should parse the service data correctly', async () => {
|
|
19
|
+
manufacturerData = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0x07, 0x64, 0x80, 0x40, 0x01]);
|
|
20
|
+
const result = await WoPlugMini.parseServiceData_US(manufacturerData, onlog);
|
|
21
|
+
expect(result).toEqual({
|
|
22
|
+
model: SwitchBotBLEModel.PlugMiniUS,
|
|
23
|
+
modelName: SwitchBotBLEModelName.PlugMini,
|
|
24
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
|
|
25
|
+
state: 'on',
|
|
26
|
+
delay: true,
|
|
27
|
+
timer: true,
|
|
28
|
+
syncUtcTime: false,
|
|
29
|
+
wifiRssi: 100,
|
|
30
|
+
overload: true,
|
|
31
|
+
currentPower: 32.1,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('parseServiceData_JP', () => {
|
|
36
|
+
it('should return null if manufacturerData length is not 14', async () => {
|
|
37
|
+
manufacturerData = Buffer.alloc(13);
|
|
38
|
+
const result = await WoPlugMini.parseServiceData_JP(manufacturerData, onlog);
|
|
39
|
+
expect(result).toBeNull();
|
|
40
|
+
expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoPlugMiniJP] Buffer length 13 should be 14');
|
|
41
|
+
});
|
|
42
|
+
it('should parse the service data correctly', async () => {
|
|
43
|
+
manufacturerData = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0x07, 0x64, 0x80, 0x40, 0x01]);
|
|
44
|
+
const result = await WoPlugMini.parseServiceData_JP(manufacturerData, onlog);
|
|
45
|
+
expect(result).toEqual({
|
|
46
|
+
model: SwitchBotBLEModel.PlugMiniJP,
|
|
47
|
+
modelName: SwitchBotBLEModelName.PlugMini,
|
|
48
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
|
|
49
|
+
state: 'on',
|
|
50
|
+
delay: true,
|
|
51
|
+
timer: true,
|
|
52
|
+
syncUtcTime: false,
|
|
53
|
+
wifiRssi: 100,
|
|
54
|
+
overload: true,
|
|
55
|
+
currentPower: 32.1,
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('state operations', () => {
|
|
60
|
+
let plugMini;
|
|
61
|
+
beforeEach(() => {
|
|
62
|
+
const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
|
|
63
|
+
plugMini = new WoPlugMini(peripheral, Noble);
|
|
64
|
+
jest.spyOn(plugMini, 'operatePlug').mockImplementation(async (bytes) => {
|
|
65
|
+
if (bytes.includes(0x80)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (bytes.includes(0x00)) {
|
|
69
|
+
// Intentionally left empty
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
it('should read state correctly', async () => {
|
|
74
|
+
const result = await plugMini.readState();
|
|
75
|
+
expect(result).toBe(true);
|
|
76
|
+
});
|
|
77
|
+
it('should turn on correctly', async () => {
|
|
78
|
+
const result = await plugMini.turnOn();
|
|
79
|
+
expect(result).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
it('should turn off correctly', async () => {
|
|
82
|
+
const result = await plugMini.turnOff();
|
|
83
|
+
expect(result).toBe(false);
|
|
84
|
+
});
|
|
85
|
+
it('should toggle correctly', async () => {
|
|
86
|
+
const result = await plugMini.toggle();
|
|
87
|
+
expect(result).toBe(true);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=woplugmini.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"woplugmini.test.js","sourceRoot":"","sources":["../../src/device/woplugmini.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
import type { Buffer } from 'node:buffer';
|
|
2
|
+
import type { motionSensorServiceData } from '../types/bledevicestatus.js';
|
|
2
3
|
import { SwitchbotDevice } from '../device.js';
|
|
3
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
4
4
|
export declare class WoPresence extends SwitchbotDevice {
|
|
5
|
-
static parseServiceData(
|
|
6
|
-
model: SwitchBotBLEModel;
|
|
7
|
-
modelName: SwitchBotBLEModelName;
|
|
8
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
9
|
-
tested: boolean;
|
|
10
|
-
movement: boolean;
|
|
11
|
-
battery: number;
|
|
12
|
-
led: number;
|
|
13
|
-
iot: number;
|
|
14
|
-
sense_distance: number;
|
|
15
|
-
lightLevel: string;
|
|
16
|
-
is_light: boolean;
|
|
17
|
-
} | null;
|
|
5
|
+
static parseServiceData(serviceData: Buffer, onlog: ((message: string) => void) | undefined): Promise<motionSensorServiceData | null>;
|
|
18
6
|
}
|
|
19
7
|
//# sourceMappingURL=wopresence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wopresence.d.ts","sourceRoot":"","sources":["../../src/device/wopresence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wopresence.d.ts","sourceRoot":"","sources":["../../src/device/wopresence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAM1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C,qBAAa,UAAW,SAAQ,eAAe;WAChC,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC7C,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;CAqC3C"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
+
/* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* wopresence.ts: Switchbot BLE API registration.
|
|
4
|
+
*/
|
|
1
5
|
import { SwitchbotDevice } from '../device.js';
|
|
2
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
6
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
7
|
export class WoPresence extends SwitchbotDevice {
|
|
4
|
-
static parseServiceData(
|
|
5
|
-
if (
|
|
8
|
+
static async parseServiceData(serviceData, onlog) {
|
|
9
|
+
if (serviceData.length !== 6) {
|
|
6
10
|
if (onlog && typeof onlog === 'function') {
|
|
7
|
-
onlog(`[parseServiceDataForWoPresence] Buffer length ${
|
|
11
|
+
onlog(`[parseServiceDataForWoPresence] Buffer length ${serviceData.length} !== 6!`);
|
|
8
12
|
}
|
|
9
13
|
return null;
|
|
10
14
|
}
|
|
11
|
-
const byte1 =
|
|
12
|
-
const byte2 =
|
|
13
|
-
const byte5 =
|
|
15
|
+
const byte1 = serviceData.readUInt8(1);
|
|
16
|
+
const byte2 = serviceData.readUInt8(2);
|
|
17
|
+
const byte5 = serviceData.readUInt8(5);
|
|
14
18
|
const tested = !!(byte1 & 0b10000000);
|
|
15
19
|
const movement = !!(byte1 & 0b01000000);
|
|
16
20
|
const battery = byte2 & 0b01111111;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wopresence.js","sourceRoot":"","sources":["../../src/device/wopresence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wopresence.js","sourceRoot":"","sources":["../../src/device/wopresence.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,KAA8C;QAE9C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CAAC,iDAAiD,WAAW,CAAC,MAAM,SAAS,CAAC,CAAA;YACrF,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAEtC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAA;QACvC,MAAM,OAAO,GAAG,KAAK,GAAG,UAAU,CAAA;QAClC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,cAAc,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAA;QACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAA;QAEvC,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,iBAAiB,CAAC,YAAY;YACrC,SAAS,EAAE,qBAAqB,CAAC,YAAY;YAC7C,iBAAiB,EAAE,6BAA6B,CAAC,YAAY;YAC7D,MAAM;YACN,QAAQ;YACR,OAAO;YACP,GAAG;YACH,GAAG;YACH,cAAc;YACd,UAAU,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC/E,QAAQ;SACT,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wopresence.test.d.ts","sourceRoot":"","sources":["../../src/device/wopresence.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
|
+
import { WoPresence } from './wopresence.js';
|
|
4
|
+
describe('woPresence', () => {
|
|
5
|
+
describe('parseServiceData', () => {
|
|
6
|
+
it('should return null if serviceData length is not 6', async () => {
|
|
7
|
+
const serviceData = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05]);
|
|
8
|
+
const onlog = jest.fn();
|
|
9
|
+
const result = await WoPresence.parseServiceData(serviceData, onlog);
|
|
10
|
+
expect(result).toBeNull();
|
|
11
|
+
expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoPresence] Buffer length 5 !== 6!');
|
|
12
|
+
});
|
|
13
|
+
it('should parse serviceData correctly', async () => {
|
|
14
|
+
const serviceData = Buffer.from([0x00, 0b11000000, 0b01111111, 0x00, 0x00, 0b00111111]);
|
|
15
|
+
const onlog = jest.fn();
|
|
16
|
+
const result = await WoPresence.parseServiceData(serviceData, onlog);
|
|
17
|
+
expect(result).toEqual({
|
|
18
|
+
model: SwitchBotBLEModel.MotionSensor,
|
|
19
|
+
modelName: SwitchBotBLEModelName.MotionSensor,
|
|
20
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.MotionSensor,
|
|
21
|
+
tested: true,
|
|
22
|
+
movement: true,
|
|
23
|
+
battery: 127,
|
|
24
|
+
led: 1,
|
|
25
|
+
iot: 1,
|
|
26
|
+
sense_distance: 3,
|
|
27
|
+
lightLevel: 'unknown',
|
|
28
|
+
is_light: true,
|
|
29
|
+
});
|
|
30
|
+
expect(onlog).not.toHaveBeenCalled();
|
|
31
|
+
});
|
|
32
|
+
it('should handle different light levels correctly', async () => {
|
|
33
|
+
const serviceDataDark = Buffer.from([0x00, 0b11000000, 0b01111111, 0x00, 0x00, 0b00111101]);
|
|
34
|
+
const serviceDataBright = Buffer.from([0x00, 0b11000000, 0b01111111, 0x00, 0x00, 0b00111110]);
|
|
35
|
+
const resultDark = await WoPresence.parseServiceData(serviceDataDark, undefined);
|
|
36
|
+
const resultBright = await WoPresence.parseServiceData(serviceDataBright, undefined);
|
|
37
|
+
expect(resultDark?.lightLevel).toBe('dark');
|
|
38
|
+
expect(resultBright?.lightLevel).toBe('bright');
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=wopresence.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wopresence.test.js","sourceRoot":"","sources":["../../src/device/wopresence.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAEvB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,wDAAwD,CAAC,CAAA;QAC9F,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YACvF,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAEvB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;gBACrC,SAAS,EAAE,qBAAqB,CAAC,YAAY;gBAC7C,iBAAiB,EAAE,6BAA6B,CAAC,YAAY;gBAC7D,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,GAAG;gBACZ,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,CAAC;gBACN,cAAc,EAAE,CAAC;gBACjB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAA;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YAC3F,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YAE7F,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;YAChF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;YAEpF,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,42 +1,8 @@
|
|
|
1
1
|
import type { Buffer } from 'node:buffer';
|
|
2
|
+
import type { meterPlusServiceData, meterServiceData } from '../types/bledevicestatus.js';
|
|
2
3
|
import { SwitchbotDevice } from '../device.js';
|
|
3
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
4
4
|
export declare class WoSensorTH extends SwitchbotDevice {
|
|
5
|
-
static parseServiceData(
|
|
6
|
-
|
|
7
|
-
modelName: SwitchBotBLEModelName;
|
|
8
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName;
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated The `temperature` object is deprecated and will be removed in future versions.
|
|
11
|
-
* Use the `celsius` and `fahrenheit` properties directly instead.
|
|
12
|
-
*/
|
|
13
|
-
temperature: {
|
|
14
|
-
c: number;
|
|
15
|
-
f: number;
|
|
16
|
-
};
|
|
17
|
-
celsius: number;
|
|
18
|
-
fahrenheit: number;
|
|
19
|
-
fahrenheit_mode: boolean;
|
|
20
|
-
humidity: number;
|
|
21
|
-
battery: number;
|
|
22
|
-
} | null;
|
|
23
|
-
static parseServiceData_Plus(buf: Buffer, onlog: ((message: string) => void) | undefined): {
|
|
24
|
-
model: SwitchBotBLEModel;
|
|
25
|
-
modelName: SwitchBotBLEModelName;
|
|
26
|
-
modelfriendlyName: SwitchBotBLEModelFriendlyName;
|
|
27
|
-
/**
|
|
28
|
-
* @deprecated The `temperature` object is deprecated and will be removed in future versions.
|
|
29
|
-
* Use the `celsius` and `fahrenheit` properties directly instead.
|
|
30
|
-
*/
|
|
31
|
-
temperature: {
|
|
32
|
-
c: number;
|
|
33
|
-
f: number;
|
|
34
|
-
};
|
|
35
|
-
celsius: number;
|
|
36
|
-
fahrenheit: number;
|
|
37
|
-
fahrenheit_mode: boolean;
|
|
38
|
-
humidity: number;
|
|
39
|
-
battery: number;
|
|
40
|
-
} | null;
|
|
5
|
+
static parseServiceData(serviceData: Buffer, onlog: ((message: string) => void) | undefined): Promise<meterServiceData | null>;
|
|
6
|
+
static parseServiceData_Plus(serviceData: Buffer, onlog: ((message: string) => void) | undefined): Promise<meterPlusServiceData | null>;
|
|
41
7
|
}
|
|
42
8
|
//# sourceMappingURL=wosensorth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorth.d.ts","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wosensorth.d.ts","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAMzF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C,qBAAa,UAAW,SAAQ,eAAe;WAChC,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC7C,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;WAsCtB,qBAAqB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC7C,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;CAqCxC"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
+
/* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* wosensorth.ts: Switchbot BLE API registration.
|
|
4
|
+
*/
|
|
1
5
|
import { SwitchbotDevice } from '../device.js';
|
|
2
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
|
|
6
|
+
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
7
|
export class WoSensorTH extends SwitchbotDevice {
|
|
4
|
-
static parseServiceData(
|
|
5
|
-
if (
|
|
8
|
+
static async parseServiceData(serviceData, onlog) {
|
|
9
|
+
if (serviceData.length !== 6) {
|
|
6
10
|
if (onlog && typeof onlog === 'function') {
|
|
7
|
-
onlog(`[parseServiceDataForWoSensorTH] Buffer length ${
|
|
11
|
+
onlog(`[parseServiceDataForWoSensorTH] Buffer length ${serviceData.length} !== 6!`);
|
|
8
12
|
}
|
|
9
13
|
return null;
|
|
10
14
|
}
|
|
11
|
-
const byte2 =
|
|
12
|
-
const byte3 =
|
|
13
|
-
const byte4 =
|
|
14
|
-
const byte5 =
|
|
15
|
+
const byte2 = serviceData.readUInt8(2);
|
|
16
|
+
const byte3 = serviceData.readUInt8(3);
|
|
17
|
+
const byte4 = serviceData.readUInt8(4);
|
|
18
|
+
const byte5 = serviceData.readUInt8(5);
|
|
15
19
|
const temp_sign = byte4 & 0b10000000 ? 1 : -1;
|
|
16
20
|
const temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
17
21
|
const temp_f = Math.round(((temp_c * 9 / 5) + 32) * 10) / 10;
|
|
@@ -21,13 +25,13 @@ export class WoSensorTH extends SwitchbotDevice {
|
|
|
21
25
|
modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter,
|
|
22
26
|
/**
|
|
23
27
|
* @deprecated The `temperature` object is deprecated and will be removed in future versions.
|
|
24
|
-
* Use the `
|
|
28
|
+
* Use the `celcius` and `fahrenheit` properties directly instead.
|
|
25
29
|
*/
|
|
26
30
|
temperature: {
|
|
27
31
|
c: temp_c,
|
|
28
32
|
f: temp_f,
|
|
29
33
|
},
|
|
30
|
-
|
|
34
|
+
celcius: temp_c,
|
|
31
35
|
fahrenheit: temp_f,
|
|
32
36
|
fahrenheit_mode: !!(byte5 & 0b10000000),
|
|
33
37
|
humidity: byte5 & 0b01111111,
|
|
@@ -35,33 +39,33 @@ export class WoSensorTH extends SwitchbotDevice {
|
|
|
35
39
|
};
|
|
36
40
|
return data;
|
|
37
41
|
}
|
|
38
|
-
static parseServiceData_Plus(
|
|
39
|
-
if (
|
|
42
|
+
static async parseServiceData_Plus(serviceData, onlog) {
|
|
43
|
+
if (serviceData.length !== 6) {
|
|
40
44
|
if (onlog && typeof onlog === 'function') {
|
|
41
|
-
onlog(`[parseServiceDataForWoSensorTHPlus] Buffer length ${
|
|
45
|
+
onlog(`[parseServiceDataForWoSensorTHPlus] Buffer length ${serviceData.length} !== 6!`);
|
|
42
46
|
}
|
|
43
47
|
return null;
|
|
44
48
|
}
|
|
45
|
-
const byte2 =
|
|
46
|
-
const byte3 =
|
|
47
|
-
const byte4 =
|
|
48
|
-
const byte5 =
|
|
49
|
+
const byte2 = serviceData.readUInt8(2);
|
|
50
|
+
const byte3 = serviceData.readUInt8(3);
|
|
51
|
+
const byte4 = serviceData.readUInt8(4);
|
|
52
|
+
const byte5 = serviceData.readUInt8(5);
|
|
49
53
|
const temp_sign = byte4 & 0b10000000 ? 1 : -1;
|
|
50
54
|
const temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
51
55
|
const temp_f = Math.round(((temp_c * 9 / 5) + 32) * 10) / 10;
|
|
52
56
|
const data = {
|
|
53
57
|
model: SwitchBotBLEModel.MeterPlus,
|
|
54
58
|
modelName: SwitchBotBLEModelName.MeterPlus,
|
|
55
|
-
|
|
59
|
+
modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus,
|
|
56
60
|
/**
|
|
57
61
|
* @deprecated The `temperature` object is deprecated and will be removed in future versions.
|
|
58
|
-
* Use the `
|
|
62
|
+
* Use the `celcius` and `fahrenheit` properties directly instead.
|
|
59
63
|
*/
|
|
60
64
|
temperature: {
|
|
61
65
|
c: temp_c,
|
|
62
66
|
f: temp_f,
|
|
63
67
|
},
|
|
64
|
-
|
|
68
|
+
celcius: temp_c,
|
|
65
69
|
fahrenheit: temp_f,
|
|
66
70
|
fahrenheit_mode: !!(byte5 & 0b10000000),
|
|
67
71
|
humidity: byte5 & 0b01111111,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorth.js","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wosensorth.js","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wosensorth.test.d.ts","sourceRoot":"","sources":["../../src/device/wosensorth.test.ts"],"names":[],"mappings":""}
|