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 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: device.productModel || device.model || "Dock",
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;AAE9D,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAEpC,MAAa,+BAAgC,SAAQ,2CAAmB;IAKtE,YACE,GAAQ,EACR,GAAW,EACX,MAAW,EACX,WAAmB,EACnB,WAAgB;QAEhB,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,oEAAoE;YACpE,iEAAiE;YACjE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,YAAY,CAAC;YACtD,WAAW;YACX,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW;YAC1C,YAAY,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK;YAC9C,YAAY,EAAE,UAAU;YACxB,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM;YACpD,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,OAAO;YACtC,gBAAgB,EAAE,OAAO;YACzB,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,IAAI;aACf;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,CAAC,IAAI,CAAC,SAAS,EAAE;iBAClC;aACF;SACF,CAAC,CAAC;QA5CG,cAAS,GAAG,KAAK,CAAC;QA8CxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,yBAAY,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,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;IACH,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,IAAS;QACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACI,iBAAiB,CAAC,KAAK,GAAG,KAAK;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,EAAW,EAAE,KAAK,GAAG,KAAK;QACtC,IAAI,EAAE,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACrD,IAAI,CAAC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,CAAC,CACxD,CAAC;IACJ,CAAC;CACF;AA7GD,0EA6GC"}
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, _b, _c;
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 carry no device id; unwrap the single-element
209
- // result array and translate schema-id dps fields once, then fan the
210
- // payload out to every accessory (HAP and Matter alike)
211
- // field-level guards make foreign payloads a no-op.
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.notifyDeviceUpdater(id, data);
219
+ if (duid === undefined || vacuum.duid === duid) {
220
+ vacuum.notifyDeviceUpdater(id, data);
221
+ }
219
222
  }
220
- for (const [duid, matterVacuum] of self.matterVacuums) {
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((_c = (_b = (_a = self.roborockAPI).getSegmentRooms) === null || _b === void 0 ? void 0 : _b.call(_a, duid)) !== null && _c !== void 0 ? _c : []);
228
+ matterVacuum.updateSupportedAreas((_a = self.roborockAPI.getSegmentRooms(matterDuid)) !== null && _a !== void 0 ? _a : []);
223
229
  }
224
- for (const dockWash of self.matterDockWash.values()) {
225
- dockWash.updateFromRoborockData(data);
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 nust starts with "roborock.vacuum."
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");
@@ -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":"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"}
@@ -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: device.productModel || device.model || "Scene",
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;AAE9D,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAa,4BAA6B,SAAQ,2CAAmB;IAInE,YACE,GAAQ,EACR,GAAW,EACX,MAAW,EACX,KAAU,EACV,WAAmB,EACnB,WAAgB;QAEhB,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,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO;YACrD,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;AArED,oEAqEC"}
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"}
@@ -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(accessory.context, "model") || "Unknown").setCharacteristic(this.platform.Characteristic.SerialNumber, this.platform.roborockAPI.getVacuumDeviceInfo(accessory.context, "sn") || "Unknown").setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.platform.roborockAPI.getVacuumDeviceInfo(accessory.context, "fv") || "Unknown");
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(accessory.context, "name") || "Roborock Vacuum");
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
- this.services["Battery"].setCharacteristic(this.platform.Characteristic.BatteryLevel, this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "battery") || 0);
36
- this.services["Battery"].setCharacteristic(this.platform.Characteristic.StatusLowBattery, this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "battery") < 20
37
- ? this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
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.accessory.context);
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.accessory.context}`);
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.accessory.context}`);
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.accessory.context);
121
+ await this.platform.roborockAPI.app_start_wash(this.duid);
89
122
  }
90
123
  else {
91
- await this.platform.roborockAPI.app_stop_wash(this.accessory.context);
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.accessory.context, "state"));
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
- this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, this.platform.roborockAPI.isCleaning(this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "state"))
115
- ? this.platform.Characteristic.Active.ACTIVE
116
- : this.platform.Characteristic.Active.INACTIVE);
117
- this.services["Battery"].updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "battery") || 0);
118
- this.services["Battery"].updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "battery") < 20
119
- ? this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
120
- : this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL);
121
- this.services["Battery"].updateCharacteristic(this.platform.Characteristic.ChargingState, this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "charge_status") != 0
122
- ? this.platform.Characteristic.ChargingState.CHARGING
123
- : this.platform.Characteristic.ChargingState.NOT_CHARGING);
124
- this.updateDockWashState(this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "state"));
125
- this.platform.log.debug("Device state is " +
126
- this.state_code_to_state(this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "state")));
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.accessory.context);
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.accessory.context}`);
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.replaceAll(" ", "_");
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
- this.accessory.services.forEach((service) => {
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.isCleaningState(data.state)
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.accessory.context);
385
+ await this.platform.roborockAPI.app_start(this.duid);
283
386
  }
284
387
  else {
285
- await this.platform.roborockAPI.app_stop(this.accessory.context);
286
- await this.platform.roborockAPI.app_charge(this.accessory.context);
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
- return this.isCleaningState(this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "state"));
332
- }
333
- isCleaningState(state) {
334
- switch (state) {
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;