node-switchbot 2.5.0-beta.2 → 2.5.0-beta.21

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.
Files changed (197) hide show
  1. package/dist/advertising.d.ts +31 -20
  2. package/dist/advertising.d.ts.map +1 -1
  3. package/dist/advertising.js +72 -75
  4. package/dist/advertising.js.map +1 -1
  5. package/dist/device/woblindtilt.d.ts +19 -50
  6. package/dist/device/woblindtilt.d.ts.map +1 -1
  7. package/dist/device/woblindtilt.js +39 -98
  8. package/dist/device/woblindtilt.js.map +1 -1
  9. package/dist/device/wobulb.d.ts +41 -15
  10. package/dist/device/wobulb.d.ts.map +1 -1
  11. package/dist/device/wobulb.js +71 -127
  12. package/dist/device/wobulb.js.map +1 -1
  13. package/dist/device/woceilinglight.d.ts +47 -21
  14. package/dist/device/woceilinglight.d.ts.map +1 -1
  15. package/dist/device/woceilinglight.js +94 -169
  16. package/dist/device/woceilinglight.js.map +1 -1
  17. package/dist/device/wocontact.d.ts +11 -1
  18. package/dist/device/wocontact.d.ts.map +1 -1
  19. package/dist/device/wocontact.js +22 -21
  20. package/dist/device/wocontact.js.map +1 -1
  21. package/dist/device/wocurtain.d.ts +39 -1
  22. package/dist/device/wocurtain.d.ts.map +1 -1
  23. package/dist/device/wocurtain.js +68 -102
  24. package/dist/device/wocurtain.js.map +1 -1
  25. package/dist/device/wohand.d.ts +37 -2
  26. package/dist/device/wohand.d.ts.map +1 -1
  27. package/dist/device/wohand.js +54 -88
  28. package/dist/device/wohand.js.map +1 -1
  29. package/dist/device/wohub2.d.ts +11 -1
  30. package/dist/device/wohub2.d.ts.map +1 -1
  31. package/dist/device/wohub2.js +20 -28
  32. package/dist/device/wohub2.js.map +1 -1
  33. package/dist/device/wohumi.d.ts +37 -2
  34. package/dist/device/wohumi.d.ts.map +1 -1
  35. package/dist/device/wohumi.js +51 -82
  36. package/dist/device/wohumi.js.map +1 -1
  37. package/dist/device/woiosensorth.d.ts +12 -1
  38. package/dist/device/woiosensorth.d.ts.map +1 -1
  39. package/dist/device/woiosensorth.js +24 -28
  40. package/dist/device/woiosensorth.js.map +1 -1
  41. package/dist/device/woplugmini.d.ts +45 -12
  42. package/dist/device/woplugmini.d.ts.map +1 -1
  43. package/dist/device/woplugmini.js +69 -75
  44. package/dist/device/woplugmini.js.map +1 -1
  45. package/dist/device/wopresence.d.ts +11 -1
  46. package/dist/device/wopresence.d.ts.map +1 -1
  47. package/dist/device/wopresence.js +20 -26
  48. package/dist/device/wopresence.js.map +1 -1
  49. package/dist/device/wosensorth.d.ts +18 -2
  50. package/dist/device/wosensorth.d.ts.map +1 -1
  51. package/dist/device/wosensorth.js +32 -48
  52. package/dist/device/wosensorth.js.map +1 -1
  53. package/dist/device/wosmartlock.d.ts +56 -13
  54. package/dist/device/wosmartlock.d.ts.map +1 -1
  55. package/dist/device/wosmartlock.js +106 -194
  56. package/dist/device/wosmartlock.js.map +1 -1
  57. package/dist/device/wosmartlockpro.d.ts +61 -18
  58. package/dist/device/wosmartlockpro.d.ts.map +1 -1
  59. package/dist/device/wosmartlockpro.js +114 -203
  60. package/dist/device/wosmartlockpro.js.map +1 -1
  61. package/dist/device/wostrip.d.ts +37 -18
  62. package/dist/device/wostrip.d.ts.map +1 -1
  63. package/dist/device/wostrip.js +78 -124
  64. package/dist/device/wostrip.js.map +1 -1
  65. package/dist/device.d.ts +87 -224
  66. package/dist/device.d.ts.map +1 -1
  67. package/dist/device.js +123 -407
  68. package/dist/device.js.map +1 -1
  69. package/dist/index.d.ts +8 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +8 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/parameter-checker.d.ts +78 -18
  74. package/dist/parameter-checker.d.ts.map +1 -1
  75. package/dist/parameter-checker.js +139 -334
  76. package/dist/parameter-checker.js.map +1 -1
  77. package/dist/settings.d.ts +46 -0
  78. package/dist/settings.d.ts.map +1 -1
  79. package/dist/settings.js +46 -2
  80. package/dist/settings.js.map +1 -1
  81. package/dist/switchbot-openapi.d.ts +56 -0
  82. package/dist/switchbot-openapi.d.ts.map +1 -0
  83. package/dist/switchbot-openapi.js +241 -0
  84. package/dist/switchbot-openapi.js.map +1 -0
  85. package/dist/switchbot.d.ts +41 -17
  86. package/dist/switchbot.d.ts.map +1 -1
  87. package/dist/switchbot.js +311 -176
  88. package/dist/switchbot.js.map +1 -1
  89. package/dist/test/woblindtilt.test.d.ts.map +1 -0
  90. package/dist/test/woblindtilt.test.js +97 -0
  91. package/dist/test/woblindtilt.test.js.map +1 -0
  92. package/dist/{device → test}/wobulb.test.d.ts.map +1 -1
  93. package/dist/test/wobulb.test.js +104 -0
  94. package/dist/test/wobulb.test.js.map +1 -0
  95. package/dist/test/woceilinglight.test.d.ts.map +1 -0
  96. package/dist/test/woceilinglight.test.js +95 -0
  97. package/dist/test/woceilinglight.test.js.map +1 -0
  98. package/dist/test/wocontact.test.d.ts.map +1 -0
  99. package/dist/test/wocontact.test.js +38 -0
  100. package/dist/test/wocontact.test.js.map +1 -0
  101. package/dist/test/wocurtain.test.d.ts.map +1 -0
  102. package/dist/test/wocurtain.test.js +76 -0
  103. package/dist/test/wocurtain.test.js.map +1 -0
  104. package/dist/{device → test}/wohand.test.d.ts.map +1 -1
  105. package/dist/test/wohand.test.js +76 -0
  106. package/dist/test/wohand.test.js.map +1 -0
  107. package/dist/test/wohub2.test.d.ts +2 -0
  108. package/dist/test/wohub2.test.d.ts.map +1 -0
  109. package/dist/{device/wohand2.test.js → test/wohub2.test.js} +10 -8
  110. package/dist/test/wohub2.test.js.map +1 -0
  111. package/dist/{device → test}/wohumi.test.d.ts.map +1 -1
  112. package/dist/{device → test}/wohumi.test.js +5 -2
  113. package/dist/test/wohumi.test.js.map +1 -0
  114. package/dist/test/woiosensorth.test.d.ts.map +1 -0
  115. package/dist/{device → test}/woiosensorth.test.js +11 -9
  116. package/dist/test/woiosensorth.test.js.map +1 -0
  117. package/dist/test/woplugmini.test.d.ts.map +1 -0
  118. package/dist/{device → test}/woplugmini.test.js +10 -5
  119. package/dist/test/woplugmini.test.js.map +1 -0
  120. package/dist/test/wopresence.test.d.ts.map +1 -0
  121. package/dist/{device → test}/wopresence.test.js +5 -1
  122. package/dist/test/wopresence.test.js.map +1 -0
  123. package/dist/test/wosensorth.test.d.ts.map +1 -0
  124. package/dist/{device → test}/wosensorth.test.js +5 -14
  125. package/dist/test/wosensorth.test.js.map +1 -0
  126. package/dist/test/wosmartlock.test.d.ts.map +1 -0
  127. package/dist/test/wosmartlock.test.js +147 -0
  128. package/dist/test/wosmartlock.test.js.map +1 -0
  129. package/dist/test/wosmartlockpro.test.d.ts.map +1 -0
  130. package/dist/{device → test}/wosmartlockpro.test.js +30 -26
  131. package/dist/test/wosmartlockpro.test.js.map +1 -0
  132. package/dist/{device → test}/wostrip.test.d.ts.map +1 -1
  133. package/dist/{device → test}/wostrip.test.js +18 -19
  134. package/dist/test/wostrip.test.js.map +1 -0
  135. package/dist/types/bledevicestatus.d.ts +4 -12
  136. package/dist/types/bledevicestatus.d.ts.map +1 -1
  137. package/dist/types/devicelist.d.ts.map +1 -1
  138. package/dist/types/devicelist.js +0 -4
  139. package/dist/types/devicelist.js.map +1 -1
  140. package/dist/types/deviceresponse.d.ts.map +1 -1
  141. package/dist/types/devicestatus.d.ts.map +1 -1
  142. package/dist/types/irdevicelist.d.ts.map +1 -1
  143. package/dist/types/pushbody.d.ts +1 -1
  144. package/dist/types/pushbody.d.ts.map +1 -1
  145. package/dist/types/types.d.ts +71 -120
  146. package/dist/types/types.d.ts.map +1 -1
  147. package/dist/types/types.js +10 -0
  148. package/dist/types/types.js.map +1 -1
  149. package/package.json +6 -4
  150. package/dist/device/woblindtilt.test.d.ts.map +0 -1
  151. package/dist/device/woblindtilt.test.js +0 -26
  152. package/dist/device/woblindtilt.test.js.map +0 -1
  153. package/dist/device/wobulb.test.js +0 -52
  154. package/dist/device/wobulb.test.js.map +0 -1
  155. package/dist/device/woceilinglight.test.d.ts.map +0 -1
  156. package/dist/device/woceilinglight.test.js +0 -63
  157. package/dist/device/woceilinglight.test.js.map +0 -1
  158. package/dist/device/wocontact.test.d.ts.map +0 -1
  159. package/dist/device/wocontact.test.js +0 -34
  160. package/dist/device/wocontact.test.js.map +0 -1
  161. package/dist/device/wocurtain.test.d.ts.map +0 -1
  162. package/dist/device/wocurtain.test.js +0 -33
  163. package/dist/device/wocurtain.test.js.map +0 -1
  164. package/dist/device/wohand.test.js +0 -62
  165. package/dist/device/wohand.test.js.map +0 -1
  166. package/dist/device/wohand2.test.d.ts +0 -2
  167. package/dist/device/wohand2.test.d.ts.map +0 -1
  168. package/dist/device/wohand2.test.js.map +0 -1
  169. package/dist/device/wohumi.test.js.map +0 -1
  170. package/dist/device/woiosensorth.test.d.ts.map +0 -1
  171. package/dist/device/woiosensorth.test.js.map +0 -1
  172. package/dist/device/woplugmini.test.d.ts.map +0 -1
  173. package/dist/device/woplugmini.test.js.map +0 -1
  174. package/dist/device/wopresence.test.d.ts.map +0 -1
  175. package/dist/device/wopresence.test.js.map +0 -1
  176. package/dist/device/wosensorth.test.d.ts.map +0 -1
  177. package/dist/device/wosensorth.test.js.map +0 -1
  178. package/dist/device/wosmartlock.test.d.ts.map +0 -1
  179. package/dist/device/wosmartlock.test.js +0 -84
  180. package/dist/device/wosmartlock.test.js.map +0 -1
  181. package/dist/device/wosmartlockpro.test.d.ts.map +0 -1
  182. package/dist/device/wosmartlockpro.test.js.map +0 -1
  183. package/dist/device/wostrip.test.js.map +0 -1
  184. /package/dist/{device → test}/woblindtilt.test.d.ts +0 -0
  185. /package/dist/{device → test}/wobulb.test.d.ts +0 -0
  186. /package/dist/{device → test}/woceilinglight.test.d.ts +0 -0
  187. /package/dist/{device → test}/wocontact.test.d.ts +0 -0
  188. /package/dist/{device → test}/wocurtain.test.d.ts +0 -0
  189. /package/dist/{device → test}/wohand.test.d.ts +0 -0
  190. /package/dist/{device → test}/wohumi.test.d.ts +0 -0
  191. /package/dist/{device → test}/woiosensorth.test.d.ts +0 -0
  192. /package/dist/{device → test}/woplugmini.test.d.ts +0 -0
  193. /package/dist/{device → test}/wopresence.test.d.ts +0 -0
  194. /package/dist/{device → test}/wosensorth.test.d.ts +0 -0
  195. /package/dist/{device → test}/wosmartlock.test.d.ts +0 -0
  196. /package/dist/{device → test}/wosmartlockpro.test.d.ts +0 -0
  197. /package/dist/{device → test}/wostrip.test.d.ts +0 -0
