@switchbot/homebridge-switchbot 3.7.1-beta.2 → 3.7.1-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +14 -0
  3. package/assets/security-privacy-bluetooth.png +0 -0
  4. package/config.schema.json +74 -2
  5. package/dist/device/blindtilt.d.ts +21 -9
  6. package/dist/device/blindtilt.d.ts.map +1 -1
  7. package/dist/device/blindtilt.js +167 -96
  8. package/dist/device/blindtilt.js.map +1 -1
  9. package/dist/device/bot-old.d.ts +132 -0
  10. package/dist/device/bot-old.d.ts.map +1 -0
  11. package/dist/device/bot-old.js +1482 -0
  12. package/dist/device/bot-old.js.map +1 -0
  13. package/dist/device/bot.d.ts +10 -9
  14. package/dist/device/bot.d.ts.map +1 -1
  15. package/dist/device/bot.js +186 -187
  16. package/dist/device/bot.js.map +1 -1
  17. package/dist/device/ceilinglight.d.ts +14 -13
  18. package/dist/device/ceilinglight.d.ts.map +1 -1
  19. package/dist/device/ceilinglight.js +87 -97
  20. package/dist/device/ceilinglight.js.map +1 -1
  21. package/dist/device/colorbulb.d.ts +13 -12
  22. package/dist/device/colorbulb.d.ts.map +1 -1
  23. package/dist/device/colorbulb.js +92 -105
  24. package/dist/device/colorbulb.js.map +1 -1
  25. package/dist/device/contact.d.ts +6 -5
  26. package/dist/device/contact.d.ts.map +1 -1
  27. package/dist/device/contact.js +71 -68
  28. package/dist/device/contact.js.map +1 -1
  29. package/dist/device/curtain.d.ts +17 -5
  30. package/dist/device/curtain.d.ts.map +1 -1
  31. package/dist/device/curtain.js +184 -118
  32. package/dist/device/curtain.js.map +1 -1
  33. package/dist/device/device.d.ts +18 -18
  34. package/dist/device/device.d.ts.map +1 -1
  35. package/dist/device/device.js +33 -36
  36. package/dist/device/device.js.map +1 -1
  37. package/dist/device/fan.d.ts +9 -8
  38. package/dist/device/fan.d.ts.map +1 -1
  39. package/dist/device/fan.js +94 -101
  40. package/dist/device/fan.js.map +1 -1
  41. package/dist/device/hub.d.ts +6 -5
  42. package/dist/device/hub.d.ts.map +1 -1
  43. package/dist/device/hub.js +69 -65
  44. package/dist/device/hub.js.map +1 -1
  45. package/dist/device/humidifier.d.ts +6 -5
  46. package/dist/device/humidifier.d.ts.map +1 -1
  47. package/dist/device/humidifier.js +89 -104
  48. package/dist/device/humidifier.js.map +1 -1
  49. package/dist/device/iosensor.d.ts +6 -5
  50. package/dist/device/iosensor.d.ts.map +1 -1
  51. package/dist/device/iosensor.js +72 -66
  52. package/dist/device/iosensor.js.map +1 -1
  53. package/dist/device/lightstrip.d.ts +7 -6
  54. package/dist/device/lightstrip.d.ts.map +1 -1
  55. package/dist/device/lightstrip.js +85 -99
  56. package/dist/device/lightstrip.js.map +1 -1
  57. package/dist/device/lock.d.ts +10 -9
  58. package/dist/device/lock.d.ts.map +1 -1
  59. package/dist/device/lock.js +89 -79
  60. package/dist/device/lock.js.map +1 -1
  61. package/dist/device/meter.d.ts +6 -5
  62. package/dist/device/meter.d.ts.map +1 -1
  63. package/dist/device/meter.js +72 -65
  64. package/dist/device/meter.js.map +1 -1
  65. package/dist/device/meterplus.d.ts +6 -5
  66. package/dist/device/meterplus.d.ts.map +1 -1
  67. package/dist/device/meterplus.js +72 -64
  68. package/dist/device/meterplus.js.map +1 -1
  69. package/dist/device/motion.d.ts +6 -5
  70. package/dist/device/motion.d.ts.map +1 -1
  71. package/dist/device/motion.js +65 -58
  72. package/dist/device/motion.js.map +1 -1
  73. package/dist/device/plug.d.ts +13 -12
  74. package/dist/device/plug.d.ts.map +1 -1
  75. package/dist/device/plug.js +68 -52
  76. package/dist/device/plug.js.map +1 -1
  77. package/dist/device/robotvacuumcleaner.d.ts +12 -11
  78. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  79. package/dist/device/robotvacuumcleaner.js +93 -82
  80. package/dist/device/robotvacuumcleaner.js.map +1 -1
  81. package/dist/device/waterdetector.d.ts +6 -5
  82. package/dist/device/waterdetector.d.ts.map +1 -1
  83. package/dist/device/waterdetector.js +73 -63
  84. package/dist/device/waterdetector.js.map +1 -1
  85. package/dist/homebridge-ui/server.js +2 -2
  86. package/dist/homebridge-ui/server.js.map +1 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +0 -4
  89. package/dist/index.js.map +1 -1
  90. package/dist/irdevice/airconditioner.d.ts +8 -8
  91. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  92. package/dist/irdevice/airconditioner.js +61 -105
  93. package/dist/irdevice/airconditioner.js.map +1 -1
  94. package/dist/irdevice/airpurifier.d.ts +10 -10
  95. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  96. package/dist/irdevice/airpurifier.js +22 -42
  97. package/dist/irdevice/airpurifier.js.map +1 -1
  98. package/dist/irdevice/camera.d.ts +9 -9
  99. package/dist/irdevice/camera.d.ts.map +1 -1
  100. package/dist/irdevice/camera.js +15 -25
  101. package/dist/irdevice/camera.js.map +1 -1
  102. package/dist/irdevice/fan.d.ts +8 -8
  103. package/dist/irdevice/fan.d.ts.map +1 -1
  104. package/dist/irdevice/fan.js +21 -40
  105. package/dist/irdevice/fan.js.map +1 -1
  106. package/dist/irdevice/irdevice.d.ts +11 -11
  107. package/dist/irdevice/irdevice.d.ts.map +1 -1
  108. package/dist/irdevice/irdevice.js +14 -22
  109. package/dist/irdevice/irdevice.js.map +1 -1
  110. package/dist/irdevice/light.d.ts +9 -9
  111. package/dist/irdevice/light.d.ts.map +1 -1
  112. package/dist/irdevice/light.js +24 -47
  113. package/dist/irdevice/light.js.map +1 -1
  114. package/dist/irdevice/other.d.ts +9 -9
  115. package/dist/irdevice/other.d.ts.map +1 -1
  116. package/dist/irdevice/other.js +40 -83
  117. package/dist/irdevice/other.js.map +1 -1
  118. package/dist/irdevice/tv.d.ts +9 -9
  119. package/dist/irdevice/tv.d.ts.map +1 -1
  120. package/dist/irdevice/tv.js +29 -54
  121. package/dist/irdevice/tv.js.map +1 -1
  122. package/dist/irdevice/vacuumcleaner.d.ts +5 -5
  123. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  124. package/dist/irdevice/vacuumcleaner.js +11 -21
  125. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  126. package/dist/irdevice/waterheater.d.ts +5 -5
  127. package/dist/irdevice/waterheater.d.ts.map +1 -1
  128. package/dist/irdevice/waterheater.js +11 -22
  129. package/dist/irdevice/waterheater.js.map +1 -1
  130. package/dist/platform.d.ts +24 -23
  131. package/dist/platform.d.ts.map +1 -1
  132. package/dist/platform.js +509 -723
  133. package/dist/platform.js.map +1 -1
  134. package/dist/settings.d.ts +5 -2
  135. package/dist/settings.d.ts.map +1 -1
  136. package/dist/settings.js.map +1 -1
  137. package/dist/types/bledevicestatus.d.ts +9 -9
  138. package/dist/types/bledevicestatus.d.ts.map +1 -1
  139. package/dist/types/devicelist.d.ts +6 -6
  140. package/dist/types/devicelist.d.ts.map +1 -1
  141. package/dist/types/deviceresponse.d.ts +4 -4
  142. package/dist/types/deviceresponse.d.ts.map +1 -1
  143. package/dist/types/devicestatus.d.ts +2 -2
  144. package/dist/types/devicestatus.d.ts.map +1 -1
  145. package/dist/types/devicewebhookstatus.d.ts +5 -5
  146. package/dist/types/devicewebhookstatus.d.ts.map +1 -1
  147. package/dist/types/irdevicelist.d.ts +4 -4
  148. package/dist/types/irdevicelist.d.ts.map +1 -1
  149. package/dist/types/pushbody.d.ts +2 -2
  150. package/dist/types/pushbody.d.ts.map +1 -1
  151. package/dist/utils.d.ts +4 -4
  152. package/dist/utils.d.ts.map +1 -1
  153. package/dist/utils.js +9 -13
  154. package/dist/utils.js.map +1 -1
  155. package/eslint.config.js +48 -93
  156. package/package.json +64 -57
  157. package/src/device/blindtilt.ts +537 -456
  158. package/src/device/bot-old.ts +1540 -0
  159. package/src/device/bot.ts +732 -725
  160. package/src/device/ceilinglight.ts +359 -368
  161. package/src/device/colorbulb.ts +441 -453
  162. package/src/device/contact.ts +229 -226
  163. package/src/device/curtain.ts +526 -444
  164. package/src/device/device.ts +206 -208
  165. package/src/device/fan.ts +336 -345
  166. package/src/device/hub.ts +213 -214
  167. package/src/device/humidifier.ts +326 -347
  168. package/src/device/iosensor.ts +211 -209
  169. package/src/device/lightstrip.ts +391 -404
  170. package/src/device/lock.ts +292 -282
  171. package/src/device/meter.ts +212 -210
  172. package/src/device/meterplus.ts +212 -209
  173. package/src/device/motion.ts +198 -190
  174. package/src/device/plug.ts +203 -182
  175. package/src/device/robotvacuumcleaner.ts +280 -269
  176. package/src/device/waterdetector.ts +198 -189
  177. package/src/homebridge-ui/server.ts +16 -15
  178. package/src/index.ts +5 -6
  179. package/src/irdevice/airconditioner.ts +277 -326
  180. package/src/irdevice/airpurifier.ts +124 -143
  181. package/src/irdevice/camera.ts +58 -64
  182. package/src/irdevice/fan.ts +106 -123
  183. package/src/irdevice/irdevice.ts +116 -119
  184. package/src/irdevice/light.ts +119 -143
  185. package/src/irdevice/other.ts +417 -461
  186. package/src/irdevice/tv.ts +155 -177
  187. package/src/irdevice/vacuumcleaner.ts +54 -60
  188. package/src/irdevice/waterheater.ts +56 -63
  189. package/src/platform.ts +1491 -1681
  190. package/src/settings.ts +172 -169
  191. package/src/types/bledevicestatus.ts +252 -256
  192. package/src/types/devicelist.ts +79 -79
  193. package/src/types/deviceresponse.ts +12 -13
  194. package/src/types/devicestatus.ts +124 -124
  195. package/src/types/devicewebhookstatus.ts +126 -131
  196. package/src/types/irdevicelist.ts +10 -10
  197. package/src/types/pushbody.ts +5 -5
  198. package/src/utils.ts +64 -65
  199. package/tsconfig.json +10 -9
