@switchbot/homebridge-switchbot 2.8.0-beta.2 → 2.8.0-beta.20

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 (132) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/README.md +1 -1
  3. package/dist/device/blindtilt.d.ts +1 -0
  4. package/dist/device/blindtilt.d.ts.map +1 -1
  5. package/dist/device/blindtilt.js +9 -6
  6. package/dist/device/blindtilt.js.map +1 -1
  7. package/dist/device/bot.d.ts +2 -0
  8. package/dist/device/bot.d.ts.map +1 -1
  9. package/dist/device/bot.js +66 -52
  10. package/dist/device/bot.js.map +1 -1
  11. package/dist/device/ceilinglight.d.ts +1 -0
  12. package/dist/device/ceilinglight.d.ts.map +1 -1
  13. package/dist/device/ceilinglight.js +12 -9
  14. package/dist/device/ceilinglight.js.map +1 -1
  15. package/dist/device/colorbulb.d.ts +1 -0
  16. package/dist/device/colorbulb.d.ts.map +1 -1
  17. package/dist/device/colorbulb.js +8 -5
  18. package/dist/device/colorbulb.js.map +1 -1
  19. package/dist/device/contact.d.ts +2 -0
  20. package/dist/device/contact.d.ts.map +1 -1
  21. package/dist/device/contact.js +45 -34
  22. package/dist/device/contact.js.map +1 -1
  23. package/dist/device/curtain.d.ts +2 -0
  24. package/dist/device/curtain.d.ts.map +1 -1
  25. package/dist/device/curtain.js +33 -36
  26. package/dist/device/curtain.js.map +1 -1
  27. package/dist/device/hub.d.ts +3 -1
  28. package/dist/device/hub.d.ts.map +1 -1
  29. package/dist/device/hub.js +30 -5
  30. package/dist/device/hub.js.map +1 -1
  31. package/dist/device/humidifier.d.ts.map +1 -1
  32. package/dist/device/humidifier.js +9 -6
  33. package/dist/device/humidifier.js.map +1 -1
  34. package/dist/device/iosensor.d.ts +1 -0
  35. package/dist/device/iosensor.d.ts.map +1 -1
  36. package/dist/device/iosensor.js +10 -6
  37. package/dist/device/iosensor.js.map +1 -1
  38. package/dist/device/lightstrip.d.ts +1 -0
  39. package/dist/device/lightstrip.d.ts.map +1 -1
  40. package/dist/device/lightstrip.js +9 -6
  41. package/dist/device/lightstrip.js.map +1 -1
  42. package/dist/device/lock.d.ts +2 -0
  43. package/dist/device/lock.d.ts.map +1 -1
  44. package/dist/device/lock.js +11 -6
  45. package/dist/device/lock.js.map +1 -1
  46. package/dist/device/meter.d.ts +2 -0
  47. package/dist/device/meter.d.ts.map +1 -1
  48. package/dist/device/meter.js +12 -8
  49. package/dist/device/meter.js.map +1 -1
  50. package/dist/device/meterplus.d.ts +4 -3
  51. package/dist/device/meterplus.d.ts.map +1 -1
  52. package/dist/device/meterplus.js +56 -54
  53. package/dist/device/meterplus.js.map +1 -1
  54. package/dist/device/motion.d.ts +2 -0
  55. package/dist/device/motion.d.ts.map +1 -1
  56. package/dist/device/motion.js +46 -31
  57. package/dist/device/motion.js.map +1 -1
  58. package/dist/device/plug.d.ts +1 -0
  59. package/dist/device/plug.d.ts.map +1 -1
  60. package/dist/device/plug.js +9 -6
  61. package/dist/device/plug.js.map +1 -1
  62. package/dist/device/robotvacuumcleaner.d.ts +2 -0
  63. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  64. package/dist/device/robotvacuumcleaner.js +27 -2
  65. package/dist/device/robotvacuumcleaner.js.map +1 -1
  66. package/dist/irdevice/airconditioner.d.ts +2 -0
  67. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  68. package/dist/irdevice/airconditioner.js +71 -88
  69. package/dist/irdevice/airconditioner.js.map +1 -1
  70. package/dist/irdevice/airpurifier.d.ts +1 -1
  71. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  72. package/dist/irdevice/airpurifier.js +3 -3
  73. package/dist/irdevice/airpurifier.js.map +1 -1
  74. package/dist/irdevice/camera.d.ts +1 -1
  75. package/dist/irdevice/camera.d.ts.map +1 -1
  76. package/dist/irdevice/camera.js +3 -3
  77. package/dist/irdevice/camera.js.map +1 -1
  78. package/dist/irdevice/fan.d.ts +2 -2
  79. package/dist/irdevice/fan.d.ts.map +1 -1
  80. package/dist/irdevice/fan.js +3 -3
  81. package/dist/irdevice/fan.js.map +1 -1
  82. package/dist/irdevice/light.d.ts +1 -1
  83. package/dist/irdevice/light.d.ts.map +1 -1
  84. package/dist/irdevice/light.js +3 -3
  85. package/dist/irdevice/light.js.map +1 -1
  86. package/dist/irdevice/other.d.ts +1 -1
  87. package/dist/irdevice/other.d.ts.map +1 -1
  88. package/dist/irdevice/other.js +3 -3
  89. package/dist/irdevice/other.js.map +1 -1
  90. package/dist/irdevice/tv.d.ts +2 -2
  91. package/dist/irdevice/tv.d.ts.map +1 -1
  92. package/dist/irdevice/tv.js +3 -3
  93. package/dist/irdevice/tv.js.map +1 -1
  94. package/dist/irdevice/vacuumcleaner.d.ts +1 -1
  95. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  96. package/dist/irdevice/vacuumcleaner.js +3 -3
  97. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  98. package/dist/irdevice/waterheater.d.ts +1 -1
  99. package/dist/irdevice/waterheater.d.ts.map +1 -1
  100. package/dist/irdevice/waterheater.js +3 -3
  101. package/dist/irdevice/waterheater.js.map +1 -1
  102. package/dist/platform.d.ts.map +1 -1
  103. package/dist/platform.js +67 -65
  104. package/dist/platform.js.map +1 -1
  105. package/package.json +11 -11
  106. package/src/device/blindtilt.ts +10 -8
  107. package/src/device/bot.ts +66 -50
  108. package/src/device/ceilinglight.ts +17 -11
  109. package/src/device/colorbulb.ts +15 -10
  110. package/src/device/contact.ts +45 -31
  111. package/src/device/curtain.ts +34 -35
  112. package/src/device/hub.ts +32 -6
  113. package/src/device/humidifier.ts +12 -9
  114. package/src/device/iosensor.ts +11 -7
  115. package/src/device/lightstrip.ts +14 -9
  116. package/src/device/lock.ts +14 -7
  117. package/src/device/meter.ts +13 -8
  118. package/src/device/meterplus.ts +62 -55
  119. package/src/device/motion.ts +46 -28
  120. package/src/device/plug.ts +10 -7
  121. package/src/device/robotvacuumcleaner.ts +34 -5
  122. package/src/irdevice/airconditioner.ts +84 -96
  123. package/src/irdevice/airpurifier.ts +6 -6
  124. package/src/irdevice/camera.ts +6 -6
  125. package/src/irdevice/fan.ts +6 -6
  126. package/src/irdevice/light.ts +6 -6
  127. package/src/irdevice/other.ts +6 -6
  128. package/src/irdevice/tv.ts +6 -6
  129. package/src/irdevice/vacuumcleaner.ts +6 -6
  130. package/src/irdevice/waterheater.ts +6 -6
  131. package/src/platform.ts +76 -75
  132. package/src/settings.ts +1 -1
