@switchbot/homebridge-switchbot 3.8.3 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/.github/npm-version-script.cjs +81 -0
  2. package/.github/workflows/beta-release.yml +12 -4
  3. package/CHANGELOG.md +15 -1
  4. package/config.schema.json +583 -937
  5. package/dist/device/blindtilt.d.ts +1 -4
  6. package/dist/device/blindtilt.d.ts.map +1 -1
  7. package/dist/device/blindtilt.js +68 -66
  8. package/dist/device/blindtilt.js.map +1 -1
  9. package/dist/device/bot.d.ts +1 -4
  10. package/dist/device/bot.d.ts.map +1 -1
  11. package/dist/device/bot.js +63 -59
  12. package/dist/device/bot.js.map +1 -1
  13. package/dist/device/ceilinglight.d.ts +1 -4
  14. package/dist/device/ceilinglight.d.ts.map +1 -1
  15. package/dist/device/ceilinglight.js +56 -65
  16. package/dist/device/ceilinglight.js.map +1 -1
  17. package/dist/device/colorbulb.d.ts +1 -4
  18. package/dist/device/colorbulb.d.ts.map +1 -1
  19. package/dist/device/colorbulb.js +73 -80
  20. package/dist/device/colorbulb.js.map +1 -1
  21. package/dist/device/contact.d.ts +1 -4
  22. package/dist/device/contact.d.ts.map +1 -1
  23. package/dist/device/contact.js +38 -38
  24. package/dist/device/contact.js.map +1 -1
  25. package/dist/device/curtain.d.ts +1 -4
  26. package/dist/device/curtain.d.ts.map +1 -1
  27. package/dist/device/curtain.js +60 -60
  28. package/dist/device/curtain.js.map +1 -1
  29. package/dist/device/device.d.ts +6 -6
  30. package/dist/device/device.d.ts.map +1 -1
  31. package/dist/device/device.js +86 -20
  32. package/dist/device/device.js.map +1 -1
  33. package/dist/device/fan.d.ts +1 -4
  34. package/dist/device/fan.d.ts.map +1 -1
  35. package/dist/device/fan.js +50 -51
  36. package/dist/device/fan.js.map +1 -1
  37. package/dist/device/hub.d.ts +1 -4
  38. package/dist/device/hub.d.ts.map +1 -1
  39. package/dist/device/hub.js +48 -48
  40. package/dist/device/hub.js.map +1 -1
  41. package/dist/device/humidifier.d.ts +1 -4
  42. package/dist/device/humidifier.d.ts.map +1 -1
  43. package/dist/device/humidifier.js +53 -55
  44. package/dist/device/humidifier.js.map +1 -1
  45. package/dist/device/iosensor.d.ts +1 -4
  46. package/dist/device/iosensor.d.ts.map +1 -1
  47. package/dist/device/iosensor.js +35 -35
  48. package/dist/device/iosensor.js.map +1 -1
  49. package/dist/device/lightstrip.d.ts +1 -4
  50. package/dist/device/lightstrip.d.ts.map +1 -1
  51. package/dist/device/lightstrip.js +57 -65
  52. package/dist/device/lightstrip.js.map +1 -1
  53. package/dist/device/lock.d.ts +1 -4
  54. package/dist/device/lock.d.ts.map +1 -1
  55. package/dist/device/lock.js +38 -39
  56. package/dist/device/lock.js.map +1 -1
  57. package/dist/device/meter.d.ts +1 -4
  58. package/dist/device/meter.d.ts.map +1 -1
  59. package/dist/device/meter.js +35 -35
  60. package/dist/device/meter.js.map +1 -1
  61. package/dist/device/meterplus.d.ts +1 -4
  62. package/dist/device/meterplus.d.ts.map +1 -1
  63. package/dist/device/meterplus.js +35 -35
  64. package/dist/device/meterplus.js.map +1 -1
  65. package/dist/device/motion.d.ts +1 -4
  66. package/dist/device/motion.d.ts.map +1 -1
  67. package/dist/device/motion.js +27 -27
  68. package/dist/device/motion.js.map +1 -1
  69. package/dist/device/plug.d.ts +1 -4
  70. package/dist/device/plug.d.ts.map +1 -1
  71. package/dist/device/plug.js +32 -32
  72. package/dist/device/plug.js.map +1 -1
  73. package/dist/device/robotvacuumcleaner.d.ts +1 -4
  74. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  75. package/dist/device/robotvacuumcleaner.js +39 -40
  76. package/dist/device/robotvacuumcleaner.js.map +1 -1
  77. package/dist/device/waterdetector.d.ts +1 -4
  78. package/dist/device/waterdetector.d.ts.map +1 -1
  79. package/dist/device/waterdetector.js +28 -28
  80. package/dist/device/waterdetector.js.map +1 -1
  81. package/dist/irdevice/airconditioner.d.ts +1 -1
  82. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  83. package/dist/irdevice/airconditioner.js +31 -32
  84. package/dist/irdevice/airconditioner.js.map +1 -1
  85. package/dist/irdevice/airpurifier.d.ts +1 -1
  86. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  87. package/dist/irdevice/airpurifier.js +11 -12
  88. package/dist/irdevice/airpurifier.js.map +1 -1
  89. package/dist/irdevice/camera.d.ts +1 -1
  90. package/dist/irdevice/camera.d.ts.map +1 -1
  91. package/dist/irdevice/camera.js +9 -10
  92. package/dist/irdevice/camera.js.map +1 -1
  93. package/dist/irdevice/fan.d.ts +1 -1
  94. package/dist/irdevice/fan.d.ts.map +1 -1
  95. package/dist/irdevice/fan.js +22 -23
  96. package/dist/irdevice/fan.js.map +1 -1
  97. package/dist/irdevice/irdevice.d.ts +6 -6
  98. package/dist/irdevice/irdevice.d.ts.map +1 -1
  99. package/dist/irdevice/irdevice.js +28 -14
  100. package/dist/irdevice/irdevice.js.map +1 -1
  101. package/dist/irdevice/light.d.ts +1 -1
  102. package/dist/irdevice/light.d.ts.map +1 -1
  103. package/dist/irdevice/light.js +12 -13
  104. package/dist/irdevice/light.js.map +1 -1
  105. package/dist/irdevice/other.d.ts +1 -1
  106. package/dist/irdevice/other.d.ts.map +1 -1
  107. package/dist/irdevice/other.js +12 -15
  108. package/dist/irdevice/other.js.map +1 -1
  109. package/dist/irdevice/tv.d.ts +1 -1
  110. package/dist/irdevice/tv.d.ts.map +1 -1
  111. package/dist/irdevice/tv.js +27 -28
  112. package/dist/irdevice/tv.js.map +1 -1
  113. package/dist/irdevice/vacuumcleaner.d.ts +1 -1
  114. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  115. package/dist/irdevice/vacuumcleaner.js +9 -10
  116. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  117. package/dist/irdevice/waterheater.d.ts +1 -1
  118. package/dist/irdevice/waterheater.d.ts.map +1 -1
  119. package/dist/irdevice/waterheater.js +9 -10
  120. package/dist/irdevice/waterheater.js.map +1 -1
  121. package/dist/platform.d.ts +9 -22
  122. package/dist/platform.d.ts.map +1 -1
  123. package/dist/platform.js +154 -260
  124. package/dist/platform.js.map +1 -1
  125. package/dist/settings.d.ts +64 -82
  126. package/dist/settings.d.ts.map +1 -1
  127. package/dist/settings.js +0 -20
  128. package/dist/settings.js.map +1 -1
  129. package/dist/utils.d.ts +1 -102
  130. package/dist/utils.d.ts.map +1 -1
  131. package/dist/utils.js +0 -105
  132. package/dist/utils.js.map +1 -1
  133. package/docs/assets/highlight.css +42 -0
  134. package/docs/assets/main.js +1 -1
  135. package/docs/functions/default.html +1 -1
  136. package/docs/index.html +61 -50
  137. package/docs/media/security-privacy-bluetooth.png +0 -0
  138. package/package.json +5 -7
  139. package/src/device/blindtilt.ts +74 -74
  140. package/src/device/bot.ts +68 -67
  141. package/src/device/ceilinglight.ts +59 -70
  142. package/src/device/colorbulb.ts +79 -88
  143. package/src/device/contact.ts +40 -43
  144. package/src/device/curtain.ts +66 -68
  145. package/src/device/device.ts +86 -40
  146. package/src/device/fan.ts +52 -56
  147. package/src/device/hub.ts +50 -53
  148. package/src/device/humidifier.ts +56 -61
  149. package/src/device/iosensor.ts +37 -40
  150. package/src/device/lightstrip.ts +62 -72
  151. package/src/device/lock.ts +41 -45
  152. package/src/device/meter.ts +37 -40
  153. package/src/device/meterplus.ts +37 -40
  154. package/src/device/motion.ts +29 -32
  155. package/src/device/plug.ts +34 -37
  156. package/src/device/robotvacuumcleaner.ts +41 -49
  157. package/src/device/waterdetector.ts +30 -33
  158. package/src/irdevice/airconditioner.ts +33 -35
  159. package/src/irdevice/airpurifier.ts +12 -13
  160. package/src/irdevice/camera.ts +10 -11
  161. package/src/irdevice/fan.ts +24 -25
  162. package/src/irdevice/irdevice.ts +31 -27
  163. package/src/irdevice/light.ts +14 -15
  164. package/src/irdevice/other.ts +14 -17
  165. package/src/irdevice/tv.ts +28 -29
  166. package/src/irdevice/vacuumcleaner.ts +10 -11
  167. package/src/irdevice/waterheater.ts +10 -11
  168. package/src/platform.ts +178 -287
  169. package/src/settings.ts +67 -88
  170. package/src/utils.ts +2 -106
  171. package/dist/types/bledevicestatus.d.ts +0 -281
  172. package/dist/types/bledevicestatus.d.ts.map +0 -1
  173. package/dist/types/bledevicestatus.js +0 -2
  174. package/dist/types/bledevicestatus.js.map +0 -1
  175. package/dist/types/devicelist.d.ts +0 -89
  176. package/dist/types/devicelist.d.ts.map +0 -1
  177. package/dist/types/devicelist.js +0 -6
  178. package/dist/types/devicelist.js.map +0 -1
  179. package/dist/types/deviceresponse.d.ts +0 -13
  180. package/dist/types/deviceresponse.d.ts.map +0 -1
  181. package/dist/types/deviceresponse.js +0 -2
  182. package/dist/types/deviceresponse.js.map +0 -1
  183. package/dist/types/devicestatus.d.ts +0 -149
  184. package/dist/types/devicestatus.d.ts.map +0 -1
  185. package/dist/types/devicestatus.js +0 -3
  186. package/dist/types/devicestatus.js.map +0 -1
  187. package/dist/types/devicewebhookstatus.d.ts +0 -156
  188. package/dist/types/devicewebhookstatus.d.ts.map +0 -1
  189. package/dist/types/devicewebhookstatus.js +0 -2
  190. package/dist/types/devicewebhookstatus.js.map +0 -1
  191. package/dist/types/irdevicelist.d.ts +0 -10
  192. package/dist/types/irdevicelist.d.ts.map +0 -1
  193. package/dist/types/irdevicelist.js +0 -2
  194. package/dist/types/irdevicelist.js.map +0 -1
  195. package/dist/types/pushbody.d.ts +0 -6
  196. package/dist/types/pushbody.d.ts.map +0 -1
  197. package/dist/types/pushbody.js +0 -2
  198. package/dist/types/pushbody.js.map +0 -1
  199. package/src/types/bledevicestatus.ts +0 -303
  200. package/src/types/devicelist.ts +0 -124
  201. package/src/types/deviceresponse.ts +0 -14
  202. package/src/types/devicestatus.ts +0 -178
  203. package/src/types/devicewebhookstatus.ts +0 -191
  204. package/src/types/irdevicelist.ts +0 -15
  205. package/src/types/pushbody.ts +0 -9
