homebridge-roborock-vacuum 2.2.3 → 2.2.5
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 +18 -0
- package/dist/dock_wash_matter_accessory.js +5 -1
- package/dist/dock_wash_matter_accessory.js.map +1 -1
- package/dist/platform.js +22 -14
- package/dist/platform.js.map +1 -1
- package/dist/roborock_api.js +10 -0
- package/dist/roborock_api.js.map +1 -0
- package/dist/scene_matter_accessory.js +5 -1
- package/dist/scene_matter_accessory.js.map +1 -1
- package/dist/vacuum_accessory.js +145 -57
- package/dist/vacuum_accessory.js.map +1 -1
- package/dist/vacuum_matter_accessory.js +9 -4
- package/dist/vacuum_matter_accessory.js.map +1 -1
- package/package.json +1 -2
- package/roborockLib/lib/deviceFeatures.js +355 -1252
- package/roborockLib/lib/localConnector.js +12 -19
- package/roborockLib/lib/message.js +0 -40
- package/roborockLib/lib/roborock_mqtt_connector.js +10 -7
- package/roborockLib/lib/vacuum.js +8 -540
- package/roborockLib/roborockAPI.js +38 -662
- package/roborockLib/lib/RRMapParser.js +0 -447
- package/roborockLib/lib/map/map.html +0 -110
- package/roborockLib/lib/map/zones.js +0 -713
- package/roborockLib/lib/roborockPackageHelper.js +0 -116
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.5
|
|
4
|
+
|
|
5
|
+
- **Fix (HAP/Matter)**: Real-time device messages are now routed to the accessory of the device they came from. Previously every push payload was fanned out to all accessories, so with two or more vacuums one robot could briefly show another robot's state, battery, or error in HomeKit
|
|
6
|
+
- **Fix (HAP)**: Unknown status values are no longer published to HomeKit. Before the first HomeData snapshot arrived, the battery could show 0% (with a normal low-battery flag) and the cleaning state could read as off; those characteristics now update only once the value is actually known, matching the guards the Matter accessories already had. The charging indicator also uses one consistent rule instead of two different comparisons in the create and update paths
|
|
7
|
+
- **Fix (HAP/Matter)**: "Washing the mop" (state 23) now counts as cleaning everywhere. The HAP accessory and the shared API each kept their own cleaning-state table that disagreed on this state, so during a mid-run mop wash the vacuum tile flapped between on and off as push and poll updates alternated
|
|
8
|
+
- **Fix (HAP)**: Removing outdated scene switches no longer skips every second one — the service list was being modified while it was iterated
|
|
9
|
+
- **Fix**: Sending a command to a device shared from another account now logs a warning instead of crashing the command handler (shared devices get an accessory but no control channel)
|
|
10
|
+
- **Change (efficiency)**: Removed a 1-per-second status poll per device whose results were never used (the timer now only exists for the opt-in current-room MQTT telemetry, which is its only consumer). Also removed periodic and startup requests whose responses fed nothing: `get_server_timer`, `get_timer`, `get_multi_maps_list`, the cleaning-history fetch (`get_clean_summary` plus up to 20 `get_clean_record` calls per device), an extra `get_status` round-trip in the room-mapping poll, a per-cycle firmware-update check, and a duplicate scene fetch at startup
|
|
11
|
+
- **Change (efficiency)**: Devices that go offline now stop being polled until they come back — the online flag from every HomeData refresh starts and stops the per-device intervals
|
|
12
|
+
- **Change (internal)**: Removed the inherited ioBroker object layer and other dead code from `roborockLib` (about 1,900 lines), including the unused map parser and packaging helper; the `jszip` dependency is gone. Plugin shutdown now also cancels in-flight request timers. The API surface consumed by the TypeScript plugin is now declared in `src/roborock_api.ts`, so lib-side renames fail the build instead of breaking HomeKit at runtime
|
|
13
|
+
|
|
14
|
+
## 2.2.4
|
|
15
|
+
|
|
16
|
+
- **New Feature (HAP)**: Consumable life (filter, main brush, side brush) is now exposed as HomeKit FilterMaintenance services — remaining life in percent plus a "change filter" alert when a consumable drops to 5% or less. Services are only created for consumables the device actually reports, and their names follow the plugin language
|
|
17
|
+
- **New Feature (HAP)**: The vacuum's error state and cloud online flag are now surfaced on the main service as StatusFault and StatusActive, so HomeKit apps can flag a device that reported an error code or went offline
|
|
18
|
+
- **Fix (Matter)**: Matter accessories no longer report their model as "Unknown" (or "Scene"/"Dock") — the model is resolved from the Roborock products table, the same source the HAP accessories always used
|
|
19
|
+
- **Fix (HAP)**: The firmware version shown in Apple Home no longer stays empty or "Unknown". It was written only once at accessory creation, so a HomeData snapshot without the firmware field (or a later device OTA update) left HomeKit without the real version forever. The version is now refreshed from the device data on every HomeData poll
|
|
20
|
+
|
|
3
21
|
## 2.2.3
|
|
4
22
|
|
|
5
23
|
- **Fix (Matter)**: Matter vacuums no longer sit at "Updating…" in Apple Home with no state, battery, or controls (#59). The initial status was pushed before the Matter endpoint was registered — so the Matter server discarded it — and nothing published it again afterwards. The status (state, battery, charging, error, clean mode) is now seeded right after registration and re-synced on every Roborock HomeData poll, matching the update path the HAP accessories always had
|
|
@@ -17,6 +17,7 @@ const base_matter_accessory_1 = require("./base_matter_accessory");
|
|
|
17
17
|
const MOP_WASHING_STATES = [23, 26];
|
|
18
18
|
class RoborockDockWashMatterAccessory extends base_matter_accessory_1.BaseMatterAccessory {
|
|
19
19
|
constructor(api, log, device, displayName, roborockAPI) {
|
|
20
|
+
var _a;
|
|
20
21
|
const matter = api.matter;
|
|
21
22
|
if (!matter) {
|
|
22
23
|
throw new Error("The Homebridge Matter API is unavailable; cannot create a Matter accessory.");
|
|
@@ -29,7 +30,10 @@ class RoborockDockWashMatterAccessory extends base_matter_accessory_1.BaseMatter
|
|
|
29
30
|
deviceType: matter.deviceTypes.OnOffOutlet,
|
|
30
31
|
serialNumber: `${device.sn || device.duid}-DW`,
|
|
31
32
|
manufacturer: "Roborock",
|
|
32
|
-
model:
|
|
33
|
+
model: ((_a = roborockAPI.getProductAttribute) === null || _a === void 0 ? void 0 : _a.call(roborockAPI, device.duid, "model")) ||
|
|
34
|
+
device.productModel ||
|
|
35
|
+
device.model ||
|
|
36
|
+
"Dock",
|
|
33
37
|
firmwareRevision: device.fv || "1.0.0",
|
|
34
38
|
hardwareRevision: "1.0.0",
|
|
35
39
|
context: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dock_wash_matter_accessory.js","sourceRoot":"","sources":["../src/dock_wash_matter_accessory.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAGH,2CAA0C;AAC1C,mEAA8D;
|
|
1
|
+
{"version":3,"file":"dock_wash_matter_accessory.js","sourceRoot":"","sources":["../src/dock_wash_matter_accessory.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.js
CHANGED
|
@@ -201,28 +201,36 @@ class RoborockPlatform {
|
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
203
|
const self = this;
|
|
204
|
-
self.roborockAPI.setDeviceNotify(function (id, homeData) {
|
|
205
|
-
var _a
|
|
204
|
+
self.roborockAPI.setDeviceNotify(function (id, homeData, duid) {
|
|
205
|
+
var _a;
|
|
206
206
|
self.log.debug(`${id} notifyDeviceUpdater:${JSON.stringify(homeData)}`);
|
|
207
207
|
if (id === "CloudMessage" || id === "LocalMessage") {
|
|
208
|
-
// Transport messages
|
|
209
|
-
// result array
|
|
210
|
-
// payload
|
|
211
|
-
//
|
|
208
|
+
// Transport messages belong to one device: unwrap the single-element
|
|
209
|
+
// result array, translate schema-id dps fields once, and deliver the
|
|
210
|
+
// payload only to that device's accessories. Applying it to every
|
|
211
|
+
// accessory would make vacuum B show vacuum A's state and battery.
|
|
212
|
+
// A payload without a duid (older lib) falls back to the broadcast.
|
|
212
213
|
const payload = Array.isArray(homeData) ? homeData[0] : homeData;
|
|
213
214
|
if (!payload || typeof payload !== "object") {
|
|
214
215
|
return;
|
|
215
216
|
}
|
|
216
217
|
const data = translateDpsFields(payload);
|
|
217
218
|
for (const vacuum of self.vacuums) {
|
|
218
|
-
vacuum.
|
|
219
|
+
if (duid === undefined || vacuum.duid === duid) {
|
|
220
|
+
vacuum.notifyDeviceUpdater(id, data);
|
|
221
|
+
}
|
|
219
222
|
}
|
|
220
|
-
for (const [
|
|
223
|
+
for (const [matterDuid, matterVacuum] of self.matterVacuums) {
|
|
224
|
+
if (duid !== undefined && matterDuid !== duid) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
221
227
|
matterVacuum.updateFromRoborockData(data);
|
|
222
|
-
matterVacuum.updateSupportedAreas((
|
|
228
|
+
matterVacuum.updateSupportedAreas((_a = self.roborockAPI.getSegmentRooms(matterDuid)) !== null && _a !== void 0 ? _a : []);
|
|
223
229
|
}
|
|
224
|
-
for (const dockWash of self.matterDockWash
|
|
225
|
-
|
|
230
|
+
for (const [dockDuid, dockWash] of self.matterDockWash) {
|
|
231
|
+
if (duid === undefined || dockDuid === duid) {
|
|
232
|
+
dockWash.updateFromRoborockData(data);
|
|
233
|
+
}
|
|
226
234
|
}
|
|
227
235
|
return;
|
|
228
236
|
}
|
|
@@ -298,8 +306,8 @@ class RoborockPlatform {
|
|
|
298
306
|
this.matterAccessories.set(accessory.UUID, accessory);
|
|
299
307
|
}
|
|
300
308
|
isSupportedDevice(model) {
|
|
301
|
-
//model
|
|
302
|
-
return model.startsWith("roborock.vacuum.");
|
|
309
|
+
// model must start with "roborock.vacuum."
|
|
310
|
+
return typeof model === "string" && model.startsWith("roborock.vacuum.");
|
|
303
311
|
}
|
|
304
312
|
isSkippedDeviceId(deviceId) {
|
|
305
313
|
return this.resolveProtocol(deviceId) === "skip";
|
|
@@ -494,7 +502,7 @@ class RoborockPlatform {
|
|
|
494
502
|
: "because it is now published over Matter");
|
|
495
503
|
continue;
|
|
496
504
|
}
|
|
497
|
-
const vacuum = self.roborockAPI.getVacuumDeviceData(cachedAccessory.context);
|
|
505
|
+
const vacuum = self.roborockAPI.getVacuumDeviceData(`${cachedAccessory.context}`);
|
|
498
506
|
if (vacuum === undefined) {
|
|
499
507
|
// This cached devices does not exist on the Roborock App account (anymore).
|
|
500
508
|
this.unregisterCachedAccessory(cachedAccessory, "because it does not exist on the Roborock account anymore");
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";;;;;AAYA,0EAAyD;AACzD,uEAA0E;AAC1E,qEAAwE;AACxE,6EAA+E;AAE/E,sDAA8C;AAG9C,yCAAwD;AACxD,qCAA0C;AAC1C,yCAKoB;AAEpB,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,SAAS,+BAA+B;IACtC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,sBAAsB,GAAG,IAAI,CAAC;IAE9B,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,OAAO,CAAC,WAAW,GAAG,CAAC,CACrB,OAAuB,EACvB,IAAa,EACb,IAAa,EACb,IAAe,EACT,EAAE;QACR,MAAM,WAAW,GACf,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAI,OAAO;YAClE,CAAC,CAAC,MAAM,CAAE,OAA6B,CAAC,IAAI,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAEA,mBAAoD,CACnD,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;IACJ,CAAC,CAA+B,CAAC;AACnC,CAAC;AAED,+BAA+B,EAAE,CAAC;AAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC;AAEhE,6EAA6E;AAC7E,2EAA2E;AAC3E,+DAA+D;AAC/D,MAAM,iBAAiB,GAA2B;IAChD,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,gBAAgB;CACxB,CAAC;AAEF,SAAS,kBAAkB,CAAC,OAA4B;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/D,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAqB,gBAAgB;IAoCnC;;;;;;;OAOG;IACH,YACE,gBAAwB,EACxB,MAAsB,EACL,GAAQ;QAAR,QAAG,GAAH,GAAG,CAAK;QA3C3B,4CAA4C;QAC3B,gBAAW,GAAgC,EAAE,CAAC;QAC9C,8BAAyB,GAAgC,EAAE,CAAC;QAC5D,YAAO,GAA8B,EAAE,CAAC;QAEzD,qEAAqE;QACpD,sBAAiB,GAAiC,IAAI,GAAG,EAAE,CAAC;QAC5D,kBAAa,GAC5B,IAAI,GAAG,EAAE,CAAC;QACJ,kBAAa,GAAG,KAAK,CAAC;QAC9B,2EAA2E;QAC3E,+DAA+D;QAC9C,qBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAC1C,qBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;QACxD,8BAAyB,GAAG,KAAK,CAAC;QAC1C,sEAAsE;QACrD,mBAAc,GAG3B,IAAI,GAAG,EAAE,CAAC;QA0BZ,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,MAAgC,CAAC;QACvD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAC7B,IAAA,yBAAc,EAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAChD,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAC5B,IAAA,yBAAc,EAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAClD,CAAC;QACF,IAAI,CAAC,oBAAoB;YACvB,IAAI,CAAC,cAAc,CAAC,kBAAkB,KAAK,SAAS;gBAClD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,GAAG,CAAC,IAAA,yBAAc,EAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAEtE,6BAA6B;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAI,gBAAsB,CACnC,gBAAgB,EAChB,IAAI,CAAC,cAAc,CAAC,SAAS,CAC9B,CAAC;QACF,2CAA2C;QAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAEhD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;YACzD,CAAC,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,CAAC,WAAW,GAAG,IAAI,QAAQ,CAAC;YAC9B,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,gBAAgB;YAC1B,WAAW,EAAE,WAAW;YACxB,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe;SACrD,CAAC,CAAC;QAEH;;;;;WAKG;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,2DAAgC,GAAG,EAAE;YAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,0CAA0C,KAAK,IAAI;oBACjD,mEAAmE;oBACnE,+BAA+B,CAClC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,qCAAoB,GAAG,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB;;QAC/B,MAAM,SAAS,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,GAAG,EAAC,iBAAiB,kDAAI,mCAAI,KAAK,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,GAAG,EAAC,eAAe,kDAAI,mCAAI,KAAK,CAAC;QAEtD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,mEAAmE;gBACjE,yEAAyE;gBACzE,iEAAiE;gBACjE,uBAAuB,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,QAAiB;QACvC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,YAAY,MAAM,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAA,gCAAqB,EAAC,GAAG,QAAQ,EAAE,EAAE;YAC1C,OAAO,EAAE,IAAI,CAAC,gBAAgB;YAC9B,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,QAAgB;QAC7C,OAAO,IAAA,2BAAgB,EAAC,QAAQ,EAAE;YAChC,OAAO,EAAE,IAAI,CAAC,gBAAgB;YAC9B,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,mDAAmD;gBACjD,qEAAqE,CACxE,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACzE,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,sDAAsD;gBACpD,2DAA2D,CAC9D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI;;YAC3D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,wBAAwB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAExE,IAAI,EAAE,KAAK,cAAc,IAAI,EAAE,KAAK,cAAc,EAAE,CAAC;gBACnD,qEAAqE;gBACrE,qEAAqE;gBACrE,kEAAkE;gBAClE,mEAAmE;gBACnE,oEAAoE;gBACpE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACjE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAEzC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClC,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;wBAC/C,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBACD,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC5D,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC9C,SAAS;oBACX,CAAC;oBACD,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;oBAC1C,YAAY,CAAC,oBAAoB,CAC/B,MAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,mCAAI,EAAE,CACnD,CAAC;gBACJ,CAAC;gBACD,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACvD,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBAC5C,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;gBACtB,iEAAiE;gBACjE,4CAA4C;gBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,gEAAgE;gBAChE,mEAAmE;gBACnE,mEAAmE;gBACnE,gEAAgE;gBAChE,mEAAmE;gBACnE,gCAAgC;gBAChC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;oBACvD,YAAY,CAAC,iBAAiB,EAAE,CAAC;gBACnC,CAAC;gBACD,oEAAoE;gBACpE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;oBACpD,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjC,mCAAmC;YACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,yCAAyC,KAAK,IAAI;gBAChD,mEAAmE;gBACnE,+BAA+B,CAClC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,iBAAoC;QACrD,sEAAsE;QACtE,MAAM,SAAS,GAAG,iBAA8C,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,WAAW,eAAe,CAAC,CAAC;QAE1E,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,cAAc,SAAS,CAAC,WAAW,MAAM,SAAS,CAAC,OAAO,kBAAkB;gBAC1E,wEAAwE,CAC3E,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,gCAAgC;QAEhC,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CACjC,CAAC;YACF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,cAAc,SAAS,CAAC,WAAW,+BAA+B;oBAChE,8CAA8C,CACjD,CAAC;gBACF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,SAA0B;QACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,6BAA6B,SAAS,CAAC,WAAW,eAAe,CAClE,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CAAC,KAAoB;QACpC,2CAA2C;QAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC3E,CAAC;IAED,iBAAiB,CAAC,QAAiB;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACK,6BAA6B;QACnC,KAAK,MAAM,eAAe,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,yBAAyB,CAC5B,eAAe,EACf,QAAQ,KAAK,MAAM;gBACjB,CAAC,CAAC,wCAAwC;gBAC1C,CAAC,CAAC,yCAAyC,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gCAAgC;;QAC5C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,GAAG,MAAA,eAAe,CAAC,OAAO,0CAAE,IAA0B,CAAC;YACjE,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpD,SAAS;YACX,CAAC;YAED,MAAM,IAAI,CAAC,yBAAyB,CAClC,IAAI,EACJ,eAAe,EACf,+CAA+C,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,IAAY,EACZ,SAA0B,EAC1B,MAAc;;QAEd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,8BAA8B,SAAS,CAAC,WAAW,MAAM,IAAI,KAAK,MAAM,GAAG,CAC5E,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,6BAA6B,CACjD,sBAAW,EACX,wBAAa,EACb,CAAC,SAAS,CAAC,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,sCAAsC,SAAS,CAAC,WAAW,MAAM,KAAK,EAAE,CACzE,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAAG,MAAA,SAAS,CAAC,OAAO,0CAAE,IAA0B,CAAC;QAC3D,IAAI,IAAI,IAAI,CAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,QAAQ,MAAK,SAAS,EAAE,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,IAAI,CAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,OAAO,MAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,+BAA+B;QACrC,KAAK,MAAM,eAAe,IAAI,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,yBAAyB,CAC5B,eAAe,EACf,0EAA0E,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,yBAAyB,CAC/B,SAAoC,EACpC,MAAc;QAEd,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,uBAAuB,SAAS,CAAC,WAAW,MAAM,SAAS,CAAC,OAAO,KAAK,MAAM,GAAG,CAClF,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,sBAAW,EAAE,wBAAa,EAAE;gBACjE,SAAS;aACV,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,+BAA+B,SAAS,CAAC,WAAW,MAAM,SAAS,CAAC,OAAO,MAAM,KAAK,EAAE,CACzF,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,SAAoC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe;;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,MAAM,gBAAgB,GAAsB,EAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAU,MAAM;oBACvD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAE5C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;wBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oBAAoB,IAAI,MAAM,IAAI,2CAA2C,CAC9E,CAAC;wBAEF,OAAO;oBACT,CAAC;oBAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,IAAI,qBAAqB,CAAC,CAAC;wBAE9D,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,WAAW,IAAI,MAAM,IAAI,yCAAyC;4BAChE,iDAAiD,CACpD,CAAC;oBACJ,CAAC;oBAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAC1B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;wBAChE,OAAO;oBACT,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAErD,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CACvC,CAAC;oBAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;wBACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,wBAAwB,iBAAiB,CAAC,WAAW,IAAI;4BACvD,IAAI,IAAI,eAAe,CAC1B,CAAC;wBAEF,kEAAkE;wBAClE,wCAAwC;wBACxC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;wBACjC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBAExD,0DAA0D;wBAE1D,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;oBAClD,CAAC;yBAAM,CAAC;wBACN,wDAAwD;wBAExD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC;wBACvD,4DAA4D;wBAC5D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAC9C,IAAI,EACJ,IAAI,CACL,CAAC;wBAEF,yEAAyE;wBACzE,wEAAwE;wBACxE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;wBAEzB,8DAA8D;wBAC9D,+CAA+C;wBAC/C,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;wBAExC,sCAAsC;wBACtC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,sBAAW,EAAE,wBAAa,EAAE;4BAC/D,SAAS;yBACV,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,qEAAqE;YACrE,iEAAiE;YACjE,sDAAsD;YACtD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACnD,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBACnE,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACtE,CAAC;YAED,sEAAsE;YACtE,IACE,gBAAgB,CAAC,MAAM,GAAG,CAAC;gBAC3B,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,GAAG,CAAC,MAAM,EACf,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,eAAe,gBAAgB,CAAC,MAAM,+BAA+B,CACtE,CAAC;gBACF,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,CAC/C,sBAAW,EACX,wBAAa,EACb,gBAAgB,CACjB,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;oBACjD,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,+DAA+D;oBAC/D,+DAA+D;oBAC/D,iEAAiE;oBACjE,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;gBACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;oBACpD,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,oFAAoF;YACpF,wEAAwE;YACxE,mEAAmE;YACnE,uEAAuE;YACvE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,iEAAiE;oBAC/D,kCAAkC,CACrC,CAAC;gBACF,OAAO;YACT,CAAC;YACD,KAAK,MAAM,eAAe,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpD,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC/D,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;wBACvB,IAAI,CAAC,yBAAyB,CAC5B,eAAe,EACf,QAAQ,KAAK,MAAM;4BACjB,CAAC,CAAC,wCAAwC;4BAC1C,CAAC,CAAC,yCAAyC,CAC9C,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CACjD,GAAG,eAAe,CAAC,OAAO,EAAE,CAC7B,CAAC;oBAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBACzB,4EAA4E;wBAC5E,IAAI,CAAC,yBAAyB,CAC5B,eAAe,EACf,2DAA2D,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0EAA0E;YAC1E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAClE,MAAM,IAAI,GAAG,MAAA,eAAe,CAAC,OAAO,0CAAE,IAA0B,CAAC;oBACjE,IACE,IAAI;wBACJ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,SAAS,EACxD,CAAC;wBACD,MAAM,IAAI,CAAC,yBAAyB,CAClC,IAAI,EACJ,eAAe,EACf,2DAA2D,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,6CAA6C;gBAC3C,0CAA0C,CAC7C,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,MAAW,EACX,IAAY,EACZ,IAAY,EACZ,UAA6B;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,mBAAmB,IAAI,sDAAsD,CAC9E,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,IAAI,uDAA6B,CAC9C,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,GAAG,EACR,MAAM,EACN,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAExC,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;QACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,QAAQ;YACN,CAAC,CAAC,oCAAoC,IAAI,MAAM,IAAI,eAAe;YACnE,CAAC,CAAC,4BAA4B,IAAI,MAAM,IAAI,IAAI,CACnD,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,uEAAuE;IAC/D,yBAAyB,CAAC,IAAY;QAC5C,OAAO,CACL,IAAI,CAAC,oBAAoB,KAAK,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,IAAY;QAClC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,yBAAyB;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACK,6BAA6B,CACnC,MAAW,EACX,IAAY,EACZ,UAA6B;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,UAAU,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,SAAS,CAAC,mCAAmC;YAC/C,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC3C,CAAC,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,IAAI,GAAG;gBACjC,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,cAAc,GAAG,IAAI,qDAA4B,CACrD,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,gBAAgB,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,CAAC,WAAW,CACjB,CAAC,WAAW,EAAE,CAAC;YAEhB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,+BAA+B,WAAW,MAAM,IAAI,IAAI;gBACtD,QAAQ,MAAM,CAAC,IAAI,IAAI,CAC1B,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,IACE,OAAO,CAAC,IAAI,KAAK,IAAI;gBACrB,OAAO,CAAC,OAAO,KAAK,SAAS;gBAC7B,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EACtB,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,yBAAyB,CAC5B,IAAI,EACJ,MAAM,EACN,oCAAoC,CACrC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,8BAA8B,CACpC,MAAW,EACX,IAAY,EACZ,UAA6B;;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,CAAC,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,WAAW,EAAC,mBAAmB,mDAAG,IAAI,CAAC,CAAA,CAAC;QAEjE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,yBAAyB,CAC5B,IAAI,EACJ,MAAM,EACN,+CAA+C,CAChD,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,KAAK,EAAE,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,gCAAgC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CACrB,CAAA,MAAA,MAAA,IAAI,CAAC,WAAW,EAAC,cAAc,mDAAG,gBAAgB,CAAC,KAAI,aAAa,CACrE,CAAC;QACF,sEAAsE;QACtE,2DAA2D;QAC3D,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,eACvE,OAAA,MAAA,MAAA,IAAI,CAAC,WAAW,EAAC,mBAAmB,mDAAG,EAAE,CAAC,CAAA,EAAA,CAC3C,CAAC,MAAM,CAAC;QACT,MAAM,WAAW,GACf,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEnE,MAAM,QAAQ,GAAG,IAAI,4DAA+B,CAClD,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,gBAAgB,EACrB,MAAM,EACN,WAAW,EACX,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,mCAAmC,WAAW,MAAM,IAAI,IAAI;YAC1D,QAAQ,MAAM,CAAC,IAAI,IAAI,CAC1B,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,gBAAgB;QACtB,IACE,CAAC,IAAI,CAAC,aAAa;YACnB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;YAChB,IAAI,CAAC,yBAAyB;YAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAChC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,MAAM,UAAU,GAAsB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnD,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM;aACZ,2BAA2B,CAAC,sBAAW,EAAE,wBAAa,EAAE,UAAU,CAAC;aACnE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB,CAAC,SAAoC;QAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,0BAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;CACF;AAx4BD,mCAw4BC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Typed surface of the JavaScript Roborock API (roborockLib/roborockAPI.js)
|
|
4
|
+
* that this plugin actually consumes. The implementation is still untyped
|
|
5
|
+
* legacy code loaded via require(); this interface exists so a rename or
|
|
6
|
+
* signature change over there breaks the build here instead of HomeKit at
|
|
7
|
+
* runtime. Keep it in sync with roborockAPI.js when the surface changes.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=roborock_api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roborock_api.js","sourceRoot":"","sources":["../src/roborock_api.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
|
|
@@ -17,6 +17,7 @@ const base_matter_accessory_1 = require("./base_matter_accessory");
|
|
|
17
17
|
const RESET_DELAY_MS = 1000;
|
|
18
18
|
class RoborockSceneMatterAccessory extends base_matter_accessory_1.BaseMatterAccessory {
|
|
19
19
|
constructor(api, log, device, scene, displayName, roborockAPI) {
|
|
20
|
+
var _a;
|
|
20
21
|
const matter = api.matter;
|
|
21
22
|
if (!matter) {
|
|
22
23
|
throw new Error("The Homebridge Matter API is unavailable; cannot create a Matter accessory.");
|
|
@@ -27,7 +28,10 @@ class RoborockSceneMatterAccessory extends base_matter_accessory_1.BaseMatterAcc
|
|
|
27
28
|
deviceType: matter.deviceTypes.OnOffOutlet,
|
|
28
29
|
serialNumber: `${device.sn || device.duid}-S${scene.id}`,
|
|
29
30
|
manufacturer: "Roborock",
|
|
30
|
-
model:
|
|
31
|
+
model: ((_a = roborockAPI.getProductAttribute) === null || _a === void 0 ? void 0 : _a.call(roborockAPI, device.duid, "model")) ||
|
|
32
|
+
device.productModel ||
|
|
33
|
+
device.model ||
|
|
34
|
+
"Scene",
|
|
31
35
|
firmwareRevision: device.fv || "1.0.0",
|
|
32
36
|
hardwareRevision: "1.0.0",
|
|
33
37
|
context: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene_matter_accessory.js","sourceRoot":"","sources":["../src/scene_matter_accessory.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAGH,2CAA0C;AAC1C,mEAA8D;
|
|
1
|
+
{"version":3,"file":"scene_matter_accessory.js","sourceRoot":"","sources":["../src/scene_matter_accessory.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAGH,2CAA0C;AAC1C,mEAA8D;AAG9D,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAa,4BAA6B,SAAQ,2CAAmB;IAInE,YACE,GAAQ,EACR,GAAW,EACX,MAAW,EACX,KAAU,EACV,WAAmB,EACnB,WAAwB;;QAExB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE,EAAE,CAAC;YAC9D,WAAW;YACX,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW;YAC1C,YAAY,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE;YACxD,YAAY,EAAE,UAAU;YACxB,KAAK,EACH,CAAA,MAAA,WAAW,CAAC,mBAAmB,4DAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBACvD,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,KAAK;gBACZ,OAAO;YACT,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,OAAO;YACtC,gBAAgB,EAAE,OAAO;YACzB,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,KAAK,CAAC,EAAE;aAClB;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK;iBACb;aACF;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC/B,GAAG,EAAE,KAAK,IAAI,EAAE;wBACd,sCAAsC;oBACxC,CAAC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,yBAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC5D,CAAC;QAED,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACxD,IAAI,CAAC,QAAQ,CAAC,+BAA+B,EAAE,GAAG,CAAC,CACpD,CAAC;QACJ,CAAC,EAAE,cAAc,CAAC,CAAC;IACrB,CAAC;CACF;AAzED,oEAyEC"}
|
package/dist/vacuum_accessory.js
CHANGED
|
@@ -7,7 +7,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
// Roborock device states meaning the dock is washing the mop (23) or the
|
|
8
8
|
// vacuum is on its way to be washed (26).
|
|
9
9
|
const MOP_WASHING_STATES = [23, 26];
|
|
10
|
+
// Consumables reported as remaining-life percentages in the HomeData device
|
|
11
|
+
// status, exposed as HomeKit FilterMaintenance services. The translation keys
|
|
12
|
+
// are the short consumable names from the reset actions ("Filter", ...).
|
|
13
|
+
const CONSUMABLES = [
|
|
14
|
+
{
|
|
15
|
+
code: "filter_life",
|
|
16
|
+
subtype: "filter",
|
|
17
|
+
nameKey: "reset_filter_work_time",
|
|
18
|
+
fallbackName: "Filter",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
code: "main_brush_life",
|
|
22
|
+
subtype: "main-brush",
|
|
23
|
+
nameKey: "reset_main_brush_work_time",
|
|
24
|
+
fallbackName: "Main brush",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
code: "side_brush_life",
|
|
28
|
+
subtype: "side-brush",
|
|
29
|
+
nameKey: "reset_side_brush_work_time",
|
|
30
|
+
fallbackName: "Side brush",
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
// Remaining life at or below which HomeKit shows the "change filter" alert —
|
|
34
|
+
// matches the Roborock app, which nags when a consumable is nearly used up.
|
|
35
|
+
const CONSUMABLE_CHANGE_THRESHOLD = 5;
|
|
10
36
|
class RoborockVacuumAccessory {
|
|
37
|
+
/** Device id this accessory belongs to (context holds the duid string). */
|
|
38
|
+
get duid() {
|
|
39
|
+
return `${this.accessory.context}`;
|
|
40
|
+
}
|
|
11
41
|
constructor(platform, accessory) {
|
|
12
42
|
var _a;
|
|
13
43
|
this.platform = platform;
|
|
@@ -19,30 +49,33 @@ class RoborockVacuumAccessory {
|
|
|
19
49
|
// Accessory Information
|
|
20
50
|
// https://developers.homebridge.io/#/service/AccessoryInformation
|
|
21
51
|
(_a = this.accessory
|
|
22
|
-
.getService(this.platform.Service.AccessoryInformation)) === null || _a === void 0 ? void 0 : _a.setCharacteristic(this.platform.Characteristic.Manufacturer, "Roborock").setCharacteristic(this.platform.Characteristic.Model, this.platform.roborockAPI.getProductAttribute(
|
|
52
|
+
.getService(this.platform.Service.AccessoryInformation)) === null || _a === void 0 ? void 0 : _a.setCharacteristic(this.platform.Characteristic.Manufacturer, "Roborock").setCharacteristic(this.platform.Characteristic.Model, this.platform.roborockAPI.getProductAttribute(this.duid, "model") ||
|
|
53
|
+
"Unknown").setCharacteristic(this.platform.Characteristic.SerialNumber, `${this.platform.roborockAPI.getVacuumDeviceInfo(this.duid, "sn") || "Unknown"}`).setCharacteristic(this.platform.Characteristic.FirmwareRevision, `${this.platform.roborockAPI.getVacuumDeviceInfo(this.duid, "fv") || "Unknown"}`);
|
|
23
54
|
this.services["Fan"] =
|
|
24
55
|
this.accessory.getService(this.platform.Service.Fanv2) ||
|
|
25
56
|
this.accessory.addService(this.platform.Service.Fanv2);
|
|
26
57
|
// This is what is displayed as the default name on the Home app
|
|
27
|
-
this.services["Fan"].setCharacteristic(this.platform.Characteristic.Name, this.platform.roborockAPI.getVacuumDeviceInfo(
|
|
58
|
+
this.services["Fan"].setCharacteristic(this.platform.Characteristic.Name, `${this.platform.roborockAPI.getVacuumDeviceInfo(this.duid, "name") || "Roborock Vacuum"}`);
|
|
28
59
|
this.services["Fan"]
|
|
29
60
|
.getCharacteristic(this.platform.Characteristic.Active)
|
|
30
61
|
.onSet(this.setActive.bind(this))
|
|
31
62
|
.onGet(this.getActive.bind(this));
|
|
63
|
+
// Device error code and cloud online flag, surfaced on the main service.
|
|
64
|
+
this.services["Fan"].addOptionalCharacteristic(this.platform.Characteristic.StatusFault);
|
|
65
|
+
this.services["Fan"].addOptionalCharacteristic(this.platform.Characteristic.StatusActive);
|
|
32
66
|
this.services["Battery"] =
|
|
33
67
|
this.accessory.getService(this.platform.Service.Battery) ||
|
|
34
68
|
this.accessory.addService(this.platform.Service.Battery);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
: this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL);
|
|
39
|
-
this.services["Battery"].setCharacteristic(this.platform.Characteristic.ChargingState, this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "charge_status") == 1
|
|
40
|
-
? this.platform.Characteristic.ChargingState.CHARGING
|
|
41
|
-
: this.platform.Characteristic.ChargingState.NOT_CHARGING);
|
|
69
|
+
// Battery/charging characteristics are seeded by the updateDeviceState()
|
|
70
|
+
// call below, which only publishes values that are actually known —
|
|
71
|
+
// publishing the "" unknown sentinel here would read as 0 % battery.
|
|
42
72
|
// Initialize scene switches
|
|
43
73
|
this.updateSceneSwitches();
|
|
44
74
|
// Dock mop-wash switch (only on washing-capable docks)
|
|
45
75
|
this.updateDockWashSwitch();
|
|
76
|
+
// Seed fault/online/consumable state from the already-loaded HomeData
|
|
77
|
+
// instead of waiting for the first poll.
|
|
78
|
+
this.updateDeviceState();
|
|
46
79
|
}
|
|
47
80
|
/**
|
|
48
81
|
* Add or remove the dock mop-wash switch depending on whether the device
|
|
@@ -51,11 +84,11 @@ class RoborockVacuumAccessory {
|
|
|
51
84
|
*/
|
|
52
85
|
updateDockWashSwitch() {
|
|
53
86
|
try {
|
|
54
|
-
const supported = this.platform.roborockAPI.isDockWashSupported(this.
|
|
87
|
+
const supported = this.platform.roborockAPI.isDockWashSupported(this.duid);
|
|
55
88
|
const existingService = this.accessory.getServiceById(this.platform.Service.Switch, "dock-wash");
|
|
56
89
|
if (!supported) {
|
|
57
90
|
if (existingService) {
|
|
58
|
-
this.platform.log.debug(`Removing dock wash switch for device ${this.
|
|
91
|
+
this.platform.log.debug(`Removing dock wash switch for device ${this.duid}`);
|
|
59
92
|
this.accessory.removeService(existingService);
|
|
60
93
|
}
|
|
61
94
|
this.dockWashService = undefined;
|
|
@@ -65,7 +98,7 @@ class RoborockVacuumAccessory {
|
|
|
65
98
|
return;
|
|
66
99
|
}
|
|
67
100
|
const switchName = this.platform.roborockAPI.getTranslation("app_start_wash");
|
|
68
|
-
this.platform.log.debug(`Adding dock wash switch '${switchName}' for device ${this.
|
|
101
|
+
this.platform.log.debug(`Adding dock wash switch '${switchName}' for device ${this.duid}`);
|
|
69
102
|
const switchService = existingService ||
|
|
70
103
|
this.accessory.addService(this.platform.Service.Switch, switchName, "dock-wash");
|
|
71
104
|
switchService.setCharacteristic(this.platform.Characteristic.Name, switchName);
|
|
@@ -85,10 +118,10 @@ class RoborockVacuumAccessory {
|
|
|
85
118
|
var _a;
|
|
86
119
|
try {
|
|
87
120
|
if (value) {
|
|
88
|
-
await this.platform.roborockAPI.app_start_wash(this.
|
|
121
|
+
await this.platform.roborockAPI.app_start_wash(this.duid);
|
|
89
122
|
}
|
|
90
123
|
else {
|
|
91
|
-
await this.platform.roborockAPI.app_stop_wash(this.
|
|
124
|
+
await this.platform.roborockAPI.app_stop_wash(this.duid);
|
|
92
125
|
}
|
|
93
126
|
}
|
|
94
127
|
catch (error) {
|
|
@@ -100,51 +133,116 @@ class RoborockVacuumAccessory {
|
|
|
100
133
|
return this.isWashing();
|
|
101
134
|
}
|
|
102
135
|
isWashing() {
|
|
103
|
-
return this.isWashingState(this.platform.roborockAPI.getVacuumDeviceStatus(this.
|
|
136
|
+
return this.isWashingState(this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, "state"));
|
|
104
137
|
}
|
|
105
138
|
isWashingState(state) {
|
|
106
|
-
return MOP_WASHING_STATES.includes(state);
|
|
139
|
+
return MOP_WASHING_STATES.includes(Number(state));
|
|
107
140
|
}
|
|
108
141
|
updateDockWashState(state) {
|
|
109
142
|
var _a;
|
|
110
143
|
(_a = this.dockWashService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.On, this.isWashingState(state));
|
|
111
144
|
}
|
|
112
145
|
updateDeviceState() {
|
|
146
|
+
var _a;
|
|
113
147
|
try {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.platform.
|
|
126
|
-
|
|
148
|
+
// getVacuumDeviceStatus returns "" while a value is unknown (no
|
|
149
|
+
// HomeData yet, or the model's schema lacks the field). Skip those
|
|
150
|
+
// updates instead of publishing garbage like 0 % battery — the Matter
|
|
151
|
+
// accessories already guard the same way.
|
|
152
|
+
const state = this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, "state");
|
|
153
|
+
if (state !== "") {
|
|
154
|
+
this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, this.platform.roborockAPI.isCleaning(state)
|
|
155
|
+
? this.platform.Characteristic.Active.ACTIVE
|
|
156
|
+
: this.platform.Characteristic.Active.INACTIVE);
|
|
157
|
+
this.updateDockWashState(state);
|
|
158
|
+
}
|
|
159
|
+
const rawBattery = this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, "battery");
|
|
160
|
+
const battery = Number(rawBattery);
|
|
161
|
+
if (rawBattery !== "" && Number.isFinite(battery)) {
|
|
162
|
+
this.services["Battery"].updateCharacteristic(this.platform.Characteristic.BatteryLevel, battery);
|
|
163
|
+
this.services["Battery"].updateCharacteristic(this.platform.Characteristic.StatusLowBattery, battery < 20
|
|
164
|
+
? this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
|
|
165
|
+
: this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL);
|
|
166
|
+
}
|
|
167
|
+
const chargeStatus = this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, "charge_status");
|
|
168
|
+
if (chargeStatus !== "") {
|
|
169
|
+
this.services["Battery"].updateCharacteristic(this.platform.Characteristic.ChargingState, Number(chargeStatus) != 0
|
|
170
|
+
? this.platform.Characteristic.ChargingState.CHARGING
|
|
171
|
+
: this.platform.Characteristic.ChargingState.NOT_CHARGING);
|
|
172
|
+
}
|
|
173
|
+
// The firmware version (fv) may be missing from the first HomeData
|
|
174
|
+
// snapshot and changes after device OTA updates, so refresh it on
|
|
175
|
+
// every poll instead of trusting the constructor-time value.
|
|
176
|
+
const firmwareVersion = this.platform.roborockAPI.getVacuumDeviceInfo(this.duid, "fv");
|
|
177
|
+
if (firmwareVersion) {
|
|
178
|
+
(_a = this.accessory
|
|
179
|
+
.getService(this.platform.Service.AccessoryInformation)) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, `${firmwareVersion}`);
|
|
180
|
+
}
|
|
181
|
+
this.updateStatusFault(this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, "error_code"));
|
|
182
|
+
// Cloud-reported online flag; anything but an explicit false counts as
|
|
183
|
+
// online so an unknown value never flags a healthy device.
|
|
184
|
+
this.services["Fan"].updateCharacteristic(this.platform.Characteristic.StatusActive, this.platform.roborockAPI.getVacuumDeviceInfo(this.duid, "online") !==
|
|
185
|
+
false);
|
|
186
|
+
this.updateConsumables();
|
|
187
|
+
this.platform.log.debug("Device state is " + this.state_code_to_state(Number(state)));
|
|
127
188
|
}
|
|
128
189
|
catch (e) {
|
|
129
190
|
this.platform.log.error("Error updating device state: " + e);
|
|
130
191
|
}
|
|
131
192
|
}
|
|
193
|
+
updateStatusFault(errorCode) {
|
|
194
|
+
const code = Number(errorCode);
|
|
195
|
+
this.services["Fan"].updateCharacteristic(this.platform.Characteristic.StatusFault, Number.isFinite(code) && code !== 0
|
|
196
|
+
? this.platform.Characteristic.StatusFault.GENERAL_FAULT
|
|
197
|
+
: this.platform.Characteristic.StatusFault.NO_FAULT);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Expose consumable remaining-life percentages (filter, brushes) as
|
|
201
|
+
* FilterMaintenance services. A service is only created once its value
|
|
202
|
+
* shows up in the device status, so models without a consumable in their
|
|
203
|
+
* schema never get an empty tile.
|
|
204
|
+
*/
|
|
205
|
+
updateConsumables() {
|
|
206
|
+
var _a, _b;
|
|
207
|
+
for (const consumable of CONSUMABLES) {
|
|
208
|
+
const rawLife = this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, consumable.code);
|
|
209
|
+
const life = Number(rawLife);
|
|
210
|
+
if (rawLife === "" || rawLife == null || !Number.isFinite(life)) {
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
let service = this.accessory.getServiceById(this.platform.Service.FilterMaintenance, consumable.subtype);
|
|
214
|
+
if (!service) {
|
|
215
|
+
const name = ((_b = (_a = this.platform.roborockAPI).getTranslation) === null || _b === void 0 ? void 0 : _b.call(_a, consumable.nameKey)) ||
|
|
216
|
+
consumable.fallbackName;
|
|
217
|
+
service = this.accessory.addService(this.platform.Service.FilterMaintenance, name, consumable.subtype);
|
|
218
|
+
service.setCharacteristic(this.platform.Characteristic.Name, name);
|
|
219
|
+
service.addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName);
|
|
220
|
+
service.setCharacteristic(this.platform.Characteristic.ConfiguredName, name);
|
|
221
|
+
service.addOptionalCharacteristic(this.platform.Characteristic.FilterLifeLevel);
|
|
222
|
+
}
|
|
223
|
+
const clampedLife = Math.max(0, Math.min(100, life));
|
|
224
|
+
service.updateCharacteristic(this.platform.Characteristic.FilterLifeLevel, clampedLife);
|
|
225
|
+
service.updateCharacteristic(this.platform.Characteristic.FilterChangeIndication, clampedLife <= CONSUMABLE_CHANGE_THRESHOLD
|
|
226
|
+
? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
|
|
227
|
+
: this.platform.Characteristic.FilterChangeIndication.FILTER_OK);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
132
230
|
/**
|
|
133
231
|
* Update scene switches based on available scenes for this device
|
|
134
232
|
*/
|
|
135
233
|
updateSceneSwitches() {
|
|
136
234
|
try {
|
|
137
235
|
// Get scenes for this device
|
|
138
|
-
const deviceScenes = this.platform.roborockAPI.getScenesForDevice(this.
|
|
236
|
+
const deviceScenes = this.platform.roborockAPI.getScenesForDevice(this.duid);
|
|
139
237
|
// Check if scenes have changed
|
|
140
238
|
if (this.scenesChanged(deviceScenes)) {
|
|
141
|
-
this.platform.log.debug(`Updating scene switches for device ${this.
|
|
239
|
+
this.platform.log.debug(`Updating scene switches for device ${this.duid}`);
|
|
142
240
|
// Remove existing scene switches that are no longer available
|
|
143
241
|
// Add new scene switches
|
|
144
242
|
for (const scene of deviceScenes) {
|
|
145
243
|
try {
|
|
146
244
|
const sceneId = scene.id.toString();
|
|
147
|
-
const sceneName = scene.name.
|
|
245
|
+
const sceneName = scene.name.replace(/ /g, "_");
|
|
148
246
|
if (!this.sceneServices.has(sceneId) && scene.enabled) {
|
|
149
247
|
this.platform.log.debug(`Adding scene switch for: ${scene.name} (ID: ${sceneId})`);
|
|
150
248
|
const switchService = this.accessory.getServiceById(this.platform.Service.Switch, `scene-${sceneId}`) ||
|
|
@@ -163,8 +261,10 @@ class RoborockVacuumAccessory {
|
|
|
163
261
|
this.platform.log.error(`Error processing scene ${scene.name}: ${e}`);
|
|
164
262
|
}
|
|
165
263
|
}
|
|
166
|
-
//Remove scene switches that are no longer available
|
|
167
|
-
|
|
264
|
+
// Remove scene switches that are no longer available. Iterate a
|
|
265
|
+
// copy: removeService splices the live services array, and mutating
|
|
266
|
+
// it mid-forEach skips the element after every removed one.
|
|
267
|
+
[...this.accessory.services].forEach((service) => {
|
|
168
268
|
var _a;
|
|
169
269
|
if (service instanceof this.platform.Service.Switch &&
|
|
170
270
|
((_a = service.subtype) === null || _a === void 0 ? void 0 : _a.startsWith("scene-"))) {
|
|
@@ -240,7 +340,7 @@ class RoborockVacuumAccessory {
|
|
|
240
340
|
if (id == "CloudMessage" || id == "LocalMessage") {
|
|
241
341
|
this.platform.log.debug(`Updating accessory with ${id} data: ` + JSON.stringify(data));
|
|
242
342
|
if (data.hasOwnProperty("state")) {
|
|
243
|
-
this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, this.
|
|
343
|
+
this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, this.platform.roborockAPI.isCleaning(data.state)
|
|
244
344
|
? this.platform.Characteristic.Active.ACTIVE
|
|
245
345
|
: this.platform.Characteristic.Active.INACTIVE);
|
|
246
346
|
this.updateDockWashState(data.state);
|
|
@@ -262,6 +362,9 @@ class RoborockVacuumAccessory {
|
|
|
262
362
|
? this.platform.Characteristic.Active.ACTIVE
|
|
263
363
|
: this.platform.Characteristic.Active.INACTIVE);
|
|
264
364
|
}
|
|
365
|
+
if (data.hasOwnProperty("error_code")) {
|
|
366
|
+
this.updateStatusFault(data.error_code);
|
|
367
|
+
}
|
|
265
368
|
}
|
|
266
369
|
else if (id == "HomeData") {
|
|
267
370
|
this.updateDeviceState();
|
|
@@ -279,11 +382,11 @@ class RoborockVacuumAccessory {
|
|
|
279
382
|
try {
|
|
280
383
|
this.platform.log.debug("Setting active to " + value);
|
|
281
384
|
if (value == this.platform.Characteristic.Active.ACTIVE) {
|
|
282
|
-
await this.platform.roborockAPI.app_start(this.
|
|
385
|
+
await this.platform.roborockAPI.app_start(this.duid);
|
|
283
386
|
}
|
|
284
387
|
else {
|
|
285
|
-
await this.platform.roborockAPI.app_stop(this.
|
|
286
|
-
await this.platform.roborockAPI.app_charge(this.
|
|
388
|
+
await this.platform.roborockAPI.app_stop(this.duid);
|
|
389
|
+
await this.platform.roborockAPI.app_charge(this.duid);
|
|
287
390
|
}
|
|
288
391
|
this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, value);
|
|
289
392
|
}
|
|
@@ -328,25 +431,10 @@ class RoborockVacuumAccessory {
|
|
|
328
431
|
return RoborockStateCodes[code] || "Unknown";
|
|
329
432
|
}
|
|
330
433
|
isCleaning() {
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
case 4: // Remote Control
|
|
336
|
-
case 5: // Cleaning
|
|
337
|
-
case 6: // Returning Dock
|
|
338
|
-
case 7: // Manual Mode
|
|
339
|
-
case 11: // Spot Cleaning
|
|
340
|
-
case 15: // Docking
|
|
341
|
-
case 16: // Go To
|
|
342
|
-
case 17: // Zone Clean
|
|
343
|
-
case 18: // Room Clean
|
|
344
|
-
case 23: // Washing the mop
|
|
345
|
-
case 26: // Going to wash the mop
|
|
346
|
-
return true;
|
|
347
|
-
default:
|
|
348
|
-
return false;
|
|
349
|
-
}
|
|
434
|
+
// Single source of truth for the cleaning-state table is
|
|
435
|
+
// roborockAPI.isCleaning — a local copy here diverged from it once and
|
|
436
|
+
// made push and poll updates flap the Fan Active characteristic.
|
|
437
|
+
return this.platform.roborockAPI.isCleaning(this.platform.roborockAPI.getVacuumDeviceStatus(this.duid, "state"));
|
|
350
438
|
}
|
|
351
439
|
}
|
|
352
440
|
exports.default = RoborockVacuumAccessory;
|