@@ -26,6 +26,8 @@ export class Curtain {
26
26
  lastActivation?: number;
27
27
 
28
28
  // OpenAPI Others
29
+ Version: deviceStatus['version'];
30
+ Battery: deviceStatus['battery'];
29
31
  deviceStatus!: any; //deviceStatusResponse;
30
32
  slidePosition: deviceStatus['slidePosition'];
31
33
  moving: deviceStatus['moving'];
@@ -83,9 +85,9 @@ export class Curtain {
83
85
  this.logs(device);
84
86
  this.refreshRate(device);
85
87
  this.scan(device);
86
- this.config(device);
87
88
  this.setupMqtt(device);
88
89
  this.context();
90
+ this.config(device);
89
91
 
90
92
  // this is subject we use to track when we need to POST changes to the SwitchBot API
91
93
  this.doCurtainUpdate = new Subject();
@@ -170,11 +172,7 @@ export class Curtain {
170
172
  }
171
173
 
172
174
  // Battery Service
173
- if (!this.BLE) {
174
- this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Removing Battery Service`);
175
- this.batteryService = this.accessory.getService(this.platform.Service.Battery);
176
- accessory.removeService(this.batteryService!);
177
- } else if (this.BLE && !this.batteryService) {
175
+ if (!this.batteryService) {
178
176
  this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Add Battery Service`);
179
177
  (this.batteryService = this.accessory.getService(this.platform.Service.Battery) || this.accessory.addService(this.platform.Service.Battery)),
180
178
  `${accessory.displayName} Battery`;
@@ -183,6 +181,7 @@ export class Curtain {
183
181
  if (!this.batteryService.testCharacteristic(this.platform.Characteristic.ConfiguredName)) {
184
182
  this.batteryService.addCharacteristic(this.platform.Characteristic.ConfiguredName, `${accessory.displayName} Battery`);
185
183
  }
184
+ this.batteryService.setCharacteristic(this.platform.Characteristic.ChargingState, this.platform.Characteristic.ChargingState.NOT_CHARGEABLE);
186
185
  } else {
187
186
  this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Battery Service Not Added`);
188
187
  }
@@ -560,7 +559,7 @@ export class Curtain {
560
559
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
561
560
  headers: this.platform.generateHeaders(),
562
561
  });
563
- const deviceStatus = await body.json();
562
+ const deviceStatus: any = await body.json();
564
563
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
565
564
  this.statusCode(statusCode);
566
565
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -568,6 +567,8 @@ export class Curtain {
568
567
  this.slidePosition = deviceStatus.body.slidePosition;
569
568
  this.moving = deviceStatus.body.moving;
570
569
  this.brightness = deviceStatus.body.brightness;
570
+ this.Battery = deviceStatus.body.battery;
571
+ this.Version = deviceStatus.body.version;
571
572
  this.openAPIparseStatus();
572
573
  this.updateHomeKitCharacteristics();
573
574
  } catch (e: any) {
@@ -704,7 +705,7 @@ export class Curtain {
704
705
  method: 'POST',
705
706
  headers: this.platform.generateHeaders(),
706
707
  });
707
- const deviceStatus = await body.json();
708
+ const deviceStatus: any = await body.json();
708
709
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
709
710
  this.statusCode(statusCode);
710
711
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -823,27 +824,25 @@ export class Curtain {
823
824
  }
824
825
  }
825
826
  }
826
- if (this.BLE) {
827
- if (this.BatteryLevel === undefined) {
828
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}`);
829
- } else {
830
- if (this.device.mqttURL) {
831
- this.mqttPublish('BatteryLevel', this.BatteryLevel);
832
- }
833
- this.accessory.context.BatteryLevel = this.BatteryLevel;
834
- this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
835
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
827
+ if (this.BatteryLevel === undefined) {
828
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}`);
829
+ } else {
830
+ if (this.device.mqttURL) {
831
+ this.mqttPublish('BatteryLevel', this.BatteryLevel);
836
832
  }
837
- if (this.StatusLowBattery === undefined) {
838
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} StatusLowBattery: ${this.StatusLowBattery}`);
839
- } else {
840
- if (this.device.mqttURL) {
841
- this.mqttPublish('StatusLowBattery', this.StatusLowBattery);
842
- }
843
- this.accessory.context.StatusLowBattery = this.StatusLowBattery;
844
- this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.StatusLowBattery);
845
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
833
+ this.accessory.context.BatteryLevel = this.BatteryLevel;
834
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
835
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
836
+ }
837
+ if (this.StatusLowBattery === undefined) {
838
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} StatusLowBattery: ${this.StatusLowBattery}`);
839
+ } else {
840
+ if (this.device.mqttURL) {
841
+ this.mqttPublish('StatusLowBattery', this.StatusLowBattery);
846
842
  }
843
+ this.accessory.context.StatusLowBattery = this.StatusLowBattery;
844
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.StatusLowBattery);
845
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
847
846
  }
848
847
  }
849
848
 
@@ -1071,10 +1070,8 @@ export class Curtain {
1071
1070
  if (!this.device.curtain?.hide_lightsensor) {
1072
1071
  this.lightSensorService?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, e);
1073
1072
  }
1074
- if (this.BLE) {
1075
- this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, e);
1076
- this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
1077
- }
1073
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, e);
1074
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
1078
1075
  //throw new this.platform.api.hap.HapStatusError(HAPStatus.SERVICE_COMMUNICATION_FAILURE);
1079
1076
  }
1080
1077
 
@@ -1085,10 +1082,12 @@ export class Curtain {
1085
1082
  );
1086
1083
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1087
1084
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1088
- if (accessory.context.FirmwareRevision) {
1089
- FirmwareRevision = accessory.context.FirmwareRevision;
1090
- } else if (device.firmware) {
1085
+ if (device.firmware) {
1091
1086
  FirmwareRevision = device.firmware;
1087
+ } else if (device.version) {
1088
+ FirmwareRevision = JSON.stringify(device.version);
1089
+ } if (accessory.context.FirmwareRevision) {
1090
+ FirmwareRevision = accessory.context.FirmwareRevision;
1092
1091
  } else {
1093
1092
  FirmwareRevision = this.platform.version;
1094
1093
  }
@@ -1188,7 +1187,7 @@ export class Curtain {
1188
1187
  config['maxRetry'] = device.maxRetry;
1189
1188
  }
1190
1189
  if (Object.entries(config).length !== 0) {
1191
- this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
1190
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
1192
1191
  }
1193
1192
  }
1194
1193
 
package/src/device/hub.ts CHANGED
@@ -3,7 +3,7 @@ import { interval } from 'rxjs';
3
3
  import { request } from 'undici';
4
4
  import { Context } from 'vm';
5
5
  import { SwitchBotPlatform } from '../platform';
6
- import { Devices, device, devicesConfig } from '../settings';
6
+ import { Devices, device, deviceStatus, devicesConfig } from '../settings';
7
7
  import { sleep } from '../utils';
8
8
 
9
9
  export class Hub {
@@ -18,6 +18,7 @@ export class Hub {
18
18
  CurrentAmbientLightLevel!: number;
19
19
 
20
20
  // OpenAPI Others
21
+ Version: deviceStatus['version'];
21
22
  deviceStatus!: any; //deviceStatusResponse;
22
23
  lightLevel!: number;
23
24
  spaceBetweenLevels!: number;
@@ -43,6 +44,7 @@ export class Hub {
43
44
  // default placeholders
44
45
  this.logs(device);
45
46
  this.refreshRate(device);
47
+ this.config(device);
46
48
 
47
49
  this.CurrentRelativeHumidity = accessory.context.CurrentRelativeHumidity;
48
50
  this.CurrentTemperature = accessory.context.CurrentTemperature;
@@ -292,7 +294,7 @@ export class Hub {
292
294
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
293
295
  headers: this.platform.generateHeaders(),
294
296
  });
295
- const deviceStatus = await body.json();
297
+ const deviceStatus: any = await body.json();
296
298
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
297
299
  this.statusCode(statusCode);
298
300
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -356,7 +358,7 @@ export class Hub {
356
358
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`);
357
359
  } else {
358
360
  this.accessory.context.CurrentAmbientLightLevel = this.CurrentAmbientLightLevel;
359
- this.hubHumiditySensor?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.CurrentAmbientLightLevel);
361
+ this.hubLightSensor?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.CurrentAmbientLightLevel);
360
362
  this.debugLog(
361
363
  `${this.device.deviceType}: ${this.accessory.displayName} ` +
362
364
  `updateCharacteristic CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`,
@@ -443,10 +445,12 @@ export class Hub {
443
445
  );
444
446
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
445
447
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
446
- if (accessory.context.FirmwareRevision) {
447
- FirmwareRevision = accessory.context.FirmwareRevision;
448
- } else if (device.firmware) {
448
+ if (device.firmware) {
449
449
  FirmwareRevision = device.firmware;
450
+ } else if (device.version) {
451
+ FirmwareRevision = JSON.stringify(device.version);
452
+ } else if (accessory.context.FirmwareRevision) {
453
+ FirmwareRevision = accessory.context.FirmwareRevision;
450
454
  } else {
451
455
  FirmwareRevision = this.platform.version;
452
456
  }
@@ -472,6 +476,28 @@ export class Hub {
472
476
  }
473
477
  }
474
478
 
479
+ async config(device: device & devicesConfig): Promise<void> {
480
+ let config = {};
481
+ if (device.hub) {
482
+ config = device.hub;
483
+ }
484
+ if (device.connectionType !== undefined) {
485
+ config['connectionType'] = device.connectionType;
486
+ }
487
+ if (device.external !== undefined) {
488
+ config['external'] = device.external;
489
+ }
490
+ if (device.logging !== undefined) {
491
+ config['logging'] = device.logging;
492
+ }
493
+ if (device.refreshRate !== undefined) {
494
+ config['refreshRate'] = device.refreshRate;
495
+ }
496
+ if (Object.entries(config).length !== 0) {
497
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
498
+ }
499
+ }
500
+
475
501
  async logs(device: device & devicesConfig): Promise<void> {
476
502
  if (this.platform.debugMode) {
477
503
  this.deviceLogging = this.accessory.context.logging = 'debugMode';
@@ -1,3 +1,4 @@
1
+ /* eslint-disable brace-style */
1
2
  import { Context } from 'vm';
2
3
  import { request } from 'undici';
3
4
  import { sleep } from '../utils';
@@ -66,8 +67,8 @@ export class Humidifier {
66
67
  this.logs(device);
67
68
  this.scan(device);
68
69
  this.refreshRate(device);
69
- this.config(device);
70
70
  this.context();
71
+ this.config(device);
71
72
 
72
73
  // this is subject we use to track when we need to POST changes to the SwitchBot API
73
74
  this.doHumidifierUpdate = new Subject();
@@ -378,7 +379,7 @@ export class Humidifier {
378
379
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
379
380
  headers: this.platform.generateHeaders(),
380
381
  });
381
- const deviceStatus = await body.json();
382
+ const deviceStatus: any = await body.json();
382
383
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
383
384
  this.statusCode(statusCode);
384
385
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -474,7 +475,7 @@ export class Humidifier {
474
475
  method: 'POST',
475
476
  headers: this.platform.generateHeaders(),
476
477
  });
477
- const deviceStatus = await body.json();
478
+ const deviceStatus: any = await body.json();
478
479
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
479
480
  this.statusCode(statusCode);
480
481
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -517,7 +518,7 @@ export class Humidifier {
517
518
  method: 'POST',
518
519
  headers: this.platform.generateHeaders(),
519
520
  });
520
- const deviceStatus = await body.json();
521
+ const deviceStatus: any = await body.json();
521
522
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
522
523
  this.statusCode(statusCode);
523
524
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -555,7 +556,7 @@ export class Humidifier {
555
556
  method: 'POST',
556
557
  headers: this.platform.generateHeaders(),
557
558
  });