@@ -1,17 +1,17 @@
1
- /* Copyright(C) 2021-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * plug.ts: @switchbot/homebridge-switchbot.
4
- */
5
- import { deviceBase } from './device.js';
1
+ /*
2
+ * For Testing Locally:
3
+ * import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
4
+ */
6
5
  import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot';
7
- import { Subject, debounceTime, interval, skipWhile, take, tap } from 'rxjs';
6
+ import { debounceTime, interval, skipWhile, Subject, take, tap } from 'rxjs';
7
+ import { deviceBase } from './device.js';
8
8
  export class Plug extends deviceBase {
9
9
  platform;
10
10
  // Services
11
11
  Outlet;
12
12
  // OpenAPI
13
13
  deviceStatus;
14
- //Webhook
14
+ // Webhook
15
15
  webhookContext;
16
16
  // BLE
17
17
  serviceData;
@@ -35,19 +35,33 @@ export class Plug extends deviceBase {
35
35
  };
36
36
  accessory.context.Outlet = this.Outlet;
37
37
  // Initialize Outlet Characteristics
38
- this.Outlet.Service
39
- .setCharacteristic(this.hap.Characteristic.Name, this.Outlet.Name)
40
- .getCharacteristic(this.hap.Characteristic.On)
41
- .onGet(() => {
38
+ this.Outlet.Service.setCharacteristic(this.hap.Characteristic.Name, this.Outlet.Name).getCharacteristic(this.hap.Characteristic.On).onGet(() => {
42
39
  return this.Outlet.On;
43
- })
44
- .onSet(this.OnSet.bind(this));
40
+ }).onSet(this.OnSet.bind(this));
45
41
  // Retrieve initial values and updateHomekit
46
- this.debugLog('Retrieve initial values and update Homekit');
47
- this.refreshStatus();
48
- //regisiter webhook event handler
49
- this.debugLog('Registering Webhook Event Handler');
50
- this.registerWebhook();
42
+ try {
43
+ this.debugLog('Retrieve initial values and update Homekit');
44
+ this.refreshStatus();
45
+ }
46
+ catch (e) {
47
+ this.errorLog(`failed to retrieve initial values and update Homekit, Error: ${e}`);
48
+ }
49
+ // regisiter webhook event handler if enabled
50
+ try {
51
+ this.debugLog('Registering Webhook Event Handler');
52
+ this.registerWebhook();
53
+ }
54
+ catch (e) {
55
+ this.errorLog(`failed to registerWebhook, Error: ${e}`);
56
+ }
57
+ // regisiter platform BLE event handler if enabled
58
+ try {
59
+ this.debugLog('Registering Platform BLE Event Handler');
60
+ this.registerPlatformBLE();
61
+ }
62
+ catch (e) {
63
+ this.errorLog(`failed to registerPlatformBLE, Error: ${e}`);
64
+ }
51
65
  // Start an update interval
52
66
  interval(this.deviceRefreshRate * 1000)
53
67
  .pipe(skipWhile(() => this.plugUpdateInProgress))
@@ -75,14 +89,14 @@ export class Plug extends deviceBase {
75
89
  await this.debugLog('BLEparseStatus');
76
90
  await this.debugLog(`(powerState) = BLE: (${this.serviceData.state}), current:(${this.Outlet.On})`);
77
91
  // On
78
- this.Outlet.On = this.serviceData.state === 'on' ? true : false;
92
+ this.Outlet.On = this.serviceData.state === 'on';
79
93
  await this.debugLog(`On: ${this.Outlet.On}`);
80
94
  }
81
95
  async openAPIparseStatus() {
82
96
  await this.debugLog('openAPIparseStatus');
83
97
  await this.debugLog(`(powerState) = OpenAPI: (${this.deviceStatus.power}), current:(${this.Outlet.On})`);
84
98
  // On
85
- this.Outlet.On = this.deviceStatus.power === 'on' ? true : false;
99
+ this.Outlet.On = this.deviceStatus.power === 'on';
86
100
  await this.debugLog(`On: ${this.Outlet.On}`);
87
101
  // Firmware Version
88
102
  if (this.deviceStatus.version) {
@@ -103,7 +117,7 @@ export class Plug extends deviceBase {
103
117
  await this.debugLog('parseStatusWebhook');
104
118
  await this.debugLog(`(powerState) = Webhook: (${this.webhookContext.powerState}), current:(${this.Outlet.On})`);
105
119
  // On
106
- this.Outlet.On = this.webhookContext.powerState === 'ON' ? true : false;
120
+ this.Outlet.On = this.webhookContext.powerState === 'ON';
107
121
  await this.debugLog(`On: ${this.Outlet.On}`);
108
122
  }
109
123
  /**
@@ -113,7 +127,7 @@ export class Plug extends deviceBase {
113
127
  if (!this.device.enableCloudService && this.OpenAPI) {
114
128
  await this.errorLog(`refreshStatus enableCloudService: ${this.device.enableCloudService}`);
115
129
  }
116
- else if (this.BLE || this.config.options?.BLE) {
130
+ else if (this.BLE) {
117
131
  await this.BLERefreshStatus();
118
132
  }
119
133
  else if (this.OpenAPI && this.platform.config.credentials?.token) {
@@ -126,6 +140,31 @@ export class Plug extends deviceBase {
126
140
  }
127
141
  async BLERefreshStatus() {
128
142
  await this.debugLog('BLERefreshStatus');
143
+ const switchbot = await this.switchbotBLE();
144
+ if (switchbot === undefined) {
145
+ await this.BLERefreshConnection(switchbot);
146
+ }
147
+ else {
148
+ // Start to monitor advertisement packets
149
+ (async () => {
150
+ // Start to monitor advertisement packets
151
+ const serviceData = await this.monitorAdvertisementPackets(switchbot);
152
+ // Update HomeKit
153
+ if ((serviceData.model === SwitchBotBLEModel.PlugMiniUS || SwitchBotBLEModel.PlugMiniJP)
154
+ && serviceData.modelName === (SwitchBotBLEModelName.PlugMini || SwitchBotBLEModelName.PlugMini)) {
155
+ this.serviceData = serviceData;
156
+ await this.BLEparseStatus();
157
+ await this.updateHomeKitCharacteristics();
158
+ }
159
+ else {
160
+ await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
161
+ await this.BLERefreshConnection(switchbot);
162
+ }
163
+ })();
164
+ }
165
+ }
166
+ async registerPlatformBLE() {
167
+ await this.debugLog('registerPlatformBLE');
129
168
  if (this.config.options?.BLE) {
130
169
  await this.debugLog('is listening to Platform BLE.');
131
170
  this.device.bleMac = this.device.deviceId.match(/.{1,2}/g).join(':').toLowerCase();
@@ -143,29 +182,7 @@ export class Plug extends deviceBase {
143
182
  };
144
183
  }
145
184
  else {
146
- await this.debugLog('is using Device BLE Scanning.');
147
- const switchbot = await this.switchbotBLE();
148
- if (switchbot === undefined) {
149
- await this.BLERefreshConnection(switchbot);
150
- }
151
- else {
152
- // Start to monitor advertisement packets
153
- (async () => {
154
- // Start to monitor advertisement packets
155
- const serviceData = await this.monitorAdvertisementPackets(switchbot);
156
- // Update HomeKit
157
- if ((serviceData.model === SwitchBotBLEModel.PlugMiniUS || SwitchBotBLEModel.PlugMiniJP)
158
- && serviceData.modelName === (SwitchBotBLEModelName.PlugMini || SwitchBotBLEModelName.PlugMini)) {
159
- this.serviceData = serviceData;
160
- await this.BLEparseStatus();
161
- await this.updateHomeKitCharacteristics();
162
- }
163
- else {
164
- await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
165
- await this.BLERefreshConnection(switchbot);
166
- }
167
- })();
168
- }
185
+ await this.debugLog('is not listening to Platform BLE');
169
186
  }
170
187
  }
171
188
  async openAPIRefreshStatus() {
@@ -174,7 +191,6 @@ export class Plug extends deviceBase {
174
191
  const { body, statusCode } = await this.deviceRefreshStatus();
175
192
  const deviceStatus = await body.json();
176
193
  await this.debugLog(`statusCode: ${statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
177
- ;
178
194
  if (await this.successfulStatusCodes(statusCode, deviceStatus)) {
179
195
  await this.debugSuccessLog(`statusCode: ${statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
180
196
  this.deviceStatus = deviceStatus.body;
@@ -212,12 +228,12 @@ export class Plug extends deviceBase {
212
228
  }
213
229
  /**
214
230
  * Pushes the requested changes to the SwitchBot API
215
- * deviceType commandType Command command parameter Description
216
- * Plug - "command" "turnOff" "default" = set to OFF state
217
- * Plug - "command" "turnOn" "default" = set to ON state
218
- * Plug Mini (US/JP) - "command" turnOn default = set to ON state
219
- * Plug Mini (US/JP) - "command" turnOff default = set to OFF state
220
- * Plug Mini (US/JP) - "command" toggle default = toggle state
231
+ * deviceType commandType Command command parameter Description
232
+ * Plug - "command" "turnOff" "default" = set to OFF state
233
+ * Plug - "command" "turnOn" "default" = set to ON state
234
+ * Plug Mini (US/JP) - "command" "turnOn" "default" = set to ON state
235
+ * Plug Mini (US/JP) - "command" "turnOff" "default" = set to OFF state
236
+ * Plug Mini (US/JP) - "command" "toggle" "default" = toggle state
221
237
  */
222
238
  async pushChanges() {
223
239
  if (!this.device.enableCloudService && this.OpenAPI) {
@@ -1 +1 @@
1
- {"version":3,"file":"plug.js","sourceRoot":"","sources":["../../src/device/plug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plug.js","sourceRoot":"","sources":["../../src/device/plug.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { deviceBase } from './device.js';
2
- import { Subject } from 'rxjs';
3
- import type { devicesConfig } from '../settings.js';
4
- import type { device } from '../types/devicelist.js';
1
+ import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
5
2
  import type { SwitchBotPlatform } from '../platform.js';
3
+ import type { devicesConfig } from '../settings.js';
6
4
  import type { robotVacuumCleanerServiceData } from '../types/bledevicestatus.js';
7
- import type { PlatformAccessory, CharacteristicValue } from 'homebridge';
8
- import type { robotVacuumCleanerS1Status, robotVacuumCleanerS1PlusStatus, floorCleaningRobotS10Status } from '../types/devicestatus.js';
5
+ import type { device } from '../types/devicelist.js';
6
+ import type { floorCleaningRobotS10Status, robotVacuumCleanerS1PlusStatus, robotVacuumCleanerS1Status } from '../types/devicestatus.js';
9
7
  import type { floorCleaningRobotS10WebhookContext, robotVacuumCleanerS1PlusWebhookContext, robotVacuumCleanerS1WebhookContext } from '../types/devicewebhookstatus.js';
8
+ import { Subject } from 'rxjs';
9
+ import { deviceBase } from './device.js';
10
10
  export declare class RobotVacuumCleaner extends deviceBase {
11
11
  readonly platform: SwitchBotPlatform;
12
12
  private LightBulb;
@@ -25,15 +25,16 @@ export declare class RobotVacuumCleaner extends deviceBase {
25
25
  */
26
26
  refreshStatus(): Promise<void>;
27
27
  BLERefreshStatus(): Promise<void>;
28
+ registerPlatformBLE(): Promise<void>;
28
29
  openAPIRefreshStatus(): Promise<void>;
29
30
  registerWebhook(): Promise<void>;
30
31
  /**
31
32
  * Pushes the requested changes to the SwitchBot API
32
- * deviceType commandType Command parameter Description
33
- * Robot Vacuum Cleaner S1 "command" "start" "default" = start vacuuming
34
- * Robot Vacuum Cleaner S1 "command" "stop" "default" = stop vacuuming
35
- * Robot Vacuum Cleaner S1 "command" "dock" "default" = return to charging dock
36
- * Robot Vacuum Cleaner S1 "command" "PowLevel" "{0-3}" = set suction power level: 0 (Quiet), 1 (Standard), 2 (Strong), 3 (MAX)
33
+ * deviceType commandType Command parameter Description
34
+ * Robot Vacuum Cleaner S1 "command" "start" "default" = start vacuuming
35
+ * Robot Vacuum Cleaner S1 "command" "stop" "default" = stop vacuuming
36
+ * Robot Vacuum Cleaner S1 "command" "dock" "default" = return to charging dock
37
+ * Robot Vacuum Cleaner S1 "command" "PowLevel" "{0-3}" = set suction power level: 0 (Quiet), 1 (Standard), 2 (Strong), 3 (MAX)
37
38
  */
38
39
  pushChanges(): Promise<void>;
39
40
  BLEpushChanges(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"robotvacuumcleaner.d.ts","sourceRoot":"","sources":["../../src/device/robotvacuumcleaner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAgD,MAAM,MAAM,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACxI,OAAO,KAAK,EACV,mCAAmC,EACnC,sCAAsC,EACtC,kCAAkC,EACnC,MAAM,iCAAiC,CAAC;AAEzC,qBAAa,kBAAmB,SAAQ,UAAU;IA+B9C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IA7BtC,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,OAAO,CAMb;IAGF,YAAY,EAAG,0BAA0B,GAAG,8BAA8B,GAAG,2BAA2B,CAAC;IAGzG,cAAc,EAAG,kCAAkC,GAAG,sCAAsC,GAAG,mCAAmC,CAAC;IAGnI,WAAW,EAAG,6BAA6B,CAAC;IAG5C,kCAAkC,EAAG,OAAO,CAAC;IAC7C,0BAA0B,EAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAGhC,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IA8G1B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B,kBAAkB;IAuClB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCjC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBrC,eAAe;IAmBrB;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC/B,kBAAkB;IA8BlB,4BAA4B;IAiClC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB7C,iBAAiB;IAOjB,oBAAoB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtC"}
1
+ {"version":3,"file":"robotvacuumcleaner.d.ts","sourceRoot":"","sources":["../../src/device/robotvacuumcleaner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAA;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACvI,OAAO,KAAK,EACV,mCAAmC,EACnC,sCAAsC,EACtC,kCAAkC,EACnC,MAAM,iCAAiC,CAAA;AAOxC,OAAO,EAAqC,OAAO,EAAa,MAAM,MAAM,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,kBAAmB,SAAQ,UAAU;IA+B9C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IA7BtC,OAAO,CAAC,SAAS,CAKhB;IAED,OAAO,CAAC,OAAO,CAMd;IAGD,YAAY,EAAG,0BAA0B,GAAG,8BAA8B,GAAG,2BAA2B,CAAA;IAGxG,cAAc,EAAG,kCAAkC,GAAG,sCAAsC,GAAG,mCAAmC,CAAA;IAGlI,WAAW,EAAG,6BAA6B,CAAA;IAG3C,kCAAkC,EAAG,OAAO,CAAA;IAC5C,0BAA0B,EAAG,OAAO,CAAC,IAAI,CAAC,CAAA;gBAG/B,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IA+G1B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B,kBAAkB;IAwClB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBpC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBrC,eAAe;IAkBrB;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC/B,kBAAkB;IA8BlB,4BAA4B;IAqClC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7C,iBAAiB;IAOjB,oBAAoB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtC"}
@@ -1,10 +1,10 @@
1
- /* Copyright(C) 2021-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * robotvacuumcleaner.ts: @switchbot/homebridge-switchbot.
4
- */
5
- import { deviceBase } from './device.js';
1
+ /*
2
+ * For Testing Locally:
3
+ * import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
4
+ */
6
5
  import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot';
7
- import { Subject, debounceTime, interval, skipWhile, take, tap } from 'rxjs';
6
+ import { debounceTime, interval, skipWhile, Subject, take, tap } from 'rxjs';
7
+ import { deviceBase } from './device.js';
8
8
  export class RobotVacuumCleaner extends deviceBase {
9
9
  platform;
10
10
  // Services
@@ -12,7 +12,7 @@ export class RobotVacuumCleaner extends deviceBase {
12
12
  Battery;
13
13
  // OpenAPI
14
14
  deviceStatus;
15
- //Webhook
15
+ // Webhook
16
16
  webhookContext;
17
17
  // BLE
18
18
  serviceData;
@@ -37,27 +37,19 @@ export class RobotVacuumCleaner extends deviceBase {
37
37
  };
38
38
  accessory.context.LightBulb = this.LightBulb;
39
39
  // Initialize LightBulb Characteristics
40
- this.LightBulb.Service
41
- .setCharacteristic(this.hap.Characteristic.Name, this.LightBulb.Name)
42
- .getCharacteristic(this.hap.Characteristic.On)
43
- .onGet(() => {
40
+ this.LightBulb.Service.setCharacteristic(this.hap.Characteristic.Name, this.LightBulb.Name).getCharacteristic(this.hap.Characteristic.On).onGet(() => {
44
41
  return this.LightBulb.On;
45
- })
46
- .onSet(this.OnSet.bind(this));
42
+ }).onSet(this.OnSet.bind(this));
47
43
  // Initialize LightBulb Brightness Characteristic
48
- this.LightBulb.Service
49
- .getCharacteristic(this.hap.Characteristic.Brightness)
50
- .setProps({
44
+ this.LightBulb.Service.getCharacteristic(this.hap.Characteristic.Brightness).setProps({
51
45
  minStep: 25,
52
46
  minValue: 0,
53
47
  maxValue: 100,
54
48
  validValues: [0, 25, 50, 75, 100],
55
49
  validValueRanges: [0, 100],
56
- })
57
- .onGet(() => {
50
+ }).onGet(() => {
58
51
  return this.LightBulb.Brightness;
59
- })
60
- .onSet(this.BrightnessSet.bind(this));
52
+ }).onSet(this.BrightnessSet.bind(this));
61
53
  // Initialize Battery Service
62
54
  accessory.context.Battery = accessory.context.Battery ?? {};
63
55
  this.Battery = {
@@ -69,28 +61,39 @@ export class RobotVacuumCleaner extends deviceBase {
69
61
  };
70
62
  accessory.context.Battery = this.Battery;
71
63
  // Initialize Battery Characteristics
72
- this.Battery.Service
73
- .setCharacteristic(this.hap.Characteristic.Name, this.Battery.Name)
74
- .getCharacteristic(this.hap.Characteristic.BatteryLevel)
75
- .onGet(() => {
64
+ this.Battery.Service.setCharacteristic(this.hap.Characteristic.Name, this.Battery.Name).getCharacteristic(this.hap.Characteristic.BatteryLevel).onGet(() => {
76
65
  return this.Battery.BatteryLevel;
77
66
  });
78
- this.Battery.Service
79
- .getCharacteristic(this.hap.Characteristic.StatusLowBattery)
80
- .onGet(() => {
67
+ this.Battery.Service.getCharacteristic(this.hap.Characteristic.StatusLowBattery).onGet(() => {
81
68
  return this.Battery.StatusLowBattery;
82
69
  });
83
- this.Battery.Service
84
- .getCharacteristic(this.hap.Characteristic.ChargingState)
85
- .onGet(() => {
70
+ this.Battery.Service.getCharacteristic(this.hap.Characteristic.ChargingState).onGet(() => {
86
71
  return this.Battery.ChargingState;
87
72
  });
88
73
  // Retrieve initial values and updateHomekit
89
- this.debugLog('Retrieve initial values and update Homekit');
90
- this.refreshStatus();
91
- //regisiter webhook event handler
92
- this.debugLog('Registering Webhook Event Handler');
93
- this.registerWebhook();
74
+ try {
75
+ this.debugLog('Retrieve initial values and update Homekit');
76
+ this.refreshStatus();
77
+ }
78
+ catch (e) {
79
+ this.errorLog(`failed to retrieve initial values and update Homekit, Error: ${e}`);
80
+ }
81
+ // regisiter webhook event handler if enabled
82
+ try {
83
+ this.debugLog('Registering Webhook Event Handler');
84
+ this.registerWebhook();
85
+ }
86
+ catch (e) {
87
+ this.errorLog(`failed to registerWebhook, Error: ${e}`);
88
+ }
89
+ // regisiter platform BLE event handler if enabled
90
+ try {
91
+ this.debugLog('Registering Platform BLE Event Handler');
92
+ this.registerPlatformBLE();
93
+ }
94
+ catch (e) {
95
+ this.errorLog(`failed to registerPlatformBLE, Error: ${e}`);
96
+ }
94
97
  // Start an update interval
95
98
  interval(this.deviceRefreshRate * 1000)
96
99
  .pipe(skipWhile(() => this.robotVacuumCleanerUpdateInProgress))
@@ -116,36 +119,37 @@ export class RobotVacuumCleaner extends deviceBase {
116
119
  }
117
120
  async BLEparseStatus() {
118
121
  await this.debugLog('BLEparseStatus');
119
- await this.debugLog(`(state, battery) = BLE: (${this.serviceData.state}, ${this.serviceData.battery}),`
120
- + ` current: (${this.LightBulb.On}, ${this.Battery.BatteryLevel})`);
122
+ await this.debugLog(`(state, battery) = BLE: (${this.serviceData.state}, ${this.serviceData.battery}), current: (${this.LightBulb.On}, ${this.Battery.BatteryLevel})`);
121
123
  // On
122
- this.LightBulb.On = this.serviceData.state === 'on' ? true : false;
124
+ this.LightBulb.On = !!['InDustCollecting', 'Clearing'].includes(this.deviceStatus.workingStatus);
123
125
  await this.debugLog(`On: ${this.LightBulb.On}`);
124
126
  // BatteryLevel
125
127
  this.Battery.BatteryLevel = this.serviceData.battery;
126
128
  await this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`);
127
129
  // StatusLowBattery
128
130
  this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
129
- ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
131
+ ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
132
+ : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
130
133
  await this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`);
131
134
  }
132
135
  async openAPIparseStatus() {
133
136
  await this.debugLog('openAPIparseStatus');
134
- await this.debugLog(`(onlineStatus, battery, workingStatus) = API: (${this.deviceStatus.onlineStatus}, ${this.deviceStatus.battery},`
135
- + ` ${this.deviceStatus.workingStatus}), current: (${this.LightBulb.On}, ${this.Battery.BatteryLevel}, ${this.Battery.ChargingState})`);
137
+ await this.debugLog(`(onlineStatus, battery, workingStatus) = API: (${this.deviceStatus.onlineStatus}, ${this.deviceStatus.battery}, ${this.deviceStatus.workingStatus}), current: (${this.LightBulb.On}, ${this.Battery.BatteryLevel}, ${this.Battery.ChargingState})`);
136
138
  // On
137
- this.LightBulb.On = this.deviceStatus.onlineStatus === 'online' ? true : false;
139
+ this.LightBulb.On = this.deviceStatus.onlineStatus === 'online';
138
140
  await this.debugLog(`On: ${this.LightBulb.On}`);
139
141
  // BatteryLevel
140
142
  this.Battery.BatteryLevel = this.deviceStatus.battery;
141
143
  await this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`);
142
144
  // StatusLowBattery
143
145
  this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
144
- ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
146
+ ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
147
+ : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
145
148
  await this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`);
146
149
  // ChargingState
147
150
  this.Battery.ChargingState = this.deviceStatus.workingStatus === 'Charging'
148
- ? this.hap.Characteristic.ChargingState.CHARGING : this.hap.Characteristic.ChargingState.NOT_CHARGING;
151
+ ? this.hap.Characteristic.ChargingState.CHARGING
152
+ : this.hap.Characteristic.ChargingState.NOT_CHARGING;
149
153
  await this.debugLog(`ChargingState: ${this.Battery.ChargingState}`);
150
154
  // Firmware Version
151
155
  if (this.deviceStatus.version) {
@@ -164,21 +168,22 @@ export class RobotVacuumCleaner extends deviceBase {
164
168
  }
165
169
  async parseStatusWebhook() {
166
170
  await this.debugLog('parseStatusWebhook');
167
- await this.debugLog(`(onlineStatus, battery, workingStatus) = Webhook: (${this.webhookContext.onlineStatus}, ${this.webhookContext.battery},`
168
- + ` ${this.webhookContext.workingStatus}), current: (${this.LightBulb.On}, ${this.Battery.BatteryLevel}, ${this.Battery.ChargingState})`);
171
+ await this.debugLog(`(onlineStatus, battery, workingStatus) = Webhook: (${this.webhookContext.onlineStatus}, ${this.webhookContext.battery}, ${this.webhookContext.workingStatus}), current: (${this.LightBulb.On}, ${this.Battery.BatteryLevel}, ${this.Battery.ChargingState})`);
169
172
  // On
170
- this.LightBulb.On = this.webhookContext.onlineStatus === 'online' ? true : false;
173
+ this.LightBulb.On = this.webhookContext.onlineStatus === 'online';
171
174
  await this.debugLog(`On: ${this.LightBulb.On}`);
172
175
  // BatteryLevel
173
176
  this.Battery.BatteryLevel = this.webhookContext.battery;
174
177
  await this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`);
175
178
  // StatusLowBattery
176
179
  this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
177
- ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
180
+ ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
181
+ : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
178
182
  await this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`);
179
183
  // ChargingState
180
184
  this.Battery.ChargingState = this.webhookContext.workingStatus === 'Charging'
181
- ? this.hap.Characteristic.ChargingState.CHARGING : this.hap.Characteristic.ChargingState.NOT_CHARGING;
185
+ ? this.hap.Characteristic.ChargingState.CHARGING
186
+ : this.hap.Characteristic.ChargingState.NOT_CHARGING;
182
187
  await this.debugLog(`ChargingState: ${this.Battery.ChargingState}`);
183
188
  }
184
189
  /**
@@ -188,7 +193,7 @@ export class RobotVacuumCleaner extends deviceBase {
188
193
  if (!this.device.enableCloudService && this.OpenAPI) {
189
194
  await this.errorLog(`refreshStatus enableCloudService: ${this.device.enableCloudService}`);
190
195
  }
191
- else if (this.BLE || this.config.options?.BLE) {
196
+ else if (this.BLE) {
192
197
  await this.BLERefreshStatus();
193
198
  }
194
199
  else if (this.OpenAPI && this.platform.config.credentials?.token) {
@@ -201,6 +206,30 @@ export class RobotVacuumCleaner extends deviceBase {
201
206
  }
202
207
  async BLERefreshStatus() {
203
208
  await this.debugLog('BLERefreshStatus');
209
+ const switchbot = await this.switchbotBLE();
210
+ if (switchbot === undefined) {
211
+ await this.BLERefreshConnection(switchbot);
212
+ }
213
+ else {
214
+ // Start to monitor advertisement packets
215
+ (async () => {
216
+ // Start to monitor advertisement packets
217
+ const serviceData = await this.monitorAdvertisementPackets(switchbot);
218
+ // Update HomeKit
219
+ if (serviceData.model === SwitchBotBLEModel.Unknown && serviceData.modelName === SwitchBotBLEModelName.Unknown) {
220
+ this.serviceData = serviceData;
221
+ await this.BLEparseStatus();
222
+ await this.updateHomeKitCharacteristics();
223
+ }
224
+ else {
225
+ await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
226
+ await this.BLERefreshConnection(switchbot);
227
+ }
228
+ })();
229
+ }
230
+ }
231
+ async registerPlatformBLE() {
232
+ await this.debugLog('registerPlatformBLE');
204
233
  if (this.config.options?.BLE) {
205
234
  await this.debugLog('is listening to Platform BLE.');
206
235
  this.device.bleMac = this.device.deviceId.match(/.{1,2}/g).join(':').toLowerCase();
@@ -218,28 +247,7 @@ export class RobotVacuumCleaner extends deviceBase {
218
247
  };
219
248
  }
220
249
  else {
221
- await this.debugLog('is using Device BLE Scanning.');
222
- const switchbot = await this.switchbotBLE();
223
- if (switchbot === undefined) {
224
- await this.BLERefreshConnection(switchbot);
225
- }
226
- else {
227
- // Start to monitor advertisement packets
228
- (async () => {
229
- // Start to monitor advertisement packets
230
- const serviceData = await this.monitorAdvertisementPackets(switchbot);
231
- // Update HomeKit
232
- if (serviceData.model === SwitchBotBLEModel.Unknown && serviceData.modelName === SwitchBotBLEModelName.Unknown) {
233
- this.serviceData = serviceData;
234
- await this.BLEparseStatus();
235
- await this.updateHomeKitCharacteristics();
236
- }
237
- else {
238
- await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
239
- await this.BLERefreshConnection(switchbot);
240
- }
241
- })();
242
- }
250
+ await this.debugLog('is not listening to Platform BLE');
243
251
  }
244
252
  }
245
253
  async openAPIRefreshStatus() {
@@ -248,7 +256,6 @@ export class RobotVacuumCleaner extends deviceBase {
248
256
  const { body, statusCode } = await this.deviceRefreshStatus();
249
257
  const deviceStatus = await body.json();
250
258
  await this.debugLog(`statusCode: ${statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
251
- ;
252
259
  if (await this.successfulStatusCodes(statusCode, deviceStatus)) {
253
260
  await this.debugSuccessLog(`statusCode: ${statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
254
261
  this.deviceStatus = deviceStatus.body;
@@ -286,11 +293,11 @@ export class RobotVacuumCleaner extends deviceBase {
286
293
  }
287
294
  /**
288
295
  * Pushes the requested changes to the SwitchBot API
289
- * deviceType commandType Command parameter Description
290
- * Robot Vacuum Cleaner S1 "command" "start" "default" = start vacuuming
291
- * Robot Vacuum Cleaner S1 "command" "stop" "default" = stop vacuuming
292
- * Robot Vacuum Cleaner S1 "command" "dock" "default" = return to charging dock
293
- * Robot Vacuum Cleaner S1 "command" "PowLevel" "{0-3}" = set suction power level: 0 (Quiet), 1 (Standard), 2 (Strong), 3 (MAX)
296
+ * deviceType commandType Command parameter Description
297
+ * Robot Vacuum Cleaner S1 "command" "start" "default" = start vacuuming
298
+ * Robot Vacuum Cleaner S1 "command" "stop" "default" = stop vacuuming
299
+ * Robot Vacuum Cleaner S1 "command" "dock" "default" = return to charging dock
300
+ * Robot Vacuum Cleaner S1 "command" "PowLevel" "{0-3}" = set suction power level: 0 (Quiet), 1 (Standard), 2 (Strong), 3 (MAX)
294
301
  */
295
302
  async pushChanges() {
296
303
  if (!this.device.enableCloudService && this.OpenAPI) {
@@ -391,8 +398,13 @@ export class RobotVacuumCleaner extends deviceBase {
391
398
  await this.debugLog('openAPIpushBrightnessChanges');
392
399
  if (this.LightBulb.Brightness !== this.accessory.context.Brightness) {
393
400
  const command = this.LightBulb.Brightness === 0 ? 'dock' : 'PowLevel';
394
- const parameter = this.LightBulb.Brightness === 25 ? '0' : this.LightBulb.Brightness === 50 ? '1' : this.LightBulb.Brightness === 75
395
- ? '2' : this.LightBulb.Brightness === 100 ? '3' : 'default';
401
+ const parameter = this.LightBulb.Brightness === 25
402
+ ? '0'
403
+ : this.LightBulb.Brightness === 50
404
+ ? '1'
405
+ : this.LightBulb.Brightness === 75
406
+ ? '2'
407
+ : this.LightBulb.Brightness === 100 ? '3' : 'default';
396
408
  const bodyChange = JSON.stringify({
397
409
  command: `${command}`,
398
410
  parameter: `${parameter}`,
@@ -418,8 +430,7 @@ export class RobotVacuumCleaner extends deviceBase {
418
430
  }
419
431
  }
420
432
  else {
421
- await this.debugLog(`No changes (openAPIpushBrightnessChanges), Brightness: ${this.LightBulb.Brightness},`
422
- + ` BrightnessCached: ${this.accessory.context.Brightness}`);
433
+ await this.debugLog(`No changes (openAPIpushBrightnessChanges), Brightness: ${this.LightBulb.Brightness}, BrightnessCached: ${this.accessory.context.Brightness}`);
423
434
  }
424
435
  }
425
436
  /**