@homebridge-plugins/homebridge-sharkiq 2.0.0-beta.1 → 2.0.0-beta.3
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/README.md +16 -1
- package/config.schema.json +13 -1
- package/dist/platform.d.ts +5 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +40 -17
- package/dist/platform.js.map +1 -1
- package/dist/platformAccessory.d.ts +4 -1
- package/dist/platformAccessory.d.ts.map +1 -1
- package/dist/platformAccessory.js +150 -37
- package/dist/platformAccessory.js.map +1 -1
- package/docs/assets/main.js +5 -5
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +251 -229
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +24 -15
- package/docs/modules.html +1 -2
- package/docs/variables/default.html +1 -0
- package/package.json +14 -16
- package/typedoc.json +0 -4
- package/docs/assets/dmt/dmt-component-data.js +0 -1
- package/docs/assets/dmt/dmt-components.css +0 -20
- package/docs/assets/dmt/dmt-components.js +0 -67
- package/docs/assets/dmt/dmt-search.cmp +0 -0
- package/docs/assets/dmt/dmt-theme.css +0 -1
- package/docs/functions/default.html +0 -2
package/README.md
CHANGED
|
@@ -41,7 +41,8 @@ Configure Homebridge. The config file for SharkIQ should include:
|
|
|
41
41
|
],
|
|
42
42
|
"europe": false,
|
|
43
43
|
"invertDockedStatus": false,
|
|
44
|
-
"dockedUpdateInterval": 30000
|
|
44
|
+
"dockedUpdateInterval": 30000,
|
|
45
|
+
"enhancedVacuumMode": true
|
|
45
46
|
}
|
|
46
47
|
]
|
|
47
48
|
}
|
|
@@ -63,6 +64,8 @@ If you are in Europe or the UK, set the `europe` config value to `true`. SharkCl
|
|
|
63
64
|
|
|
64
65
|
The default interval between updating the docked status is 30 seconds (30000 ms). To change the docked status interval, add `dockedUpdateInterval` to your config. Value is in milliseconds. If the interval is too low, you have the risk of your account being rate limited.
|
|
65
66
|
|
|
67
|
+
The `enhancedVacuumMode` option (enabled by default) provides improved vacuum behavior with more intuitive power level mappings that prepare for future native HomeKit robot vacuum support. When enabled, power levels are: 25%=Eco, 50%=Normal, 100%=Max. When disabled, it uses legacy mappings: 30%=Eco, 60%=Normal, 90%=Max.
|
|
68
|
+
|
|
66
69
|
## Features
|
|
67
70
|
|
|
68
71
|
- Be able to turn on and off the vacuum
|
|
@@ -71,6 +74,18 @@ The default interval between updating the docked status is 30 seconds (30000 ms)
|
|
|
71
74
|
- The sensor will display as "opened" when the vacuum is docked and "closed" when the vacuum is not docked
|
|
72
75
|
- Set `invertDockedStatus` to `true` to display as "closed" when the vacuum is docked and "opened" when the vacuum is not docked
|
|
73
76
|
- Pause switch for pausing the vacuum while it's running
|
|
77
|
+
- **Enhanced Vacuum Mode** (new): Improved power level mappings and vacuum-optimized behavior that prepares for future native HomeKit robot vacuum support
|
|
78
|
+
|
|
79
|
+
## Homebridge 2.0.0+ Compatibility
|
|
80
|
+
|
|
81
|
+
This plugin is compatible with Homebridge 2.0.0-alpha.28 and later versions, providing enhanced vacuum functionality while maintaining compatibility with current HomeKit limitations:
|
|
82
|
+
|
|
83
|
+
- **Current Implementation**: Uses optimized FanV2 service with vacuum-specific behavior
|
|
84
|
+
- **Enhanced Mode**: Provides intuitive power levels (25%=Eco, 50%=Normal, 100%=Max) instead of arbitrary percentages
|
|
85
|
+
- **Future Ready**: Framework in place to detect native robot vacuum services when they become available in HomeKit/HAP-NodeJS
|
|
86
|
+
- **Backward Compatible**: Supports legacy mode for users who prefer the original 30%/60%/90% mappings
|
|
87
|
+
|
|
88
|
+
**Note**: As of Homebridge 2.0.0-alpha.28, the HomeKit AccessoryProtocol (HAP) specification does not yet include native robot vacuum services. Apple's iOS 18 robot vacuum support in the Home app uses private/undocumented services that are not available in the open-source HAP-NodeJS framework. This plugin will automatically adapt when public robot vacuum services become available.
|
|
74
89
|
|
|
75
90
|
### OAuth Code Login Method
|
|
76
91
|
|
package/config.schema.json
CHANGED
|
@@ -54,6 +54,13 @@
|
|
|
54
54
|
"type": "integer",
|
|
55
55
|
"required": false,
|
|
56
56
|
"default": 30000
|
|
57
|
+
},
|
|
58
|
+
"enhancedVacuumMode": {
|
|
59
|
+
"title": "Enhanced Vacuum Mode",
|
|
60
|
+
"type": "boolean",
|
|
61
|
+
"required": false,
|
|
62
|
+
"default": true,
|
|
63
|
+
"description": "Use improved power level mappings and vacuum-optimized behavior. Prepares for future robot vacuum service support."
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
66
|
},
|
|
@@ -108,7 +115,12 @@
|
|
|
108
115
|
},
|
|
109
116
|
"europe",
|
|
110
117
|
"invertDockedStatus",
|
|
111
|
-
"dockedUpdateInterval"
|
|
118
|
+
"dockedUpdateInterval",
|
|
119
|
+
{
|
|
120
|
+
"type": "help",
|
|
121
|
+
"helpvalue": "<h5>Enhanced Vacuum Mode</h5><em class='primary-text'>Enables improved vacuum behavior with better power level mappings (25%=Eco, 50%=Normal, 100%=Max). This prepares your setup for future native HomeKit robot vacuum support.</em>"
|
|
122
|
+
},
|
|
123
|
+
"enhancedVacuumMode"
|
|
112
124
|
]
|
|
113
125
|
}
|
|
114
126
|
]
|
package/dist/platform.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
|
|
2
2
|
import type { SharkIqVacuum } from './sharkiq-js/sharkiq';
|
|
3
|
+
declare module 'homebridge' {
|
|
4
|
+
interface API {
|
|
5
|
+
publishMatterAccessories?: (pluginIdentifier: string, accessories: PlatformAccessory[]) => void;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
3
8
|
export declare class SharkIQPlatform implements DynamicPlatformPlugin {
|
|
4
9
|
readonly log: Logger;
|
|
5
10
|
readonly config: PlatformConfig;
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEhI,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAYzD,qBAAa,eAAgB,YAAW,qBAAqB;aAUzC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAX1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAA;IACvC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAA;IAGrD,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAK;IAE9C,aAAa,EAAE,aAAa,EAAE,CAAK;gBAGxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA+
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEhI,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAYzD,OAAO,QAAQ,YAAY,CAAC;IAC1B,UAAU,GAAG;QACX,wBAAwB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAA;KAChG;CACF;AAGD,qBAAa,eAAgB,YAAW,qBAAqB;aAUzC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAX1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAA;IACvC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAA;IAGrD,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAK;IAE9C,aAAa,EAAE,aAAa,EAAE,CAAK;gBAGxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA+C1B,KAAK,QAAa,OAAO,CAAC,aAAa,EAAE,CAAC,CAgCzC;IAGD,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAOtD,eAAe,IAAI,IAAI;CA+CxB"}
|
package/dist/platform.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
+
import { TIMEOUTS } from './constants.js';
|
|
2
3
|
import { Login } from './login.js';
|
|
3
4
|
import { SharkIQAccessory } from './platformAccessory.js';
|
|
4
|
-
import {
|
|
5
|
+
import { PLUGIN_NAME } from './settings.js';
|
|
5
6
|
import { get_ayla_api } from './sharkiq-js/ayla_api.js';
|
|
6
|
-
import { TIMEOUTS } from './constants.js';
|
|
7
7
|
import { global_vars } from './sharkiq-js/const.js';
|
|
8
8
|
// SharkIQPlatform Main Class
|
|
9
9
|
export class SharkIQPlatform {
|
|
@@ -25,19 +25,32 @@ export class SharkIQPlatform {
|
|
|
25
25
|
this.log.debug('Finished initializing platform:', this.config.name);
|
|
26
26
|
// Start plugin and attempt to login
|
|
27
27
|
this.api.on('didFinishLaunching', () => {
|
|
28
|
-
const serialNumbers = config.vacuums;
|
|
29
|
-
if (!Array.isArray(serialNumbers) || serialNumbers.length === 0) {
|
|
30
|
-
log.error('List of your vacuum DSNs you want to be added must be present in the config');
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
28
|
+
const serialNumbers = Array.isArray(this.config.vacuums) ? this.config.vacuums : [];
|
|
33
29
|
this.login().then((devices) => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
this.log.info(`Found ${devices.length} device(s) on your account.`);
|
|
31
|
+
this.log.warn('Devices:', devices);
|
|
32
|
+
// Build a list of DSNs returned by the API for logging
|
|
33
|
+
const apiDsns = devices.map(d => (d._dsn && d._dsn.toString) ? d._dsn.toString() : String(d._dsn));
|
|
34
|
+
this.log.info('DSNs on account:', apiDsns);
|
|
35
|
+
if (serialNumbers.length > 0) {
|
|
36
|
+
// If user provided DSNs in config, only add those that match
|
|
37
|
+
for (let i = 0; i < devices.length; i++) {
|
|
38
|
+
if (serialNumbers.includes(devices[i]._dsn)) {
|
|
39
|
+
this.vacuumDevices.push(devices[i]);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const selectedDsns = this.vacuumDevices.map(d => d._dsn && d._dsn.toString ? d._dsn.toString() : String(d._dsn));
|
|
43
|
+
this.log.info('Selected DSNs from config:', selectedDsns);
|
|
44
|
+
if (this.vacuumDevices.length === 0) {
|
|
45
|
+
log.warn('None of the DSNs provided matched the vacuum(s) on your account.');
|
|
37
46
|
}
|
|
38
47
|
}
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
else {
|
|
49
|
+
// No DSNs provided in config — add all devices returned by the API
|
|
50
|
+
this.log.info('No `vacuums` array specified in config; adding all devices from the account.');
|
|
51
|
+
this.vacuumDevices = devices.slice();
|
|
52
|
+
const addedDsns = this.vacuumDevices.map(d => d._dsn && d._dsn.toString ? d._dsn.toString() : String(d._dsn));
|
|
53
|
+
this.log.info('Added DSNs:', addedDsns);
|
|
41
54
|
}
|
|
42
55
|
this.discoverDevices();
|
|
43
56
|
}).catch((error) => {
|
|
@@ -57,8 +70,8 @@ export class SharkIQPlatform {
|
|
|
57
70
|
const password = this.config.password || '';
|
|
58
71
|
// Log which login method is being used based on user configuration
|
|
59
72
|
// Email/password takes precedence if both are provided (matches Login class logic)
|
|
60
|
-
if (email && typeof email === 'string' && email.trim() !== ''
|
|
61
|
-
password && typeof password === 'string' && password.trim() !== '') {
|
|
73
|
+
if (email && typeof email === 'string' && email.trim() !== ''
|
|
74
|
+
&& password && typeof password === 'string' && password.trim() !== '') {
|
|
62
75
|
this.log.info('Valid email and password present, using email and password login method.');
|
|
63
76
|
}
|
|
64
77
|
else if (oAuthCode && typeof oAuthCode === 'string' && oAuthCode.trim() !== '') {
|
|
@@ -93,6 +106,7 @@ export class SharkIQPlatform {
|
|
|
93
106
|
const unusedDeviceAccessories = this.accessories;
|
|
94
107
|
const invertDockedStatus = this.config.invertDockedStatus || false;
|
|
95
108
|
const dockedUpdateInterval = this.config.dockedUpdateInterval || TIMEOUTS.DEFAULT_DOCKED_UPDATE_INTERVAL;
|
|
109
|
+
const enhancedVacuumMode = this.config.enhancedVacuumMode !== undefined ? this.config.enhancedVacuumMode : true;
|
|
96
110
|
this.vacuumDevices.forEach((vacuumDevice) => {
|
|
97
111
|
const uuid = this.api.hap.uuid.generate(vacuumDevice._dsn.toString());
|
|
98
112
|
let accessory = unusedDeviceAccessories.find(accessory => accessory.UUID === uuid);
|
|
@@ -111,14 +125,23 @@ export class SharkIQPlatform {
|
|
|
111
125
|
.setCharacteristic(this.Characteristic.Manufacturer, 'Shark')
|
|
112
126
|
.setCharacteristic(this.Characteristic.Model, vacuumDevice._vac_model_number || 'Unknown')
|
|
113
127
|
.setCharacteristic(this.Characteristic.SerialNumber, vacuumDevice._dsn);
|
|
114
|
-
new SharkIQAccessory(this, accessory, vacuumDevice, this.api.hap.uuid, this.log, invertDockedStatus, dockedUpdateInterval);
|
|
128
|
+
new SharkIQAccessory(this, accessory, vacuumDevice, this.api.hap.uuid, this.log, invertDockedStatus, dockedUpdateInterval, enhancedVacuumMode);
|
|
115
129
|
});
|
|
116
|
-
|
|
130
|
+
// Publish accessories as Matter accessories for native Matter support
|
|
131
|
+
// Uses publishMatterAccessories for proper vacuum classification in Matter
|
|
132
|
+
if (typeof this.api.publishMatterAccessories === 'function') {
|
|
133
|
+
this.api.publishMatterAccessories(PLUGIN_NAME, devices);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Fallback to external accessories for older Homebridge versions
|
|
137
|
+
this.api.publishExternalAccessories(PLUGIN_NAME, devices);
|
|
138
|
+
}
|
|
117
139
|
unusedDeviceAccessories.forEach((unusedDeviceAccessory) => {
|
|
118
140
|
this.log.info(`Removing unused accessory with name ${unusedDeviceAccessory.displayName}`);
|
|
119
141
|
this.accessories.splice(this.accessories.indexOf(unusedDeviceAccessory), 1);
|
|
120
142
|
});
|
|
121
|
-
|
|
143
|
+
// Note: External accessories don't require explicit unregistration
|
|
144
|
+
// They are managed differently than platform accessories
|
|
122
145
|
}
|
|
123
146
|
}
|
|
124
147
|
//# sourceMappingURL=platform.js.map
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,14 @@ export declare class SharkIQAccessory {
|
|
|
8
8
|
private readonly log;
|
|
9
9
|
private readonly invertDockedStatus;
|
|
10
10
|
private readonly dockedUpdateInterval;
|
|
11
|
+
private readonly enhancedVacuumMode;
|
|
11
12
|
private dockedDelay;
|
|
12
13
|
private service;
|
|
13
14
|
private dockedStatusService;
|
|
14
15
|
private vacuumPausedService;
|
|
15
|
-
|
|
16
|
+
private isNativeVacuumServiceAvailable;
|
|
17
|
+
constructor(platform: SharkIQPlatform, accessory: PlatformAccessory, device: SharkIqVacuum, UUIDGen: typeof uuid, log: Logger, invertDockedStatus: boolean, dockedUpdateInterval: number, enhancedVacuumMode?: boolean, dockedDelay?: number);
|
|
18
|
+
private checkForNativeVacuumService;
|
|
16
19
|
private calculateDockedStatus;
|
|
17
20
|
retrieveVacuumStateInterval(): Promise<void>;
|
|
18
21
|
retrieveDockedStatus(): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformAccessory.d.ts","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAW,IAAI,EAAE,MAAM,YAAY,CAAA;AAE/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAM5D,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"platformAccessory.d.ts","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAW,IAAI,EAAE,MAAM,YAAY,CAAA;AAE/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAM5D,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,WAAW;IAdrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,8BAA8B,CAAS;gBAG5B,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,EACrC,MAAM,EAAE,aAAa,EAC7B,OAAO,EAAE,OAAO,IAAI,EACH,GAAG,EAAE,MAAM,EACX,kBAAkB,EAAE,OAAO,EAC3B,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,GAAE,OAAc,EAC3C,WAAW,GAAE,MAAU;IA+EjC,OAAO,CAAC,2BAA2B;IAqBnC,OAAO,CAAC,qBAAqB;IASvB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAStC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD3C,YAAY,IAAI,IAAI;IAgBd,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAc7B,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAYnC,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAkC9B,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAkE7D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { VACUUM_SPEEDS, TIMEOUTS } from './constants.js';
|
|
1
|
+
import { TIMEOUTS, VACUUM_SPEEDS } from './constants.js';
|
|
3
2
|
import { createPromiseRejectionHandler } from './errorHandling.js';
|
|
3
|
+
import { OperatingModes, PowerModes, Properties } from './sharkiq-js/sharkiq.js';
|
|
4
4
|
export class SharkIQAccessory {
|
|
5
5
|
platform;
|
|
6
6
|
accessory;
|
|
@@ -8,38 +8,63 @@ export class SharkIQAccessory {
|
|
|
8
8
|
log;
|
|
9
9
|
invertDockedStatus;
|
|
10
10
|
dockedUpdateInterval;
|
|
11
|
+
enhancedVacuumMode;
|
|
11
12
|
dockedDelay;
|
|
12
13
|
service;
|
|
13
14
|
dockedStatusService;
|
|
14
15
|
vacuumPausedService;
|
|
15
|
-
|
|
16
|
+
isNativeVacuumServiceAvailable;
|
|
17
|
+
constructor(platform, accessory, device, UUIDGen, log, invertDockedStatus, dockedUpdateInterval, enhancedVacuumMode = true, dockedDelay = 0) {
|
|
16
18
|
this.platform = platform;
|
|
17
19
|
this.accessory = accessory;
|
|
18
20
|
this.device = device;
|
|
19
21
|
this.log = log;
|
|
20
22
|
this.invertDockedStatus = invertDockedStatus;
|
|
21
23
|
this.dockedUpdateInterval = dockedUpdateInterval;
|
|
24
|
+
this.enhancedVacuumMode = enhancedVacuumMode;
|
|
22
25
|
this.dockedDelay = dockedDelay;
|
|
26
|
+
// Check if native robot vacuum service is available
|
|
27
|
+
this.isNativeVacuumServiceAvailable = this.checkForNativeVacuumService();
|
|
23
28
|
// Get device serial number
|
|
24
29
|
const serial_number = device._dsn;
|
|
25
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
|
|
26
33
|
this.service = this.accessory.getService('Vacuum')
|
|
27
34
|
|| this.accessory.addService(this.platform.Service.Fanv2, 'Vacuum', vacuumUUID);
|
|
28
35
|
// Vacuum Name - Default is device name
|
|
29
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`);
|
|
30
39
|
// // Vacuum Active
|
|
31
40
|
this.service.getCharacteristic(this.platform.Characteristic.Active)
|
|
32
41
|
.onSet(this.setVacuumActive.bind(this))
|
|
33
42
|
.onGet(this.getVacuumActive.bind(this));
|
|
34
|
-
// Vacuum Power (Eco, Normal, Max)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
+
}
|
|
43
68
|
// Vacuum Docked Status
|
|
44
69
|
this.dockedStatusService = this.accessory.getService('Vacuum Docked')
|
|
45
70
|
|| this.accessory.addService(this.platform.Service.ContactSensor, 'Vacuum Docked', 'Docked');
|
|
@@ -63,6 +88,27 @@ export class SharkIQAccessory {
|
|
|
63
88
|
this.retrieveVacuumStateInterval();
|
|
64
89
|
});
|
|
65
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
|
+
}
|
|
66
112
|
// Helper method to calculate vacuum docked status based on inversion setting
|
|
67
113
|
calculateDockedStatus(docked_status) {
|
|
68
114
|
if (!this.invertDockedStatus) {
|
|
@@ -118,14 +164,29 @@ export class SharkIQAccessory {
|
|
|
118
164
|
const vacuumActive = mode === OperatingModes.START || mode === OperatingModes.STOP;
|
|
119
165
|
this.service.updateCharacteristic(this.platform.Characteristic.Active, vacuumActive);
|
|
120
166
|
if (vacuumActive) {
|
|
121
|
-
if (
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
+
}
|
|
126
178
|
}
|
|
127
179
|
else {
|
|
128
|
-
|
|
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
|
+
}
|
|
129
190
|
}
|
|
130
191
|
if (mode === OperatingModes.STOP) {
|
|
131
192
|
this.vacuumPausedService.updateCharacteristic(this.platform.Characteristic.On, true);
|
|
@@ -138,7 +199,7 @@ export class SharkIQAccessory {
|
|
|
138
199
|
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, VACUUM_SPEEDS.OFF);
|
|
139
200
|
}
|
|
140
201
|
this.dockedStatusService.updateCharacteristic(this.platform.Characteristic.ContactSensorState, vacuumDocked);
|
|
141
|
-
this.log.debug('Vacuum Docked:', vacuumDocked, '
|
|
202
|
+
this.log.debug('Vacuum Status - Docked:', vacuumDocked, 'Active:', vacuumActive, 'Power Mode:', power_mode === PowerModes.ECO ? 'ECO' : power_mode === PowerModes.MAX ? 'MAX' : 'NORMAL');
|
|
142
203
|
}
|
|
143
204
|
// Update paused and active state on switch
|
|
144
205
|
updateStates() {
|
|
@@ -219,36 +280,88 @@ export class SharkIQAccessory {
|
|
|
219
280
|
const vacuumActive = mode === OperatingModes.START || mode === OperatingModes.STOP;
|
|
220
281
|
if (vacuumActive) {
|
|
221
282
|
const power_mode = this.device.power_mode();
|
|
222
|
-
if (
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
+
}
|
|
227
294
|
}
|
|
228
295
|
else {
|
|
229
|
-
|
|
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
|
+
}
|
|
230
306
|
}
|
|
231
307
|
}
|
|
232
308
|
else {
|
|
233
|
-
return VACUUM_SPEEDS.OFF;
|
|
309
|
+
return VACUUM_SPEEDS.OFF || 0; // Off
|
|
234
310
|
}
|
|
235
311
|
}
|
|
236
312
|
// Set vacuum power from UI (and start/stop vacuum if needed)
|
|
237
313
|
async setFanSpeed(value) {
|
|
238
314
|
this.log.debug('Triggering SET Fan Speed. Value:', value);
|
|
239
315
|
let power_mode = PowerModes.NORMAL;
|
|
240
|
-
if (
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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
|
+
}
|
|
245
340
|
}
|
|
246
|
-
else
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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
|
+
}
|
|
252
365
|
}
|
|
253
366
|
const isPaused = await this.getPaused();
|
|
254
367
|
if (isPaused) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"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"}
|