@homebridge-plugins/homebridge-sharkiq 2.0.0-beta.2 → 2.0.0-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 +19 -2
- package/README.md +41 -4
- package/config.schema.json +8 -26
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/devices/BaseMatterAccessory.d.ts +67 -0
- package/dist/devices/BaseMatterAccessory.d.ts.map +1 -0
- package/dist/devices/BaseMatterAccessory.js +153 -0
- package/dist/devices/BaseMatterAccessory.js.map +1 -0
- package/dist/devices/RoboticVacuumAccessory.d.ts +67 -0
- package/dist/devices/RoboticVacuumAccessory.d.ts.map +1 -0
- package/dist/devices/RoboticVacuumAccessory.js +645 -0
- package/dist/devices/RoboticVacuumAccessory.js.map +1 -0
- package/dist/devices/index.d.ts +9 -0
- package/dist/devices/index.d.ts.map +1 -0
- package/dist/devices/index.js +8 -0
- package/dist/devices/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +39 -16
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +195 -92
- package/dist/platform.js.map +1 -1
- package/dist/sharkiq-js/room_encoding.d.ts +8 -0
- package/dist/sharkiq-js/room_encoding.d.ts.map +1 -0
- package/dist/sharkiq-js/room_encoding.js +35 -0
- package/dist/sharkiq-js/room_encoding.js.map +1 -0
- package/dist/sharkiq-js/sharkiq.d.ts.map +1 -1
- package/dist/sharkiq-js/sharkiq.js +2 -20
- package/dist/sharkiq-js/sharkiq.js.map +1 -1
- package/docs/assets/highlight.css +9 -2
- package/docs/index.html +35 -3
- package/docs/variables/default.html +2 -1
- package/package.json +3 -3
- package/test/context.spec.ts +33 -0
- package/test/encodeRoomList.spec.ts +25 -0
- package/test/polling.spec.ts +74 -0
- package/dist/errorHandling.d.ts +0 -19
- package/dist/errorHandling.d.ts.map +0 -1
- package/dist/errorHandling.js +0 -27
- package/dist/errorHandling.js.map +0 -1
- package/dist/platformAccessory.d.ts +0 -33
- package/dist/platformAccessory.d.ts.map +0 -1
- package/dist/platformAccessory.js +0 -384
- package/dist/platformAccessory.js.map +0 -1
|
@@ -1,384 +0,0 @@
|
|
|
1
|
-
import { TIMEOUTS, VACUUM_SPEEDS } from './constants.js';
|
|
2
|
-
import { createPromiseRejectionHandler } from './errorHandling.js';
|
|
3
|
-
import { OperatingModes, PowerModes, Properties } from './sharkiq-js/sharkiq.js';
|
|
4
|
-
export class SharkIQAccessory {
|
|
5
|
-
platform;
|
|
6
|
-
accessory;
|
|
7
|
-
device;
|
|
8
|
-
log;
|
|
9
|
-
invertDockedStatus;
|
|
10
|
-
dockedUpdateInterval;
|
|
11
|
-
enhancedVacuumMode;
|
|
12
|
-
dockedDelay;
|
|
13
|
-
service;
|
|
14
|
-
dockedStatusService;
|
|
15
|
-
vacuumPausedService;
|
|
16
|
-
isNativeVacuumServiceAvailable;
|
|
17
|
-
constructor(platform, accessory, device, UUIDGen, log, invertDockedStatus, dockedUpdateInterval, enhancedVacuumMode = true, dockedDelay = 0) {
|
|
18
|
-
this.platform = platform;
|
|
19
|
-
this.accessory = accessory;
|
|
20
|
-
this.device = device;
|
|
21
|
-
this.log = log;
|
|
22
|
-
this.invertDockedStatus = invertDockedStatus;
|
|
23
|
-
this.dockedUpdateInterval = dockedUpdateInterval;
|
|
24
|
-
this.enhancedVacuumMode = enhancedVacuumMode;
|
|
25
|
-
this.dockedDelay = dockedDelay;
|
|
26
|
-
// Check if native robot vacuum service is available
|
|
27
|
-
this.isNativeVacuumServiceAvailable = this.checkForNativeVacuumService();
|
|
28
|
-
// Get device serial number
|
|
29
|
-
const serial_number = device._dsn;
|
|
30
|
-
const vacuumUUID = UUIDGen.generate(`${serial_number}-vacuum`);
|
|
31
|
-
// Use FanV2 service as no native robot vacuum service is available in current HomeKit framework
|
|
32
|
-
// This provides the best vacuum-like experience with enhanced power level mappings
|
|
33
|
-
this.service = this.accessory.getService('Vacuum')
|
|
34
|
-
|| this.accessory.addService(this.platform.Service.Fanv2, 'Vacuum', vacuumUUID);
|
|
35
|
-
// Vacuum Name - Default is device name
|
|
36
|
-
this.service.setCharacteristic(this.platform.Characteristic.Name, device._name.toString());
|
|
37
|
-
// Log the vacuum mode being used
|
|
38
|
-
this.log.info(`${device._name.toString()} configured with ${this.enhancedVacuumMode ? 'Enhanced' : 'Legacy'} vacuum mode`);
|
|
39
|
-
// // Vacuum Active
|
|
40
|
-
this.service.getCharacteristic(this.platform.Characteristic.Active)
|
|
41
|
-
.onSet(this.setVacuumActive.bind(this))
|
|
42
|
-
.onGet(this.getVacuumActive.bind(this));
|
|
43
|
-
// Vacuum Power (Off, Eco, Normal, Max)
|
|
44
|
-
// Using RotationSpeed as a power level indicator until native vacuum service is available
|
|
45
|
-
// Power levels: 0=Off, 25=Eco, 50=Normal, 100=Max (enhanced mode) or 0=Off, 30=Eco, 60=Normal, 90=Max (legacy mode)
|
|
46
|
-
if (this.enhancedVacuumMode) {
|
|
47
|
-
this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed)
|
|
48
|
-
.setProps({
|
|
49
|
-
minStep: VACUUM_SPEEDS.ECO || 25,
|
|
50
|
-
minValue: VACUUM_SPEEDS.OFF || 0,
|
|
51
|
-
maxValue: VACUUM_SPEEDS.MAX || 100,
|
|
52
|
-
validValues: [0, 25, 50, 75, 100], // Off, Eco, Normal, Max, Turbo
|
|
53
|
-
})
|
|
54
|
-
.onSet(this.setFanSpeed.bind(this))
|
|
55
|
-
.onGet(this.getFanSpeed.bind(this));
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// Legacy power level mappings for backward compatibility
|
|
59
|
-
this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed)
|
|
60
|
-
.setProps({
|
|
61
|
-
minStep: VACUUM_SPEEDS.ECO || 30,
|
|
62
|
-
minValue: VACUUM_SPEEDS.OFF || 0,
|
|
63
|
-
maxValue: VACUUM_SPEEDS.MAX || 90,
|
|
64
|
-
})
|
|
65
|
-
.onSet(this.setFanSpeed.bind(this))
|
|
66
|
-
.onGet(this.getFanSpeed.bind(this));
|
|
67
|
-
}
|
|
68
|
-
// Vacuum Docked Status
|
|
69
|
-
this.dockedStatusService = this.accessory.getService('Vacuum Docked')
|
|
70
|
-
|| this.accessory.addService(this.platform.Service.ContactSensor, 'Vacuum Docked', 'Docked');
|
|
71
|
-
this.dockedStatusService.setCharacteristic(this.platform.Characteristic.Name, `${device._name.toString()} Docked`);
|
|
72
|
-
this.dockedStatusService.getCharacteristic(this.platform.Characteristic.ContactSensorState)
|
|
73
|
-
.onGet(this.retrieveDockedStatus.bind(this));
|
|
74
|
-
// Vacuum Paused Status
|
|
75
|
-
this.vacuumPausedService = this.accessory.getService('Vacuum Paused')
|
|
76
|
-
|| this.accessory.addService(this.platform.Service.Switch, 'Vacuum Paused', 'Paused');
|
|
77
|
-
this.vacuumPausedService.setCharacteristic(this.platform.Characteristic.Name, `${device._name.toString()} Paused`);
|
|
78
|
-
// Vacuum Paused getting and setting state
|
|
79
|
-
this.vacuumPausedService.getCharacteristic(this.platform.Characteristic.On)
|
|
80
|
-
.onSet(this.setPaused.bind(this))
|
|
81
|
-
.onGet(this.getPaused.bind(this));
|
|
82
|
-
this.updateStates();
|
|
83
|
-
// Retrieve vacuum states
|
|
84
|
-
this.retrieveVacuumStates().then(() => {
|
|
85
|
-
this.retrieveVacuumStateInterval();
|
|
86
|
-
}).catch(() => {
|
|
87
|
-
createPromiseRejectionHandler(this.log, 'first interval update')();
|
|
88
|
-
this.retrieveVacuumStateInterval();
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
// Check if native robot vacuum service is available in HomeKit
|
|
92
|
-
checkForNativeVacuumService() {
|
|
93
|
-
try {
|
|
94
|
-
// As of Homebridge 2.0.0-alpha.28+, there are no native robot vacuum services available
|
|
95
|
-
// in the HAP-NodeJS framework. The HomeKit protocol specification does not yet include
|
|
96
|
-
// dedicated robot vacuum services. We check for potential future services:
|
|
97
|
-
const potentialServices = ['RobotVacuum', 'VacuumCleaner', 'RoboticVacuum'];
|
|
98
|
-
for (const serviceName of potentialServices) {
|
|
99
|
-
if (this.platform.Service[serviceName]) {
|
|
100
|
-
this.log.info(`Native vacuum service detected: ${serviceName}`);
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
this.log.debug('No native robot vacuum services available in current HomeKit framework, using enhanced FanV2 service');
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
this.log.debug('Error checking for native vacuum service:', error);
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Helper method to calculate vacuum docked status based on inversion setting
|
|
113
|
-
calculateDockedStatus(docked_status) {
|
|
114
|
-
if (!this.invertDockedStatus) {
|
|
115
|
-
return docked_status === 1;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
return docked_status !== 1;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// Retrieve vacuum states interval function
|
|
122
|
-
async retrieveVacuumStateInterval() {
|
|
123
|
-
setInterval(async () => {
|
|
124
|
-
await this.retrieveVacuumStates()
|
|
125
|
-
.catch(createPromiseRejectionHandler(this.log, 'interval update'));
|
|
126
|
-
}, this.dockedUpdateInterval + this.dockedDelay);
|
|
127
|
-
}
|
|
128
|
-
// Retrieve docked status
|
|
129
|
-
async retrieveDockedStatus() {
|
|
130
|
-
this.log.debug('Triggering GET Docked Status');
|
|
131
|
-
await this.device.update(Properties.DOCKED_STATUS);
|
|
132
|
-
const docked_status = this.device.docked_status();
|
|
133
|
-
const vacuumDocked = this.calculateDockedStatus(docked_status);
|
|
134
|
-
return vacuumDocked;
|
|
135
|
-
}
|
|
136
|
-
// Retrieve operating mode
|
|
137
|
-
async retrieveOperatingMode() {
|
|
138
|
-
this.log.debug('Triggering GET Operating Mode');
|
|
139
|
-
await this.device.update(Properties.OPERATING_MODE)
|
|
140
|
-
.then((delay) => {
|
|
141
|
-
this.dockedDelay = delay;
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
// Retrieve power mode
|
|
145
|
-
async retrievePowerMode() {
|
|
146
|
-
this.log.debug('Triggering GET Power Mode');
|
|
147
|
-
await this.device.update(Properties.POWER_MODE)
|
|
148
|
-
.then((delay) => {
|
|
149
|
-
this.dockedDelay = delay;
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
// Monitor vacuum state function
|
|
153
|
-
async retrieveVacuumStates() {
|
|
154
|
-
this.log.debug('Triggering GET Vacuum States');
|
|
155
|
-
let vacuumDocked = false;
|
|
156
|
-
await this.device.update([Properties.DOCKED_STATUS, Properties.OPERATING_MODE, Properties.POWER_MODE])
|
|
157
|
-
.then((delay) => {
|
|
158
|
-
this.dockedDelay = delay;
|
|
159
|
-
});
|
|
160
|
-
const docked_status = this.device.docked_status();
|
|
161
|
-
vacuumDocked = this.calculateDockedStatus(docked_status);
|
|
162
|
-
const power_mode = this.device.power_mode();
|
|
163
|
-
const mode = this.device.operating_mode();
|
|
164
|
-
const vacuumActive = mode === OperatingModes.START || mode === OperatingModes.STOP;
|
|
165
|
-
this.service.updateCharacteristic(this.platform.Characteristic.Active, vacuumActive);
|
|
166
|
-
if (vacuumActive) {
|
|
167
|
-
if (this.enhancedVacuumMode) {
|
|
168
|
-
// Enhanced vacuum mode: 25=Eco, 50=Normal, 100=Max
|
|
169
|
-
if (power_mode === PowerModes.MAX) {
|
|
170
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.MAX || 100);
|
|
171
|
-
}
|
|
172
|
-
else if (power_mode === PowerModes.ECO) {
|
|
173
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.ECO || 25);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.NORMAL || 50);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
// Legacy mode: 30=Eco, 60=Normal, 90=Max
|
|
181
|
-
if (power_mode === PowerModes.MAX) {
|
|
182
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.MAX || 90);
|
|
183
|
-
}
|
|
184
|
-
else if (power_mode === PowerModes.ECO) {
|
|
185
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.ECO || 30);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.NORMAL || 60);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (mode === OperatingModes.STOP) {
|
|
192
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, true);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, false);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.OFF);
|
|
200
|
-
}
|
|
201
|
-
this.dockedStatusService.updateCharacteristic(this.platform.Characteristic.ContactSensorState, vacuumDocked);
|
|
202
|
-
this.log.debug('Vacuum Status - Docked:', vacuumDocked, 'Active:', vacuumActive, 'Power Mode:', power_mode === PowerModes.ECO ? 'ECO' : power_mode === PowerModes.MAX ? 'MAX' : 'NORMAL');
|
|
203
|
-
}
|
|
204
|
-
// Update paused and active state on switch
|
|
205
|
-
updateStates() {
|
|
206
|
-
const mode = this.device.operating_mode();
|
|
207
|
-
if (mode === OperatingModes.START || mode === OperatingModes.STOP) {
|
|
208
|
-
this.service.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.ACTIVE);
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
this.service.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.INACTIVE);
|
|
212
|
-
}
|
|
213
|
-
if (mode === OperatingModes.STOP) {
|
|
214
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, true);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, false);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// Get paused state
|
|
221
|
-
async getPaused() {
|
|
222
|
-
this.log.debug('Triggering GET Paused');
|
|
223
|
-
await this.retrieveOperatingMode();
|
|
224
|
-
const mode = this.device.operating_mode();
|
|
225
|
-
this.log.debug('State:', mode);
|
|
226
|
-
if (mode === OperatingModes.STOP) {
|
|
227
|
-
return true;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
return false;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
// Set paused state
|
|
234
|
-
async setPaused(value) {
|
|
235
|
-
this.log.debug('Triggering SET Paused. Paused:', value);
|
|
236
|
-
const mode = this.device.operating_mode();
|
|
237
|
-
if (mode === OperatingModes.START || mode === OperatingModes.STOP) {
|
|
238
|
-
if (value) {
|
|
239
|
-
await this.device.set_operating_mode(OperatingModes.STOP)
|
|
240
|
-
.catch(createPromiseRejectionHandler(this.log, 'setting operating mode'));
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
await this.device.set_operating_mode(OperatingModes.START)
|
|
244
|
-
.catch(createPromiseRejectionHandler(this.log, 'setting operating mode'));
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
setTimeout(() => {
|
|
249
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, false);
|
|
250
|
-
}, TIMEOUTS.PAUSED_UPDATE_DELAY);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
// Check if the vacuum is active for UI
|
|
254
|
-
async getVacuumActive() {
|
|
255
|
-
this.log.debug('Triggering GET Vacuum Active');
|
|
256
|
-
const mode = this.device.operating_mode();
|
|
257
|
-
if (mode === OperatingModes.START || mode === OperatingModes.STOP) {
|
|
258
|
-
return true;
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
// Set the vacuum state by UI
|
|
265
|
-
async setVacuumActive(value) {
|
|
266
|
-
this.log.debug('Triggering SET Vacuum Active');
|
|
267
|
-
if (!value) {
|
|
268
|
-
const mode = this.device.operating_mode();
|
|
269
|
-
if (mode === OperatingModes.START || mode === OperatingModes.STOP) {
|
|
270
|
-
await this.setFanSpeed(0)
|
|
271
|
-
.catch(createPromiseRejectionHandler(this.log, 'setting fan speed'));
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
// Get vacuum power for UI
|
|
276
|
-
async getFanSpeed() {
|
|
277
|
-
this.log.debug('Triggering GET Fan Speed');
|
|
278
|
-
await this.retrievePowerMode();
|
|
279
|
-
const mode = this.device.operating_mode();
|
|
280
|
-
const vacuumActive = mode === OperatingModes.START || mode === OperatingModes.STOP;
|
|
281
|
-
if (vacuumActive) {
|
|
282
|
-
const power_mode = this.device.power_mode();
|
|
283
|
-
if (this.enhancedVacuumMode) {
|
|
284
|
-
// Enhanced vacuum mode: 0=Off, 25=Eco, 50=Normal, 100=Max
|
|
285
|
-
if (power_mode === PowerModes.MAX) {
|
|
286
|
-
return VACUUM_SPEEDS.MAX || 100; // Max power
|
|
287
|
-
}
|
|
288
|
-
else if (power_mode === PowerModes.ECO) {
|
|
289
|
-
return VACUUM_SPEEDS.ECO || 25; // Eco mode
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
return VACUUM_SPEEDS.NORMAL || 50; // Normal mode
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
// Legacy mode: 0=Off, 30=Eco, 60=Normal, 90=Max
|
|
297
|
-
if (power_mode === PowerModes.MAX) {
|
|
298
|
-
return VACUUM_SPEEDS.MAX || 90;
|
|
299
|
-
}
|
|
300
|
-
else if (power_mode === PowerModes.ECO) {
|
|
301
|
-
return VACUUM_SPEEDS.ECO || 30;
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
return VACUUM_SPEEDS.NORMAL || 60;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
return VACUUM_SPEEDS.OFF || 0; // Off
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
// Set vacuum power from UI (and start/stop vacuum if needed)
|
|
313
|
-
async setFanSpeed(value) {
|
|
314
|
-
this.log.debug('Triggering SET Fan Speed. Value:', value);
|
|
315
|
-
let power_mode = PowerModes.NORMAL;
|
|
316
|
-
if (this.enhancedVacuumMode) {
|
|
317
|
-
// Enhanced vacuum mode mappings
|
|
318
|
-
if (value === (VACUUM_SPEEDS.ECO ?? 25)) {
|
|
319
|
-
power_mode = PowerModes.ECO;
|
|
320
|
-
this.log.debug('Setting vacuum to ECO mode');
|
|
321
|
-
}
|
|
322
|
-
else if (value === (VACUUM_SPEEDS.MAX ?? 100) || value === (VACUUM_SPEEDS.MAX ?? 75)) {
|
|
323
|
-
power_mode = PowerModes.MAX;
|
|
324
|
-
this.log.debug('Setting vacuum to MAX mode');
|
|
325
|
-
}
|
|
326
|
-
else if (value === (VACUUM_SPEEDS.NORMAL ?? 50)) {
|
|
327
|
-
power_mode = PowerModes.NORMAL;
|
|
328
|
-
this.log.debug('Setting vacuum to NORMAL mode');
|
|
329
|
-
}
|
|
330
|
-
else if (value === (VACUUM_SPEEDS.OFF ?? 0)) {
|
|
331
|
-
this.log.debug('Stopping vacuum');
|
|
332
|
-
await this.device.cancel_clean()
|
|
333
|
-
.catch(() => {
|
|
334
|
-
this.log.debug('Promise Rejected with cancel cleaning update.');
|
|
335
|
-
});
|
|
336
|
-
this.service.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.INACTIVE);
|
|
337
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, false);
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
// Legacy mode mappings
|
|
343
|
-
if (value === (VACUUM_SPEEDS.ECO ?? 30)) {
|
|
344
|
-
power_mode = PowerModes.ECO;
|
|
345
|
-
this.log.debug('Setting vacuum to ECO mode (legacy)');
|
|
346
|
-
}
|
|
347
|
-
else if (value === (VACUUM_SPEEDS.MAX ?? 90)) {
|
|
348
|
-
power_mode = PowerModes.MAX;
|
|
349
|
-
this.log.debug('Setting vacuum to MAX mode (legacy)');
|
|
350
|
-
}
|
|
351
|
-
else if (value === (VACUUM_SPEEDS.OFF ?? 0)) {
|
|
352
|
-
this.log.debug('Stopping vacuum');
|
|
353
|
-
await this.device.cancel_clean()
|
|
354
|
-
.catch(() => {
|
|
355
|
-
this.log.debug('Promise Rejected with cancel cleaning update.');
|
|
356
|
-
});
|
|
357
|
-
this.service.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.INACTIVE);
|
|
358
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, false);
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
else {
|
|
362
|
-
power_mode = PowerModes.NORMAL;
|
|
363
|
-
this.log.debug('Setting vacuum to NORMAL mode (legacy)');
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
const isPaused = await this.getPaused();
|
|
367
|
-
if (isPaused) {
|
|
368
|
-
await this.device.set_operating_mode(OperatingModes.START)
|
|
369
|
-
.catch(() => {
|
|
370
|
-
this.log.debug('Promise Rejected with setting operating mode.');
|
|
371
|
-
});
|
|
372
|
-
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, false);
|
|
373
|
-
}
|
|
374
|
-
await this.device.set_property_value(Properties.POWER_MODE, power_mode)
|
|
375
|
-
.catch(createPromiseRejectionHandler(this.log, 'powermode update'));
|
|
376
|
-
const mode = this.device.operating_mode();
|
|
377
|
-
if (mode !== OperatingModes.START && mode !== OperatingModes.STOP) {
|
|
378
|
-
this.service.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.ACTIVE);
|
|
379
|
-
await this.device.clean_rooms([])
|
|
380
|
-
.catch(createPromiseRejectionHandler(this.log, 'start cleaning update'));
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
//# sourceMappingURL=platformAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"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"}
|