@@ -3,10 +3,10 @@
3
3
  * other.ts: @switchbot/homebridge-switchbot.
4
4
  */
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
+ import type { bodyChange, irdevice } from 'node-switchbot'
6
7
 
7
8
  import type { SwitchBotPlatform } from '../platform.js'
8
- import type { irDevicesConfig } from '../settings.js'
9
- import type { irdevice } from '../types/irdevicelist.js'
9
+ import type { irDevicesConfig, irOtherConfig } from '../settings.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
12
12
 
@@ -412,11 +412,11 @@ export class Others extends irdeviceBase {
412
412
  if (On === true && !this.disablePushOn) {
413
413
  const commandType: string = await this.commandType()
414
414
  const command: string = await this.commandOn()
415
- const bodyChange = JSON.stringify({
415
+ const bodyChange: bodyChange = {
416
416
  command,
417
417
  parameter: 'default',
418
418
  commandType,
419
- })
419
+ }
420
420
  await this.pushChanges(bodyChange)
421
421
  }
422
422
  } else {
@@ -430,11 +430,11 @@ export class Others extends irdeviceBase {
430
430
  if (On === false && !this.disablePushOff) {
431
431
  const commandType: string = await this.commandType()
432
432
  const command: string = await this.commandOff()
433
- const bodyChange = JSON.stringify({
433
+ const bodyChange: bodyChange = {
434
434
  command,
435
435
  parameter: 'default',
436
436
  commandType,
437
- })
437
+ }
438
438
  await this.pushChanges(bodyChange)
439
439
  }
440
440
  } else {
@@ -447,14 +447,13 @@ export class Others extends irdeviceBase {
447
447
  if (this.device.connectionType === 'OpenAPI') {
448
448
  this.infoLog(`Sending request to SwitchBot API, body: ${bodyChange},`)
449
449
  try {
450
- const { body, statusCode } = await this.pushChangeRequest(bodyChange)
451
- const deviceStatus: any = await body.json()
452
- await this.pushStatusCodes(statusCode, deviceStatus)
453
- if (await this.successfulStatusCodes(statusCode, deviceStatus)) {
454
- await this.successfulPushChange(statusCode, deviceStatus, bodyChange)
450
+ const { body } = await this.pushChangeRequest(bodyChange)
451
+ const deviceStatus: any = await body
452
+ await this.pushStatusCodes(deviceStatus)
453
+ if (await this.successfulStatusCodes(deviceStatus)) {
454
+ await this.successfulPushChange(deviceStatus, bodyChange)
455
455
  await this.updateHomeKitCharacteristics()
456
456
  } else {
457
- await this.statusCode(statusCode)
458
457
  await this.statusCode(deviceStatus.statusCode)
459
458
  }
460
459
  } catch (e: any) {
@@ -785,10 +784,8 @@ export class Others extends irdeviceBase {
785
784
  }
786
785
 
787
786
  async getOtherConfigSettings(accessory: PlatformAccessory, device: irdevice & irDevicesConfig): Promise<void> {
788
- this.otherDeviceType = accessory.context.otherDeviceType
789
- ? accessory.context.otherDeviceType
790
- : device.other?.deviceType ? device.other.deviceType : 'outlet'
791
- const deviceType = accessory.context.otherDeviceType ? 'Accessory Cache' : device.other?.deviceType ? 'Device Config' : 'Default'
792
- await this.debugLog(`Use ${deviceType} Type: ${this.otherDeviceType}`)
787
+ this.otherDeviceType = (device as irOtherConfig).type ?? 'outlet'
788
+ const deviceType = (device as irOtherConfig).type ? 'Device Config' : 'Default'
789
+ await this.debugLog(`Use ${deviceType} Device Type: ${this.otherDeviceType}`)
793
790
  }
794
791
  }
@@ -3,10 +3,10 @@
3
3
  * tv.ts: @switchbot/homebridge-switchbot.
4
4
  */
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
+ import type { bodyChange, irdevice } from 'node-switchbot'
6
7
 
7
8
  import type { SwitchBotPlatform } from '../platform.js'
8
9
  import type { irDevicesConfig } from '../settings.js'
9
- import type { irdevice } from '../types/irdevicelist.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
12
12
 
@@ -210,11 +210,11 @@ export class TV extends irdeviceBase {
210
210
  if (this.Television.Active === this.hap.Characteristic.Active.ACTIVE && !this.disablePushOn) {
211
211
  const commandType: string = await this.commandType()
212
212
  const command: string = await this.commandOn()
213
- const bodyChange = JSON.stringify({
213
+ const bodyChange: bodyChange = {
214
214
  command,
215
215
  parameter: 'default',
216
216
  commandType,
217
- })
217
+ }
218
218
  await this.pushTVChanges(bodyChange)
219
219
  }
220
220
  }
@@ -224,11 +224,11 @@ export class TV extends irdeviceBase {
224
224
  if (this.Television.Active === this.hap.Characteristic.Active.INACTIVE && !this.disablePushOff) {
225
225
  const commandType: string = await this.commandType()
226
226
  const command: string = await this.commandOff()
227
- const bodyChange = JSON.stringify({
227
+ const bodyChange: bodyChange = {
228
228
  command,
229
229
  parameter: 'default',
230
230
  commandType,
231
- })
231
+ }
232
232
  await this.pushTVChanges(bodyChange)
233
233
  }
234
234
  }
@@ -236,11 +236,11 @@ export class TV extends irdeviceBase {
236
236
  async pushOkChanges(): Promise<void> {
237
237
  await this.debugLog(`pushOkChanges disablePushDetail: ${this.disablePushDetail}`)
238
238
  if (!this.disablePushDetail) {
239
- const bodyChange = JSON.stringify({
239
+ const bodyChange: bodyChange = {
240
240
  command: 'Ok',
241
241
  parameter: 'default',
242
242
  commandType: 'command',
243
- })
243
+ }
244
244
  await this.pushTVChanges(bodyChange)
245
245
  }
246
246
  }
@@ -248,11 +248,11 @@ export class TV extends irdeviceBase {
248
248
  async pushBackChanges(): Promise<void> {
249
249
  await this.debugLog(`pushBackChanges disablePushDetail: ${this.disablePushDetail}`)
250
250
  if (!this.disablePushDetail) {
251
- const bodyChange = JSON.stringify({
251
+ const bodyChange: bodyChange = {
252
252
  command: 'Back',
253
253
  parameter: 'default',
254
254
  commandType: 'command',
255
- })
255
+ }
256
256
  await this.pushTVChanges(bodyChange)
257
257
  }
258
258
  }
@@ -260,11 +260,11 @@ export class TV extends irdeviceBase {
260
260
  async pushMenuChanges(): Promise<void> {
261
261
  await this.debugLog(`pushMenuChanges disablePushDetail: ${this.disablePushDetail}`)
262
262
  if (!this.disablePushDetail) {
263
- const bodyChange = JSON.stringify({
263
+ const bodyChange: bodyChange = {
264
264
  command: 'Menu',
265
265
  parameter: 'default',
266
266
  commandType: 'command',
267
- })
267
+ }
268
268
  await this.pushTVChanges(bodyChange)
269
269
  }
270
270
  }
@@ -272,11 +272,11 @@ export class TV extends irdeviceBase {
272
272
  async pushUpChanges(): Promise<void> {
273
273
  await this.debugLog(`pushUpChanges disablePushDetail: ${this.disablePushDetail}`)
274
274
  if (!this.disablePushDetail) {
275
- const bodyChange = JSON.stringify({
275
+ const bodyChange: bodyChange = {
276
276
  command: 'Up',
277
277
  parameter: 'default',
278
278
  commandType: 'command',
279
- })
279
+ }
280
280
  await this.pushTVChanges(bodyChange)
281
281
  }
282
282
  }
@@ -284,11 +284,11 @@ export class TV extends irdeviceBase {
284
284
  async pushDownChanges(): Promise<void> {
285
285
  await this.debugLog(`pushDownChanges disablePushDetail: ${this.disablePushDetail}`)
286
286
  if (!this.disablePushDetail) {
287
- const bodyChange = JSON.stringify({
287
+ const bodyChange: bodyChange = {
288
288
  command: 'Down',
289
289
  parameter: 'default',
290
290
  commandType: 'command',
291
- })
291
+ }
292
292
  await this.pushTVChanges(bodyChange)
293
293
  }
294
294
  }
@@ -296,11 +296,11 @@ export class TV extends irdeviceBase {
296
296
  async pushRightChanges(): Promise<void> {
297
297
  await this.debugLog(`pushRightChanges disablePushDetail: ${this.disablePushDetail}`)
298
298
  if (!this.disablePushDetail) {
299
- const bodyChange = JSON.stringify({
299
+ const bodyChange: bodyChange = {
300
300
  command: 'Right',
301
301
  parameter: 'default',
302
302
  commandType: 'command',
303
- })
303
+ }
304
304
  await this.pushTVChanges(bodyChange)
305
305
  }
306
306
  }
@@ -308,11 +308,11 @@ export class TV extends irdeviceBase {
308
308
  async pushLeftChanges(): Promise<void> {
309
309
  await this.debugLog(`pushLeftChanges disablePushDetail: ${this.disablePushDetail}`)
310
310
  if (!this.disablePushDetail) {
311
- const bodyChange = JSON.stringify({
311
+ const bodyChange: bodyChange = {
312
312
  command: 'Left',
313
313
  parameter: 'default',
314
314
  commandType: 'command',
315
- })
315
+ }
316
316
  await this.pushTVChanges(bodyChange)
317
317
  }
318
318
  }
@@ -320,11 +320,11 @@ export class TV extends irdeviceBase {
320
320
  async pushVolumeUpChanges(): Promise<void> {
321
321
  await this.debugLog(`pushVolumeUpChanges disablePushDetail: ${this.disablePushDetail}`)
322
322
  if (!this.disablePushDetail) {
323
- const bodyChange = JSON.stringify({
323
+ const bodyChange: bodyChange = {
324
324
  command: 'volumeAdd',
325
325
  parameter: 'default',
326
326
  commandType: 'command',
327
- })
327
+ }
328
328
  await this.pushTVChanges(bodyChange)
329
329
  }
330
330
  }
@@ -332,11 +332,11 @@ export class TV extends irdeviceBase {
332
332
  async pushVolumeDownChanges(): Promise<void> {
333
333
  await this.debugLog(`pushVolumeDownChanges disablePushDetail: ${this.disablePushDetail}`)
334
334
  if (!this.disablePushDetail) {
335
- const bodyChange = JSON.stringify({
335
+ const bodyChange: bodyChange = {
336
336
  command: 'volumeSub',
337
337
  parameter: 'default',
338
338
  commandType: 'command',
339
- })
339
+ }
340
340
  await this.pushTVChanges(bodyChange)
341
341
  }
342
342
  }
@@ -346,14 +346,13 @@ export class TV extends irdeviceBase {
346
346
  if (this.device.connectionType === 'OpenAPI') {
347
347
  await this.infoLog(`Sending request to SwitchBot API, body: ${bodyChange},`)
348
348
  try {
349
- const { body, statusCode } = await this.pushChangeRequest(bodyChange)
350
- const deviceStatus: any = await body.json()
351
- await this.pushStatusCodes(statusCode, deviceStatus)
352
- if (await this.successfulStatusCodes(statusCode, deviceStatus)) {
353
- await this.successfulPushChange(statusCode, deviceStatus, bodyChange)
349
+ const { body } = await this.pushChangeRequest(bodyChange)
350
+ const deviceStatus: any = await body
351
+ await this.pushStatusCodes(deviceStatus)
352
+ if (await this.successfulStatusCodes(deviceStatus)) {
353
+ await this.successfulPushChange(deviceStatus, bodyChange)
354
354
  await this.updateHomeKitCharacteristics()
355
355
  } else {
356
- await this.statusCode(statusCode)
357
356
  await this.statusCode(deviceStatus.statusCode)
358
357
  }
359
358
  } catch (e: any) {
@@ -3,10 +3,10 @@
3
3
  * vacuumcleaner.ts: @switchbot/homebridge-switchbot.
4
4
  */
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
+ import type { bodyChange, irdevice } from 'node-switchbot'
6
7
 
7
8
  import type { SwitchBotPlatform } from '../platform.js'
8
9
  import type { irDevicesConfig } from '../settings.js'
9
- import type { irdevice } from '../types/irdevicelist.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
12
12
 
@@ -69,11 +69,11 @@ export class VacuumCleaner extends irdeviceBase {
69
69
  if (this.Switch.On && !this.disablePushOn) {
70
70
  const commandType: string = await this.commandType()
71
71
  const command: string = await this.commandOn()
72
- const bodyChange = JSON.stringify({
72
+ const bodyChange: bodyChange = {
73
73
  command,
74
74
  parameter: 'default',
75
75
  commandType,
76
- })
76
+ }
77
77
  await this.pushChanges(bodyChange)
78
78
  }
79
79
  }
@@ -83,11 +83,11 @@ export class VacuumCleaner extends irdeviceBase {
83
83
  if (!this.Switch.On && !this.disablePushOff) {
84
84
  const commandType: string = await this.commandType()
85
85
  const command: string = await this.commandOff()
86
- const bodyChange = JSON.stringify({
86
+ const bodyChange: bodyChange = {
87
87
  command,
88
88
  parameter: 'default',
89
89
  commandType,
90
- })
90
+ }
91
91
  await this.pushChanges(bodyChange)
92
92
  }
93
93
  }
@@ -97,14 +97,13 @@ export class VacuumCleaner extends irdeviceBase {
97
97
  if (this.device.connectionType === 'OpenAPI') {
98
98
  await this.infoLog(`Sending request to SwitchBot API, body: ${bodyChange},`)
99
99
  try {
100
- const { body, statusCode } = await this.pushChangeRequest(bodyChange)
101
- const deviceStatus: any = await body.json()
102
- await this.pushStatusCodes(statusCode, deviceStatus)
103
- if (await this.successfulStatusCodes(statusCode, deviceStatus)) {
104
- await this.successfulPushChange(statusCode, deviceStatus, bodyChange)
100
+ const { body } = await this.pushChangeRequest(bodyChange)
101
+ const deviceStatus: any = await body
102
+ await this.pushStatusCodes(deviceStatus)
103
+ if (await this.successfulStatusCodes(deviceStatus)) {
104
+ await this.successfulPushChange(deviceStatus, bodyChange)
105
105
  await this.updateHomeKitCharacteristics()
106
106
  } else {
107
- await this.statusCode(statusCode)
108
107
  await this.statusCode(deviceStatus.statusCode)
109
108
  }
110
109
  } catch (e: any) {
@@ -3,10 +3,10 @@
3
3
  * waterheater.ts: @switchbot/homebridge-switchbot.
4
4
  */
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
+ import type { bodyChange, irdevice } from 'node-switchbot'
6
7
 
7
8
  import type { SwitchBotPlatform } from '../platform.js'
8
9
  import type { irDevicesConfig } from '../settings.js'
9
- import type { irdevice } from '../types/irdevicelist.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
12
12
 
@@ -70,11 +70,11 @@ export class WaterHeater extends irdeviceBase {
70
70
  if (this.Valve.Active === this.hap.Characteristic.Active.ACTIVE && !this.disablePushOn) {
71
71
  const commandType: string = await this.commandType()
72
72
  const command: string = await this.commandOn()
73
- const bodyChange = JSON.stringify({
73
+ const bodyChange: bodyChange = {
74
74
  command,
75
75
  parameter: 'default',
76
76
  commandType,
77
- })
77
+ }
78
78
  await this.pushChanges(bodyChange)
79
79
  }
80
80
  }
@@ -84,11 +84,11 @@ export class WaterHeater extends irdeviceBase {
84
84
  if (this.Valve.Active === this.hap.Characteristic.Active.INACTIVE && !this.disablePushOff) {
85
85
  const commandType: string = await this.commandType()
86
86
  const command: string = await this.commandOff()
87
- const bodyChange = JSON.stringify({
87
+ const bodyChange: bodyChange = {
88
88
  command,
89
89
  parameter: 'default',
90
90
  commandType,
91
- })
91
+ }
92
92
  await this.pushChanges(bodyChange)
93
93
  }
94
94
  }
@@ -98,14 +98,13 @@ export class WaterHeater extends irdeviceBase {
98
98
  if (this.device.connectionType === 'OpenAPI') {
99
99
  this.infoLog(`Sending request to SwitchBot API, body: ${bodyChange},`)
100
100
  try {
101
- const { body, statusCode } = await this.pushChangeRequest(bodyChange)
102
- const deviceStatus: any = await body.json()
103
- await this.pushStatusCodes(statusCode, deviceStatus)
104
- if (await this.successfulStatusCodes(statusCode, deviceStatus)) {
105
- await this.successfulPushChange(statusCode, deviceStatus, bodyChange)
101
+ const { body } = await this.pushChangeRequest(bodyChange)
102
+ const deviceStatus: any = await body
103
+ await this.pushStatusCodes(deviceStatus)
104
+ if (await this.successfulStatusCodes(deviceStatus)) {
105
+ await this.successfulPushChange(deviceStatus, bodyChange)
106
106
  await this.updateHomeKitCharacteristics()
107
107
  } else {
108
- await this.statusCode(statusCode)
109
108
  await this.statusCode(deviceStatus.statusCode)
110
109
  }
111
110
  } catch (e: any) {