@@ -1,60 +1,52 @@
1
- import { Buffer } from 'node:buffer';
2
1
  /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
3
2
  *
4
3
  * woplugmini.ts: Switchbot BLE API registration.
5
4
  */
5
+ import { Buffer } from 'node:buffer';
6
6
  import { SwitchbotDevice } from '../device.js';
7
7
  import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
8
8
  /**
9
+ * Class representing a WoPlugMini device.
9
10
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/plugmini.md
10
11
  */
11
12
  export class WoPlugMini extends SwitchbotDevice {
13
+ /**
14
+ * Parses the service data for WoPlugMini US.
15
+ * @param {Buffer} manufacturerData - The manufacturer data buffer.
16
+ * @param {Function} [onlog] - Optional logging function.
17
+ * @returns {Promise<object | null>} - Parsed service data or null if invalid.
18
+ */
12
19
  static async parseServiceData_US(manufacturerData, onlog) {
13
- if (manufacturerData.length !== 14) {
14
- if (onlog && typeof onlog === 'function') {
15
- onlog(`[parseServiceDataForWoPlugMiniUS] Buffer length ${manufacturerData.length} should be 14`);
16
- }
17
- return null;
18
- }
19
- const byte9 = manufacturerData.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
20
- 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
21
- const byte11 = manufacturerData.readUInt8(11); // byte11: wifi rssi
22
- const byte12 = manufacturerData.readUInt8(12); // byte12: bit7: overload?
23
- const byte13 = manufacturerData.readUInt8(13); // byte12[bit0~6] + byte13: current power value
24
- const state = byte9 === 0x00 ? 'off' : byte9 === 0x80 ? 'on' : null;
25
- const delay = !!(byte10 & 0b00000001);
26
- const timer = !!(byte10 & 0b00000010);
27
- const syncUtcTime = !!(byte10 & 0b00000100);
28
- const wifiRssi = byte11;
29
- const overload = !!(byte12 & 0b10000000);
30
- const currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
31
- // TODO: voltage ???
32
- const data = {
33
- model: SwitchBotBLEModel.PlugMiniUS,
34
- modelName: SwitchBotBLEModelName.PlugMini,
35
- modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
36
- state,
37
- delay,
38
- timer,
39
- syncUtcTime,
40
- wifiRssi,
41
- overload,
42
- currentPower,
43
- };
44
- return data;
20
+ return this.parseServiceData(manufacturerData, SwitchBotBLEModel.PlugMiniUS, onlog);
45
21
  }
22
+ /**
23
+ * Parses the service data for WoPlugMini JP.
24
+ * @param {Buffer} manufacturerData - The manufacturer data buffer.
25
+ * @param {Function} [onlog] - Optional logging function.
26
+ * @returns {Promise<object | null>} - Parsed service data or null if invalid.
27
+ */
46
28
  static async parseServiceData_JP(manufacturerData, onlog) {
29
+ return this.parseServiceData(manufacturerData, SwitchBotBLEModel.PlugMiniJP, onlog);
30
+ }
31
+ /**
32
+ * Parses the service data for WoPlugMini.
33
+ * @param {Buffer} manufacturerData - The manufacturer data buffer.
34
+ * @param {SwitchBotBLEModel} model - The model of the plug mini.
35
+ * @param {Function} [onlog] - Optional logging function.
36
+ * @returns {Promise<object | null>} - Parsed service data or null if invalid.
37
+ */
38
+ static async parseServiceData(manufacturerData, model, onlog) {
47
39
  if (manufacturerData.length !== 14) {
48
- if (onlog && typeof onlog === 'function') {
49
- onlog(`[parseServiceDataForWoPlugMiniJP] Buffer length ${manufacturerData.length} should be 14`);
50
- }
40
+ onlog?.(`[parseServiceDataForWoPlugMini] Buffer length ${manufacturerData.length} should be 14`);
51
41
  return null;
52
42
  }
53
- const byte9 = manufacturerData.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
54
- 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
55
- const byte11 = manufacturerData.readUInt8(11); // byte11: wifi rssi
56
- const byte12 = manufacturerData.readUInt8(12); // byte12: bit7: overload?
57
- const byte13 = manufacturerData.readUInt8(13); // byte12[bit0~6] + byte13: current power value
43
+ const [byte9, byte10, byte11, byte12, byte13] = [
44
+ manufacturerData.readUInt8(9),
45
+ manufacturerData.readUInt8(10),
46
+ manufacturerData.readUInt8(11),
47
+ manufacturerData.readUInt8(12),
48
+ manufacturerData.readUInt8(13),
49
+ ];
58
50
  const state = byte9 === 0x00 ? 'off' : byte9 === 0x80 ? 'on' : null;
59
51
  const delay = !!(byte10 & 0b00000001);
60
52
  const timer = !!(byte10 & 0b00000010);
@@ -62,9 +54,8 @@ export class WoPlugMini extends SwitchbotDevice {
62
54
  const wifiRssi = byte11;
63
55
  const overload = !!(byte12 & 0b10000000);
64
56
  const currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
65
- // TODO: voltage ???
66
- const data = {
67
- model: SwitchBotBLEModel.PlugMiniJP,
57
+ return {
58
+ model,
68
59
  modelName: SwitchBotBLEModelName.PlugMini,
69
60
  modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
70
61
  state,
@@ -75,61 +66,64 @@ export class WoPlugMini extends SwitchbotDevice {
75
66
  overload,
76
67
  currentPower,
77
68
  };
78
- return data;
79
69
  }
80
70
  /**
81
- * @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
71
+ * Reads the state of the plug.
72
+ * @returns {Promise<boolean>} - Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
82
73
  */
83
74
  async readState() {
84
- return await this.operatePlug([0x57, 0x0F, 0x51, 0x01]);
75
+ return this.operatePlug([0x57, 0x0F, 0x51, 0x01]);
85
76
  }
86
77
  /**
78
+ * Sets the state of the plug.
87
79
  * @private
80
+ * @param {number[]} reqByteArray - The request byte array.
81
+ * @returns {Promise<boolean>} - Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
88
82
  */
89
83
  async setState(reqByteArray) {
90
84
  const base = [0x57, 0x0F, 0x50, 0x01];
91
- return await this.operatePlug([...base, ...reqByteArray]);
85
+ return this.operatePlug([...base, ...reqByteArray]);
92
86
  }
93
87
  /**
94
- * @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
88
+ * Turns on the plug.
89
+ * @returns {Promise<boolean>} - Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
95
90
  */
96
91
  async turnOn() {
97
- return await this.setState([0x01, 0x80]);
92
+ return this.setState([0x01, 0x80]);
98
93
  }
99
94
  /**
100
- * @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
95
+ * Turns off the plug.
96
+ * @returns {Promise<boolean>} - Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
101
97
  */
102
98
  async turnOff() {
103
- return await this.setState([0x01, 0x00]);
99
+ return this.setState([0x01, 0x00]);
104
100
  }
105
101
  /**
106
- * @returns resolves with a boolean that tells whether the plug in ON(true) or OFF(false)
102
+ * Toggles the state of the plug.
103
+ * @returns {Promise<boolean>} - Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
107
104
  */
108
105
  async toggle() {
109
- return await this.setState([0x02, 0x80]);
106
+ return this.setState([0x02, 0x80]);
110
107
  }
108
+ /**
109
+ * Operates the plug with the given bytes.
110
+ * @param {number[]} bytes - The byte array to send to the plug.
111
+ * @returns {Promise<boolean>} - Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
112
+ */
111
113
  async operatePlug(bytes) {
112
- const req_buf = Buffer.from(bytes);
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;
121
- }
122
- else {
123
- throw new Error(`The device returned an error: 0x${res_buf.toString('hex')}`);
124
- }
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;
132
- });
114
+ const reqBuf = Buffer.from(bytes);
115
+ const resBytes = await this.command(reqBuf);
116
+ const resBuf = Buffer.from(resBytes);
117
+ if (resBuf.length !== 2) {
118
+ throw new Error(`Expecting a 2-byte response, got instead: 0x${resBuf.toString('hex')}`);
119
+ }
120
+ const code = resBuf.readUInt8(1);
121
+ if (code === 0x00 || code === 0x80) {
122
+ return code === 0x80;
123
+ }
124
+ else {
125
+ throw new Error(`The device returned an error: 0x${resBuf.toString('hex')}`);
126
+ }
133
127
  }
134
128
  }
