@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.
- package/CHANGELOG.md +10 -0
- package/README.md +14 -0
- package/assets/security-privacy-bluetooth.png +0 -0
- package/config.schema.json +74 -2
- package/dist/device/blindtilt.d.ts +21 -9
- package/dist/device/blindtilt.d.ts.map +1 -1
- package/dist/device/blindtilt.js +167 -96
- package/dist/device/blindtilt.js.map +1 -1
- package/dist/device/bot-old.d.ts +132 -0
- package/dist/device/bot-old.d.ts.map +1 -0
- package/dist/device/bot-old.js +1482 -0
- package/dist/device/bot-old.js.map +1 -0
- package/dist/device/bot.d.ts +10 -9
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js +186 -187
- package/dist/device/bot.js.map +1 -1
- package/dist/device/ceilinglight.d.ts +14 -13
- package/dist/device/ceilinglight.d.ts.map +1 -1
- package/dist/device/ceilinglight.js +87 -97
- package/dist/device/ceilinglight.js.map +1 -1
- package/dist/device/colorbulb.d.ts +13 -12
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +92 -105
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/contact.d.ts +6 -5
- package/dist/device/contact.d.ts.map +1 -1
- package/dist/device/contact.js +71 -68
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.d.ts +17 -5
- package/dist/device/curtain.d.ts.map +1 -1
- package/dist/device/curtain.js +184 -118
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/device.d.ts +18 -18
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +33 -36
- package/dist/device/device.js.map +1 -1
- package/dist/device/fan.d.ts +9 -8
- package/dist/device/fan.d.ts.map +1 -1
- package/dist/device/fan.js +94 -101
- package/dist/device/fan.js.map +1 -1
- package/dist/device/hub.d.ts +6 -5
- package/dist/device/hub.d.ts.map +1 -1
- package/dist/device/hub.js +69 -65
- package/dist/device/hub.js.map +1 -1
- package/dist/device/humidifier.d.ts +6 -5
- package/dist/device/humidifier.d.ts.map +1 -1
- package/dist/device/humidifier.js +89 -104
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/iosensor.d.ts +6 -5
- package/dist/device/iosensor.d.ts.map +1 -1
- package/dist/device/iosensor.js +72 -66
- package/dist/device/iosensor.js.map +1 -1
- package/dist/device/lightstrip.d.ts +7 -6
- package/dist/device/lightstrip.d.ts.map +1 -1
- package/dist/device/lightstrip.js +85 -99
- package/dist/device/lightstrip.js.map +1 -1
- package/dist/device/lock.d.ts +10 -9
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +89 -79
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts +6 -5
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js +72 -65
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts +6 -5
- package/dist/device/meterplus.d.ts.map +1 -1
- package/dist/device/meterplus.js +72 -64
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/motion.d.ts +6 -5
- package/dist/device/motion.d.ts.map +1 -1
- package/dist/device/motion.js +65 -58
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.d.ts +13 -12
- package/dist/device/plug.d.ts.map +1 -1
- package/dist/device/plug.js +68 -52
- package/dist/device/plug.js.map +1 -1
- package/dist/device/robotvacuumcleaner.d.ts +12 -11
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js +93 -82
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/device/waterdetector.d.ts +6 -5
- package/dist/device/waterdetector.d.ts.map +1 -1
- package/dist/device/waterdetector.js +73 -63
- package/dist/device/waterdetector.js.map +1 -1
- package/dist/homebridge-ui/server.js +2 -2
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts +8 -8
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js +61 -105
- package/dist/irdevice/airconditioner.js.map +1 -1
- package/dist/irdevice/airpurifier.d.ts +10 -10
- package/dist/irdevice/airpurifier.d.ts.map +1 -1
- package/dist/irdevice/airpurifier.js +22 -42
- package/dist/irdevice/airpurifier.js.map +1 -1
- package/dist/irdevice/camera.d.ts +9 -9
- package/dist/irdevice/camera.d.ts.map +1 -1
- package/dist/irdevice/camera.js +15 -25
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts +8 -8
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js +21 -40
- package/dist/irdevice/fan.js.map +1 -1
- package/dist/irdevice/irdevice.d.ts +11 -11
- package/dist/irdevice/irdevice.d.ts.map +1 -1
- package/dist/irdevice/irdevice.js +14 -22
- package/dist/irdevice/irdevice.js.map +1 -1
- package/dist/irdevice/light.d.ts +9 -9
- package/dist/irdevice/light.d.ts.map +1 -1
- package/dist/irdevice/light.js +24 -47
- package/dist/irdevice/light.js.map +1 -1
- package/dist/irdevice/other.d.ts +9 -9
- package/dist/irdevice/other.d.ts.map +1 -1
- package/dist/irdevice/other.js +40 -83
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts +9 -9
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js +29 -54
- package/dist/irdevice/tv.js.map +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts +5 -5
- package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
- package/dist/irdevice/vacuumcleaner.js +11 -21
- package/dist/irdevice/vacuumcleaner.js.map +1 -1
- package/dist/irdevice/waterheater.d.ts +5 -5
- package/dist/irdevice/waterheater.d.ts.map +1 -1
- package/dist/irdevice/waterheater.js +11 -22
- package/dist/irdevice/waterheater.js.map +1 -1
- package/dist/platform.d.ts +24 -23
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +509 -723
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +5 -2
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/dist/types/bledevicestatus.d.ts +9 -9
- package/dist/types/bledevicestatus.d.ts.map +1 -1
- package/dist/types/devicelist.d.ts +6 -6
- package/dist/types/devicelist.d.ts.map +1 -1
- package/dist/types/deviceresponse.d.ts +4 -4
- package/dist/types/deviceresponse.d.ts.map +1 -1
- package/dist/types/devicestatus.d.ts +2 -2
- package/dist/types/devicestatus.d.ts.map +1 -1
- package/dist/types/devicewebhookstatus.d.ts +5 -5
- package/dist/types/devicewebhookstatus.d.ts.map +1 -1
- package/dist/types/irdevicelist.d.ts +4 -4
- package/dist/types/irdevicelist.d.ts.map +1 -1
- package/dist/types/pushbody.d.ts +2 -2
- package/dist/types/pushbody.d.ts.map +1 -1
- package/dist/utils.d.ts +4 -4
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +9 -13
- package/dist/utils.js.map +1 -1
- package/eslint.config.js +48 -93
- package/package.json +64 -57
- package/src/device/blindtilt.ts +537 -456
- package/src/device/bot-old.ts +1540 -0
- package/src/device/bot.ts +732 -725
- package/src/device/ceilinglight.ts +359 -368
- package/src/device/colorbulb.ts +441 -453
- package/src/device/contact.ts +229 -226
- package/src/device/curtain.ts +526 -444
- package/src/device/device.ts +206 -208
- package/src/device/fan.ts +336 -345
- package/src/device/hub.ts +213 -214
- package/src/device/humidifier.ts +326 -347
- package/src/device/iosensor.ts +211 -209
- package/src/device/lightstrip.ts +391 -404
- package/src/device/lock.ts +292 -282
- package/src/device/meter.ts +212 -210
- package/src/device/meterplus.ts +212 -209
- package/src/device/motion.ts +198 -190
- package/src/device/plug.ts +203 -182
- package/src/device/robotvacuumcleaner.ts +280 -269
- package/src/device/waterdetector.ts +198 -189
- package/src/homebridge-ui/server.ts +16 -15
- package/src/index.ts +5 -6
- package/src/irdevice/airconditioner.ts +277 -326
- package/src/irdevice/airpurifier.ts +124 -143
- package/src/irdevice/camera.ts +58 -64
- package/src/irdevice/fan.ts +106 -123
- package/src/irdevice/irdevice.ts +116 -119
- package/src/irdevice/light.ts +119 -143
- package/src/irdevice/other.ts +417 -461
- package/src/irdevice/tv.ts +155 -177
- package/src/irdevice/vacuumcleaner.ts +54 -60
- package/src/irdevice/waterheater.ts +56 -63
- package/src/platform.ts +1491 -1681
- package/src/settings.ts +172 -169
- package/src/types/bledevicestatus.ts +252 -256
- package/src/types/devicelist.ts +79 -79
- package/src/types/deviceresponse.ts +12 -13
- package/src/types/devicestatus.ts +124 -124
- package/src/types/devicewebhookstatus.ts +126 -131
- package/src/types/irdevicelist.ts +10 -10
- package/src/types/pushbody.ts +5 -5
- package/src/utils.ts +64 -65
- package/tsconfig.json +10 -9
package/dist/device/plug.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
|
|
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 {
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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'
|
|
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'
|
|
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'
|
|
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
|
|
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
|
|
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
|
|
216
|
-
* Plug - "command" "turnOff" "default"
|
|
217
|
-
* Plug - "command" "turnOn" "default"
|
|
218
|
-
* Plug Mini (US/JP) - "command"
|
|
219
|
-
* Plug Mini (US/JP) - "command"
|
|
220
|
-
* Plug Mini (US/JP) - "command"
|
|
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) {
|
package/dist/device/plug.js.map
CHANGED
|
@@ -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 {
|
|
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 {
|
|
8
|
-
import type {
|
|
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
|
|
33
|
-
* Robot Vacuum Cleaner S1 "command" "start" "default"
|
|
34
|
-
* Robot Vacuum Cleaner S1 "command" "stop" "default"
|
|
35
|
-
* Robot Vacuum Cleaner S1 "command" "dock" "default" =
|
|
36
|
-
* Robot Vacuum Cleaner S1 "command" "PowLevel" "{0-3}" =
|
|
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,
|
|
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
|
-
/*
|
|
2
|
-
|
|
3
|
-
|
|
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 {
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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.
|
|
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
|
|
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'
|
|
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
|
|
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
|
|
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'
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
290
|
-
* Robot Vacuum Cleaner S1 "command" "start" "default"
|
|
291
|
-
* Robot Vacuum Cleaner S1 "command" "stop" "default"
|
|
292
|
-
* Robot Vacuum Cleaner S1 "command" "dock" "default" =
|
|
293
|
-
* Robot Vacuum Cleaner S1 "command" "PowLevel" "{0-3}" =
|
|
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
|
|
395
|
-
? '
|
|
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
|
/**
|