558
- const deviceStatus = await body.json();
559
+ const deviceStatus: any = await body.json();
559
560
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
560
561
  this.statusCode(statusCode);
561
562
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -844,10 +845,12 @@ export class Humidifier {
844
845
  );
845
846
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
846
847
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
847
- if (accessory.context.FirmwareRevision) {
848
- FirmwareRevision = accessory.context.FirmwareRevision;
849
- } else if (device.firmware) {
848
+ if (device.firmware) {
850
849
  FirmwareRevision = device.firmware;
850
+ } else if (device.version) {
851
+ FirmwareRevision = JSON.stringify(device.version);
852
+ } else if (accessory.context.FirmwareRevision) {
853
+ FirmwareRevision = accessory.context.FirmwareRevision;
851
854
  } else {
852
855
  FirmwareRevision = this.platform.version;
853
856
  }
@@ -930,7 +933,7 @@ export class Humidifier {
930
933
  config['offline'] = device.offline;
931
934
  }
932
935
  if (Object.entries(config).length !== 0) {
933
- this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
936
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
934
937
  }
935
938
  }
936
939
 
@@ -29,6 +29,7 @@ export class IOSensor {
29
29
  StatusLowBattery?: CharacteristicValue;
30
30
 
31
31
  // OpenAPI Others
32
+ Version: deviceStatus['version'];
32
33
  Battery: deviceStatus['battery'];
33
34
  Temperature: deviceStatus['temperature'];
34
35
  Humidity: deviceStatus['humidity'];
@@ -73,10 +74,10 @@ export class IOSensor {
73
74
  this.logs(device);
74
75
  this.scan(device);
75
76
  this.refreshRate(device);
76
- this.config(device);
77
77
  this.context();
78
78
  this.setupHistoryService(device);
79
79
  this.setupMqtt(device);
80
+ this.config(device);
80
81
 
81
82
  // this is subject we use to track when we need to POST changes to the SwitchBot API
82
83
  this.doIOSensorUpdate = new Subject();
@@ -337,14 +338,15 @@ export class IOSensor {
337
338
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
338
339
  headers: this.platform.generateHeaders(),
339
340
  });
340
- const deviceStatus = await body.json();
341
+ const deviceStatus: any = await body.json();
341
342
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
342
343
  this.statusCode(statusCode);
343
344
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
344
345
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(deviceStatus)}`);
345
346
  this.Humidity = deviceStatus.body.humidity!;
346
347
  this.Temperature = deviceStatus.body.temperature!;
347
- this.Battery = deviceStatus.body.battery!;
348
+ this.Battery = deviceStatus.body.battery;
349
+ this.Version = deviceStatus.body.version;
348
350
  this.openAPIparseStatus();
349
351
  this.updateHomeKitCharacteristics();
350
352
  } catch (e: any) {
@@ -592,10 +594,12 @@ export class IOSensor {
592
594
  );
593
595
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
594
596
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
595
- if (accessory.context.FirmwareRevision) {
596
- FirmwareRevision = accessory.context.FirmwareRevision;
597
- } else if (device.firmware) {
597
+ if (device.firmware) {
598
598
  FirmwareRevision = device.firmware;
599
+ } else if (device.version) {
600
+ FirmwareRevision = JSON.stringify(device.version);
601
+ } else if (accessory.context.FirmwareRevision) {
602
+ FirmwareRevision = accessory.context.FirmwareRevision;
599
603
  } else {
600
604
  FirmwareRevision = this.platform.version;
601
605
  }
@@ -660,7 +664,7 @@ export class IOSensor {
660
664
  config['scanDuration'] = device.scanDuration;
661
665
  }
662
666
  if (Object.entries(config).length !== 0) {
663
- this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
667
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
664
668
  }
665
669
  }
666
670
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable brace-style */
1
2
  import { Context } from 'vm';
2
3
  import { request } from 'undici';
3
4
  import { sleep } from '../utils';
@@ -24,6 +25,7 @@ export class StripLight {
24
25
  ColorTemperature?: CharacteristicValue;
25
26
 
26
27
  // OpenAPI Others
28
+ Version: deviceStatus['version'];
27
29
  power: deviceStatus['power'];
28
30
  color: deviceStatus['color'];
29
31
  brightness: deviceStatus['brightness'];
@@ -71,8 +73,9 @@ export class StripLight {
71
73
  this.logs(device);
72
74
  this.scan(device);
73
75
  this.refreshRate(device);
74
- this.config(device);
75
76
  this.context();
77
+ this.config(device);
78
+
76
79
  // this is subject we use to track when we need to POST changes to the SwitchBot API
77
80
  this.doStripLightUpdate = new Subject();
78
81
  this.stripLightUpdateInProgress = false;
@@ -378,7 +381,7 @@ export class StripLight {
378
381
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
379
382
  headers: this.platform.generateHeaders(),
380
383
  });
381
- const deviceStatus = await body.json();
384
+ const deviceStatus: any = await body.json();
382
385
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
383
386
  this.statusCode(statusCode);
384
387
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -591,7 +594,7 @@ export class StripLight {
591
594
  method: 'POST',
592
595
  headers: this.platform.generateHeaders(),
593
596
  });
594
- const deviceStatus = await body.json();
597
+ const deviceStatus: any = await body.json();
595
598
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
596
599
  this.statusCode(statusCode);
597
600
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -639,7 +642,7 @@ export class StripLight {
639
642
  method: 'POST',
640
643
  headers: this.platform.generateHeaders(),
641
644
  });
642
- const deviceStatus = await body.json();
645
+ const deviceStatus: any = await body.json();
643
646
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
644
647
  this.statusCode(statusCode);
645
648
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -673,7 +676,7 @@ export class StripLight {
673
676
  method: 'POST',
674
677
  headers: this.platform.generateHeaders(),
675
678
  });
676
- const deviceStatus = await body.json();
679
+ const deviceStatus: any = await body.json();
677
680
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
678
681
  this.statusCode(statusCode);
679
682
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -988,10 +991,12 @@ export class StripLight {
988
991
  );
989
992
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
990
993
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
991
- if (accessory.context.FirmwareRevision) {
992
- FirmwareRevision = accessory.context.FirmwareRevision;
993
- } else if (device.firmware) {
994
+ if (device.firmware) {
994
995
  FirmwareRevision = device.firmware;
996
+ } else if (device.version) {
997
+ FirmwareRevision = JSON.stringify(device.version);
998
+ } else if (accessory.context.FirmwareRevision) {
999
+ FirmwareRevision = accessory.context.FirmwareRevision;
995
1000
  } else {
996
1001
  FirmwareRevision = this.platform.version;
997
1002
  }
@@ -1065,7 +1070,7 @@ export class StripLight {
1065
1070
  config['maxRetry'] = device.maxRetry;
1066
1071
  }
1067
1072
  if (Object.entries(config).length !== 0) {
1068
- this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
1073
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
1069
1074
  }
1070
1075
  }
1071
1076
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable brace-style */
1
2
  import { Context } from 'vm';
2
3
  import { request } from 'undici';
3
4
  import { sleep } from '../utils';
@@ -18,6 +19,8 @@ export class Lock {
18
19
  LockTargetState!: CharacteristicValue;
19
20
 
20
21
  // OpenAPI Others
22
+ Version: deviceStatus['version'];
23
+ Battery: deviceStatus['battery'];
21
24
  doorState!: deviceStatus['doorState'];
22
25
  lockState!: deviceStatus['lockState'];
23
26
  deviceStatus!: any; //deviceStatusResponse;
@@ -59,8 +62,8 @@ export class Lock {
59
62
  this.logs(device);
60
63
  this.scan(device);
61
64
  this.refreshRate(device);
62
- this.config(device);
63
65
  this.context();
66
+ this.config(device);
64
67
 
65
68
  // this is subject we use to track when we need to POST changes to the SwitchBot API
66
69
  this.doLockUpdate = new Subject();
@@ -309,13 +312,15 @@ export class Lock {
309
312
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
310
313
  headers: this.platform.generateHeaders(),
311
314
  });
312
- const deviceStatus = await body.json();
315
+ const deviceStatus: any = await body.json();
313
316
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
314
317
  this.statusCode(statusCode);
315
318
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
316
319
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(deviceStatus)}`);
317
320
  this.lockState = deviceStatus.body.lockState;
