node-switchbot 3.4.2-beta.0 → 3.4.2-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/BLE.md +14 -13
  2. package/CHANGELOG.md +7 -0
  3. package/OpenAPI.md +13 -12
  4. package/branding/Node_x_SwitchBot.svg +2 -3
  5. package/dist/advertising.d.ts.map +1 -1
  6. package/dist/advertising.js +3 -0
  7. package/dist/advertising.js.map +1 -1
  8. package/dist/device/woblindtilt.d.ts +1 -1
  9. package/dist/device/woblindtilt.d.ts.map +1 -1
  10. package/dist/device/woblindtilt.js +4 -4
  11. package/dist/device/woblindtilt.js.map +1 -1
  12. package/dist/device/wohand.d.ts.map +1 -1
  13. package/dist/device/wohand.js +5 -4
  14. package/dist/device/wohand.js.map +1 -1
  15. package/dist/device/wohumi.d.ts +22 -11
  16. package/dist/device/wohumi.d.ts.map +1 -1
  17. package/dist/device/wohumi.js +45 -20
  18. package/dist/device/wohumi.js.map +1 -1
  19. package/dist/device/wohumi2.d.ts +61 -0
  20. package/dist/device/wohumi2.d.ts.map +1 -0
  21. package/dist/device/wohumi2.js +114 -0
  22. package/dist/device/wohumi2.js.map +1 -0
  23. package/dist/device/woleak.d.ts.map +1 -1
  24. package/dist/device/woleak.js +4 -12
  25. package/dist/device/woleak.js.map +1 -1
  26. package/dist/device/worelayswitch1.d.ts +4 -20
  27. package/dist/device/worelayswitch1.d.ts.map +1 -1
  28. package/dist/device/worelayswitch1.js +1 -108
  29. package/dist/device/worelayswitch1.js.map +1 -1
  30. package/dist/device/worelayswitch1pm.d.ts +1 -17
  31. package/dist/device/worelayswitch1pm.d.ts.map +1 -1
  32. package/dist/device/worelayswitch1pm.js +1 -108
  33. package/dist/device/worelayswitch1pm.js.map +1 -1
  34. package/dist/device.d.ts +0 -1
  35. package/dist/device.d.ts.map +1 -1
  36. package/dist/device.js.map +1 -1
  37. package/dist/settings.d.ts +12 -28
  38. package/dist/settings.d.ts.map +1 -1
  39. package/dist/settings.js +24 -22
  40. package/dist/settings.js.map +1 -1
  41. package/dist/switchbot-ble.d.ts.map +1 -1
  42. package/dist/switchbot-ble.js +2 -0
  43. package/dist/switchbot-ble.js.map +1 -1
  44. package/dist/switchbot-openapi.d.ts +1 -1
  45. package/dist/switchbot-openapi.d.ts.map +1 -1
  46. package/dist/switchbot-openapi.js +11 -8
  47. package/dist/switchbot-openapi.js.map +1 -1
  48. package/dist/test/settings.test.js +6 -6
  49. package/dist/test/settings.test.js.map +1 -1
  50. package/dist/test/wohumi.test.js +25 -73
  51. package/dist/test/wohumi.test.js.map +1 -1
  52. package/dist/test/wohumi2.test.d.ts +2 -0
  53. package/dist/test/wohumi2.test.d.ts.map +1 -0
  54. package/dist/test/wohumi2.test.js +34 -0
  55. package/dist/test/wohumi2.test.js.map +1 -0
  56. package/dist/types/bledevicestatus.d.ts +17 -8
  57. package/dist/types/bledevicestatus.d.ts.map +1 -1
  58. package/dist/types/devicestatus.d.ts +10 -0
  59. package/dist/types/devicestatus.d.ts.map +1 -1
  60. package/dist/types/devicewebhookstatus.d.ts +5 -0
  61. package/dist/types/devicewebhookstatus.d.ts.map +1 -1
  62. package/dist/types/types.d.ts +6 -2
  63. package/dist/types/types.d.ts.map +1 -1
  64. package/dist/types/types.js +4 -0
  65. package/dist/types/types.js.map +1 -1
  66. package/docs/assets/hierarchy.js +1 -1
  67. package/docs/assets/main.js +4 -4
  68. package/docs/assets/navigation.js +1 -1
  69. package/docs/assets/search.js +1 -1
  70. package/docs/assets/style.css +6 -6
  71. package/docs/classes/Advertising.html +4 -4
  72. package/docs/classes/SwitchBotBLE.html +8 -8
  73. package/docs/classes/SwitchBotOpenAPI.html +8 -8
  74. package/docs/classes/SwitchbotDevice.html +11 -11
  75. package/docs/classes/WoBlindTilt.html +21 -21
  76. package/docs/classes/WoBulb.html +19 -19
  77. package/docs/classes/WoCeilingLight.html +22 -22
  78. package/docs/classes/WoContact.html +13 -13
  79. package/docs/classes/WoCurtain.html +19 -19
  80. package/docs/classes/WoHand.html +18 -18
  81. package/docs/classes/WoHub2.html +13 -13
  82. package/docs/classes/WoHumi.html +26 -24
  83. package/docs/classes/WoIOSensorTH.html +13 -13
  84. package/docs/classes/WoPlugMiniUS.html +18 -18
  85. package/docs/classes/WoPresence.html +13 -13
  86. package/docs/classes/WoSensorTH.html +12 -12
  87. package/docs/classes/WoSmartLock.html +23 -23
  88. package/docs/classes/WoSmartLockPro.html +23 -23
  89. package/docs/classes/WoStrip.html +20 -20
  90. package/docs/enums/LogLevel.html +2 -2
  91. package/docs/enums/SwitchBotBLEModel.html +4 -3
  92. package/docs/enums/SwitchBotBLEModelFriendlyName.html +4 -3
  93. package/docs/enums/SwitchBotBLEModelName.html +4 -3
  94. package/docs/enums/SwitchBotModel.html +3 -2
  95. package/docs/hierarchy.html +1 -1
  96. package/docs/index.html +9 -9
  97. package/docs/interfaces/AdvertisementData.html +2 -2
  98. package/docs/interfaces/Chars.html +2 -2
  99. package/docs/interfaces/ErrorObject.html +2 -2
  100. package/docs/interfaces/NobleTypes.html +2 -2
  101. package/docs/interfaces/Params.html +2 -2
  102. package/docs/interfaces/Rule.html +2 -2
  103. package/docs/interfaces/ServiceData.html +2 -2
  104. package/docs/interfaces/SwitchBotBLEDevice.html +2 -2
  105. package/docs/interfaces/WebhookDetail.html +2 -2
  106. package/docs/interfaces/ad.html +2 -2
  107. package/docs/interfaces/body.html +2 -2
  108. package/docs/interfaces/bodyChange.html +2 -2
  109. package/docs/interfaces/deleteWebhookResponse.html +2 -2
  110. package/docs/interfaces/device.html +2 -2
  111. package/docs/interfaces/deviceList.html +2 -2
  112. package/docs/interfaces/deviceStatus.html +2 -2
  113. package/docs/interfaces/deviceStatusRequest.html +2 -2
  114. package/docs/interfaces/deviceWebhook.html +2 -2
  115. package/docs/interfaces/deviceWebhookContext.html +2 -2
  116. package/docs/interfaces/devices.html +2 -2
  117. package/docs/interfaces/infraredRemoteList.html +2 -2
  118. package/docs/interfaces/irdevice.html +2 -2
  119. package/docs/interfaces/pushResponse.html +2 -2
  120. package/docs/interfaces/queryWebhookResponse.html +2 -2
  121. package/docs/interfaces/setupWebhookResponse.html +2 -2
  122. package/docs/interfaces/switchbot.html +2 -2
  123. package/docs/interfaces/updateWebhookResponse.html +2 -2
  124. package/docs/interfaces/webhookRequest.html +2 -2
  125. package/docs/media/BLE.md +14 -13
  126. package/docs/media/OpenAPI.md +13 -12
  127. package/docs/modules.html +1 -1
  128. package/docs/types/MacAddress.html +1 -1
  129. package/docs/types/batteryCirculatorFan.html +1 -1
  130. package/docs/types/batteryCirculatorFanServiceData.html +1 -1
  131. package/docs/types/batteryCirculatorFanStatus.html +1 -1
  132. package/docs/types/batteryCirculatorFanWebhookContext.html +1 -1
  133. package/docs/types/blindTilt.html +1 -1
  134. package/docs/types/blindTiltServiceData.html +1 -1
  135. package/docs/types/blindTiltStatus.html +1 -1
  136. package/docs/types/blindTiltWebhookContext.html +1 -1
  137. package/docs/types/bot.html +1 -1
  138. package/docs/types/botServiceData.html +1 -1
  139. package/docs/types/botStatus.html +1 -1
  140. package/docs/types/botWebhookContext.html +1 -1
  141. package/docs/types/ceilingLight.html +1 -1
  142. package/docs/types/ceilingLightPro.html +1 -1
  143. package/docs/types/ceilingLightProServiceData.html +1 -1
  144. package/docs/types/ceilingLightProStatus.html +1 -1
  145. package/docs/types/ceilingLightProWebhookContext.html +1 -1
  146. package/docs/types/ceilingLightServiceData.html +1 -1
  147. package/docs/types/ceilingLightStatus.html +1 -1
  148. package/docs/types/ceilingLightWebhookContext.html +1 -1
  149. package/docs/types/colorBulb.html +1 -1
  150. package/docs/types/colorBulbServiceData.html +1 -1
  151. package/docs/types/colorBulbStatus.html +1 -1
  152. package/docs/types/colorBulbWebhookContext.html +1 -1
  153. package/docs/types/contactSensor.html +1 -1
  154. package/docs/types/contactSensorServiceData.html +1 -1
  155. package/docs/types/contactSensorStatus.html +1 -1
  156. package/docs/types/contactSensorWebhookContext.html +1 -1
  157. package/docs/types/curtain.html +1 -1
  158. package/docs/types/curtain3.html +1 -1
  159. package/docs/types/curtain3ServiceData.html +1 -1
  160. package/docs/types/curtain3WebhookContext.html +1 -1
  161. package/docs/types/curtainServiceData.html +1 -1
  162. package/docs/types/curtainStatus.html +1 -1
  163. package/docs/types/curtainWebhookContext.html +1 -1
  164. package/docs/types/floorCleaningRobotS10.html +1 -1
  165. package/docs/types/floorCleaningRobotS10Status.html +1 -1
  166. package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -1
  167. package/docs/types/hub2.html +1 -1
  168. package/docs/types/hub2ServiceData.html +1 -1
  169. package/docs/types/hub2Status.html +1 -1
  170. package/docs/types/hub2WebhookContext.html +1 -1
  171. package/docs/types/humidifier.html +1 -1
  172. package/docs/types/humidifier2ServiceData.html +1 -0
  173. package/docs/types/humidifier2Status.html +1 -0
  174. package/docs/types/humidifier2WebhookContext.html +1 -0
  175. package/docs/types/humidifierServiceData.html +1 -1
  176. package/docs/types/humidifierStatus.html +1 -1
  177. package/docs/types/humidifierWebhookContext.html +1 -1
  178. package/docs/types/indoorCam.html +1 -1
  179. package/docs/types/indoorCameraWebhookContext.html +1 -1
  180. package/docs/types/keypad.html +1 -1
  181. package/docs/types/keypadDetectorServiceData.html +1 -1
  182. package/docs/types/keypadTouch.html +1 -1
  183. package/docs/types/keypadTouchWebhookContext.html +1 -1
  184. package/docs/types/keypadWebhookContext.html +1 -1
  185. package/docs/types/lock.html +1 -1
  186. package/docs/types/lockPro.html +1 -1
  187. package/docs/types/lockProServiceData.html +1 -1
  188. package/docs/types/lockProStatus.html +1 -1
  189. package/docs/types/lockProWebhookContext.html +1 -1
  190. package/docs/types/lockServiceData.html +1 -1
  191. package/docs/types/lockStatus.html +1 -1
  192. package/docs/types/lockWebhookContext.html +1 -1
  193. package/docs/types/meter.html +1 -1
  194. package/docs/types/meterPlus.html +1 -1
  195. package/docs/types/meterPlusServiceData.html +1 -1
  196. package/docs/types/meterPlusStatus.html +1 -1
  197. package/docs/types/meterPlusWebhookContext.html +1 -1
  198. package/docs/types/meterPro.html +1 -1
  199. package/docs/types/meterProCO2ServiceData.html +1 -1
  200. package/docs/types/meterProCO2Status.html +1 -1
  201. package/docs/types/meterProCO2WebhookContext.html +1 -1
  202. package/docs/types/meterProServiceData.html +1 -1
  203. package/docs/types/meterProStatus.html +1 -1
  204. package/docs/types/meterProWebhookContext.html +1 -1
  205. package/docs/types/meterServiceData.html +1 -1
  206. package/docs/types/meterStatus.html +1 -1
  207. package/docs/types/meterWebhookContext.html +1 -1
  208. package/docs/types/motionSensor.html +1 -1
  209. package/docs/types/motionSensorServiceData.html +1 -1
  210. package/docs/types/motionSensorStatus.html +1 -1
  211. package/docs/types/motionSensorWebhookContext.html +1 -1
  212. package/docs/types/onadvertisement.html +1 -1
  213. package/docs/types/ondiscover.html +1 -1
  214. package/docs/types/outdoorMeter.html +1 -1
  215. package/docs/types/outdoorMeterServiceData.html +1 -1
  216. package/docs/types/outdoorMeterStatus.html +1 -1
  217. package/docs/types/outdoorMeterWebhookContext.html +1 -1
  218. package/docs/types/panTiltCamWebhookContext.html +1 -1
  219. package/docs/types/pantiltCam.html +1 -1
  220. package/docs/types/pantiltCam2k.html +1 -1
  221. package/docs/types/plug.html +1 -1
  222. package/docs/types/plugMini.html +1 -1
  223. package/docs/types/plugMiniJPServiceData.html +1 -1
  224. package/docs/types/plugMiniJPWebhookContext.html +1 -1
  225. package/docs/types/plugMiniStatus.html +1 -1
  226. package/docs/types/plugMiniUSServiceData.html +1 -1
  227. package/docs/types/plugMiniUSWebhookContext.html +1 -1
  228. package/docs/types/plugStatus.html +1 -1
  229. package/docs/types/plugWebhookContext.html +1 -1
  230. package/docs/types/relaySwitch1PMServiceData.html +1 -1
  231. package/docs/types/relaySwitch1ServiceData.html +1 -0
  232. package/docs/types/remote.html +1 -1
  233. package/docs/types/robotVacuumCleanerS1.html +1 -1
  234. package/docs/types/robotVacuumCleanerS1Plus.html +1 -1
  235. package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -1
  236. package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -1
  237. package/docs/types/robotVacuumCleanerS1Status.html +1 -1
  238. package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -1
  239. package/docs/types/robotVacuumCleanerServiceData.html +1 -1
  240. package/docs/types/stripLight.html +1 -1
  241. package/docs/types/stripLightServiceData.html +1 -1
  242. package/docs/types/stripLightStatus.html +1 -1
  243. package/docs/types/stripLightWebhookContext.html +1 -1
  244. package/docs/types/waterLeakDetector.html +1 -1
  245. package/docs/types/waterLeakDetectorServiceData.html +1 -1
  246. package/docs/types/waterLeakDetectorStatus.html +1 -1
  247. package/docs/types/waterLeakDetectorWebhookContext.html +1 -1
  248. package/package.json +12 -12
  249. package/docs/types/relaySwitch1PlusServiceData.html +0 -1
