homebridge-roborock-matter 2.9.6 → 2.9.8
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 +10 -0
- package/README.md +11 -7
- package/package.json +7 -2
- package/roborockLib/roborockAPI.js +4 -3
- package/docs/issue-3958-reply.md +0 -29
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.9.8
|
|
4
|
+
|
|
5
|
+
- Fixed a long-standing quirk in state persistence: the file encoding argument was passed to `JSON.stringify` (where it is silently ignored) instead of `fs.writeFileSync`. Behavior was correct by luck (utf8 is the default); the code now says what it means.
|
|
6
|
+
- npm search keywords expanded (s7, s8, q revo, saros, robotic vacuum) so the plugin is found by people searching for their model.
|
|
7
|
+
- README: highlighted that one sign-in brings the whole fleet — every robot on the account appears as its own accessory.
|
|
8
|
+
|
|
9
|
+
## 2.9.7
|
|
10
|
+
|
|
11
|
+
- Positioning sharpened across the npm description and README: the entire Roborock lineup is supported (classic S/Q/Saros series through the 2025 Q7 series that no other plugin can control, with automatic adoption of future models), presented as the most complete Roborock plugin for Apple Home. No functional changes.
|
|
12
|
+
|
|
3
13
|
## 2.9.6
|
|
4
14
|
|
|
5
15
|
- **Friendlier plugin description and README.** The npm description shown in the Homebridge UI now leads with what the plugin does for you ("sign in with your Roborock account — start cleans, pick rooms, set suction power, and see live which room the robot is cleaning") instead of protocol terminology. The README's intro, feature matrix and live-room section were rewritten in plain language, with the technical depth preserved in collapsible under-the-hood sections. No functional changes.
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">homebridge-roborock-matter</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<b>
|
|
8
|
+
<b>The most complete way to run your Roborock in Apple Home — every model, every feature, with live "cleaning in the kitchen" room tracking.</b>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -27,13 +27,15 @@
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
Sign in with the same account you already use in the Roborock app — that's the whole setup. Every robot then appears in Apple Home as a real vacuum: start and stop cleans, send it to specific rooms, pick the suction power, check the battery — and watch the Home app tell you **which room it's cleaning right now**. No token extraction, no network tricks, no command line.
|
|
30
|
+
Sign in with the same account you already use in the Roborock app — that's the whole setup. Every robot on your account then appears in Apple Home as a real vacuum: start and stop cleans, send it to specific rooms, pick the suction power, check the battery — and watch the Home app tell you **which room it's cleaning right now**. No token extraction, no network tricks, no command line.
|
|
31
|
+
|
|
32
|
+
This is the most feature-packed, most thoroughly engineered Roborock plugin for Homebridge — and the only one that speaks every generation of Roborock, including the newest.
|
|
31
33
|
|
|
32
34
|
## Why this plugin
|
|
33
35
|
|
|
34
|
-
- 🥇 **The
|
|
36
|
+
- 🥇 **Every Roborock, fully supported.** The entire lineup works — from the classic S-series through the Q- and Saros families to the 2025 Q7 series (Q7 M5 / M5+), which speaks a brand-new protocol that no other Homebridge plugin understands. Brand-new models are adopted automatically with sensible defaults.
|
|
35
37
|
- 📍 **See where it's cleaning — live.** Apple Home shows _"Cleaning — Kitchen"_ with the room the robot is actually inside, updating as it moves from room to room. Works even for cleans started from the robot's button or the Roborock app. No other Homebridge plugin does this.
|
|
36
|
-
- 🧭 **One robot, one tile.**
|
|
38
|
+
- 🧭 **One robot, one tile — and as many robots as you own.** Sign in once and your whole fleet comes along: every vacuum on your account appears as its own clean, native accessory in Apple Home. No clutter of fake fans and helper switches, and rooms appear with the names you gave them in the Roborock app.
|
|
37
39
|
- ⚡ **Fast and reliable.** Commands go directly to the robot over your own network whenever possible, with the Roborock cloud as automatic backup — and built-in diagnostics in the settings if you ever want to look under the hood.
|
|
38
40
|
- 🛡️ **Verified by Homebridge.** Reviewed and endorsed by the Homebridge team. 263 automated tests, zero known vulnerabilities, no analytics, and a startup designed to never crash your Homebridge — even when your Wi-Fi or the Roborock cloud has a bad day.
|
|
39
41
|
|
|
@@ -85,9 +87,11 @@ Enable **Enable Suction-Level Cleaning Modes** (`enableFanPowerCleanModes`) and
|
|
|
85
87
|
|
|
86
88
|
## Supported robots
|
|
87
89
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
90
|
+
**The entire Roborock lineup.** If it runs in the Roborock app, this plugin can control it:
|
|
91
|
+
|
|
92
|
+
- **2025 Q7 series** (`roborock.vacuum.sc05`, Q7 M5 / M5+) — the only Homebridge plugin that supports these at all, including manual-tank mopping with vacuum/mop mode switching.
|
|
93
|
+
- **Classic S-, Q- and Saros-series** — S5 through S8 Pro Ultra, Q5/Q7/Q8/Q Revo families, Saros, and newer.
|
|
94
|
+
- **Future models** are adopted automatically: the plugin reads what each robot says it can do and adapts, so brand-new releases get sensible defaults from day one. If something looks off, [open a model report](https://github.com/mathiashornbek/homebridge-roborock-matter/issues) with a diagnostics export — that's exactly what it's for.
|
|
91
95
|
|
|
92
96
|
## Configuration
|
|
93
97
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-roborock-matter",
|
|
3
|
-
"version": "2.9.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.9.8",
|
|
4
|
+
"description": "The most complete Roborock plugin for Apple Home. Supports the entire Roborock lineup — from the classic S-series to the new 2025 Q7 series that no other plugin can control. Sign in with your Roborock account and get native start/stop, room cleaning, suction levels, battery, and live 'cleaning in the kitchen' room tracking. Verified by Homebridge.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Mathias Hornbek"
|
|
@@ -16,9 +16,14 @@
|
|
|
16
16
|
"homekit",
|
|
17
17
|
"matter",
|
|
18
18
|
"q7",
|
|
19
|
+
"q revo",
|
|
20
|
+
"robotic vacuum",
|
|
19
21
|
"roborock",
|
|
20
22
|
"roborock app",
|
|
21
23
|
"roborock vacuum",
|
|
24
|
+
"s7",
|
|
25
|
+
"s8",
|
|
26
|
+
"saros",
|
|
22
27
|
"vacuum",
|
|
23
28
|
"vacuum cleaner"
|
|
24
29
|
],
|
|
@@ -303,7 +303,7 @@ class Roborock {
|
|
|
303
303
|
}
|
|
304
304
|
const persistPath = this.getPersistPath(id);
|
|
305
305
|
fs.mkdirSync(path.dirname(persistPath), { recursive: true });
|
|
306
|
-
fs.writeFileSync(persistPath, JSON.stringify(state, null, 2, "utf8")
|
|
306
|
+
fs.writeFileSync(persistPath, JSON.stringify(state, null, 2), "utf8");
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
this.states[id] = state;
|
|
@@ -320,7 +320,8 @@ class Roborock {
|
|
|
320
320
|
);
|
|
321
321
|
fs.writeFileSync(
|
|
322
322
|
fallbackPath,
|
|
323
|
-
JSON.stringify(state, null, 2,
|
|
323
|
+
JSON.stringify(state, null, 2),
|
|
324
|
+
"utf8"
|
|
324
325
|
);
|
|
325
326
|
this.states[id] = state;
|
|
326
327
|
this.log.warn(
|
|
@@ -431,7 +432,7 @@ class Roborock {
|
|
|
431
432
|
|
|
432
433
|
try {
|
|
433
434
|
fs.mkdirSync(path.dirname(persistPath), { recursive: true });
|
|
434
|
-
fs.writeFileSync(persistPath, JSON.stringify(state, null, 2, "utf8")
|
|
435
|
+
fs.writeFileSync(persistPath, JSON.stringify(state, null, 2), "utf8");
|
|
435
436
|
this.log.info(
|
|
436
437
|
`Migrated legacy '${id}' state file from '${legacyPath}' to '${persistPath}'.`
|
|
437
438
|
);
|
package/docs/issue-3958-reply.md
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Svar til bwp91 på homebridge#3958 — klar til at poste
|
|
2
|
-
|
|
3
|
-
```markdown
|
|
4
|
-
Thank you — this is exactly the kind of verification I was hoping for, and
|
|
5
|
-
the C → Q correction is a genuinely important update. You're right that my
|
|
6
|
-
analysis was written against the older changes-omitted reading of the
|
|
7
|
-
attribute; I've already corrected the plugin's documentation to reflect the
|
|
8
|
-
Matter 1.4 Q (quieter) quality and your subscription trace
|
|
9
|
-
(mathiashornbek/homebridge-roborock-matter@main, README + docs).
|
|
10
|
-
|
|
11
|
-
Your controller log also explains two things I had observed but couldn't
|
|
12
|
-
fully reconcile: the resync nudge's null → value transition "working" at the
|
|
13
|
-
wire level while Apple still never converged, and `batChargeState` updating
|
|
14
|
-
live throughout. Both are consistent with the reports leaving the bridge and
|
|
15
|
-
Apple simply not applying Q-quality percentage reports in steady state.
|
|
16
|
-
|
|
17
|
-
I'll run the verification you suggested on my production setup (three
|
|
18
|
-
robots: one V1, two B01) — Homebridge with matter.js debug logging through a
|
|
19
|
-
full charge cycle, watching for the subscription flushes carrying
|
|
20
|
-
`batPercentRemaining` — and post the log excerpts here. If I can get
|
|
21
|
-
chip-tool set up on the same network I'll add a subscription trace from that
|
|
22
|
-
side too.
|
|
23
|
-
|
|
24
|
-
Assuming both confirm what your trace already shows, I'll file the Apple
|
|
25
|
-
Feedback report about the controller's handling of Q-quality PowerSource
|
|
26
|
-
attributes and link it here so others can dupe it. Thanks again for digging
|
|
27
|
-
in — happy to test any builds if something changes in the Homebridge Matter
|
|
28
|
-
layer down the road.
|
|
29
|
-
```
|