node-switchbot 2.0.2-beta.7 → 2.0.2-beta.9
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/dist/advertising.d.ts +2 -2
- package/dist/advertising.d.ts.map +1 -1
- package/dist/advertising.js +61 -65
- package/dist/advertising.js.map +1 -1
- package/dist/device/woblindtilt.d.ts +9 -9
- package/dist/device/woblindtilt.d.ts.map +1 -1
- package/dist/device/woblindtilt.js +24 -24
- package/dist/device/woblindtilt.js.map +1 -1
- package/dist/device/wobulb.d.ts +16 -16
- package/dist/device/wobulb.d.ts.map +1 -1
- package/dist/device/wobulb.js +47 -47
- package/dist/device/wobulb.js.map +1 -1
- package/dist/device/wocontact.d.ts +12 -13
- package/dist/device/wocontact.d.ts.map +1 -1
- package/dist/device/wocontact.js +36 -37
- package/dist/device/wocontact.js.map +1 -1
- package/dist/device/wocurtain.d.ts +10 -10
- package/dist/device/wocurtain.d.ts.map +1 -1
- package/dist/device/wocurtain.js +29 -29
- package/dist/device/wocurtain.js.map +1 -1
- package/dist/device/wohand.d.ts +7 -7
- package/dist/device/wohand.d.ts.map +1 -1
- package/dist/device/wohand.js +20 -20
- package/dist/device/wohand.js.map +1 -1
- package/dist/device/wohumi.d.ts +7 -7
- package/dist/device/wohumi.d.ts.map +1 -1
- package/dist/device/wohumi.js +20 -20
- package/dist/device/wohumi.js.map +1 -1
- package/dist/device/woiosensorth.d.ts +11 -11
- package/dist/device/woiosensorth.d.ts.map +1 -1
- package/dist/device/woiosensorth.js +32 -32
- package/dist/device/woiosensorth.js.map +1 -1
- package/dist/device/woplugmini.d.ts +22 -22
- package/dist/device/woplugmini.d.ts.map +1 -1
- package/dist/device/woplugmini.js +66 -66
- package/dist/device/woplugmini.js.map +1 -1
- package/dist/device/wopresence.d.ts +12 -12
- package/dist/device/wopresence.d.ts.map +1 -1
- package/dist/device/wopresence.js +31 -31
- package/dist/device/wopresence.js.map +1 -1
- package/dist/device/wosensorth.d.ts +22 -22
- package/dist/device/wosensorth.d.ts.map +1 -1
- package/dist/device/wosensorth.js +51 -51
- package/dist/device/wosensorth.js.map +1 -1
- package/dist/device/wosmartlock.d.ts +13 -13
- package/dist/device/wosmartlock.d.ts.map +1 -1
- package/dist/device/wosmartlock.js +42 -42
- package/dist/device/wosmartlock.js.map +1 -1
- package/dist/device/wostrip.d.ts +15 -15
- package/dist/device/wostrip.d.ts.map +1 -1
- package/dist/device/wostrip.js +43 -43
- package/dist/device/wostrip.js.map +1 -1
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +5 -7
- package/dist/device.js.map +1 -1
- package/dist/switchbot.d.ts +1 -1
- package/dist/switchbot.d.ts.map +1 -1
- package/dist/switchbot.js +5 -6
- package/dist/switchbot.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
2
|
-
export declare function parseServiceDataForWoCurtain(buf: any, onlog: any): Promise<{
|
|
3
|
-
model: any;
|
|
4
|
-
modelName: string;
|
|
5
|
-
calibration: boolean;
|
|
6
|
-
battery: number;
|
|
7
|
-
inMotion: boolean;
|
|
8
|
-
position: number;
|
|
9
|
-
lightLevel: number;
|
|
10
|
-
deviceChain: number;
|
|
11
|
-
} | null>;
|
|
12
2
|
export declare class WoCurtain extends SwitchbotDevice {
|
|
3
|
+
static parseServiceData(buf: any, onlog: any): {
|
|
4
|
+
model: any;
|
|
5
|
+
modelName: string;
|
|
6
|
+
calibration: boolean;
|
|
7
|
+
battery: number;
|
|
8
|
+
inMotion: boolean;
|
|
9
|
+
position: number;
|
|
10
|
+
lightLevel: number;
|
|
11
|
+
deviceChain: number;
|
|
12
|
+
} | null;
|
|
13
13
|
open(mode: any): Promise<unknown>;
|
|
14
14
|
close(mode: any): Promise<unknown>;
|
|
15
15
|
pause(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wocurtain.d.ts","sourceRoot":"","sources":["../../src/device/wocurtain.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"wocurtain.d.ts","sourceRoot":"","sources":["../../src/device/wocurtain.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,SAAU,SAAQ,eAAe;IAC5C,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA;;;;;;;;;;IA+ClC,IAAI,CAAC,IAAI,KAAA;IAeT,KAAK,CAAC,IAAI,KAAA;IAeV,KAAK;IAgBL,QAAQ,CAAC,OAAO,KAAA,EAAE,IAAI,SAAO;IA6B7B,eAAe,CAAC,KAAK,KAAA;CAqBtB"}
|
package/dist/device/wocurtain.js
CHANGED
|
@@ -4,37 +4,37 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Buffer } from 'buffer';
|
|
6
6
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
if (
|
|
10
|
-
onlog
|
|
7
|
+
export class WoCurtain extends SwitchbotDevice {
|
|
8
|
+
static parseServiceData(buf, onlog) {
|
|
9
|
+
if (buf.length !== 5 && buf.length !== 6) {
|
|
10
|
+
if (onlog && typeof onlog === 'function') {
|
|
11
|
+
onlog(`[parseServiceDataForWoCurtain] Buffer length ${buf.length} !== 5 or 6!`);
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
11
14
|
}
|
|
12
|
-
|
|
15
|
+
const byte1 = buf.readUInt8(1);
|
|
16
|
+
const byte2 = buf.readUInt8(2);
|
|
17
|
+
const byte3 = buf.readUInt8(3);
|
|
18
|
+
const byte4 = buf.readUInt8(4);
|
|
19
|
+
const calibration = byte1 & 0b01000000 ? true : false; // Whether the calibration is compconsted
|
|
20
|
+
const battery = byte2 & 0b01111111; // %
|
|
21
|
+
const inMotion = byte3 & 0b10000000 ? true : false;
|
|
22
|
+
const currPosition = byte3 & 0b01111111; // current positon %
|
|
23
|
+
const lightLevel = (byte4 >> 4) & 0b00001111; // light sensor level (1-10)
|
|
24
|
+
const deviceChain = byte4 & 0b00000111;
|
|
25
|
+
const model = buf.slice(0, 1).toString('utf8');
|
|
26
|
+
const data = {
|
|
27
|
+
model: model,
|
|
28
|
+
modelName: 'WoCurtain',
|
|
29
|
+
calibration: calibration,
|
|
30
|
+
battery: battery,
|
|
31
|
+
inMotion: inMotion,
|
|
32
|
+
position: currPosition,
|
|
33
|
+
lightLevel: lightLevel,
|
|
34
|
+
deviceChain: deviceChain,
|
|
35
|
+
};
|
|
36
|
+
return data;
|
|
13
37
|
}
|
|
14
|
-
const byte1 = buf.readUInt8(1);
|
|
15
|
-
const byte2 = buf.readUInt8(2);
|
|
16
|
-
const byte3 = buf.readUInt8(3);
|
|
17
|
-
const byte4 = buf.readUInt8(4);
|
|
18
|
-
const calibration = byte1 & 0b01000000 ? true : false; // Whether the calibration is compconsted
|
|
19
|
-
const battery = byte2 & 0b01111111; // %
|
|
20
|
-
const inMotion = byte3 & 0b10000000 ? true : false;
|
|
21
|
-
const currPosition = byte3 & 0b01111111; // current positon %
|
|
22
|
-
const lightLevel = (byte4 >> 4) & 0b00001111; // light sensor level (1-10)
|
|
23
|
-
const deviceChain = byte4 & 0b00000111;
|
|
24
|
-
const model = buf.slice(0, 1).toString('utf8');
|
|
25
|
-
const data = {
|
|
26
|
-
model: model,
|
|
27
|
-
modelName: 'WoCurtain',
|
|
28
|
-
calibration: calibration,
|
|
29
|
-
battery: battery,
|
|
30
|
-
inMotion: inMotion,
|
|
31
|
-
position: currPosition,
|
|
32
|
-
lightLevel: lightLevel,
|
|
33
|
-
deviceChain: deviceChain,
|
|
34
|
-
};
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
export class WoCurtain extends SwitchbotDevice {
|
|
38
38
|
/* ------------------------------------------------------------------
|
|
39
39
|
* open()
|
|
40
40
|
* - Open the curtain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wocurtain.js","sourceRoot":"","sources":["../../src/device/wocurtain.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"wocurtain.js","sourceRoot":"","sources":["../../src/device/wocurtain.ts"],"names":[],"mappings":"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"}
|
package/dist/device/wohand.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
2
|
-
export declare function parseServiceDataForWoHand(buf: any, onlog: any): Promise<{
|
|
3
|
-
model: string;
|
|
4
|
-
modelName: string;
|
|
5
|
-
mode: boolean;
|
|
6
|
-
state: boolean;
|
|
7
|
-
battery: number;
|
|
8
|
-
} | null>;
|
|
9
2
|
export declare class WoHand extends SwitchbotDevice {
|
|
3
|
+
static parseServiceData(buf: any, onlog: any): {
|
|
4
|
+
model: string;
|
|
5
|
+
modelName: string;
|
|
6
|
+
mode: boolean;
|
|
7
|
+
state: boolean;
|
|
8
|
+
battery: number;
|
|
9
|
+
} | null;
|
|
10
10
|
press(): Promise<void>;
|
|
11
11
|
turnOn(): Promise<void>;
|
|
12
12
|
turnOff(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wohand.d.ts","sourceRoot":"","sources":["../../src/device/wohand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"wohand.d.ts","sourceRoot":"","sources":["../../src/device/wohand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,MAAO,SAAQ,eAAe;IACzC,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA;;;;;;;IAqClC,KAAK;IAeL,MAAM;IAeN,OAAO;IAeP,IAAI;IAeJ,EAAE;IAIF,WAAW,CAAC,KAAK,KAAA;CAqBlB"}
|
package/dist/device/wohand.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { Buffer } from 'buffer';
|
|
2
2
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
onlog
|
|
3
|
+
export class WoHand extends SwitchbotDevice {
|
|
4
|
+
static parseServiceData(buf, onlog) {
|
|
5
|
+
if (buf.length !== 3) {
|
|
6
|
+
if (onlog && typeof onlog === 'function') {
|
|
7
|
+
onlog(`[parseServiceData] Buffer length ${buf.length} !== 3!`);
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
7
10
|
}
|
|
8
|
-
|
|
11
|
+
const byte1 = buf.readUInt8(1);
|
|
12
|
+
const byte2 = buf.readUInt8(2);
|
|
13
|
+
const mode = byte1 & 0b10000000 ? true : false; // Whether the light switch Add-on is used or not. 0 = press, 1 = switch
|
|
14
|
+
const state = byte1 & 0b01000000 ? false : true; // Whether the switch status is ON or OFF. 0 = on, 1 = off
|
|
15
|
+
const battery = byte2 & 0b01111111; // %
|
|
16
|
+
const data = {
|
|
17
|
+
model: 'H',
|
|
18
|
+
modelName: 'WoHand',
|
|
19
|
+
mode: mode,
|
|
20
|
+
state: state,
|
|
21
|
+
battery: battery,
|
|
22
|
+
};
|
|
23
|
+
return data;
|
|
9
24
|
}
|
|
10
|
-
const byte1 = buf.readUInt8(1);
|
|
11
|
-
const byte2 = buf.readUInt8(2);
|
|
12
|
-
const mode = byte1 & 0b10000000 ? true : false; // Whether the light switch Add-on is used or not. 0 = press, 1 = switch
|
|
13
|
-
const state = byte1 & 0b01000000 ? false : true; // Whether the switch status is ON or OFF. 0 = on, 1 = off
|
|
14
|
-
const battery = byte2 & 0b01111111; // %
|
|
15
|
-
const data = {
|
|
16
|
-
model: 'H',
|
|
17
|
-
modelName: 'WoHand',
|
|
18
|
-
mode: mode,
|
|
19
|
-
state: state,
|
|
20
|
-
battery: battery,
|
|
21
|
-
};
|
|
22
|
-
return data;
|
|
23
|
-
}
|
|
24
|
-
export class WoHand extends SwitchbotDevice {
|
|
25
25
|
/* ------------------------------------------------------------------
|
|
26
26
|
* press()
|
|
27
27
|
* - Press
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wohand.js","sourceRoot":"","sources":["../../src/device/wohand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"wohand.js","sourceRoot":"","sources":["../../src/device/wohand.ts"],"names":[],"mappings":"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"}
|
package/dist/device/wohumi.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
2
|
-
export declare function parseServiceDataForWoHumi(buf: any, onlog: any): Promise<{
|
|
3
|
-
model: string;
|
|
4
|
-
modelName: string;
|
|
5
|
-
onState: boolean;
|
|
6
|
-
autoMode: boolean;
|
|
7
|
-
percentage: number;
|
|
8
|
-
} | null>;
|
|
9
2
|
export declare class WoHumi extends SwitchbotDevice {
|
|
3
|
+
static parseServiceData(buf: any, onlog: any): {
|
|
4
|
+
model: string;
|
|
5
|
+
modelName: string;
|
|
6
|
+
onState: boolean;
|
|
7
|
+
autoMode: boolean;
|
|
8
|
+
percentage: number;
|
|
9
|
+
} | null;
|
|
10
10
|
press(): Promise<void>;
|
|
11
11
|
turnOn(): Promise<void>;
|
|
12
12
|
turnOff(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wohumi.d.ts","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"wohumi.d.ts","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,MAAO,SAAQ,eAAe;IACzC,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA;;;;;;;IAuClC,KAAK;IAeL,MAAM;IAeN,OAAO;IAeP,IAAI;IAeJ,EAAE;IAIF,WAAW,CAAC,KAAK,KAAA;CAqBlB"}
|
package/dist/device/wohumi.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { Buffer } from 'buffer';
|
|
2
2
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
onlog
|
|
3
|
+
export class WoHumi extends SwitchbotDevice {
|
|
4
|
+
static parseServiceData(buf, onlog) {
|
|
5
|
+
if (buf.length !== 8) {
|
|
6
|
+
if (onlog && typeof onlog === 'function') {
|
|
7
|
+
onlog(`[parseServiceDataForWoHumi] Buffer length ${buf.length} !== 8!`);
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
7
10
|
}
|
|
8
|
-
|
|
11
|
+
const byte1 = buf.readUInt8(1);
|
|
12
|
+
const byte4 = buf.readUInt8(4);
|
|
13
|
+
const onState = byte1 & 0b10000000 ? true : false; // 1 - on
|
|
14
|
+
const autoMode = byte4 & 0b10000000 ? true : false; // 1 - auto
|
|
15
|
+
const percentage = byte4 & 0b01111111; // 0-100%, 101/102/103 - Quick gear 1/2/3
|
|
16
|
+
const data = {
|
|
17
|
+
model: 'e',
|
|
18
|
+
modelName: 'WoHumi',
|
|
19
|
+
onState: onState,
|
|
20
|
+
autoMode: autoMode,
|
|
21
|
+
percentage: autoMode ? 0 : percentage,
|
|
22
|
+
};
|
|
23
|
+
return data;
|
|
9
24
|
}
|
|
10
|
-
const byte1 = buf.readUInt8(1);
|
|
11
|
-
const byte4 = buf.readUInt8(4);
|
|
12
|
-
const onState = byte1 & 0b10000000 ? true : false; // 1 - on
|
|
13
|
-
const autoMode = byte4 & 0b10000000 ? true : false; // 1 - auto
|
|
14
|
-
const percentage = byte4 & 0b01111111; // 0-100%, 101/102/103 - Quick gear 1/2/3
|
|
15
|
-
const data = {
|
|
16
|
-
model: 'e',
|
|
17
|
-
modelName: 'WoHumi',
|
|
18
|
-
onState: onState,
|
|
19
|
-
autoMode: autoMode,
|
|
20
|
-
percentage: autoMode ? 0 : percentage,
|
|
21
|
-
};
|
|
22
|
-
return data;
|
|
23
|
-
}
|
|
24
|
-
export class WoHumi extends SwitchbotDevice {
|
|
25
25
|
/* ------------------------------------------------------------------
|
|
26
26
|
* press()
|
|
27
27
|
* - Press
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wohumi.js","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"wohumi.js","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK;QAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,6CAA6C,GAAG,CAAC,MAAM,SAAS,CACjE,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAG/B,MAAM,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS;QAC5D,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW;QAC/D,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,yCAAyC;QAEhF,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;SACtC,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,KAAK;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,MAAM;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,IAAI;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;0EAUsE;IACtE,EAAE;QACA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,KAAK;QACf,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACnB,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAI,OAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAK,OAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACzE,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CACJ,IAAI,KAAK,CACP,kCAAkC,GAAI,OAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
2
|
-
export declare function parseServiceDataForWoIOSensorTH(serviceDataBuf: any, manufacturerDataBuf: any, onlog: any): Promise<{
|
|
3
|
-
model: string;
|
|
4
|
-
modelName: string;
|
|
5
|
-
temperature: {
|
|
6
|
-
c: number;
|
|
7
|
-
f: number;
|
|
8
|
-
};
|
|
9
|
-
fahrenheit: boolean;
|
|
10
|
-
humidity: number;
|
|
11
|
-
battery: number;
|
|
12
|
-
} | null>;
|
|
13
2
|
export declare class WoIOSensorTH extends SwitchbotDevice {
|
|
3
|
+
static parseServiceData(serviceDataBuf: any, manufacturerDataBuf: any, onlog: any): {
|
|
4
|
+
model: string;
|
|
5
|
+
modelName: string;
|
|
6
|
+
temperature: {
|
|
7
|
+
c: number;
|
|
8
|
+
f: number;
|
|
9
|
+
};
|
|
10
|
+
fahrenheit: boolean;
|
|
11
|
+
humidity: number;
|
|
12
|
+
battery: number;
|
|
13
|
+
} | null;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=woiosensorth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woiosensorth.d.ts","sourceRoot":"","sources":["../../src/device/woiosensorth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"woiosensorth.d.ts","sourceRoot":"","sources":["../../src/device/woiosensorth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,YAAa,SAAQ,eAAe;IAC/C,MAAM,CAAC,gBAAgB,CAAC,cAAc,KAAA,EAAE,mBAAmB,KAAA,EAAE,KAAK,KAAA;;;;;;;;;;;CA0CnE"}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
if (
|
|
5
|
-
onlog
|
|
2
|
+
export class WoIOSensorTH extends SwitchbotDevice {
|
|
3
|
+
static parseServiceData(serviceDataBuf, manufacturerDataBuf, onlog) {
|
|
4
|
+
if (serviceDataBuf.length !== 3) {
|
|
5
|
+
if (onlog && typeof onlog === 'function') {
|
|
6
|
+
onlog(`[parseServiceDataForWoIOSensorTH] Service Data Buffer length ${serviceDataBuf.length} !== 3!`);
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
6
9
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
if (manufacturerDataBuf.length !== 14) {
|
|
11
|
+
if (onlog && typeof onlog === 'function') {
|
|
12
|
+
onlog(`[parseServiceDataForWoIOSensorTH] Manufacturer Data Buffer length ${manufacturerDataBuf.length} !== 14!`);
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
12
15
|
}
|
|
13
|
-
|
|
16
|
+
const mdByte10 = manufacturerDataBuf.readUInt8(10);
|
|
17
|
+
const mdByte11 = manufacturerDataBuf.readUInt8(11);
|
|
18
|
+
const mdByte12 = manufacturerDataBuf.readUInt8(12);
|
|
19
|
+
const sdByte2 = serviceDataBuf.readUInt8(2);
|
|
20
|
+
const temp_sign = mdByte11 & 0b10000000 ? 1 : -1;
|
|
21
|
+
const temp_c = temp_sign * ((mdByte11 & 0b01111111) + (mdByte10 & 0b00001111) / 10);
|
|
22
|
+
const temp_f = Math.round(((temp_c * 9 / 5) + 32) * 10) / 10;
|
|
23
|
+
const data = {
|
|
24
|
+
model: 'w',
|
|
25
|
+
modelName: 'WoIOSensorTH',
|
|
26
|
+
temperature: {
|
|
27
|
+
c: temp_c,
|
|
28
|
+
f: temp_f,
|
|
29
|
+
},
|
|
30
|
+
fahrenheit: mdByte12 & 0b10000000 ? true : false, // needs to be confirmed!
|
|
31
|
+
humidity: mdByte12 & 0b01111111,
|
|
32
|
+
battery: sdByte2 & 0b01111111,
|
|
33
|
+
};
|
|
34
|
+
console.log(data);
|
|
35
|
+
return data;
|
|
14
36
|
}
|
|
15
|
-
const mdByte10 = manufacturerDataBuf.readUInt8(10);
|
|
16
|
-
const mdByte11 = manufacturerDataBuf.readUInt8(11);
|
|
17
|
-
const mdByte12 = manufacturerDataBuf.readUInt8(12);
|
|
18
|
-
const sdByte2 = serviceDataBuf.readUInt8(2);
|
|
19
|
-
const temp_sign = mdByte11 & 0b10000000 ? 1 : -1;
|
|
20
|
-
const temp_c = temp_sign * ((mdByte11 & 0b01111111) + (mdByte10 & 0b00001111) / 10);
|
|
21
|
-
const temp_f = Math.round(((temp_c * 9 / 5) + 32) * 10) / 10;
|
|
22
|
-
const data = {
|
|
23
|
-
model: 'w',
|
|
24
|
-
modelName: 'WoIOSensorTH',
|
|
25
|
-
temperature: {
|
|
26
|
-
c: temp_c,
|
|
27
|
-
f: temp_f,
|
|
28
|
-
},
|
|
29
|
-
fahrenheit: mdByte12 & 0b10000000 ? true : false, // needs to be confirmed!
|
|
30
|
-
humidity: mdByte12 & 0b01111111,
|
|
31
|
-
battery: sdByte2 & 0b01111111,
|
|
32
|
-
};
|
|
33
|
-
console.log(data);
|
|
34
|
-
return data;
|
|
35
|
-
}
|
|
36
|
-
export class WoIOSensorTH extends SwitchbotDevice {
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=woiosensorth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woiosensorth.js","sourceRoot":"","sources":["../../src/device/woiosensorth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"woiosensorth.js","sourceRoot":"","sources":["../../src/device/woiosensorth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,OAAO,YAAa,SAAQ,eAAe;IAC/C,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK;QAChE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,gEAAgE,cAAc,CAAC,MAAM,SAAS,CAC/F,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,mBAAmB,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,qEAAqE,mBAAmB,CAAC,MAAM,UAAU,CAC1G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAE7D,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,cAAc;YACzB,WAAW,EAAE;gBACX,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,MAAM;aACV;YACD,UAAU,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,yBAAyB;YAC3E,QAAQ,EAAE,QAAQ,GAAG,UAAU;YAC/B,OAAO,EAAE,OAAO,GAAG,UAAU;SAC9B,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
2
|
-
export declare function parseServiceDataForWoPlugMiniUS(manufacturerData: any, onlog: any): Promise<{
|
|
3
|
-
model: string;
|
|
4
|
-
modelName: string;
|
|
5
|
-
state: string | null;
|
|
6
|
-
delay: boolean;
|
|
7
|
-
timer: boolean;
|
|
8
|
-
syncUtcTime: boolean;
|
|
9
|
-
wifiRssi: any;
|
|
10
|
-
overload: boolean;
|
|
11
|
-
currentPower: number;
|
|
12
|
-
} | null>;
|
|
13
|
-
export declare function parseServiceDataForWoPlugMiniJP(manufacturerData: any, onlog: any): {
|
|
14
|
-
model: string;
|
|
15
|
-
modelName: string;
|
|
16
|
-
state: string | null;
|
|
17
|
-
delay: boolean;
|
|
18
|
-
timer: boolean;
|
|
19
|
-
syncUtcTime: boolean;
|
|
20
|
-
wifiRssi: any;
|
|
21
|
-
overload: boolean;
|
|
22
|
-
currentPower: number;
|
|
23
|
-
} | null;
|
|
24
2
|
/**
|
|
25
3
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/plugmini.md
|
|
26
4
|
*/
|
|
27
5
|
export declare class WoPlugMini extends SwitchbotDevice {
|
|
6
|
+
static parseServiceData_US(manufacturerData: any, onlog: any): {
|
|
7
|
+
model: string;
|
|
8
|
+
modelName: string;
|
|
9
|
+
state: string | null;
|
|
10
|
+
delay: boolean;
|
|
11
|
+
timer: boolean;
|
|
12
|
+
syncUtcTime: boolean;
|
|
13
|
+
wifiRssi: any;
|
|
14
|
+
overload: boolean;
|
|
15
|
+
currentPower: number;
|
|
16
|
+
} | null;
|
|
17
|
+
static parseServiceData_JP(manufacturerData: any, onlog: any): {
|
|
18
|
+
model: string;
|
|
19
|
+
modelName: string;
|
|
20
|
+
state: string | null;
|
|
21
|
+
delay: boolean;
|
|
22
|
+
timer: boolean;
|
|
23
|
+
syncUtcTime: boolean;
|
|
24
|
+
wifiRssi: any;
|
|
25
|
+
overload: boolean;
|
|
26
|
+
currentPower: number;
|
|
27
|
+
} | null;
|
|
28
28
|
/**
|
|
29
29
|
* @returns {Promise<boolean>} resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
30
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woplugmini.d.ts","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"woplugmini.d.ts","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,KAAA,EAAE,KAAK,KAAA;;;;;;;;;;;IAuClD,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,KAAA,EAAE,KAAK,KAAA;;;;;;;;;;;IAuClD;;OAEG;IACH,SAAS;IAIT;;OAEG;IACH,SAAS,CAAC,YAAY,KAAA;IAKtB;;OAEG;IACH,MAAM;IAIN;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,MAAM;IAIN;;OAEG;IACH,WAAW,CAAC,KAAK,KAAA;CAgClB"}
|
|
@@ -1,75 +1,75 @@
|
|
|
1
1
|
import { Buffer } from 'buffer';
|
|
2
2
|
import { SwitchbotDevice } from '../switchbot.js';
|
|
3
|
-
export async function parseServiceDataForWoPlugMiniUS(manufacturerData, onlog) {
|
|
4
|
-
if (manufacturerData.length !== 14) {
|
|
5
|
-
if (onlog && typeof onlog === 'function') {
|
|
6
|
-
onlog(`[parseServiceDataForWoPlugMiniUS] Buffer length ${manufacturerData.length} should be 14`);
|
|
7
|
-
}
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
const byte9 = manufacturerData.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
|
|
11
|
-
const byte10 = manufacturerData.readUInt8(10); // byte10: bit0: 0=no delay,1=delay, bit1:0=no timer, 1=timer; bit2:0=no sync time, 1=sync'ed time
|
|
12
|
-
const byte11 = manufacturerData.readUInt8(11); // byte11: wifi rssi
|
|
13
|
-
const byte12 = manufacturerData.readUInt8(12); // byte12: bit7: overload?
|
|
14
|
-
const byte13 = manufacturerData.readUInt8(13); // byte12[bit0~6] + byte13: current power value
|
|
15
|
-
const state = byte9 === 0x00 ? 'off' : byte9 === 0x80 ? 'on' : null;
|
|
16
|
-
const delay = !!(byte10 & 0b00000001);
|
|
17
|
-
const timer = !!(byte10 & 0b00000010);
|
|
18
|
-
const syncUtcTime = !!(byte10 & 0b00000100);
|
|
19
|
-
const wifiRssi = byte11;
|
|
20
|
-
const overload = !!(byte12 & 0b10000000);
|
|
21
|
-
const currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
|
|
22
|
-
// TODO: voltage ???
|
|
23
|
-
const data = {
|
|
24
|
-
model: 'g',
|
|
25
|
-
modelName: 'WoPlugMini',
|
|
26
|
-
state: state,
|
|
27
|
-
delay: delay,
|
|
28
|
-
timer: timer,
|
|
29
|
-
syncUtcTime: syncUtcTime,
|
|
30
|
-
wifiRssi: wifiRssi,
|
|
31
|
-
overload: overload,
|
|
32
|
-
currentPower: currentPower,
|
|
33
|
-
};
|
|
34
|
-
return data;
|
|
35
|
-
}
|
|
36
|
-
export function parseServiceDataForWoPlugMiniJP(manufacturerData, onlog) {
|
|
37
|
-
if (manufacturerData.length !== 14) {
|
|
38
|
-
if (onlog && typeof onlog === 'function') {
|
|
39
|
-
onlog(`[parseServiceDataForWoPlugMiniJP] Buffer length ${manufacturerData.length} should be 14`);
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const byte9 = manufacturerData.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
|
|
44
|
-
const byte10 = manufacturerData.readUInt8(10); // byte10: bit0: 0=no delay,1=delay, bit1:0=no timer, 1=timer; bit2:0=no sync time, 1=sync'ed time
|
|
45
|
-
const byte11 = manufacturerData.readUInt8(11); // byte11: wifi rssi
|
|
46
|
-
const byte12 = manufacturerData.readUInt8(12); // byte12: bit7: overload?
|
|
47
|
-
const byte13 = manufacturerData.readUInt8(13); // byte12[bit0~6] + byte13: current power value
|
|
48
|
-
const state = byte9 === 0x00 ? 'off' : byte9 === 0x80 ? 'on' : null;
|
|
49
|
-
const delay = !!(byte10 & 0b00000001);
|
|
50
|
-
const timer = !!(byte10 & 0b00000010);
|
|
51
|
-
const syncUtcTime = !!(byte10 & 0b00000100);
|
|
52
|
-
const wifiRssi = byte11;
|
|
53
|
-
const overload = !!(byte12 & 0b10000000);
|
|
54
|
-
const currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
|
|
55
|
-
// TODO: voltage ???
|
|
56
|
-
const data = {
|
|
57
|
-
model: 'j',
|
|
58
|
-
modelName: 'WoPlugMini',
|
|
59
|
-
state: state,
|
|
60
|
-
delay: delay,
|
|
61
|
-
timer: timer,
|
|
62
|
-
syncUtcTime: syncUtcTime,
|
|
63
|
-
wifiRssi: wifiRssi,
|
|
64
|
-
overload: overload,
|
|
65
|
-
currentPower: currentPower,
|
|
66
|
-
};
|
|
67
|
-
return data;
|
|
68
|
-
}
|
|
69
3
|
/**
|
|
70
4
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/plugmini.md
|
|
71
5
|
*/
|
|
72
6
|
export class WoPlugMini extends SwitchbotDevice {
|
|
7
|
+
static parseServiceData_US(manufacturerData, onlog) {
|
|
8
|
+
if (manufacturerData.length !== 14) {
|
|
9
|
+
if (onlog && typeof onlog === 'function') {
|
|
10
|
+
onlog(`[parseServiceDataForWoPlugMiniUS] Buffer length ${manufacturerData.length} should be 14`);
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const byte9 = manufacturerData.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
|
|
15
|
+
const byte10 = manufacturerData.readUInt8(10); // byte10: bit0: 0=no delay,1=delay, bit1:0=no timer, 1=timer; bit2:0=no sync time, 1=sync'ed time
|
|
16
|
+
const byte11 = manufacturerData.readUInt8(11); // byte11: wifi rssi
|
|
17
|
+
const byte12 = manufacturerData.readUInt8(12); // byte12: bit7: overload?
|
|
18
|
+
const byte13 = manufacturerData.readUInt8(13); // byte12[bit0~6] + byte13: current power value
|
|
19
|
+
const state = byte9 === 0x00 ? 'off' : byte9 === 0x80 ? 'on' : null;
|
|
20
|
+
const delay = !!(byte10 & 0b00000001);
|
|
21
|
+
const timer = !!(byte10 & 0b00000010);
|
|
22
|
+
const syncUtcTime = !!(byte10 & 0b00000100);
|
|
23
|
+
const wifiRssi = byte11;
|
|
24
|
+
const overload = !!(byte12 & 0b10000000);
|
|
25
|
+
const currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
|
|
26
|
+
// TODO: voltage ???
|
|
27
|
+
const data = {
|
|
28
|
+
model: 'g',
|
|
29
|
+
modelName: 'WoPlugMini',
|
|
30
|
+
state: state,
|
|
31
|
+
delay: delay,
|
|
32
|
+
timer: timer,
|
|
33
|
+
syncUtcTime: syncUtcTime,
|
|
34
|
+
wifiRssi: wifiRssi,
|
|
35
|
+
overload: overload,
|
|
36
|
+
currentPower: currentPower,
|
|
37
|
+
};
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
static parseServiceData_JP(manufacturerData, onlog) {
|
|
41
|
+
if (manufacturerData.length !== 14) {
|
|
42
|
+
if (onlog && typeof onlog === 'function') {
|
|
43
|
+
onlog(`[parseServiceDataForWoPlugMiniJP] Buffer length ${manufacturerData.length} should be 14`);
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const byte9 = manufacturerData.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
|
|
48
|
+
const byte10 = manufacturerData.readUInt8(10); // byte10: bit0: 0=no delay,1=delay, bit1:0=no timer, 1=timer; bit2:0=no sync time, 1=sync'ed time
|
|
49
|
+
const byte11 = manufacturerData.readUInt8(11); // byte11: wifi rssi
|
|
50
|
+
const byte12 = manufacturerData.readUInt8(12); // byte12: bit7: overload?
|
|
51
|
+
const byte13 = manufacturerData.readUInt8(13); // byte12[bit0~6] + byte13: current power value
|
|
52
|
+
const state = byte9 === 0x00 ? 'off' : byte9 === 0x80 ? 'on' : null;
|
|
53
|
+
const delay = !!(byte10 & 0b00000001);
|
|
54
|
+
const timer = !!(byte10 & 0b00000010);
|
|
55
|
+
const syncUtcTime = !!(byte10 & 0b00000100);
|
|
56
|
+
const wifiRssi = byte11;
|
|
57
|
+
const overload = !!(byte12 & 0b10000000);
|
|
58
|
+
const currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
|
|
59
|
+
// TODO: voltage ???
|
|
60
|
+
const data = {
|
|
61
|
+
model: 'j',
|
|
62
|
+
modelName: 'WoPlugMini',
|
|
63
|
+
state: state,
|
|
64
|
+
delay: delay,
|
|
65
|
+
timer: timer,
|
|
66
|
+
syncUtcTime: syncUtcTime,
|
|
67
|
+
wifiRssi: wifiRssi,
|
|
68
|
+
overload: overload,
|
|
69
|
+
currentPower: currentPower,
|
|
70
|
+
};
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
73
73
|
/**
|
|
74
74
|
* @returns {Promise<boolean>} resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
|
|
75
75
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woplugmini.js","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"woplugmini.js","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK;QAChD,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,mDAAmD,gBAAgB,CAAC,MAAM,eAAe,CAC1F,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C;QAC1F,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,kGAAkG;QACjJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;QACzE,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C;QAE9F,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;QAC7E,oBAAoB;QAEpB,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK;QAChD,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CACH,mDAAmD,gBAAgB,CAAC,MAAM,eAAe,CAC1F,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C;QAC1F,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,kGAAkG;QACjJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;QACzE,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C;QAE9F,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;QAC7E,oBAAoB;QAEpB,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,YAAY;QACpB,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAK;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,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,SAAuB,CAAC,CAAC;gBACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAClC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBACnC,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;wBAC5B,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjB,CAAC;yBAAM,CAAC;wBACN,MAAM,CACJ,IAAI,KAAK,CACP,kCAAkC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC7D,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CACJ,IAAI,KAAK,CACP,8CAA8C;wBAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC1B,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|