135
129
  //# sourceMappingURL=woplugmini.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"woplugmini.js","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"woplugmini.js","sourceRoot":"","sources":["../../src/device/woplugmini.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
1
  import type { Buffer } from 'node:buffer';
2
2
  import type { motionSensorServiceData } from '../types/bledevicestatus.js';
3
3
  import { SwitchbotDevice } from '../device.js';
4
+ /**
5
+ * Class representing a WoPresence device.
6
+ * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
7
+ */
4
8
  export declare class WoPresence extends SwitchbotDevice {
5
- static parseServiceData(serviceData: Buffer, onlog: ((message: string) => void) | undefined): Promise<motionSensorServiceData | null>;
9
+ /**
10
+ * Parses the service data for WoPresence.
11
+ * @param {Buffer} serviceData - The service data buffer.
12
+ * @param {Function} [onlog] - Optional logging function.
13
+ * @returns {Promise<motionSensorServiceData | null>} - Parsed service data or null if invalid.
14
+ */
15
+ static parseServiceData(serviceData: Buffer, onlog?: (message: string) => void): Promise<motionSensorServiceData | null>;
6
16
  }
7
17
  //# sourceMappingURL=wopresence.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"wopresence.d.ts","sourceRoot":"","sources":["../../src/device/wopresence.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C;;;;;OAKG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;CAwB3C"}