318
321
  this.doorState = deviceStatus.body.doorState;
322
+ this.Battery = deviceStatus.body.battery;
323
+ this.Version = deviceStatus.body.version;
319
324
  this.openAPIparseStatus();
320
325
  this.updateHomeKitCharacteristics();
321
326
  } catch (e: any) {
@@ -416,7 +421,7 @@ export class Lock {
416
421
  method: 'POST',
417
422
  headers: this.platform.generateHeaders(),
418
423
  });
419
- const deviceStatus = await body.json();
424
+ const deviceStatus: any = await body.json();
420
425
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
421
426
  this.statusCode(statusCode);
422
427
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
@@ -597,10 +602,12 @@ export class Lock {
597
602
  );
598
603
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
599
604
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
600
- if (accessory.context.FirmwareRevision) {
601
- FirmwareRevision = accessory.context.FirmwareRevision;
602
- } else if (device.firmware) {
605
+ if (device.firmware) {
603
606
  FirmwareRevision = device.firmware;
607
+ } else if (device.version) {
608
+ FirmwareRevision = JSON.stringify(device.version);
609
+ } else if (accessory.context.FirmwareRevision) {
610
+ FirmwareRevision = accessory.context.FirmwareRevision;
604
611
  } else {
605
612
  FirmwareRevision = this.platform.version;
606
613
  }
@@ -646,7 +653,7 @@ export class Lock {
646
653
  config['scanDuration'] = device.scanDuration;
647
654
  }
648
655
  if (Object.entries(config).length !== 0) {
649
- this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
656
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
650
657
  }
651
658
  }
