@homebridge-plugins/homebridge-sharkiq 2.0.0-beta.5 → 2.0.0-beta.7
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 +3 -28
- package/dist/devices/RoboticVacuumAccessory.d.ts +36 -0
- package/dist/devices/RoboticVacuumAccessory.d.ts.map +1 -0
- package/dist/devices/RoboticVacuumAccessory.js +367 -0
- package/dist/devices/RoboticVacuumAccessory.js.map +1 -0
- package/dist/{platformAccessory.d.ts → devices/platformAccessory.d.ts} +17 -2
- package/dist/devices/platformAccessory.d.ts.map +1 -0
- package/dist/{platformAccessory.js → devices/platformAccessory.js} +179 -3
- package/dist/devices/platformAccessory.js.map +1 -0
- package/dist/platform.d.ts +7 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +99 -37
- package/dist/platform.js.map +1 -1
- package/docs/assets/highlight.css +9 -2
- package/docs/index.html +35 -3
- package/docs/variables/default.html +1 -1
- package/package.json +2 -2
- package/dist/platformAccessory.d.ts.map +0 -1
- package/dist/platformAccessory.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TIMEOUTS, VACUUM_SPEEDS } from '
|
|
2
|
-
import { createPromiseRejectionHandler } from '
|
|
3
|
-
import { OperatingModes, PowerModes, Properties } from '
|
|
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
4
|
export class SharkIQAccessory {
|
|
5
5
|
platform;
|
|
6
6
|
accessory;
|
|
@@ -88,6 +88,182 @@ export class SharkIQAccessory {
|
|
|
88
88
|
this.retrieveVacuumStateInterval();
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Convert this accessory to a MatterAccessory-like plain object.
|
|
93
|
+
* Uses the provided `api.matter` if available. This returns a minimal
|
|
94
|
+
* RoboticVacuumCleaner configuration with handlers bound to this instance.
|
|
95
|
+
*/
|
|
96
|
+
toMatterAccessory(api) {
|
|
97
|
+
try {
|
|
98
|
+
const serialNumber = this.device._dsn && this.device._dsn.toString ? this.device._dsn.toString() : String(this.device._dsn);
|
|
99
|
+
const uuid = api.matter.uuid.generate(serialNumber);
|
|
100
|
+
const deviceType = api.matter.deviceTypes.RoboticVacuumCleaner;
|
|
101
|
+
const accessory = {
|
|
102
|
+
uuid,
|
|
103
|
+
displayName: this.device._name || `Robot Vacuum ${serialNumber}`,
|
|
104
|
+
deviceType,
|
|
105
|
+
serialNumber,
|
|
106
|
+
manufacturer: 'Shark',
|
|
107
|
+
model: this.device._vac_model_number || 'SharkIQ',
|
|
108
|
+
firmwareRevision: this.device._firmware_version || '1.0.0',
|
|
109
|
+
hardwareRevision: '1.0.0',
|
|
110
|
+
// Minimal cluster state for Robotic Vacuum Cleaner
|
|
111
|
+
clusters: {
|
|
112
|
+
rvcRunMode: {
|
|
113
|
+
supportedModes: [
|
|
114
|
+
{ label: 'Idle', mode: 0 },
|
|
115
|
+
{ label: 'Cleaning', mode: 1 },
|
|
116
|
+
{ label: 'Mapping', mode: 2 },
|
|
117
|
+
],
|
|
118
|
+
currentMode: 0,
|
|
119
|
+
},
|
|
120
|
+
rvcCleanMode: {
|
|
121
|
+
supportedModes: [
|
|
122
|
+
{ label: 'Vacuum', mode: 0 },
|
|
123
|
+
{ label: 'Mop', mode: 1 },
|
|
124
|
+
{ label: 'Vacuum & Mop', mode: 2 },
|
|
125
|
+
],
|
|
126
|
+
currentMode: 0,
|
|
127
|
+
},
|
|
128
|
+
rvcOperationalState: {
|
|
129
|
+
operationalStateList: [
|
|
130
|
+
{ operationalStateId: 0, operationalStateLabel: 'Stopped' },
|
|
131
|
+
{ operationalStateId: 1, operationalStateLabel: 'Running' },
|
|
132
|
+
{ operationalStateId: 2, operationalStateLabel: 'Paused' },
|
|
133
|
+
{ operationalStateId: 64, operationalStateLabel: 'Seeking Charger' },
|
|
134
|
+
{ operationalStateId: 65, operationalStateLabel: 'Charging' },
|
|
135
|
+
{ operationalStateId: 66, operationalStateLabel: 'Docked' },
|
|
136
|
+
],
|
|
137
|
+
operationalState: 0,
|
|
138
|
+
},
|
|
139
|
+
serviceArea: {
|
|
140
|
+
supportedMaps: [],
|
|
141
|
+
supportedAreas: [],
|
|
142
|
+
selectedAreas: [],
|
|
143
|
+
currentArea: null,
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
// Handlers: map Matter requests to class methods
|
|
147
|
+
handlers: {
|
|
148
|
+
rvcRunMode: {
|
|
149
|
+
changeToMode: async (request) => this.matterHandleChangeRunMode(request),
|
|
150
|
+
},
|
|
151
|
+
rvcCleanMode: {
|
|
152
|
+
changeToMode: async (request) => this.matterHandleChangeCleanMode(request),
|
|
153
|
+
},
|
|
154
|
+
rvcOperationalState: {
|
|
155
|
+
start: async () => this.matterHandleStart(),
|
|
156
|
+
stop: async () => this.matterHandleStop(),
|
|
157
|
+
pause: async () => this.matterHandlePause(),
|
|
158
|
+
resume: async () => this.matterHandleResume(),
|
|
159
|
+
goHome: async () => this.matterHandleGoHome(),
|
|
160
|
+
},
|
|
161
|
+
serviceArea: {
|
|
162
|
+
selectAreas: async (request) => this.matterHandleSelectAreas(request),
|
|
163
|
+
skipArea: async (request) => this.matterHandleSkipArea(request),
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
return accessory;
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
this.log.debug('toMatterAccessory failed:', e);
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Minimal Matter handlers that delegate to existing device methods
|
|
175
|
+
async matterHandleStart() {
|
|
176
|
+
this.log.info('Matter -> Start requested');
|
|
177
|
+
try {
|
|
178
|
+
await this.device.clean_rooms([]);
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
this.log.debug('Error starting vacuum via Matter handler:', e);
|
|
182
|
+
}
|
|
183
|
+
// Sync HAP state
|
|
184
|
+
await this.retrieveVacuumStates().catch(() => { });
|
|
185
|
+
}
|
|
186
|
+
async matterHandleStop() {
|
|
187
|
+
this.log.info('Matter -> Stop requested');
|
|
188
|
+
try {
|
|
189
|
+
await this.device.cancel_clean();
|
|
190
|
+
}
|
|
191
|
+
catch (e) {
|
|
192
|
+
this.log.debug('Error stopping vacuum via Matter handler:', e);
|
|
193
|
+
}
|
|
194
|
+
await this.retrieveVacuumStates().catch(() => { });
|
|
195
|
+
}
|
|
196
|
+
async matterHandlePause() {
|
|
197
|
+
this.log.info('Matter -> Pause requested');
|
|
198
|
+
try {
|
|
199
|
+
await this.device.set_operating_mode(OperatingModes.STOP);
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
this.log.debug('Error pausing vacuum via Matter handler:', e);
|
|
203
|
+
}
|
|
204
|
+
await this.retrieveVacuumStates().catch(() => { });
|
|
205
|
+
}
|
|
206
|
+
async matterHandleResume() {
|
|
207
|
+
this.log.info('Matter -> Resume requested');
|
|
208
|
+
try {
|
|
209
|
+
await this.device.set_operating_mode(OperatingModes.START);
|
|
210
|
+
}
|
|
211
|
+
catch (e) {
|
|
212
|
+
this.log.debug('Error resuming vacuum via Matter handler:', e);
|
|
213
|
+
}
|
|
214
|
+
await this.retrieveVacuumStates().catch(() => { });
|
|
215
|
+
}
|
|
216
|
+
async matterHandleGoHome() {
|
|
217
|
+
this.log.info('Matter -> GoHome requested');
|
|
218
|
+
try {
|
|
219
|
+
// Best-effort: cancel current clean and trigger return-to-dock sequence
|
|
220
|
+
await this.device.cancel_clean();
|
|
221
|
+
}
|
|
222
|
+
catch (e) {
|
|
223
|
+
this.log.debug('Error issuing goHome via Matter handler:', e);
|
|
224
|
+
}
|
|
225
|
+
await this.retrieveVacuumStates().catch(() => { });
|
|
226
|
+
}
|
|
227
|
+
async matterHandleChangeRunMode(request) {
|
|
228
|
+
this.log.info('Matter -> Change Run Mode:', request);
|
|
229
|
+
// request.newMode indicates Idle(0), Cleaning(1), Mapping(2)
|
|
230
|
+
const newMode = request?.newMode;
|
|
231
|
+
try {
|
|
232
|
+
if (newMode === 1) {
|
|
233
|
+
await this.device.clean_rooms([]);
|
|
234
|
+
}
|
|
235
|
+
else if (newMode === 0) {
|
|
236
|
+
await this.device.cancel_clean();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
this.log.debug('Error changing run mode via Matter handler:', e);
|
|
241
|
+
}
|
|
242
|
+
await this.retrieveVacuumStates().catch(() => { });
|
|
243
|
+
}
|
|
244
|
+
async matterHandleChangeCleanMode(request) {
|
|
245
|
+
this.log.info('Matter -> Change Clean Mode:', request);
|
|
246
|
+
// request.newMode is an integer mapping to clean modes; best-effort: log it
|
|
247
|
+
await Promise.resolve();
|
|
248
|
+
}
|
|
249
|
+
async matterHandleSelectAreas(request) {
|
|
250
|
+
this.log.info('Matter -> Select Areas:', request);
|
|
251
|
+
// request.newAreas is an array of area ids; delegate if device supports it
|
|
252
|
+
const areas = request?.newAreas;
|
|
253
|
+
if (Array.isArray(areas) && areas.length > 0) {
|
|
254
|
+
try {
|
|
255
|
+
await this.device.clean_rooms(areas);
|
|
256
|
+
}
|
|
257
|
+
catch (e) {
|
|
258
|
+
this.log.debug('Error selecting areas via Matter handler:', e);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
async matterHandleSkipArea(request) {
|
|
263
|
+
this.log.info('Matter -> Skip Area:', request);
|
|
264
|
+
// Best-effort: log request. Implement if Shark API supports skipping areas.
|
|
265
|
+
await Promise.resolve();
|
|
266
|
+
}
|
|
91
267
|
// Check if native robot vacuum service is available in HomeKit
|
|
92
268
|
checkForNativeVacuumService() {
|
|
93
269
|
try {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../../src/devices/platformAccessory.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -13,7 +13,14 @@ export declare class SharkIQPlatform implements DynamicPlatformPlugin {
|
|
|
13
13
|
readonly Characteristic: typeof Characteristic;
|
|
14
14
|
readonly accessories: PlatformAccessory[];
|
|
15
15
|
vacuumDevices: SharkIqVacuum[];
|
|
16
|
+
readonly matterAccessories: Map<string, any>;
|
|
17
|
+
readonly matterEnabled: boolean;
|
|
16
18
|
constructor(log: Logger, config: PlatformConfig, api: API);
|
|
19
|
+
/**
|
|
20
|
+
* Called when homebridge restores cached Matter accessories from disk at startup.
|
|
21
|
+
* This lets the platform keep track of cached Matter accessories if needed.
|
|
22
|
+
*/
|
|
23
|
+
configureMatterAccessory(accessory: any): void;
|
|
17
24
|
login: () => Promise<SharkIqVacuum[]>;
|
|
18
25
|
configureAccessory(accessory: PlatformAccessory): void;
|
|
19
26
|
discoverDevices(): void;
|
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;
|
|
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;AAWzD,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;aAczC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAf1B,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;IAE1C,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAY;IAE/D,SAAgB,aAAa,EAAE,OAAO,CAAA;gBAGpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAyE1B;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,GAAG;IAmBvC,KAAK,QAAa,OAAO,CAAC,aAAa,EAAE,CAAC,CAgCzC;IAGD,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAOtD,eAAe,IAAI,IAAI;CAmDxB"}
|
package/dist/platform.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { RoboticVacuumAccessory } from './devices/RoboticVacuumAccessory.js';
|
|
3
3
|
import { Login } from './login.js';
|
|
4
|
-
import { SharkIQAccessory } from './platformAccessory.js';
|
|
5
4
|
import { PLUGIN_NAME } from './settings.js';
|
|
6
5
|
import { get_ayla_api } from './sharkiq-js/ayla_api.js';
|
|
7
6
|
import { global_vars } from './sharkiq-js/const.js';
|
|
@@ -16,6 +15,10 @@ export class SharkIQPlatform {
|
|
|
16
15
|
accessories = [];
|
|
17
16
|
// Device vacuums object array
|
|
18
17
|
vacuumDevices = [];
|
|
18
|
+
// Track restored Matter cached accessories (if running with Matter)
|
|
19
|
+
matterAccessories = new Map();
|
|
20
|
+
// cache whether matter is enabled/available
|
|
21
|
+
matterEnabled;
|
|
19
22
|
constructor(log, config, api) {
|
|
20
23
|
this.log = log;
|
|
21
24
|
this.config = config;
|
|
@@ -52,12 +55,64 @@ export class SharkIQPlatform {
|
|
|
52
55
|
const addedDsns = this.vacuumDevices.map(d => d._dsn && d._dsn.toString ? d._dsn.toString() : String(d._dsn));
|
|
53
56
|
this.log.info('Added DSNs:', addedDsns);
|
|
54
57
|
}
|
|
58
|
+
// Ensure Matter is available before proceeding; this plugin requires the Homebridge Matter API
|
|
59
|
+
/* const apiMatter = (this.api as any).matter
|
|
60
|
+
const matterAvailable = !!apiMatter && typeof apiMatter.publishExternalAccessories === 'function'
|
|
61
|
+
if (!matterAvailable) {
|
|
62
|
+
this.log.error('This version of the plugin requires Homebridge with Matter support. Aborting startup.')
|
|
63
|
+
return
|
|
64
|
+
} */
|
|
55
65
|
this.discoverDevices();
|
|
56
66
|
}).catch((error) => {
|
|
57
67
|
log.error('Error with login.');
|
|
58
68
|
log.error(error);
|
|
59
69
|
});
|
|
60
70
|
});
|
|
71
|
+
// Matter availability check (optional) - log helpful messages
|
|
72
|
+
try {
|
|
73
|
+
const isAvailable = this.api.isMatterAvailable?.();
|
|
74
|
+
const isEnabled = this.api.isMatterEnabled?.();
|
|
75
|
+
if (isAvailable === false) {
|
|
76
|
+
this.log.info('Matter is not available in this version of Homebridge.');
|
|
77
|
+
}
|
|
78
|
+
else if (isAvailable && isEnabled === false) {
|
|
79
|
+
this.log.warn('Matter is available but not enabled. Enable Matter in Homebridge settings to use Matter features.');
|
|
80
|
+
}
|
|
81
|
+
else if (isAvailable && isEnabled) {
|
|
82
|
+
this.log.info('Matter is available and enabled. Matter accessories will be published when supported.');
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.log.debug('Matter availability check inconclusive (functions may be missing).');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
this.log.debug('Matter availability check skipped (not supported by this Homebridge version).');
|
|
90
|
+
}
|
|
91
|
+
// store a boolean for quick checks later
|
|
92
|
+
this.matterEnabled = !!(this.api.matter && this.api.matter.publishExternalAccessories);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Called when homebridge restores cached Matter accessories from disk at startup.
|
|
96
|
+
* This lets the platform keep track of cached Matter accessories if needed.
|
|
97
|
+
*/
|
|
98
|
+
configureMatterAccessory(accessory) {
|
|
99
|
+
this.log.debug('Loading cached Matter accessory:', accessory.displayName);
|
|
100
|
+
// If we have a stored instance for this uuid, attach the published accessory object to it
|
|
101
|
+
const stored = this.matterAccessories.get(accessory.uuid);
|
|
102
|
+
if (stored && stored.instance && typeof stored.instance.attachToPublishedAccessory === 'function') {
|
|
103
|
+
stored.accessory = accessory;
|
|
104
|
+
try {
|
|
105
|
+
stored.instance.attachToPublishedAccessory(accessory);
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
this.log.debug('Error attaching instance to published Matter accessory', e);
|
|
109
|
+
}
|
|
110
|
+
this.matterAccessories.set(accessory.uuid, stored);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// No instance cached; store accessory so future publish or restarts can map it
|
|
114
|
+
this.matterAccessories.set(accessory.uuid, { instance: null, accessory });
|
|
115
|
+
}
|
|
61
116
|
}
|
|
62
117
|
// Attempt to login and fetch devices.
|
|
63
118
|
login = async () => {
|
|
@@ -102,46 +157,53 @@ export class SharkIQPlatform {
|
|
|
102
157
|
}
|
|
103
158
|
// Add vacuums to Homebridge.
|
|
104
159
|
discoverDevices() {
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
unusedDeviceAccessories.splice(unusedDeviceAccessories.indexOf(accessory), 1);
|
|
160
|
+
// Build RoboticVacuumAccessory instances (Matter external accessories) for each vacuum device.
|
|
161
|
+
for (const vacuumDevice of this.vacuumDevices) {
|
|
162
|
+
// We will publish Matter external accessories only; RoboticVacuumAccessory will handle initial sync when ready.
|
|
163
|
+
try {
|
|
164
|
+
const rvc = new RoboticVacuumAccessory(this.api, this.log, vacuumDevice);
|
|
165
|
+
// Store instance placeholder; the accessory object will be attached in configureMatterAccessory
|
|
166
|
+
const serialNumber = vacuumDevice._dsn && vacuumDevice._dsn.toString ? vacuumDevice._dsn.toString() : String(vacuumDevice._dsn);
|
|
167
|
+
const uuid = this.api.matter.uuid.generate(serialNumber);
|
|
168
|
+
this.matterAccessories.set(uuid, { instance: rvc, accessory: null });
|
|
115
169
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
devices.push(accessory);
|
|
170
|
+
catch (err) {
|
|
171
|
+
this.log.debug('Failed to instantiate RoboticVacuumAccessory for device', vacuumDevice, err);
|
|
119
172
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
173
|
+
}
|
|
174
|
+
// Matter API is required; build Matter external accessories list from our vacuum devices using RoboticVacuumAccessory
|
|
175
|
+
const apiMatter = this.api.matter;
|
|
176
|
+
const matterAccessoriesToPublish = [];
|
|
177
|
+
for (const vacuumDevice of this.vacuumDevices) {
|
|
178
|
+
try {
|
|
179
|
+
const rvc = new RoboticVacuumAccessory(this.api, this.log, vacuumDevice);
|
|
180
|
+
const acc = rvc.toAccessory();
|
|
181
|
+
// store instance with accessory placeholder; the actual published accessory object will be attached after publishing
|
|
182
|
+
this.matterAccessories.set(acc.uuid, { instance: rvc, accessory: null });
|
|
183
|
+
matterAccessoriesToPublish.push(acc);
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
this.log.debug('Failed to create RoboticVacuumAccessory for device', vacuumDevice, err);
|
|
123
187
|
}
|
|
124
|
-
accessoryInformationService
|
|
125
|
-
.setCharacteristic(this.Characteristic.Manufacturer, 'Shark')
|
|
126
|
-
.setCharacteristic(this.Characteristic.Model, vacuumDevice._vac_model_number || 'Unknown')
|
|
127
|
-
.setCharacteristic(this.Characteristic.SerialNumber, vacuumDevice._dsn);
|
|
128
|
-
new SharkIQAccessory(this, accessory, vacuumDevice, this.api.hap.uuid, this.log, invertDockedStatus, dockedUpdateInterval, enhancedVacuumMode);
|
|
129
|
-
});
|
|
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
188
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
189
|
+
if (matterAccessoriesToPublish.length === 0) {
|
|
190
|
+
this.log.warn('No Matter accessories to publish (no supported robotic vacuums found).');
|
|
191
|
+
return;
|
|
138
192
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this.
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
|
|
193
|
+
this.log.info(`✓ Publishing ${matterAccessoriesToPublish.length} robotic device(s) as external Matter accessories`);
|
|
194
|
+
for (const acc of matterAccessoriesToPublish) {
|
|
195
|
+
this.log.info(` - ${acc.displayName}`);
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
// Publish and then attach the exact published accessory objects back to our instances
|
|
199
|
+
apiMatter.publishExternalAccessories(PLUGIN_NAME, matterAccessoriesToPublish);
|
|
200
|
+
// After publish, the homebridge runtime will provide published accessory objects via the configureMatterAccessory hook.
|
|
201
|
+
// We will expect configureMatterAccessory to be called for each published accessory and then attach listeners there.
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
this.log.error('Failed to publish Matter external accessories:', err);
|
|
205
|
+
}
|
|
206
|
+
// Note: configureMatterAccessory will be called for cached/published Matter accessories and attach instances
|
|
145
207
|
}
|
|
146
208
|
}
|
|
147
209
|
//# 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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"}
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
--dark-hl-2: #CE9178;
|
|
8
8
|
--light-hl-3: #0000FF;
|
|
9
9
|
--dark-hl-3: #569CD6;
|
|
10
|
-
--light-hl-4: #
|
|
11
|
-
--dark-hl-4: #
|
|
10
|
+
--light-hl-4: #008000;
|
|
11
|
+
--dark-hl-4: #6A9955;
|
|
12
|
+
--light-hl-5: #795E26;
|
|
13
|
+
--dark-hl-5: #DCDCAA;
|
|
12
14
|
--light-code-background: #FFFFFF;
|
|
13
15
|
--dark-code-background: #1E1E1E;
|
|
14
16
|
}
|
|
@@ -19,6 +21,7 @@
|
|
|
19
21
|
--hl-2: var(--light-hl-2);
|
|
20
22
|
--hl-3: var(--light-hl-3);
|
|
21
23
|
--hl-4: var(--light-hl-4);
|
|
24
|
+
--hl-5: var(--light-hl-5);
|
|
22
25
|
--code-background: var(--light-code-background);
|
|
23
26
|
} }
|
|
24
27
|
|
|
@@ -28,6 +31,7 @@
|
|
|
28
31
|
--hl-2: var(--dark-hl-2);
|
|
29
32
|
--hl-3: var(--dark-hl-3);
|
|
30
33
|
--hl-4: var(--dark-hl-4);
|
|
34
|
+
--hl-5: var(--dark-hl-5);
|
|
31
35
|
--code-background: var(--dark-code-background);
|
|
32
36
|
} }
|
|
33
37
|
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
--hl-2: var(--light-hl-2);
|
|
38
42
|
--hl-3: var(--light-hl-3);
|
|
39
43
|
--hl-4: var(--light-hl-4);
|
|
44
|
+
--hl-5: var(--light-hl-5);
|
|
40
45
|
--code-background: var(--light-code-background);
|
|
41
46
|
}
|
|
42
47
|
|
|
@@ -46,6 +51,7 @@
|
|
|
46
51
|
--hl-2: var(--dark-hl-2);
|
|
47
52
|
--hl-3: var(--dark-hl-3);
|
|
48
53
|
--hl-4: var(--dark-hl-4);
|
|
54
|
+
--hl-5: var(--dark-hl-5);
|
|
49
55
|
--code-background: var(--dark-code-background);
|
|
50
56
|
}
|
|
51
57
|
|
|
@@ -54,4 +60,5 @@
|
|
|
54
60
|
.hl-2 { color: var(--hl-2); }
|
|
55
61
|
.hl-3 { color: var(--hl-3); }
|
|
56
62
|
.hl-4 { color: var(--hl-4); }
|
|
63
|
+
.hl-5 { color: var(--hl-5); }
|
|
57
64
|
pre, code { background: var(--code-background); }
|