homebridge-roborock-matter 3.23.0 → 3.24.0
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 +39 -0
- package/README.md +2 -2
- package/dist/hap_schedule_accessory.js +27 -0
- package/dist/hap_schedule_accessory.js.map +1 -1
- package/package.json +1 -1
- package/roborockLib/lib/b01Q7Adapter.js +31 -4
- package/roborockLib/lib/parseCloudSceneSchedules.js +373 -0
- package/roborockLib/roborockAPI.js +42 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.24.0
|
|
4
|
+
|
|
5
|
+
**The probe from 3.23.0 came back, and it found the schedules.**
|
|
6
|
+
|
|
7
|
+
Issue #22's reporter has three daily schedules in the Roborock app that his Saros 10R (`roborock.vacuum.a144`) insists it does not have — it refuses `get_server_timer` outright with `-10007 "Not FCC robot"`, and answers the legacy `get_timer` with `[]`. Both answers were true. 3.23.0 shipped a read-only diagnostic to find out where the schedules actually live, and his log settles it:
|
|
8
|
+
|
|
9
|
+
- `GET user/devices/<duid>/jobs` → `[]`. That route is out.
|
|
10
|
+
- `GET user/scene/device/<duid>` → **all three schedules**, with cron, timezone, enable flag and the room task.
|
|
11
|
+
|
|
12
|
+
His app screenshots explain the shape. The three entries under **Meine Programme** each carry a clock icon, and in Roborock's data model a named program with a timer _is_ a scene with a `TIMER` trigger. Newer robots keep their schedules as cloud scenes, not as device timers. The device protocol was being asked a question only the cloud can answer.
|
|
13
|
+
|
|
14
|
+
**What this release changes is the diagnostic, not the feature.** Reading these into HomeKit switches needs a route that can enable and disable a scene, and no such route has been measured. Guessing a write endpoint against somebody's live account is how you delete a schedule they depend on, so that half waits for a measurement rather than a hope.
|
|
15
|
+
|
|
16
|
+
What it does change is that the measurement now survives being logged. The probe printed its answer through the diagnostic compactor, which caps every string at 500 characters and every array at 8 entries — the right default for an envelope nobody has mapped, and costly on this one. Measured on the real answer: every one of the three scenes was cut mid-task, so the log recorded _when_ each schedule fires and never _what it runs_, and an account with more than eight schedules would have lost the rest of them silently. The payload is now decoded from the raw answer, before compaction, and reported as facts:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
… — user/scene/device/<duid> carries 3 timer-driven scene(s):
|
|
20
|
+
… "Saugen+" (scene …) — 09:00 on Wed (Europe/Berlin), enabled, runs do_scenes_segments over 7 segment(s)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The constraints from 3.23.0 are unchanged: debug logging only, `GET` only, once per robot per session, and it cannot throw. The decoder is pure, carries neither the duid nor room names out of the payload, and renders a cron only in the shape the app actually produces — anything else is printed verbatim rather than half-translated. A scene with no timer is one of the app's manually run Routines; it is counted in the summary rather than dropped without saying so.
|
|
24
|
+
|
|
25
|
+
## 3.23.1
|
|
26
|
+
|
|
27
|
+
**A Q7 that finished cleaning normally asked its owner to report a fault.**
|
|
28
|
+
|
|
29
|
+
The maintainer's own `roborock.vacuum.sc05` logged six distinct unexplained `error_code`s in a single day — 2110, 2108, 501, 2102, 2103 and the long-familiar 2105 — every one of them while it was running. It then finished its run and docked at 100%. Nothing was wrong with it at any point.
|
|
30
|
+
|
|
31
|
+
Read against python-roborock's own per-family fault tables, two of those six are not faults at all:
|
|
32
|
+
|
|
33
|
+
- **2102** — "Cleaning completed. Returning to the dock." It fires after **every** task.
|
|
34
|
+
- **2100** — "Low battery. Resume cleaning after recharging." The robot announcing normal auto-recharge-and-resume.
|
|
35
|
+
|
|
36
|
+
The plugin already treats the Q10 family's equivalents this way: upstream marks that family's 501 as hardware-confirmed and firing per completed task, and its 502 as a low-battery resume, and both have been informational here since the families were split. The Q7 family was simply never given its own two. The asymmetry ran the other way too — the Q7 has always silenced 407 ("cleaning in progress, scheduled clean ignored") while the Q10 did not, though upstream marks it hardware-confirmed and "lifecycle, not an error" on that family as well. All three are informational now.
|
|
37
|
+
|
|
38
|
+
Apple Home was never affected: no B01 fault number appears in the plugin's v1 error table, so an unrecognised one has always published nothing rather than drawing a fault on a healthy tile. What it reached was the log, which named the code once per run and asked the owner to report the number "if the robot really is in trouble right now" — asked, in these two cases, after a clean that had just completed successfully.
|
|
39
|
+
|
|
40
|
+
**Restraint is the other half of this.** Only a healthy robot's lifecycle notifications are silenced. A scheduled clean that did not run (2003, "Battery level below 20%. Scheduled task canceled") and a clean that ended without reaching its target (2007, 2012) are outcomes an owner may want to know about, so they still surface. And the codes upstream itself cannot explain — 2103, 2105, 2108 and 2110 are bare `fault_NNNN` entries there too — stay exactly as they were. Silencing a number nobody has explained would be a guess, not a translation.
|
|
41
|
+
|
|
3
42
|
## 3.23.0
|
|
4
43
|
|
|
5
44
|
**Where a newer robot actually keeps its schedules: a read-only measurement, on request.**
|
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ This is the most feature-packed, most thoroughly engineered Roborock plugin for
|
|
|
37
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.
|
|
38
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.
|
|
39
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.
|
|
40
|
-
- 🛡️ **Verified by Homebridge.** Reviewed and endorsed by the Homebridge team.
|
|
40
|
+
- 🛡️ **Verified by Homebridge.** Reviewed and endorsed by the Homebridge team. 1812 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.
|
|
41
41
|
|
|
42
42
|
## Features
|
|
43
43
|
|
|
@@ -257,7 +257,7 @@ The complete path — robot → plugin → Homebridge → matter.js store — wa
|
|
|
257
257
|
|
|
258
258
|
## Contributing
|
|
259
259
|
|
|
260
|
-
Model reports, diagnostics exports, and pull requests are very welcome. The codebase ships with
|
|
260
|
+
Model reports, diagnostics exports, and pull requests are very welcome. The codebase ships with 1812 tests (protocol fixtures verified against the [python-roborock](https://github.com/Python-roborock/python-roborock) reference), strict TypeScript checking, and CI across Node 22/24 × Homebridge 1.11/2.x — `npm test` before you push and you're set.
|
|
261
261
|
|
|
262
262
|
## Support the project
|
|
263
263
|
|
|
@@ -9,6 +9,33 @@ const hap_schedule_api_1 = require("./hap_schedule_api");
|
|
|
9
9
|
const timers_1 = require("./timers");
|
|
10
10
|
const VERIFY_DELAY_MS = 3000;
|
|
11
11
|
const WRITE_SUPPRESSION_MS = 5000;
|
|
12
|
+
// WHY FIVE MINUTES, IN THE AUTHOR'S OWN WORDS. Recorded here rather than left
|
|
13
|
+
// in the pull request, because the next person to look at this number will
|
|
14
|
+
// look at this line and not at #23.
|
|
15
|
+
//
|
|
16
|
+
// pponce, who contributed the cache in 3.22.0, settled on 5 minutes for these
|
|
17
|
+
// reasons:
|
|
18
|
+
//
|
|
19
|
+
// * HomeKit reads characteristics far more often than schedules change.
|
|
20
|
+
// * A cloud request per read would multiply traffic across every switch and
|
|
21
|
+
// every vacuum on the account.
|
|
22
|
+
// * A schedule changed in HomeKit does NOT wait for this TTL — the write
|
|
23
|
+
// path performs its own authoritative verification.
|
|
24
|
+
// * So the only staleness this bounds is a change made externally, in the
|
|
25
|
+
// Roborock app.
|
|
26
|
+
// * Five minutes bounds that case while sharply cutting steady-state cloud
|
|
27
|
+
// traffic.
|
|
28
|
+
//
|
|
29
|
+
// The fourth point is the one worth keeping: this TTL is not "how stale may a
|
|
30
|
+
// schedule switch be", it is "how stale may a switch be after a change this
|
|
31
|
+
// bridge had no way to observe". Reasoning about it as a bound on all schedule
|
|
32
|
+
// changes overstates the cost considerably.
|
|
33
|
+
//
|
|
34
|
+
// A user-configurable setting was considered and deliberately not added: the
|
|
35
|
+
// real axis is how much a given user drives schedules from the Roborock app
|
|
36
|
+
// versus from HomeKit, nobody has yet reported the default as wrong, and a
|
|
37
|
+
// setting in this plugin costs four places to keep in sync permanently. This
|
|
38
|
+
// constant can become a setting in an afternoon; a setting cannot be withdrawn.
|
|
12
39
|
const SCHEDULE_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
13
40
|
const SCHEDULE_FAILURE_BACKOFF_STEPS_MS = [
|
|
14
41
|
60 * 1000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hap_schedule_accessory.js","sourceRoot":"","sources":["../src/hap_schedule_accessory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hap_schedule_accessory.js","sourceRoot":"","sources":["../src/hap_schedule_accessory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-roborock-matter",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.24.0",
|
|
4
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": {
|
|
@@ -197,13 +197,40 @@ function v1FanPowerToWind(family) {
|
|
|
197
197
|
// Fault codes that are informational rather than active errors — per family,
|
|
198
198
|
// because the 2 families reuse the same numbers for different things.
|
|
199
199
|
//
|
|
200
|
-
// Q7: 407 = "Cleaning in progress. Scheduled cleanup ignored"
|
|
201
|
-
//
|
|
200
|
+
// Q7: 407 = "Cleaning in progress. Scheduled cleanup ignored", 2100 = "Low
|
|
201
|
+
// battery. Resume cleaning after recharging", 2102 = "Cleaning completed.
|
|
202
|
+
// Returning to the dock".
|
|
203
|
+
// Q10: 400 = scheduled clean starting, 407 = cleaning in progress and a due
|
|
204
|
+
// scheduled clean ignored, 501 = cleaning completed and returning
|
|
202
205
|
// (hardware-confirmed upstream, and it fires after EVERY task, so treating it
|
|
203
206
|
// as a fault would leave a Q10 permanently in error), 502 = low-battery
|
|
204
207
|
// resume.
|
|
205
|
-
|
|
206
|
-
|
|
208
|
+
//
|
|
209
|
+
// EACH FAMILY NEEDS ITS OWN PER-TASK COMPLETION CODE, AND THE Q7 WAS MISSING
|
|
210
|
+
// ITS ONE UNTIL 3.23.1. The 2 sets started from the codes each family had
|
|
211
|
+
// actually been measured emitting, which left them asymmetric in both
|
|
212
|
+
// directions: the Q10 had its after-every-task code (501) while the Q7 did
|
|
213
|
+
// not, and the Q7 had 407 while the Q10 did not — even though upstream marks
|
|
214
|
+
// `YXFault` 407 hardware-confirmed on a physical ss07 and "lifecycle, not an
|
|
215
|
+
// error".
|
|
216
|
+
//
|
|
217
|
+
// The Q7 gap surfaced on the maintainer's own `sc05`, which logged 6 distinct
|
|
218
|
+
// unmapped codes in a single day (2110, 2108, 501, 2102, 2103, 2105), every
|
|
219
|
+
// one of them mid-run, and then finished and docked at 100 % with nothing
|
|
220
|
+
// wrong. Read against python-roborock's `B01Fault`, 2 of the 6 are not faults:
|
|
221
|
+
// 2102 fires after every task, and 2100 is the robot announcing normal
|
|
222
|
+
// auto-recharge-and-resume — the Q7 analogue of the Q10's 502.
|
|
223
|
+
//
|
|
224
|
+
// WHAT IS DELIBERATELY LEFT SURFACING, BECAUSE SILENCE IS NOT FREE. Only a
|
|
225
|
+
// healthy robot's lifecycle notifications belong here. Q7's 2003 ("Battery
|
|
226
|
+
// level below 20%. Scheduled task canceled") and 2007/2012 ("Unable to reach
|
|
227
|
+
// the target. Cleaning ended") are outcomes a user may want to know about — a
|
|
228
|
+
// scheduled clean that did not run is not noise. And the codes upstream has no
|
|
229
|
+
// description for at all (2103, 2105, 2108, 2110 are bare `fault_NNNN` there)
|
|
230
|
+
// stay put: silencing a number nobody has explained would be a guess, not a
|
|
231
|
+
// translation.
|
|
232
|
+
const INFORMATIONAL_Q7_FAULTS = new Set([0, 407, 2100, 2102]);
|
|
233
|
+
const INFORMATIONAL_Q10_FAULTS = new Set([0, 400, 407, 501, 502]);
|
|
207
234
|
|
|
208
235
|
/** @param {string} family */
|
|
209
236
|
function informationalFaults(family) {
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Decode Roborock's `user/scene/device/{duid}` answer into schedule facts.
|
|
5
|
+
*
|
|
6
|
+
* Issue #22, fourth act. The 3.23.0 probe asked two candidate cloud routes
|
|
7
|
+
* where a Saros 10R (`roborock.vacuum.a144`) keeps the three daily schedules
|
|
8
|
+
* its owner demonstrably has, and the answer was unambiguous:
|
|
9
|
+
* `user/devices/{duid}/jobs` returned `[]`, and `user/scene/device/{duid}`
|
|
10
|
+
* returned all three, cron and timezone included.
|
|
11
|
+
*
|
|
12
|
+
* The probe printed that answer through `compactDiagnosticPayload`, which
|
|
13
|
+
* truncates any string at 500 characters and any array at 8 entries. That is
|
|
14
|
+
* right for an envelope nobody has mapped, and it cost us real ground on this
|
|
15
|
+
* one. Measured on the answer we actually received: the cron survived, because
|
|
16
|
+
* `triggers` happens to serialise ahead of `action`, but every one of the three
|
|
17
|
+
* scenes was cut mid-task — the log said when each schedule fires and never
|
|
18
|
+
* what it does. An account with more than eight schedules loses the rest of
|
|
19
|
+
* them outright to the array cap.
|
|
20
|
+
*
|
|
21
|
+
* So the payload is decoded BEFORE it is compacted, from the raw answer, and
|
|
22
|
+
* the facts are logged as facts. The compaction stays as it is: it is the
|
|
23
|
+
* right default for a shape we do not know, and this decoder is what makes the
|
|
24
|
+
* shape we do know legible.
|
|
25
|
+
*
|
|
26
|
+
* This module is deliberately pure: no network, no writes, no state. It
|
|
27
|
+
* describes what the cloud said. Mapping these into HomeKit switches needs a
|
|
28
|
+
* write route that nobody has measured yet, and guessing one against a live
|
|
29
|
+
* account is not a thing this project does.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/** Weekday names in cron's own numbering, where both 0 and 7 mean Sunday. */
|
|
33
|
+
const CRON_WEEKDAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Roborock nests JSON inside JSON: a scene's `param` is a string holding
|
|
37
|
+
* `{triggers, action}`, each trigger's `param` is a string holding the cron,
|
|
38
|
+
* and each action item's `param` is a string holding the device method.
|
|
39
|
+
*
|
|
40
|
+
* A field that is already an object is returned as-is, because two firmware
|
|
41
|
+
* generations have disagreed about that before and neither shape is wrong.
|
|
42
|
+
*
|
|
43
|
+
* @param {unknown} value string of JSON, or an already-parsed object
|
|
44
|
+
* @returns {Record<string, unknown> | null} the object, or null when it is neither
|
|
45
|
+
*/
|
|
46
|
+
function parseNestedJson(value) {
|
|
47
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
48
|
+
return /** @type {Record<string, unknown>} */ (value);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
const parsed = JSON.parse(value);
|
|
57
|
+
return parsed && typeof parsed === "object" && !Array.isArray(parsed)
|
|
58
|
+
? parsed
|
|
59
|
+
: null;
|
|
60
|
+
} catch {
|
|
61
|
+
// A payload we cannot parse is a measurement we do not have. It is never
|
|
62
|
+
// a reason to fail the poll this rides on.
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Expand one cron day-of-week field into weekday names.
|
|
69
|
+
*
|
|
70
|
+
* Supports the two forms Roborock's app actually emits — a single day and a
|
|
71
|
+
* comma list — plus simple ranges, and gives up on everything else rather
|
|
72
|
+
* than inventing a reading. `*` means every day.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} field cron day-of-week field
|
|
75
|
+
* @returns {string|null} human weekday list, or null when unrecognised
|
|
76
|
+
*/
|
|
77
|
+
function describeCronWeekdays(field) {
|
|
78
|
+
if (field === "*") return "daily";
|
|
79
|
+
|
|
80
|
+
/** @type {number[]} */
|
|
81
|
+
const days = [];
|
|
82
|
+
for (const part of field.split(",")) {
|
|
83
|
+
const range = part.match(/^(\d)-(\d)$/);
|
|
84
|
+
if (range) {
|
|
85
|
+
const from = Number(range[1]);
|
|
86
|
+
const to = Number(range[2]);
|
|
87
|
+
if (from > to) return null;
|
|
88
|
+
for (let day = from; day <= to; day += 1) days.push(day);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!/^\d$/.test(part)) return null;
|
|
93
|
+
days.push(Number(part));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (days.length === 0) return null;
|
|
97
|
+
|
|
98
|
+
const names = days.map((day) => CRON_WEEKDAYS[day === 7 ? 0 : day]);
|
|
99
|
+
if (names.some((name) => name === undefined)) return null;
|
|
100
|
+
|
|
101
|
+
return [...new Set(names)].join(", ");
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Render a cron expression as a time and a set of weekdays.
|
|
106
|
+
*
|
|
107
|
+
* Only the shape Roborock's schedule screen produces is rendered — a fixed
|
|
108
|
+
* minute and hour on given weekdays. Anything else (step values, a day of
|
|
109
|
+
* month, a month) returns null, and the caller falls back to printing the
|
|
110
|
+
* cron verbatim. A half-understood rendering would be worse than the raw
|
|
111
|
+
* string, because it reads as if we understood it.
|
|
112
|
+
*
|
|
113
|
+
* @param {unknown} cron cron expression from the trigger payload
|
|
114
|
+
* @returns {string|null} e.g. `09:00 on Wed`, or null when not rendered
|
|
115
|
+
*/
|
|
116
|
+
function describeCron(cron) {
|
|
117
|
+
if (typeof cron !== "string") return null;
|
|
118
|
+
|
|
119
|
+
const fields = cron.trim().split(/\s+/);
|
|
120
|
+
if (fields.length !== 5) return null;
|
|
121
|
+
|
|
122
|
+
const [minute, hour, dayOfMonth, month, dayOfWeek] = fields;
|
|
123
|
+
if (dayOfMonth !== "*" || month !== "*") return null;
|
|
124
|
+
if (!/^\d{1,2}$/.test(minute) || !/^\d{1,2}$/.test(hour)) return null;
|
|
125
|
+
|
|
126
|
+
const minuteValue = Number(minute);
|
|
127
|
+
const hourValue = Number(hour);
|
|
128
|
+
if (minuteValue > 59 || hourValue > 23) return null;
|
|
129
|
+
|
|
130
|
+
const weekdays = describeCronWeekdays(dayOfWeek);
|
|
131
|
+
if (!weekdays) return null;
|
|
132
|
+
|
|
133
|
+
const time = `${String(hourValue).padStart(2, "0")}:${String(
|
|
134
|
+
minuteValue
|
|
135
|
+
).padStart(2, "0")}`;
|
|
136
|
+
|
|
137
|
+
return weekdays === "daily" ? `${time} daily` : `${time} on ${weekdays}`;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @typedef {object} CloudSceneTrigger
|
|
142
|
+
* @property {string|null} id trigger id as the cloud reported it
|
|
143
|
+
* @property {string} type trigger type, e.g. `TIMER`
|
|
144
|
+
* @property {string|null} cron cron expression, when the trigger carries one
|
|
145
|
+
* @property {string|null} schedule human rendering of `cron`, when recognised
|
|
146
|
+
* @property {boolean} enabled whether the trigger itself is switched on
|
|
147
|
+
* @property {boolean} repeated whether the cloud marked it as repeating
|
|
148
|
+
* @property {string|null} timeZoneId IANA zone the cron is evaluated in
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @typedef {object} CloudSceneAction
|
|
153
|
+
* @property {string|null} method device method the scene runs
|
|
154
|
+
* @property {number|null} segmentCount rooms in the task, when countable
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @typedef {object} CloudSceneSchedule
|
|
159
|
+
* @property {string} id scene id
|
|
160
|
+
* @property {string|null} name scene name as shown in the app
|
|
161
|
+
* @property {string|null} type scene type, e.g. `WORKFLOW`
|
|
162
|
+
* @property {boolean} enabled scene-level enable flag
|
|
163
|
+
* @property {boolean} active scene enabled AND at least one timer enabled
|
|
164
|
+
* @property {CloudSceneTrigger[]} triggers timer triggers on the scene
|
|
165
|
+
* @property {CloudSceneAction[]} actions device actions the scene performs
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Read one trigger.
|
|
170
|
+
*
|
|
171
|
+
* @param {unknown} raw trigger entry from the scene payload
|
|
172
|
+
* @returns {CloudSceneTrigger|null} the trigger, or null when unreadable
|
|
173
|
+
*/
|
|
174
|
+
function parseTrigger(raw) {
|
|
175
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
|
|
176
|
+
|
|
177
|
+
const entry = /** @type {Record<string, unknown>} */ (raw);
|
|
178
|
+
const type =
|
|
179
|
+
typeof entry.type === "string" && entry.type
|
|
180
|
+
? entry.type
|
|
181
|
+
: typeof entry.name === "string" && entry.name
|
|
182
|
+
? entry.name
|
|
183
|
+
: null;
|
|
184
|
+
if (!type) return null;
|
|
185
|
+
|
|
186
|
+
const param = parseNestedJson(entry.param) ?? {};
|
|
187
|
+
const cron = typeof param.cron === "string" ? param.cron.trim() : null;
|
|
188
|
+
|
|
189
|
+
return {
|
|
190
|
+
id: entry.id === undefined || entry.id === null ? null : String(entry.id),
|
|
191
|
+
type,
|
|
192
|
+
cron: cron || null,
|
|
193
|
+
schedule: describeCron(cron),
|
|
194
|
+
// The cloud omits `enabled` on some entries; a trigger that exists and
|
|
195
|
+
// says nothing is on, which is what the app shows.
|
|
196
|
+
enabled: param.enabled !== false,
|
|
197
|
+
repeated: param.repeated === true,
|
|
198
|
+
timeZoneId:
|
|
199
|
+
typeof param.timeZoneId === "string" && param.timeZoneId
|
|
200
|
+
? param.timeZoneId
|
|
201
|
+
: null,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Read the device methods a scene performs, so a decoded line says what the
|
|
207
|
+
* schedule actually does and not merely when it fires.
|
|
208
|
+
*
|
|
209
|
+
* Room names and `entityId` are deliberately not carried out of here: the
|
|
210
|
+
* duid is already redacted everywhere else the plugin logs, and the room
|
|
211
|
+
* names are printed by the room map at startup. A count is what is missing.
|
|
212
|
+
*
|
|
213
|
+
* @param {Record<string, unknown>} sceneParam parsed scene `param`
|
|
214
|
+
* @returns {CloudSceneAction[]} one entry per device command
|
|
215
|
+
*/
|
|
216
|
+
function parseActions(sceneParam) {
|
|
217
|
+
const action = parseNestedJson(sceneParam.action);
|
|
218
|
+
const items = action && Array.isArray(action.items) ? action.items : [];
|
|
219
|
+
|
|
220
|
+
/** @type {CloudSceneAction[]} */
|
|
221
|
+
const actions = [];
|
|
222
|
+
for (const item of items) {
|
|
223
|
+
if (!item || typeof item !== "object" || Array.isArray(item)) continue;
|
|
224
|
+
|
|
225
|
+
const param = parseNestedJson(
|
|
226
|
+
/** @type {Record<string, unknown>} */ (item).param
|
|
227
|
+
);
|
|
228
|
+
if (!param) continue;
|
|
229
|
+
|
|
230
|
+
const method = typeof param.method === "string" ? param.method : null;
|
|
231
|
+
if (!method) continue;
|
|
232
|
+
|
|
233
|
+
let segmentCount = null;
|
|
234
|
+
const params = parseNestedJson(param.params);
|
|
235
|
+
const data = params && Array.isArray(params.data) ? params.data : null;
|
|
236
|
+
if (data) {
|
|
237
|
+
let counted = 0;
|
|
238
|
+
let sawSegments = false;
|
|
239
|
+
for (const entry of data) {
|
|
240
|
+
if (!entry || typeof entry !== "object") continue;
|
|
241
|
+
const segs = /** @type {Record<string, unknown>} */ (entry).segs;
|
|
242
|
+
if (Array.isArray(segs)) {
|
|
243
|
+
sawSegments = true;
|
|
244
|
+
counted += segs.length;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (sawSegments) segmentCount = counted;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
actions.push({ method, segmentCount });
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return actions;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Decode the scenes route into the timer-driven ones.
|
|
258
|
+
*
|
|
259
|
+
* Scenes without a timer trigger are the app's manually run Routines. They
|
|
260
|
+
* are real, and they are not schedules, so they are left out here and counted
|
|
261
|
+
* separately by {@link summariseCloudSceneSchedules} rather than dropped
|
|
262
|
+
* silently.
|
|
263
|
+
*
|
|
264
|
+
* Never throws: this decodes a diagnostic that rides on a live poll.
|
|
265
|
+
*
|
|
266
|
+
* @param {unknown} payload unwrapped answer from `user/scene/device/{duid}`
|
|
267
|
+
* @returns {CloudSceneSchedule[]} timer-driven scenes, in cloud order
|
|
268
|
+
*/
|
|
269
|
+
function parseCloudSceneSchedules(payload) {
|
|
270
|
+
if (!Array.isArray(payload)) return [];
|
|
271
|
+
|
|
272
|
+
/** @type {CloudSceneSchedule[]} */
|
|
273
|
+
const schedules = [];
|
|
274
|
+
|
|
275
|
+
for (const raw of payload) {
|
|
276
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) continue;
|
|
277
|
+
|
|
278
|
+
const scene = /** @type {Record<string, unknown>} */ (raw);
|
|
279
|
+
if (scene.id === undefined || scene.id === null) continue;
|
|
280
|
+
|
|
281
|
+
const sceneParam = parseNestedJson(scene.param);
|
|
282
|
+
if (!sceneParam) continue;
|
|
283
|
+
|
|
284
|
+
const rawTriggers = Array.isArray(sceneParam.triggers)
|
|
285
|
+
? sceneParam.triggers
|
|
286
|
+
: [];
|
|
287
|
+
|
|
288
|
+
const triggers = rawTriggers.map(parseTrigger).filter(
|
|
289
|
+
/** @returns {trigger is CloudSceneTrigger} */
|
|
290
|
+
(trigger) => trigger !== null && trigger.cron !== null
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
if (triggers.length === 0) continue;
|
|
294
|
+
|
|
295
|
+
const enabled = scene.enabled !== false;
|
|
296
|
+
|
|
297
|
+
schedules.push({
|
|
298
|
+
id: String(scene.id),
|
|
299
|
+
name: typeof scene.name === "string" && scene.name ? scene.name : null,
|
|
300
|
+
type: typeof scene.type === "string" && scene.type ? scene.type : null,
|
|
301
|
+
enabled,
|
|
302
|
+
active: enabled && triggers.some((trigger) => trigger.enabled),
|
|
303
|
+
triggers,
|
|
304
|
+
actions: parseActions(sceneParam),
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
return schedules;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Render one decoded schedule as a single log line.
|
|
313
|
+
*
|
|
314
|
+
* @param {CloudSceneSchedule} schedule decoded scene
|
|
315
|
+
* @returns {string} one line, safe to log
|
|
316
|
+
*/
|
|
317
|
+
function describeCloudSceneSchedule(schedule) {
|
|
318
|
+
const parts = [];
|
|
319
|
+
|
|
320
|
+
for (const trigger of schedule.triggers) {
|
|
321
|
+
const when = trigger.schedule ?? `cron ${trigger.cron}`;
|
|
322
|
+
const zone = trigger.timeZoneId ? ` (${trigger.timeZoneId})` : "";
|
|
323
|
+
parts.push(`${when}${zone}${trigger.enabled ? "" : " [timer off]"}`);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
const actions = schedule.actions
|
|
327
|
+
.map((action) =>
|
|
328
|
+
action.segmentCount === null
|
|
329
|
+
? action.method
|
|
330
|
+
: `${action.method} over ${action.segmentCount} segment(s)`
|
|
331
|
+
)
|
|
332
|
+
.join(", ");
|
|
333
|
+
|
|
334
|
+
const name = schedule.name ? `"${schedule.name}"` : "unnamed";
|
|
335
|
+
const state = schedule.active
|
|
336
|
+
? "enabled"
|
|
337
|
+
: schedule.enabled
|
|
338
|
+
? "disabled at the timer"
|
|
339
|
+
: "disabled";
|
|
340
|
+
|
|
341
|
+
return `${name} (scene ${schedule.id}) — ${parts.join("; ")}, ${state}${
|
|
342
|
+
actions ? `, runs ${actions}` : ""
|
|
343
|
+
}`;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Summarise the whole answer, headline first.
|
|
348
|
+
*
|
|
349
|
+
* Returns an empty array when the route carried no timer-driven scene, so a
|
|
350
|
+
* caller can stay silent rather than announce an absence.
|
|
351
|
+
*
|
|
352
|
+
* @param {unknown} payload unwrapped answer from `user/scene/device/{duid}`
|
|
353
|
+
* @returns {string[]} log lines, or an empty array when there is nothing to say
|
|
354
|
+
*/
|
|
355
|
+
function summariseCloudSceneSchedules(payload) {
|
|
356
|
+
const schedules = parseCloudSceneSchedules(payload);
|
|
357
|
+
if (schedules.length === 0) return [];
|
|
358
|
+
|
|
359
|
+
const total = Array.isArray(payload) ? payload.length : schedules.length;
|
|
360
|
+
const headline =
|
|
361
|
+
total === schedules.length
|
|
362
|
+
? `${schedules.length} timer-driven scene(s)`
|
|
363
|
+
: `${schedules.length} of ${total} scene(s) are timer-driven`;
|
|
364
|
+
|
|
365
|
+
return [headline, ...schedules.map(describeCloudSceneSchedule)];
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
module.exports = {
|
|
369
|
+
parseCloudSceneSchedules,
|
|
370
|
+
describeCloudSceneSchedule,
|
|
371
|
+
summariseCloudSceneSchedules,
|
|
372
|
+
describeCron,
|
|
373
|
+
};
|
|
@@ -21,6 +21,9 @@ const messageQueueHandler =
|
|
|
21
21
|
require("./lib/messageQueueHandler").messageQueueHandler;
|
|
22
22
|
const roborockCrypto = require("./lib/roborockCrypto");
|
|
23
23
|
const { METHOD_REFUSED_CODE } = require("./lib/describeReplyRefusal");
|
|
24
|
+
const {
|
|
25
|
+
summariseCloudSceneSchedules,
|
|
26
|
+
} = require("./lib/parseCloudSceneSchedules");
|
|
24
27
|
const b01Q7Adapter = require("./lib/b01Q7Adapter");
|
|
25
28
|
|
|
26
29
|
// v1 states in which the robot is actively doing something and state
|
|
@@ -4568,6 +4571,25 @@ class Roborock {
|
|
|
4568
4571
|
* @returns {Promise<Record<string, unknown> | undefined>} Per-route outcome,
|
|
4569
4572
|
* or `undefined` when the probe did not run.
|
|
4570
4573
|
*/
|
|
4574
|
+
/**
|
|
4575
|
+
* Turn a cloud schedule answer into legible lines, or nothing.
|
|
4576
|
+
*
|
|
4577
|
+
* Wrapped because it decorates a diagnostic that rides on a live poll: a
|
|
4578
|
+
* decoder that threw would cost more than the reading it produces. The
|
|
4579
|
+
* decoder itself is pure and already declines shapes it does not recognise,
|
|
4580
|
+
* so an unrecognised route simply yields no extra lines.
|
|
4581
|
+
*
|
|
4582
|
+
* @param {unknown} payload unwrapped route answer
|
|
4583
|
+
* @returns {string[]} headline plus one line per schedule, or an empty array
|
|
4584
|
+
*/
|
|
4585
|
+
describeCloudScheduleAnswer(payload) {
|
|
4586
|
+
try {
|
|
4587
|
+
return summariseCloudSceneSchedules(payload);
|
|
4588
|
+
} catch {
|
|
4589
|
+
return [];
|
|
4590
|
+
}
|
|
4591
|
+
}
|
|
4592
|
+
|
|
4571
4593
|
async probeCloudScheduleRoutes(duid) {
|
|
4572
4594
|
if (!duid || !this.config?.debug || !this.api) {
|
|
4573
4595
|
return undefined;
|
|
@@ -4607,10 +4629,18 @@ class Roborock {
|
|
|
4607
4629
|
? response?.data
|
|
4608
4630
|
: response.data.result;
|
|
4609
4631
|
|
|
4632
|
+
// Decode BEFORE compacting. `compactDiagnosticPayload` caps strings at
|
|
4633
|
+
// 500 characters and arrays at 8 entries; measured on the real scenes
|
|
4634
|
+
// answer, that cut every schedule mid-task and would drop a ninth
|
|
4635
|
+
// schedule entirely. The raw answer is the only place the measurement
|
|
4636
|
+
// is intact.
|
|
4637
|
+
const decoded = this.describeCloudScheduleAnswer(payload);
|
|
4638
|
+
|
|
4610
4639
|
results[route.label] = {
|
|
4611
4640
|
path: route.path,
|
|
4612
4641
|
ok: true,
|
|
4613
4642
|
response: payload,
|
|
4643
|
+
schedules: decoded.length > 0 ? decoded : undefined,
|
|
4614
4644
|
};
|
|
4615
4645
|
|
|
4616
4646
|
this.log.debug(
|
|
@@ -4618,6 +4648,18 @@ class Roborock {
|
|
|
4618
4648
|
this.compactDiagnosticPayload(payload)
|
|
4619
4649
|
)}`
|
|
4620
4650
|
);
|
|
4651
|
+
|
|
4652
|
+
if (decoded.length > 0) {
|
|
4653
|
+
const [headline, ...entries] = decoded;
|
|
4654
|
+
this.log.debug(
|
|
4655
|
+
`Roborock cloud schedule probe for ${this.describeDevice(duid)} — ${route.path} carries ${headline}:`
|
|
4656
|
+
);
|
|
4657
|
+
for (const entry of entries) {
|
|
4658
|
+
this.log.debug(
|
|
4659
|
+
`Roborock cloud schedule probe for ${this.describeDevice(duid)} — ${entry}`
|
|
4660
|
+
);
|
|
4661
|
+
}
|
|
4662
|
+
}
|
|
4621
4663
|
} catch (error) {
|
|
4622
4664
|
const status = error?.response?.status;
|
|
4623
4665
|
const message =
|