652
659
 
@@ -29,6 +29,8 @@ export class Meter {
29
29
  StatusLowBattery?: CharacteristicValue;
30
30
 
31
31
  // OpenAPI Others
32
+ Version: deviceStatus['version'];
33
+ Battery: deviceStatus['battery'];
32
34
  Temperature: deviceStatus['temperature'];
33
35
  Humidity: deviceStatus['humidity'];
34
36
  deviceStatus!: any; //deviceStatusResponse;
@@ -72,10 +74,10 @@ export class Meter {
72
74
  this.logs(device);
73
75
  this.scan(device);
74
76
  this.refreshRate(device);
75
- this.config(device);
76
77
  this.context();
77
78
  this.setupHistoryService(device);
78
79
  this.setupMqtt(device);
80
+ this.config(device);
79
81
 
80
82
  // this is subject we use to track when we need to POST changes to the SwitchBot API
81
83
  this.doMeterUpdate = new Subject();
@@ -226,7 +228,7 @@ export class Meter {
226
228
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} openAPIparseStatus`);
227
229
 
228
230
  // Battery
229
- this.BatteryLevel = Number(this.battery);
231
+ this.BatteryLevel = Number(this.Battery);
230
232
  if (this.BatteryLevel < 15) {
231
233
  this.StatusLowBattery = this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW;
232
234
  } else {
@@ -342,14 +344,15 @@ export class Meter {
342
344
  const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
343
345
  headers: this.platform.generateHeaders(),
344
346
  });
345
- const deviceStatus = await body.json();
347
+ const deviceStatus: any = await body.json();
346
348
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
347
349
  this.statusCode(statusCode);
348
350
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
349
351
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(deviceStatus)}`);
350
352
  this.Humidity = deviceStatus.body.humidity!;
351
353
  this.Temperature = deviceStatus.body.temperature!;
352
- this.battery = deviceStatus.body.battery!;
354
+ this.Battery = deviceStatus.body.battery;
355
+ this.Version = deviceStatus.body.version;
353
356
  this.openAPIparseStatus();
354
357
  this.updateHomeKitCharacteristics();
355
358
  } catch (e: any) {
@@ -599,10 +602,12 @@ export class Meter {
599
602
  );
600
603
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
601
604
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
602
- if (accessory.context.FirmwareRevision) {
603
- FirmwareRevision = accessory.context.FirmwareRevision;
604
- } else if (device.firmware) {
605
+ if (device.firmware) {
605
606
  FirmwareRevision = device.firmware;
607
+ } else if (device.version) {
608
+ FirmwareRevision = JSON.stringify(device.version);
609
+ } else if (accessory.context.FirmwareRevision) {
610
+ FirmwareRevision = accessory.context.FirmwareRevision;
606
611
  } else {
607
612
  FirmwareRevision = this.platform.version;
608
613
  }
@@ -667,7 +672,7 @@ export class Meter {
667
672
  config['scanDuration'] = device.scanDuration;
668
673
  }
669
674
  if (Object.entries(config).length !== 0) {
670
- this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
675
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
671
676
  }
672
677
  }
673
678