@@ -1,40 +1,34 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wopresence.ts: Switchbot BLE API registration.
4
- */
5
1
  import { SwitchbotDevice } from '../device.js';
6
2
  import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
3
+ /**
4
+ * Class representing a WoPresence device.
5
+ * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
6
+ */
7
7
  export class WoPresence extends SwitchbotDevice {
8
+ /**
9
+ * Parses the service data for WoPresence.
10
+ * @param {Buffer} serviceData - The service data buffer.
11
+ * @param {Function} [onlog] - Optional logging function.
12
+ * @returns {Promise<motionSensorServiceData | null>} - Parsed service data or null if invalid.
13
+ */
8
14
  static async parseServiceData(serviceData, onlog) {
9
15
  if (serviceData.length !== 6) {
10
- if (onlog && typeof onlog === 'function') {
11
- onlog(`[parseServiceDataForWoPresence] Buffer length ${serviceData.length} !== 6!`);
12
- }
16
+ onlog?.(`[parseServiceDataForWoPresence] Buffer length ${serviceData.length} !== 6!`);
13
17
  return null;
14
18
  }
15
- const byte1 = serviceData.readUInt8(1);
16
- const byte2 = serviceData.readUInt8(2);
17
- const byte5 = serviceData.readUInt8(5);
18
- const tested = !!(byte1 & 0b10000000);
19
- const movement = !!(byte1 & 0b01000000);
20
- const battery = byte2 & 0b01111111;
21
- const led = (byte5 & 0b00100000) >> 5;
22
- const iot = (byte5 & 0b00010000) >> 4;
23
- const sense_distance = (byte5 & 0b00001100) >> 2;
24
- const lightLevel = byte5 & 0b00000011;
25
- const is_light = !!(byte5 & 0b00000010);
19
+ const [byte1, byte2, , , , byte5] = serviceData;
26
20
  const data = {
27
21
  model: SwitchBotBLEModel.MotionSensor,
28
22
  modelName: SwitchBotBLEModelName.MotionSensor,
29
23
  modelFriendlyName: SwitchBotBLEModelFriendlyName.MotionSensor,
30
- tested,
31
- movement,
32
- battery,
33
- led,
34
- iot,
35
- sense_distance,
36
- lightLevel: lightLevel === 1 ? 'dark' : lightLevel === 2 ? 'bright' : 'unknown',
37
- is_light,
24
+ tested: !!(byte1 & 0b10000000),
25
+ movement: !!(byte1 & 0b01000000),
26
+ battery: byte2 & 0b01111111,
27
+ led: (byte5 & 0b00100000) >> 5,
28
+ iot: (byte5 & 0b00010000) >> 4,
29
+ sense_distance: (byte5 & 0b00001100) >> 2,
30
+ lightLevel: (byte5 & 0b00000011) === 1 ? 'dark' : (byte5 & 0b00000011) === 2 ? 'bright' : 'unknown',
31
+ is_light: !!(byte5 & 0b00000010),
38
32
  };
39
33
  return data;
40
34
  }
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"wopresence.js","sourceRoot":"","sources":["../../src/device/wopresence.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,KAAiC;QAEjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,KAAK,EAAE,CAAC,iDAAiD,WAAW,CAAC,MAAM,SAAS,CAAC,CAAA;YACrF,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,AAAD,EAAG,AAAD,EAAG,AAAD,EAAG,KAAK,CAAC,GAAG,WAAW,CAAA;QAE/C,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,iBAAiB,CAAC,YAAY;YACrC,SAAS,EAAE,qBAAqB,CAAC,YAAY;YAC7C,iBAAiB,EAAE,6BAA6B,CAAC,YAAY;YAC7D,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YAC9B,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YAChC,OAAO,EAAE,KAAK,GAAG,UAAU;YAC3B,GAAG,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;YAC9B,GAAG,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;YAC9B,cAAc,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;YACzC,UAAU,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACnG,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;SACjC,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -1,8 +1,24 @@
1
1
  import type { Buffer } from 'node:buffer';
2
2
  import type { meterPlusServiceData, meterServiceData } from '../types/bledevicestatus.js';
3
3
  import { SwitchbotDevice } from '../device.js';
4
+ /**
5
+ * Class representing a WoSensorTH device.
6
+ * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
7
+ */
4
8
  export declare class WoSensorTH extends SwitchbotDevice {
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>;
9
+ /**
10
+ * Parses the service data for WoSensorTH.
11
+ * @param {Buffer} serviceData - The service data buffer.
12
+ * @param {Function} [onlog] - Optional logging function.
13
+ * @returns {Promise<meterServiceData | null>} - Parsed service data or null if invalid.
14
+ */
15
+ static parseServiceData(serviceData: Buffer, onlog?: (message: string) => void): Promise<meterServiceData | null>;
16
+ /**
17
+ * Parses the service data for WoSensorTH Plus.
18
+ * @param {Buffer} serviceData - The service data buffer.
19
+ * @param {Function} [onlog] - Optional logging function.
20
+ * @returns {Promise<meterPlusServiceData | null>} - Parsed service data or null if invalid.
21
+ */
22
+ static parseServiceData_Plus(serviceData: Buffer, onlog?: (message: string) => void): Promise<meterPlusServiceData | null>;
7
23
  }
8
24
  //# sourceMappingURL=wosensorth.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"wosensorth.d.ts","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C;;;;;OAKG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAuBnC;;;;;OAKG;WACU,qBAAqB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;CAsBxC"}
@@ -1,77 +1,61 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wosensorth.ts: Switchbot BLE API registration.
4
- */
5
1
  import { SwitchbotDevice } from '../device.js';
6
2
  import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
3
+ /**
4
+ * Class representing a WoSensorTH device.
5
+ * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
6
+ */
7
7
  export class WoSensorTH extends SwitchbotDevice {
8
+ /**
9
+ * Parses the service data for WoSensorTH.
10
+ * @param {Buffer} serviceData - The service data buffer.
11
+ * @param {Function} [onlog] - Optional logging function.
12
+ * @returns {Promise<meterServiceData | null>} - Parsed service data or null if invalid.
13
+ */
8
14
  static async parseServiceData(serviceData, onlog) {
9
15
  if (serviceData.length !== 6) {
10
- if (onlog && typeof onlog === 'function') {
11
- onlog(`[parseServiceDataForWoSensorTH] Buffer length ${serviceData.length} !== 6!`);
12
- }
16
+ onlog?.(`[parseServiceDataForWoSensorTH] Buffer length ${serviceData.length} !== 6!`);
13
17
  return null;
14
18
  }
15
- const byte2 = serviceData.readUInt8(2);
16
- const byte3 = serviceData.readUInt8(3);
17
- const byte4 = serviceData.readUInt8(4);
18
- const byte5 = serviceData.readUInt8(5);
19
- const temp_sign = byte4 & 0b10000000 ? 1 : -1;
20
- const temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
21
- const temp_f = Math.round(((temp_c * 9 / 5) + 32) * 10) / 10;
22
- const data = {
19
+ const [byte2, byte3, byte4, byte5] = [serviceData.readUInt8(2), serviceData.readUInt8(3), serviceData.readUInt8(4), serviceData.readUInt8(5)];
20
+ const tempSign = byte4 & 0b10000000 ? 1 : -1;
21
+ const tempC = tempSign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
22
+ const tempF = Math.round(((tempC * 9 / 5) + 32) * 10) / 10;
23
+ return {
23
24
  model: SwitchBotBLEModel.Meter,
24
25
  modelName: SwitchBotBLEModelName.Meter,
25
26
  modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter,
26
- /**
27
- * @deprecated The `temperature` object is deprecated and will be removed in future versions.
28
- * Use the `celcius` and `fahrenheit` properties directly instead.
29
- */
30
- temperature: {
31
- c: temp_c,
32
- f: temp_f,
33
- },
34
- celcius: temp_c,
35
- fahrenheit: temp_f,
27
+ celsius: tempC,
28
+ fahrenheit: tempF,
36
29
  fahrenheit_mode: !!(byte5 & 0b10000000),
37
30
  humidity: byte5 & 0b01111111,
38
31
  battery: byte2 & 0b01111111,
39
32
  };
40
- return data;
41
33
  }
34
+ /**
35
+ * Parses the service data for WoSensorTH Plus.
36
+ * @param {Buffer} serviceData - The service data buffer.
37
+ * @param {Function} [onlog] - Optional logging function.
38
+ * @returns {Promise<meterPlusServiceData | null>} - Parsed service data or null if invalid.
39
+ */
42
40
  static async parseServiceData_Plus(serviceData, onlog) {
43
41
  if (serviceData.length !== 6) {
44
- if (onlog && typeof onlog === 'function') {
45
- onlog(`[parseServiceDataForWoSensorTHPlus] Buffer length ${serviceData.length} !== 6!`);
46
- }
42
+ onlog?.(`[parseServiceDataForWoSensorTHPlus] Buffer length ${serviceData.length} !== 6!`);
47
43
  return null;
48
44
  }
49
- const byte2 = serviceData.readUInt8(2);
50
- const byte3 = serviceData.readUInt8(3);
51
- const byte4 = serviceData.readUInt8(4);
52
- const byte5 = serviceData.readUInt8(5);
53
- const temp_sign = byte4 & 0b10000000 ? 1 : -1;
54
- const temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
55
- const temp_f = Math.round(((temp_c * 9 / 5) + 32) * 10) / 10;
56
- const data = {
45
+ const [byte2, byte3, byte4, byte5] = [serviceData.readUInt8(2), serviceData.readUInt8(3), serviceData.readUInt8(4), serviceData.readUInt8(5)];
46
+ const tempSign = byte4 & 0b10000000 ? 1 : -1;
47
+ const tempC = tempSign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
48
+ const tempF = Math.round(((tempC * 9 / 5) + 32) * 10) / 10;
49
+ return {
57
50
  model: SwitchBotBLEModel.MeterPlus,
58
51
  modelName: SwitchBotBLEModelName.MeterPlus,
59
52
  modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus,
60
- /**
61
- * @deprecated The `temperature` object is deprecated and will be removed in future versions.
62
- * Use the `celcius` and `fahrenheit` properties directly instead.
63
- */
64
- temperature: {
65
- c: temp_c,
66
- f: temp_f,
67
- },
68
- celcius: temp_c,
69
- fahrenheit: temp_f,
53
+ celsius: tempC,
54
+ fahrenheit: tempF,
70
55
  fahrenheit_mode: !!(byte5 & 0b10000000),
71
56
  humidity: byte5 & 0b01111111,
72
57
  battery: byte2 & 0b01111111,
73
58
  };
74
- return data;
75
59
  }
76
60
  }
77
61
  //# sourceMappingURL=wosensorth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wosensorth.js","sourceRoot":"","sources":["../../src/device/wosensorth.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;QACD,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;QACtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAEtC,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QAE5D,MAAM,IAAI,GAAqB;YAC7B,KAAK,EAAE,iBAAiB,CAAC,KAAK;YAC9B,SAAS,EAAE,qBAAqB,CAAC,KAAK;YACtC,iBAAiB,EAAE,6BAA6B,CAAC,KAAK;YACtD;;;eAGG;YACH,WAAW,EAAE;gBACX,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,MAAM;aACV;YACD,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YACvC,QAAQ,EAAE,KAAK,GAAG,UAAU;YAC5B,OAAO,EAAE,KAAK,GAAG,UAAU;SAC5B,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAChC,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,qDAAqD,WAAW,CAAC,MAAM,SAAS,CAAC,CAAA;YACzF,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,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;QACtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAEtC,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QAE5D,MAAM,IAAI,GAAyB;YACjC,KAAK,EAAE,iBAAiB,CAAC,SAAS;YAClC,SAAS,EAAE,qBAAqB,CAAC,SAAS;YAC1C,iBAAiB,EAAE,6BAA6B,CAAC,SAAS;YAC1D;;;eAGG;YACH,WAAW,EAAE;gBACX,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,MAAM;aACV;YACD,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YACvC,QAAQ,EAAE,KAAK,GAAG,UAAU;YAC5B,OAAO,EAAE,KAAK,GAAG,UAAU;SAC5B,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"wosensorth.js","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,14 @@ import type * as Noble from '@stoprocent/noble';
2
2
  import type { lockServiceData } from '../types/bledevicestatus.js';
3
3
  import { Buffer } from 'node:buffer';
4
4
  import { SwitchbotDevice } from '../device.js';
5
+ /**
6
+ * Class representing a WoSmartLock device.
7
+ * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/lock.md
8
+ */
5
9
  export declare class WoSmartLock extends SwitchbotDevice {
6
10
  iv: Buffer | null;
7
11
  key_id: string;
8
12
  encryption_key: Buffer | null;
9
- static COMMAND_GET_CKiv: string;
10
- static COMMAND_LOCK_INFO: string;
11
- static COMMAND_UNLOCK: string;
12
- static COMMAND_UNLOCK_NO_UNLATCH: string;
13
- static COMMAND_LOCK: string;
14
- static COMMAND_ENABLE_NOTIFICATIONS: string;
15
- static COMMAND_DISABLE_NOTIFICATIONS: string;
16
13
  static Result: {
17
14
  ERROR: number;
18
15
  SUCCESS: number;
@@ -20,17 +17,63 @@ export declare class WoSmartLock extends SwitchbotDevice {
20
17
  };
21
18
  static validateResponse(res: Buffer): Promise<number>;
22
19
  static getLockStatus(code: number): string;
23
- static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): Promise<lockServiceData | null>;
20
+ static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, onlog?: (message: string) => void): Promise<lockServiceData | null>;
24
21
  constructor(peripheral: Noble.Peripheral, noble: typeof Noble);
22
+ /**
23
+ * Initializes the encryption key info for valid lock communication.
24
+ * @param {string} keyId - The key ID.
25
+ * @param {string} encryptionKey - The encryption key.
26
+ */
25
27
  setKey(keyId: string, encryptionKey: string): Promise<void>;
26
- unlock(): Promise<void>;
27
- unlockNoUnlatch(): Promise<void>;
28
- lock(): Promise<void>;
29
- info(): Promise<void>;
28
+ /**
29
+ * Unlocks the Smart Lock.
30
+ * @returns {Promise<number>} - The result of the unlock operation.
31
+ */
32
+ unlock(): Promise<number>;
33
+ /**
34
+ * Unlocks the Smart Lock without unlatching the door.
35
+ * @returns {Promise<number>} - The result of the unlock operation.
36
+ */
37
+ unlockNoUnlatch(): Promise<number>;
38
+ /**
39
+ * Locks the Smart Lock.
40
+ * @returns {Promise<number>} - The result of the lock operation.
41
+ */
42
+ lock(): Promise<number>;
43
+ /**
44
+ * Gets general state info from the Smart Lock.
45
+ * @returns {Promise<object | null>} - The state object or null if an error occurred.
46
+ */
47
+ info(): Promise<object | null>;
48
+ /**
49
+ * Encrypts a string using AES-128-CTR.
50
+ * @param {string} str - The string to encrypt.
51
+ * @returns {Promise<string>} - The encrypted string in hex format.
52
+ */
30
53
  encrypt(str: string): Promise<string>;
54
+ /**
55
+ * Decrypts a buffer using AES-128-CTR.
56
+ * @param {Buffer} data - The data to decrypt.
57
+ * @returns {Promise<Buffer>} - The decrypted data.
58
+ */
31
59
  decrypt(data: Buffer): Promise<Buffer>;
60
+ /**
61
+ * Retrieves the IV from the device.
62
+ * @returns {Promise<Buffer>} - The IV buffer.
63
+ */
32
64
  getIv(): Promise<Buffer>;
65
+ /**
66
+ * Sends an encrypted command to the device.
67
+ * @param {string} key - The command key.
68
+ * @returns {Promise<Buffer>} - The response buffer.
69
+ */
33
70
  encryptedCommand(key: string): Promise<Buffer>;
34
- operateLock(key: string, encrypt?: boolean): Promise<Buffer | undefined>;
71
+ /**
72
+ * Operates the lock with the given command.
73
+ * @param {string} key - The command key.
74
+ * @param {boolean} [encrypt] - Whether to encrypt the command.
75
+ * @returns {Promise<Buffer>} - The response buffer.
76
+ */
77
+ operateLock(key: string, encrypt?: boolean): Promise<Buffer>;
35
78
  }
36
79
  //# sourceMappingURL=wosmartlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wosmartlock.d.ts","sourceRoot":"","sources":["../../src/device/wosmartlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAOpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAI9C,qBAAa,WAAY,SAAQ,eAAe;IAC9C,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAE7B,MAAM,CAAC,gBAAgB,SAAa;IACpC,MAAM,CAAC,iBAAiB,SAAe;IACvC,MAAM,CAAC,cAAc,SAAmB;IACxC,MAAM,CAAC,yBAAyB,SAAmB;IACnD,MAAM,CAAC,YAAY,SAAmB;IACtC,MAAM,CAAC,4BAA4B,SAAuB;IAC1D,MAAM,CAAC,6BAA6B,SAAW;IAE/C,MAAM,CAAC,MAAM;;;;MAIZ;WAEY,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAYzC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAqB7B,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC7C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;gBA4CtB,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK;IAiBvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAiB3C,MAAM;IAyBN,eAAe;IAyBf,IAAI;IAyBJ,IAAI;IAqBJ,OAAO,CAAC,GAAG,EAAE,MAAM;IAKnB,OAAO,CAAC,IAAI,EAAE,MAAM;IAKpB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAcxB,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAkB5B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc;CAmBvD"}
1
+ {"version":3,"file":"wosmartlock.d.ts","sourceRoot":"","sources":["../../src/device/wosmartlock.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAI9C;;;GAGG;AACH,qBAAa,WAAY,SAAQ,eAAe;IACvC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAO;IACxB,MAAM,EAAE,MAAM,CAAK;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAO;IAE3C,MAAM,CAAC,MAAM;;;;MAIZ;WAEY,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAa7B,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;gBA6BtB,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK;IAI7D;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcpC;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK3C;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B;;;;OAIG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBpD;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAczE"}