@@ -0,0 +1,114 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import { SwitchbotDevice } from '../device.js';
3
+ import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
4
+ const HUMIDIFIER_COMMAND_HEADER = '5701';
5
+ const TURN_ON_KEY = `${HUMIDIFIER_COMMAND_HEADER}0101`;
6
+ const TURN_OFF_KEY = `${HUMIDIFIER_COMMAND_HEADER}0102`;
7
+ const INCREASE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0103`;
8
+ const DECREASE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0104`;
9
+ const SET_AUTO_MODE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0105`;
10
+ const SET_MANUAL_MODE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0106`;
11
+ /**
12
+ * Class representing a WoHumi device.
13
+ * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/tree/latest/devicetypes
14
+ */
15
+ export class WoHumi2 extends SwitchbotDevice {
16
+ constructor(peripheral, noble) {
17
+ super(peripheral, noble);
18
+ }
19
+ /**
20
+ * Parses the service data for WoHumi.
21
+ * @param {Buffer} serviceData - The service data buffer.
22
+ * @param {Function} emitLog - The function to emit log messages.
23
+ * @returns {Promise<humidifier2ServiceData | null>} - Parsed service data or null if invalid.
24
+ */
25
+ static async parseServiceData(serviceData, emitLog) {
26
+ if (serviceData.length !== 8) {
27
+ emitLog('debugerror', `[parseServiceDataForWoHumi] Buffer length ${serviceData.length} !== 8!`);
28
+ return null;
29
+ }
30
+ const byte1 = serviceData.readUInt8(1);
31
+ const byte4 = serviceData.readUInt8(4);
32
+ const onState = !!(byte1 & 0b10000000); // 1 - on
33
+ const autoMode = !!(byte4 & 0b10000000); // 1 - auto
34
+ const percentage = byte4 & 0b01111111; // 0-100%, 101/102/103 - Quick gear 1/2/3
35
+ const humidity = autoMode ? 0 : percentage === 101 ? 33 : percentage === 102 ? 66 : percentage === 103 ? 100 : percentage;
36
+ const data = {
37
+ model: SwitchBotBLEModel.Humidifier2,
38
+ modelName: SwitchBotBLEModelName.Humidifier2,
39
+ modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier2,
40
+ onState,
41
+ autoMode,
42
+ percentage: autoMode ? 0 : percentage,
43
+ humidity,
44
+ };
45
+ return data;
46
+ }
47
+ /**
48
+ * Sends a command to the humidifier.
49
+ * @param {Buffer} reqBuf - The command buffer.
50
+ * @returns {Promise<void>}
51
+ */
52
+ async operateHumi(reqBuf) {
53
+ const resBuf = await this.command(reqBuf);
54
+ const code = resBuf.readUInt8(0);
55
+ if (resBuf.length !== 3 || (code !== 0x01 && code !== 0x05)) {
56
+ throw new Error(`The device returned an error: 0x${resBuf.toString('hex')}`);
57
+ }
58
+ }
59
+ /**
60
+ * Turns on the humidifier.
61
+ * @returns {Promise<void>}
62
+ */
63
+ async turnOn() {
64
+ await this.operateHumi(Buffer.from(TURN_ON_KEY, 'hex'));
65
+ }
66
+ /**
67
+ * Turns off the humidifier.
68
+ * @returns {Promise<void>}
69
+ */
70
+ async turnOff() {
71
+ await this.operateHumi(Buffer.from(TURN_OFF_KEY, 'hex'));
72
+ }
73
+ /**
74
+ * Increases the humidifier setting.
75
+ * @returns {Promise<void>}
76
+ */
77
+ async increase() {
78
+ await this.operateHumi(Buffer.from(INCREASE_KEY, 'hex'));
79
+ }
80
+ /**
81
+ * Decreases the humidifier setting.
82
+ * @returns {Promise<void>}
83
+ */
84
+ async decrease() {
85
+ await this.operateHumi(Buffer.from(DECREASE_KEY, 'hex'));
86
+ }
87
+ /**
88
+ * Sets the humidifier to auto mode.
89
+ * @returns {Promise<void>}
90
+ */
91
+ async setAutoMode() {
92
+ await this.operateHumi(Buffer.from(SET_AUTO_MODE_KEY, 'hex'));
93
+ }
94
+ /**
95
+ * Sets the humidifier to manual mode.
96
+ * @returns {Promise<void>}
97
+ */
98
+ async setManualMode() {
99
+ await this.operateHumi(Buffer.from(SET_MANUAL_MODE_KEY, 'hex'));
100
+ }
101
+ /**
102
+ * Sets the humidifier level.
103
+ * @param {number} level - The level to set (0-100).
104
+ * @returns {Promise<void>}
105
+ */
106
+ async percentage(level) {
107
+ if (level < 0 || level > 100) {
108
+ throw new Error('Level must be between 0 and 100');
109
+ }
110
+ const levelKey = `${HUMIDIFIER_COMMAND_HEADER}0107${level.toString(16).padStart(2, '0')}`;
111
+ await this.operateHumi(Buffer.from(levelKey, 'hex'));
112
+ }
113
+ }
114
+ //# sourceMappingURL=wohumi2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wohumi2.js","sourceRoot":"","sources":["../../src/device/wohumi2.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"woleak.d.ts","sourceRoot":"","sources":["../../src/device/woleak.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,MAAO,SAAQ,eAAe;IACzC;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;gBA0CnC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;CAG7E"}
1
+ {"version":3,"file":"woleak.d.ts","sourceRoot":"","sources":["../../src/device/woleak.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,MAAO,SAAQ,eAAe;IACzC;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;gBA+BnC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;CAG7E"}
@@ -21,18 +21,10 @@ export class WoLeak extends SwitchbotDevice {
21
21
  emitLog('debugerror', `[parseServiceDataForWoLeakDetector] Manufacturer Data Buffer length ${manufacturerData?.length ?? 0} < 2!`);
22
22
  return null;
23
23
  }
24
- const modelId = serviceData.readUInt8(0);
25
- if (modelId !== 0x26) {
26
- // Not a Water Leak Detector
27
- emitLog('debugerror', `[parseServiceDataForWoLeakDetector] Model ID ${modelId} !== 0x26!`);
28
- return null;
29
- }
30
- const eventFlags = serviceData.readUInt8(1);
31
- const waterLeakDetected = !!(eventFlags & 0b00000001); // Bit 0
32
- const deviceTampered = !!(eventFlags & 0b00000010); // Bit 1
33
- const batteryInfo = serviceData.readUInt8(2);
34
- const batteryLevel = batteryInfo & 0b01111111; // Bits 0-6
35
- const lowBattery = !!(batteryInfo & 0b10000000); // Bit 7
24
+ const waterLeakDetected = !!(manufacturerData.readUInt8(8) & 0b00000001); // Bit 0
25
+ const deviceTampered = !!(manufacturerData.readUInt8(8) & 0b00000010); // Bit 1
26
+ const batteryLevel = manufacturerData.readUInt8(7) & 0b01111111; // Bits 0-6
27
+ const lowBattery = !!(manufacturerData.readUInt8(7) & 0b10000000); // Bit 7
36
28
  // Manufacturer data can be processed here if needed
37
29
  const data = {
38
30
  model: SwitchBotBLEModel.Leak,
@@ -1 +1 @@
1
- {"version":3,"file":"woleak.js","sourceRoot":"","sources":["../../src/device/woleak.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,gBAAwB,EACxB,OAAiD;QAEjD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,YAAY,EAAE,kEAAkE,WAAW,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YACxH,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,YAAY,EAAE,uEAAuE,gBAAgB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YAClI,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAExC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,4BAA4B;YAC5B,OAAO,CAAC,YAAY,EAAE,gDAAgD,OAAO,YAAY,CAAC,CAAA;YAC1F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAA,CAAC,QAAQ;QAC9D,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAA,CAAC,QAAQ;QAE3D,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,CAAA,CAAC,WAAW;QACzD,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,CAAA,CAAC,QAAQ;QAExD,oDAAoD;QAEpD,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,IAAI;YAC7B,SAAS,EAAE,qBAAqB,CAAC,IAAI;YACrC,iBAAiB,EAAE,6BAA6B,CAAC,IAAI;YACrD,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,UAAU;SACxB,CAAA;QAED,OAAO,IAAoC,CAAA;IAC7C,CAAC;IAED,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"woleak.js","sourceRoot":"","sources":["../../src/device/woleak.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,gBAAwB,EACxB,OAAiD;QAEjD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,YAAY,EAAE,kEAAkE,WAAW,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YACxH,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,YAAY,EAAE,uEAAuE,gBAAgB,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YAClI,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA,CAAC,QAAQ;QACjF,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA,CAAC,QAAQ;QAC9E,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA,CAAC,WAAW;QAC3E,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA,CAAC,QAAQ;QAE1E,oDAAoD;QAEpD,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,IAAI;YAC7B,SAAS,EAAE,qBAAqB,CAAC,IAAI;YACrC,iBAAiB,EAAE,6BAA6B,CAAC,IAAI;YACrD,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,UAAU;SACxB,CAAA;QAED,OAAO,IAAoC,CAAA;IAC7C,CAAC;IAED,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;CACF"}
@@ -1,36 +1,20 @@
1
- import type { relaySwitch1PlusServiceData } from '../types/bledevicestatus.js';
1
+ import type { Buffer } from 'node:buffer';
2
+ import type { relaySwitch1ServiceData } from '../types/bledevicestatus.js';
2
3
  import type { NobleTypes } from '../types/types.js';
3
- import { Buffer } from 'node:buffer';
4
4
  import { SwitchbotDevice } from '../device.js';
5
5
  /**
6
6
  * Class representing a WoRelaySwitch1 device.
7
7
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
8
8
  */
9
9
  export declare class WoRelaySwitch1 extends SwitchbotDevice {
10
- private _iv;
11
- private _cipher;
12
- private _keyId;
13
- private _encryptionKey;
14
10
  constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
15
11
  /**
16
12
  * Parses the service data for WoRelaySwitch1.
17
13
  * @param {Buffer} serviceData - The service data buffer.
18
14
  * @param {Buffer} manufacturerData - The manufacturer data buffer.
19
15
  * @param {Function} emitLog - The function to emit log messages.
20
- * @returns {Promise<relaySwitch1PlusServiceData | null>} - Parsed service data or null if invalid.
16
+ * @returns {Promise<relaySwitch1ServiceData | null>} - Parsed service data or null if invalid.
21
17
  */
22
- static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<relaySwitch1PlusServiceData | null>;
23
- turnOn(): Promise<boolean>;
24
- turnOff(): Promise<boolean>;
25
- toggle(): Promise<boolean>;
26
- getVoltageAndCurrent(): Promise<{
27
- voltage: number;
28
- current: number;
29
- } | null>;
30
- private _sendCommand;
31
- private _ensureEncryptionInitialized;
32
- private _getCipher;
33
- private _encrypt;
34
- private _decrypt;
18
+ static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<relaySwitch1ServiceData | null>;
35
19
  }
36
20
  //# sourceMappingURL=worelayswitch1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worelayswitch1.d.ts","sourceRoot":"","sources":["../../src/device/worelayswitch1.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAW9C;;;GAGG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,cAAc,CAAQ;gBAElB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAkB5E;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAkBxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAU1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAU3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1B,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;YAYpE,YAAY;YAeZ,4BAA4B;IAa1C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;CAQjB"}
1
+ {"version":3,"file":"worelayswitch1.d.ts","sourceRoot":"","sources":["../../src/device/worelayswitch1.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,cAAe,SAAQ,eAAe;gBACrC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAI5E;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;CAiB3C"}
@@ -1,48 +1,19 @@
1
- import { Buffer } from 'node:buffer';
2
- import { createCipheriv } from 'node:crypto';
3
1
  import { SwitchbotDevice } from '../device.js';
4
2
  import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- const COMMAND_HEADER = '57';
6
- const COMMAND_GET_CK_IV = `${COMMAND_HEADER}0f2103`;
7
- const COMMAND_TURN_OFF = `${COMMAND_HEADER}0f70010000`;
8
- const COMMAND_TURN_ON = `${COMMAND_HEADER}0f70010100`;
9
- const COMMAND_TOGGLE = `${COMMAND_HEADER}0f70010200`;
10
- const COMMAND_GET_VOLTAGE_AND_CURRENT = `${COMMAND_HEADER}0f7106000000`;
11
- // const PASSIVE_POLL_INTERVAL = 1 * 60
12
3
  /**
13
4
  * Class representing a WoRelaySwitch1 device.
14
5
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
15
6
  */
16
7
  export class WoRelaySwitch1 extends SwitchbotDevice {
17
- _iv = null;
18
- _cipher = null;
19
- _keyId;
20
- _encryptionKey;
21
8
  constructor(peripheral, noble) {
22
9
  super(peripheral, noble);
23
- const keyId = peripheral.advertisement.localName?.slice(-2) || '';
24
- const encryptionKey = peripheral.advertisement.localName?.slice(0, 32) || '';
25
- if (keyId.length === 0) {
26
- throw new Error('key_id is missing');
27
- }
28
- else if (keyId.length !== 2) {
29
- throw new Error('key_id is invalid');
30
- }
31
- if (encryptionKey.length === 0) {
32
- throw new Error('encryption_key is missing');
33
- }
34
- else if (encryptionKey.length !== 32) {
35
- throw new Error('encryption_key is invalid');
36
- }
37
- this._keyId = keyId;
38
- this._encryptionKey = Buffer.from(encryptionKey, 'hex');
39
10
  }
40
11
  /**
41
12
  * Parses the service data for WoRelaySwitch1.
42
13
  * @param {Buffer} serviceData - The service data buffer.
43
14
  * @param {Buffer} manufacturerData - The manufacturer data buffer.
44
15
  * @param {Function} emitLog - The function to emit log messages.
45
- * @returns {Promise<relaySwitch1PlusServiceData | null>} - Parsed service data or null if invalid.
16
+ * @returns {Promise<relaySwitch1ServiceData | null>} - Parsed service data or null if invalid.
46
17
  */
47
18
  static async parseServiceData(serviceData, manufacturerData, emitLog) {
48
19
  if (serviceData.length < 8 || manufacturerData.length === null) {
@@ -59,83 +30,5 @@ export class WoRelaySwitch1 extends SwitchbotDevice {
59
30
  };
60
31
  return data;
61
32
  }
62
- async turnOn() {
63
- const result = await this._sendCommand(COMMAND_TURN_ON);
64
- const ok = this._checkCommandResult(result, 0, new Set([1]));
65
- if (ok) {
66
- this._overrideState({ isOn: true });
67
- this._fireCallbacks();
68
- }
69
- return ok;
70
- }
71
- async turnOff() {
72
- const result = await this._sendCommand(COMMAND_TURN_OFF);
73
- const ok = this._checkCommandResult(result, 0, new Set([1]));
74
- if (ok) {
75
- this._overrideState({ isOn: false });
76
- this._fireCallbacks();
77
- }
78
- return ok;
79
- }
80
- async toggle() {
81
- const result = await this._sendCommand(COMMAND_TOGGLE);
82
- return this._checkCommandResult(result, 0, new Set([1]));
83
- }
84
- async getVoltageAndCurrent() {
85
- const result = await this._sendCommand(COMMAND_GET_VOLTAGE_AND_CURRENT);
86
- const ok = this._checkCommandResult(result, 0, new Set([1]));
87
- if (ok) {
88
- return {
89
- voltage: result ? (result[9] << 8) + result[10] : 0,
90
- current: result ? (result[11] << 8) + result[12] : 0,
91
- };
92
- }
93
- return null;
94
- }
95
- async _sendCommand(key, retry = null, encrypt = true) {
96
- if (!encrypt) {
97
- return await super._sendCommand(`${key.slice(0, 2)}000000${key.slice(2)}`, retry);
98
- }
99
- const result = await this._ensureEncryptionInitialized();
100
- if (!result) {
101
- return null;
102
- }
103
- const encrypted = key.slice(0, 2) + this._keyId + this._iv.slice(0, 2).toString('hex') + this._encrypt(key.slice(2));
104
- const response = await super._sendCommand(encrypted, retry);
105
- return response ? Buffer.concat([response.slice(0, 1), this._decrypt(response.slice(4))]) : null;
106
- }
107
- async _ensureEncryptionInitialized() {
108
- if (this._iv !== null) {
109
- return true;
110
- }
111
- const result = await this._sendCommand(COMMAND_GET_CK_IV + this._keyId, null, false);
112
- const ok = this._checkCommandResult(result, 0, new Set([1]));
113
- if (ok) {
114
- this._iv = result.slice(4);
115
- }
116
- return ok;
117
- }
118
- _getCipher() {
119
- if (this._cipher === null) {
120
- this._cipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
121
- }
122
- return this._cipher;
123
- }
124
- _encrypt(data) {
125
- if (data.length === 0) {
126
- return '';
127
- }
128
- const cipher = this._getCipher();
129
- const encrypted = Buffer.concat([cipher.update(Buffer.from(data, 'hex')), cipher.final()]);
130
- return encrypted.toString('hex');
131
- }
132
- _decrypt(data) {
133
- if (data.length === 0) {
134
- return Buffer.alloc(0);
135
- }
136
- const decipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
137
- const decrypted = Buffer.concat([decipher.update(data), decipher.final()]);
138
- return decrypted;
139
- }
140
33
  }
141
34
  //# sourceMappingURL=worelayswitch1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worelayswitch1.js","sourceRoot":"","sources":["../../src/device/worelayswitch1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worelayswitch1.js","sourceRoot":"","sources":["../../src/device/worelayswitch1.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;IACjD,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,gBAAwB,EACxB,OAAiD;QAEjD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC/D,OAAO,CAAC,YAAY,EAAE,yDAAyD,WAAW,CAAC,MAAM,OAAO,CAAC,CAAA;YACzG,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,iBAAiB,CAAC,YAAY;YACrC,SAAS,EAAE,qBAAqB,CAAC,YAAY;YAC7C,iBAAiB,EAAE,6BAA6B,CAAC,YAAY;YAC7D,IAAI,EAAE,IAAI,EAAE,6BAA6B;YACzC,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3C,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;SACrC,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -1,16 +1,12 @@
1
+ import type { Buffer } from 'node:buffer';
1
2
  import type { relaySwitch1PMServiceData } from '../types/bledevicestatus.js';
2
3
  import type { NobleTypes } from '../types/types.js';
3
- import { Buffer } from 'node:buffer';
4
4
  import { SwitchbotDevice } from '../device.js';
5
5
  /**
6
6
  * Class representing a WoRelaySwitch1PM device.
7
7
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
8
8
  */
9
9
  export declare class WoRelaySwitch1PM extends SwitchbotDevice {
10
- private _iv;
11
- private _cipher;
12
- private _keyId;
13
- private _encryptionKey;
14
10
  constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
15
11
  /**
16
12
  * Parses the service data for WoRelaySwitch1PM.
@@ -20,17 +16,5 @@ export declare class WoRelaySwitch1PM extends SwitchbotDevice {
20
16
  * @returns {Promise<relaySwitch1PMServiceData | null>} - Parsed service data or null if invalid.
21
17
  */
22
18
  static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<relaySwitch1PMServiceData | null>;
23
- turnOn(): Promise<boolean>;
24
- turnOff(): Promise<boolean>;
25
- toggle(): Promise<boolean>;
26
- getVoltageAndCurrent(): Promise<{
27
- voltage: number;
28
- current: number;
29
- } | null>;
30
- private _sendCommand;
31
- private _ensureEncryptionInitialized;
32
- private _getCipher;
33
- private _encrypt;
34
- private _decrypt;
35
19
  }
36
20
  //# sourceMappingURL=worelayswitch1pm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worelayswitch1pm.d.ts","sourceRoot":"","sources":["../../src/device/worelayswitch1pm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAW9C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,cAAc,CAAQ;gBAElB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAkB5E;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAqBtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAU1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAU3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1B,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;YAYpE,YAAY;YAeZ,4BAA4B;IAa1C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;CAQjB"}
1
+ {"version":3,"file":"worelayswitch1pm.d.ts","sourceRoot":"","sources":["../../src/device/worelayswitch1pm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;gBACvC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAI5E;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;CAoB7C"}
@@ -1,41 +1,12 @@
1
- import { Buffer } from 'node:buffer';
2
- import { createCipheriv } from 'node:crypto';
3
1
  import { SwitchbotDevice } from '../device.js';
4
2
  import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- const COMMAND_HEADER = '57';
6
- const COMMAND_GET_CK_IV = `${COMMAND_HEADER}0f2103`;
7
- const COMMAND_TURN_OFF = `${COMMAND_HEADER}0f70010000`;
8
- const COMMAND_TURN_ON = `${COMMAND_HEADER}0f70010100`;
9
- const COMMAND_TOGGLE = `${COMMAND_HEADER}0f70010200`;
10
- const COMMAND_GET_VOLTAGE_AND_CURRENT = `${COMMAND_HEADER}0f7106000000`;
11
- // const PASSIVE_POLL_INTERVAL = 1 * 60
12
3
  /**
13
4
  * Class representing a WoRelaySwitch1PM device.
14
5
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
15
6
  */
16
7
  export class WoRelaySwitch1PM extends SwitchbotDevice {
17
- _iv = null;
18
- _cipher = null;
19
- _keyId;
20
- _encryptionKey;
21
8
  constructor(peripheral, noble) {
22
9
  super(peripheral, noble);
23
- const keyId = peripheral.advertisement.localName?.slice(-2) || '';
24
- const encryptionKey = peripheral.advertisement.localName?.slice(0, 32) || '';
25
- if (keyId.length === 0) {
26
- throw new Error('key_id is missing');
27
- }
28
- else if (keyId.length !== 2) {
29
- throw new Error('key_id is invalid');
30
- }
31
- if (encryptionKey.length === 0) {
32
- throw new Error('encryption_key is missing');
33
- }
34
- else if (encryptionKey.length !== 32) {
35
- throw new Error('encryption_key is invalid');
36
- }
37
- this._keyId = keyId;
38
- this._encryptionKey = Buffer.from(encryptionKey, 'hex');
39
10
  }
40
11
  /**
41
12
  * Parses the service data for WoRelaySwitch1PM.
@@ -45,7 +16,7 @@ export class WoRelaySwitch1PM extends SwitchbotDevice {
45
16
  * @returns {Promise<relaySwitch1PMServiceData | null>} - Parsed service data or null if invalid.
46
17
  */
47
18
  static async parseServiceData(serviceData, manufacturerData, emitLog) {
48
- if (serviceData.length < 8 || manufacturerData.length === null) {
19
+ if (serviceData.length < 8 || manufacturerData.length === 0) {
49
20
  emitLog('debugerror', `[parseServiceDataForWoRelaySwitch1PM] Buffer length ${serviceData.length} < 8!`);
50
21
  return null;
51
22
  }
@@ -62,83 +33,5 @@ export class WoRelaySwitch1PM extends SwitchbotDevice {
62
33
  };
63
34
  return data;
64
35
  }
65
- async turnOn() {
66
- const result = await this._sendCommand(COMMAND_TURN_ON);
67
- const ok = this._checkCommandResult(result, 0, new Set([1]));
68
- if (ok) {
69
- this._overrideState({ isOn: true });
70
- this._fireCallbacks();
71
- }
72
- return ok;
73
- }
74
- async turnOff() {
75
- const result = await this._sendCommand(COMMAND_TURN_OFF);
76
- const ok = this._checkCommandResult(result, 0, new Set([1]));
77
- if (ok) {
78
- this._overrideState({ isOn: false });
79
- this._fireCallbacks();
80
- }
81
- return ok;
82
- }
83
- async toggle() {
84
- const result = await this._sendCommand(COMMAND_TOGGLE);
85
- return this._checkCommandResult(result, 0, new Set([1]));
86
- }
87
- async getVoltageAndCurrent() {
88
- const result = await this._sendCommand(COMMAND_GET_VOLTAGE_AND_CURRENT);
89
- const ok = this._checkCommandResult(result, 0, new Set([1]));
90
- if (ok) {
91
- return {
92
- voltage: result ? (result[9] << 8) + result[10] : 0,
93
- current: result ? (result[11] << 8) + result[12] : 0,
94
- };
95
- }
96
- return null;
97
- }
98
- async _sendCommand(key, retry = null, encrypt = true) {
99
- if (!encrypt) {
100
- return await super._sendCommand(`${key.slice(0, 2)}000000${key.slice(2)}`, retry);
101
- }
102
- const result = await this._ensureEncryptionInitialized();
103
- if (!result) {
104
- return null;
105
- }
106
- const encrypted = key.slice(0, 2) + this._keyId + this._iv.slice(0, 2).toString('hex') + this._encrypt(key.slice(2));
107
- const response = await super._sendCommand(encrypted, retry);
108
- return response ? Buffer.concat([response.slice(0, 1), this._decrypt(response.slice(4))]) : null;
109
- }
110
- async _ensureEncryptionInitialized() {
111
- if (this._iv !== null) {
112
- return true;
113
- }
114
- const result = await this._sendCommand(COMMAND_GET_CK_IV + this._keyId, null, false);
115
- const ok = this._checkCommandResult(result, 0, new Set([1]));
116
- if (ok) {
117
- this._iv = result.slice(4);
118
- }
119
- return ok;
120
- }
121
- _getCipher() {
122
- if (this._cipher === null) {
123
- this._cipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
124
- }
125
- return this._cipher;
126
- }
127
- _encrypt(data) {
128
- if (data.length === 0) {
129
- return '';
130
- }
131
- const cipher = this._getCipher();
132
- const encrypted = Buffer.concat([cipher.update(Buffer.from(data, 'hex')), cipher.final()]);
133
- return encrypted.toString('hex');
134
- }
135
- _decrypt(data) {
136
- if (data.length === 0) {
137
- return Buffer.alloc(0);
138
- }
139
- const decipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
140
- const decrypted = Buffer.concat([decipher.update(data), decipher.final()]);
141
- return decrypted;
142
- }
143
36
  }
144
37
  //# sourceMappingURL=worelayswitch1pm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worelayswitch1pm.js","sourceRoot":"","sources":["../../src/device/worelayswitch1pm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worelayswitch1pm.js","sourceRoot":"","sources":["../../src/device/worelayswitch1pm.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IACnD,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,gBAAwB,EACxB,OAAiD;QAEjD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,YAAY,EAAE,uDAAuD,WAAW,CAAC,MAAM,OAAO,CAAC,CAAA;YACvG,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAA8B;YACtC,KAAK,EAAE,iBAAiB,CAAC,cAAc;YACvC,SAAS,EAAE,qBAAqB,CAAC,cAAc;YAC/C,iBAAiB,EAAE,6BAA6B,CAAC,cAAc;YAC/D,IAAI,EAAE,IAAI,EAAE,6BAA6B;YACzC,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3C,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACpC,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;YAChE,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACX,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
package/dist/device.d.ts CHANGED
@@ -6,7 +6,6 @@ import { EventEmitter } from 'node:events';
6
6
  * Represents a Switchbot Device.
7
7
  */
8
8
  export declare class SwitchbotDevice extends EventEmitter {
9
- [x: string]: any;
10
9
  private noble;
11
10
  private peripheral;
12
11
  private characteristics;
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAElI,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM1C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAChB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,SAAS,CAAsC;IAEvD;;;;OAIG;gBACS,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAc5E;;;;OAIG;IACU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,SAAS,IAAI,qBAAqB,CAErC;IAED,IAAI,YAAY,IAAI,6BAA6B,CAEhD;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,gBAAgB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAO7C;IAED,IAAI,mBAAmB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAE7C;IAED,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAOhD;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;OAGG;YACW,eAAe;IA8B7B;;;OAGG;IACU,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC;IAsCjD;;;OAGG;IACU,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAczD;;;;OAIG;YACW,uBAAuB;IAIrC;;;OAGG;YACW,iBAAiB;IAS/B;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;;OAGG;YACW,kBAAkB;IAOhC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAUtC;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhD;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB9C;;;OAGG;YACW,sBAAsB;IAoBpC;;;;OAIG;YACW,kBAAkB;IAehC;;;;;OAKG;YACW,mBAAmB;CAalC"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAElI,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM1C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,SAAS,CAAsC;IAEvD;;;;OAIG;gBACS,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAc5E;;;;OAIG;IACU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,SAAS,IAAI,qBAAqB,CAErC;IAED,IAAI,YAAY,IAAI,6BAA6B,CAEhD;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,gBAAgB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAO7C;IAED,IAAI,mBAAmB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAE7C;IAED,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAOhD;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;OAGG;YACW,eAAe;IA8B7B;;;OAGG;IACU,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC;IAsCjD;;;OAGG;IACU,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAczD;;;;OAIG;YACW,uBAAuB;IAIrC;;;OAGG;YACW,iBAAiB;IAS/B;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;;OAGG;YACW,kBAAkB;IAOhC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAUtC;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhD;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB9C;;;OAGG;YACW,sBAAsB;IAoBpC;;;;OAIG;YACW,kBAAkB;IAehC;;;;;OAKG;YACW,mBAAmB;CAalC"}
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}