homebridge-roborock-vacuum 2.2.8 → 2.2.9
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 +11 -0
- package/README.md +9 -0
- package/dist/device_error_bridge.js +188 -0
- package/dist/device_error_bridge.js.map +1 -0
- package/dist/error_codes.js +49 -0
- package/dist/error_codes.js.map +1 -0
- package/dist/platform.js +36 -6
- package/dist/platform.js.map +1 -1
- package/dist/ui/index.js +89 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/vacuum_matter_accessory.js +103 -53
- package/dist/vacuum_matter_accessory.js.map +1 -1
- package/homebridge-ui/public/index.js +73 -1
- package/homebridge-ui/public/styles.css +13 -0
- package/package.json +1 -1
- package/roborockLib/lib/messageQueueHandler.js +6 -0
- package/roborockLib/lib/roborockAuth.js +51 -5
- package/roborockLib/lib/roborock_mqtt_connector.js +8 -0
- package/roborockLib/roborockAPI.js +220 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.9
|
|
4
|
+
|
|
5
|
+
- **Fix (Matter)**: Rooms are now published on a map (#60). They used to be published without one, and Apple Home showed no rooms. Room selection works as before
|
|
6
|
+
- **Fix (status)**: Vacuum status (state, battery, charging, error, fan and water settings) now comes from the vacuum itself. The plugin polls `get_status` on every refresh and keeps the real-time status broadcasts, instead of relying on the cloud's home-data snapshot, which can lag behind the device. This fixes Matter vacuums that kept an old state, such as "Return to dock" staying available while the vacuum was already docked (#60). HAP accessories read the same status
|
|
7
|
+
- **Fix (Matter)**: The charging state is reported correctly. "Not charging" was sent as Matter's "fully charged" value, and models that do not report `charge_status` now derive it from the charging and charged states
|
|
8
|
+
- **Fix (Matter)**: The start button no longer fails with `Cannot resume in current state` (#60). A Resume command sent while the vacuum is stopped or docked now starts a clean, and honors the room selection
|
|
9
|
+
- **Change (Matter)**: A vacuum that is returning to or docking at its station now reports "Seeking charger" instead of "Running"
|
|
10
|
+
- **New**: Clear device errors from the settings page. Some errors stay on the vacuum until they are marked as resolved in the Roborock app, even after the cause is fixed, such as the dock's "clean water tank empty" after a refill. When a vacuum reports an error, the settings page now shows it in the device list with a **Clear error** button that resolves it, like **Resolved** in the Roborock app. Homebridge must be running
|
|
11
|
+
- **Fix (login)**: Signing in no longer fails with code 3006 ("user agreement version is not up-to-date"). The login sent a fixed user agreement version, but the current version differs per Roborock server and country; it is now fetched before each login, with the old value as the fallback
|
|
12
|
+
- **Fix (connectivity)**: A cloud connection that stays connected but no longer delivers any messages is restarted. This only happens when the connection reports itself as connected, the Roborock cloud is reachable, and several requests in a row got no answer with no other message in between; restarts back off from 30 minutes up to 6 hours while they do not help. A network or Roborock outage does not trigger restarts
|
|
13
|
+
|
|
3
14
|
## 2.2.8
|
|
4
15
|
|
|
5
16
|
- **New**: Project website in English, Traditional Chinese and Japanese: [tasict.github.io/homebridge-roborock-vacuum](https://tasict.github.io/homebridge-roborock-vacuum/). It is now the plugin's homepage in the Homebridge UI
|
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ This plugin is inspired by and adapted from the [ioBroker.roborock](https://gith
|
|
|
24
24
|
- **Roborock scenes as switches** — every enabled scene from the Roborock app that uses the vacuum can be run from Apple Home.
|
|
25
25
|
- **Dock mop-wash switch** on docks that wash the mop. See [Dock mop-wash switch](#dock-mop-wash-switch).
|
|
26
26
|
- **Consumables** (HomeKit) — remaining life of the filter, main brush and side brush, with a change reminder at 5% or less.
|
|
27
|
+
- **Clear errors from the settings page** — an error the vacuum or dock keeps reporting after you fixed the cause can be cleared without the Roborock app. See [Clearing device errors](#clearing-device-errors).
|
|
27
28
|
- **Matter (Beta)** — publish a vacuum as a native Matter robot vacuum, with room cleaning and clean modes. See [Matter support (Beta)](#matter-support-beta).
|
|
28
29
|
- **Works through cloud outages** — local control over the LAN, and a local-only start when the Roborock cloud is unreachable. See [Cloud outages and local-only mode](#cloud-outages-and-local-only-mode).
|
|
29
30
|
- **Current room → MQTT** (optional) — publish the room being cleaned to your MQTT broker. See [Current Room → MQTT](#current-room--mqtt-optional-telemetry).
|
|
@@ -159,6 +160,14 @@ The switch is **stateful**: it turns on whenever the dock is washing the mop —
|
|
|
159
160
|
|
|
160
161
|
The switch's default name comes from the plugin's translation catalog in the language selected by the **Language** option on the settings page (`"language"` in `config.json`; default `en`, 12 languages including `zh-cn` and `zh-tw`). Changing the language only renames accessories on the next restart — accessory identities never change, so **no re-pairing and no room re-selection is needed**. You can also rename the switch freely in your home app.
|
|
161
162
|
|
|
163
|
+
## Clearing device errors
|
|
164
|
+
|
|
165
|
+
Some errors stay on the vacuum until they are marked as resolved in the Roborock app, even after the cause is fixed. A typical one is the dock's "clean water tank empty" after you have refilled the tank. While such an error is latched, Apple Home keeps showing the fault.
|
|
166
|
+
|
|
167
|
+
When a vacuum reports an error, the plugin's settings page shows it next to the vacuum in the device list, with the error code and a short description. Press **Clear error** to resolve it, like tapping **Resolved** in the Roborock app. A dock error is cleared first; press the button again if the vacuum then still reports an error of its own.
|
|
168
|
+
|
|
169
|
+
The settings page asks the running plugin to send the command, so Homebridge must be running. Fix the cause before clearing the error; an error whose cause is still there comes back.
|
|
170
|
+
|
|
162
171
|
## Current Room → MQTT (optional telemetry)
|
|
163
172
|
|
|
164
173
|
The plugin can publish the room a vacuum is currently cleaning to a local MQTT broker, for use in external automations (e.g. lighting that follows the vacuum room to room). This is **telemetry only** — it is not exposed to HomeKit — and is **off by default**. It reuses the `mqtt` dependency the plugin already ships, so it adds nothing when disabled.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Device errors shared between the plugin and its settings page.
|
|
4
|
+
*
|
|
5
|
+
* The settings page runs in the Homebridge UI's own process and cannot reach
|
|
6
|
+
* the vacuums itself — a second cloud MQTT session under the account's
|
|
7
|
+
* client id would disconnect the plugin's. So the files in the Homebridge
|
|
8
|
+
* storage directory carry the exchange instead:
|
|
9
|
+
* - the plugin publishes every bridged vacuum's current errors to
|
|
10
|
+
* DEVICE_ERRORS_FILE;
|
|
11
|
+
* - the page asks for an error to be resolved by writing a request file
|
|
12
|
+
* into RESOLVE_REQUEST_DIR, which the plugin picks up, runs and answers
|
|
13
|
+
* with a result file next to it.
|
|
14
|
+
*/
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.DeviceErrorBridge = exports.RESOLVE_REQUEST_TTL_MS = exports.RESOLVE_REQUEST_DIR = exports.DEVICE_ERRORS_FILE = void 0;
|
|
20
|
+
exports.isValidRequestId = isValidRequestId;
|
|
21
|
+
exports.requestFilePath = requestFilePath;
|
|
22
|
+
exports.resultFilePath = resultFilePath;
|
|
23
|
+
exports.writeJsonAtomic = writeJsonAtomic;
|
|
24
|
+
exports.readJson = readJson;
|
|
25
|
+
const fs_1 = __importDefault(require("fs"));
|
|
26
|
+
const path_1 = __importDefault(require("path"));
|
|
27
|
+
exports.DEVICE_ERRORS_FILE = "roborock.deviceErrors.json";
|
|
28
|
+
exports.RESOLVE_REQUEST_DIR = "roborock.resolveError";
|
|
29
|
+
// A request the plugin has not picked up within this window is dropped, and
|
|
30
|
+
// an unread result is removed after the same time.
|
|
31
|
+
exports.RESOLVE_REQUEST_TTL_MS = 60 * 1000;
|
|
32
|
+
const REQUEST_ID_PATTERN = /^[A-Za-z0-9-]{1,64}$/;
|
|
33
|
+
function isValidRequestId(id) {
|
|
34
|
+
return typeof id === "string" && REQUEST_ID_PATTERN.test(id);
|
|
35
|
+
}
|
|
36
|
+
function requestFilePath(storagePath, id) {
|
|
37
|
+
return path_1.default.join(storagePath, exports.RESOLVE_REQUEST_DIR, `${id}.request.json`);
|
|
38
|
+
}
|
|
39
|
+
function resultFilePath(storagePath, id) {
|
|
40
|
+
return path_1.default.join(storagePath, exports.RESOLVE_REQUEST_DIR, `${id}.result.json`);
|
|
41
|
+
}
|
|
42
|
+
/** Write through a temporary file so readers never see a partial file. */
|
|
43
|
+
function writeJsonAtomic(filePath, value) {
|
|
44
|
+
const tmpPath = `${filePath}.${process.pid}.tmp`;
|
|
45
|
+
fs_1.default.writeFileSync(tmpPath, JSON.stringify(value, null, 2), "utf8");
|
|
46
|
+
fs_1.default.renameSync(tmpPath, filePath);
|
|
47
|
+
}
|
|
48
|
+
function readJson(filePath) {
|
|
49
|
+
try {
|
|
50
|
+
return JSON.parse(fs_1.default.readFileSync(filePath, "utf8"));
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Plugin side: publishes device errors and serves resolve requests. */
|
|
57
|
+
class DeviceErrorBridge {
|
|
58
|
+
constructor(storagePath,
|
|
59
|
+
// Resolves the device's current error; true when a resolve was sent,
|
|
60
|
+
// false when there was nothing to resolve. Throws on failure.
|
|
61
|
+
resolve, log) {
|
|
62
|
+
this.storagePath = storagePath;
|
|
63
|
+
this.resolve = resolve;
|
|
64
|
+
this.log = log;
|
|
65
|
+
this.lastPublished = null;
|
|
66
|
+
this.processing = false;
|
|
67
|
+
}
|
|
68
|
+
/** Publish the current errors; a no-op when nothing changed. */
|
|
69
|
+
publish(devices) {
|
|
70
|
+
const content = JSON.stringify(devices);
|
|
71
|
+
if (content === this.lastPublished) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const file = { updatedAt: Date.now(), devices };
|
|
76
|
+
writeJsonAtomic(path_1.default.join(this.storagePath, exports.DEVICE_ERRORS_FILE), file);
|
|
77
|
+
this.lastPublished = content;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
this.log.debug(`Failed to publish device errors: ${error}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** Poll for resolve requests from the settings page. */
|
|
84
|
+
start(intervalMs = 2000) {
|
|
85
|
+
var _a, _b;
|
|
86
|
+
if (this.timer) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.timer = setInterval(() => {
|
|
90
|
+
void this.processRequests();
|
|
91
|
+
}, intervalMs);
|
|
92
|
+
(_b = (_a = this.timer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
93
|
+
}
|
|
94
|
+
stop() {
|
|
95
|
+
if (this.timer) {
|
|
96
|
+
clearInterval(this.timer);
|
|
97
|
+
this.timer = undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async processRequests() {
|
|
101
|
+
if (this.processing) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this.processing = true;
|
|
105
|
+
try {
|
|
106
|
+
const dir = path_1.default.join(this.storagePath, exports.RESOLVE_REQUEST_DIR);
|
|
107
|
+
let entries;
|
|
108
|
+
try {
|
|
109
|
+
entries = fs_1.default.readdirSync(dir);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
return; // No request has been made yet.
|
|
113
|
+
}
|
|
114
|
+
const now = Date.now();
|
|
115
|
+
for (const entry of entries) {
|
|
116
|
+
const filePath = path_1.default.join(dir, entry);
|
|
117
|
+
if (entry.endsWith(".result.json")) {
|
|
118
|
+
this.removeIfOlderThan(filePath, now - exports.RESOLVE_REQUEST_TTL_MS);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (!entry.endsWith(".request.json")) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const request = readJson(filePath);
|
|
125
|
+
// Claim the request before running it so it is never run twice.
|
|
126
|
+
this.remove(filePath);
|
|
127
|
+
if (!request ||
|
|
128
|
+
!isValidRequestId(request.id) ||
|
|
129
|
+
typeof request.duid !== "string" ||
|
|
130
|
+
typeof request.requestedAt !== "number" ||
|
|
131
|
+
now - request.requestedAt > exports.RESOLVE_REQUEST_TTL_MS) {
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
await this.handleRequest(request);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
this.processing = false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async handleRequest(request) {
|
|
142
|
+
let result;
|
|
143
|
+
try {
|
|
144
|
+
const sent = await this.resolve(request.duid);
|
|
145
|
+
result = {
|
|
146
|
+
id: request.id,
|
|
147
|
+
ok: true,
|
|
148
|
+
message: sent ? "Error resolved." : "There is no error to resolve.",
|
|
149
|
+
finishedAt: Date.now(),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
this.log.warn(`Failed to resolve the error of ${request.duid} requested from the settings page: ${error}`);
|
|
154
|
+
result = {
|
|
155
|
+
id: request.id,
|
|
156
|
+
ok: false,
|
|
157
|
+
message: `Failed to resolve the error: ${error instanceof Error ? error.message : String(error)}`,
|
|
158
|
+
finishedAt: Date.now(),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
writeJsonAtomic(resultFilePath(this.storagePath, request.id), result);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
this.log.debug(`Failed to write the resolve result: ${error}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
remove(filePath) {
|
|
169
|
+
try {
|
|
170
|
+
fs_1.default.unlinkSync(filePath);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
// Already gone.
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
removeIfOlderThan(filePath, cutoff) {
|
|
177
|
+
try {
|
|
178
|
+
if (fs_1.default.statSync(filePath).mtimeMs < cutoff) {
|
|
179
|
+
fs_1.default.unlinkSync(filePath);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
// Already gone.
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
exports.DeviceErrorBridge = DeviceErrorBridge;
|
|
188
|
+
//# sourceMappingURL=device_error_bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device_error_bridge.js","sourceRoot":"","sources":["../src/device_error_bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Labels for Roborock error codes, shared by the Matter operational-error
|
|
4
|
+
* reporting and the settings page's device error display.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ROBOROCK_DOCK_ERROR_LABELS = exports.ROBOROCK_ERROR_LABELS = void 0;
|
|
8
|
+
// Robot error_code values.
|
|
9
|
+
exports.ROBOROCK_ERROR_LABELS = {
|
|
10
|
+
1: "Laser sensor fault",
|
|
11
|
+
2: "Collision sensor fault",
|
|
12
|
+
3: "Wheel floating",
|
|
13
|
+
4: "Cliff sensor fault",
|
|
14
|
+
5: "Main brush blocked",
|
|
15
|
+
6: "Side brush blocked",
|
|
16
|
+
7: "Wheel blocked",
|
|
17
|
+
8: "Device stuck",
|
|
18
|
+
9: "Dust bin missing",
|
|
19
|
+
10: "Filter blocked",
|
|
20
|
+
11: "Magnetic field detected",
|
|
21
|
+
12: "Low battery",
|
|
22
|
+
13: "Charging problem",
|
|
23
|
+
14: "Battery failure",
|
|
24
|
+
15: "Wall sensor fault",
|
|
25
|
+
16: "Uneven surface",
|
|
26
|
+
17: "Side brush failure",
|
|
27
|
+
18: "Suction fan failure",
|
|
28
|
+
19: "Unpowered charging station",
|
|
29
|
+
21: "Laser pressure sensor problem",
|
|
30
|
+
22: "Charge sensor problem",
|
|
31
|
+
23: "Dock problem",
|
|
32
|
+
24: "No-go zone or invisible wall detected",
|
|
33
|
+
254: "Bin full",
|
|
34
|
+
255: "Internal error",
|
|
35
|
+
};
|
|
36
|
+
// Dock dock_error_status values (python-roborock RoborockDockErrorCode).
|
|
37
|
+
exports.ROBOROCK_DOCK_ERROR_LABELS = {
|
|
38
|
+
32: "No dock dustbin or filter",
|
|
39
|
+
33: "Auto-empty dock fan error",
|
|
40
|
+
34: "Auto-empty dock jammed",
|
|
41
|
+
35: "Auto-empty dock voltage error",
|
|
42
|
+
38: "Clean water tank empty",
|
|
43
|
+
39: "Dirty water tank full or missing",
|
|
44
|
+
42: "Maintenance brush jammed",
|
|
45
|
+
44: "Water filter blocked",
|
|
46
|
+
46: "Dustbin not installed",
|
|
47
|
+
53: "Cleaning tank full or blocked",
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=error_codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error_codes.js","sourceRoot":"","sources":["../src/error_codes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2BAA2B;AACd,QAAA,qBAAqB,GAA2B;IAC3D,CAAC,EAAE,oBAAoB;IACvB,CAAC,EAAE,wBAAwB;IAC3B,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,oBAAoB;IACvB,CAAC,EAAE,oBAAoB;IACvB,CAAC,EAAE,oBAAoB;IACvB,CAAC,EAAE,eAAe;IAClB,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,kBAAkB;IACrB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,yBAAyB;IAC7B,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,4BAA4B;IAChC,EAAE,EAAE,+BAA+B;IACnC,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,uCAAuC;IAC3C,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,gBAAgB;CACtB,CAAC;AAEF,yEAAyE;AAC5D,QAAA,0BAA0B,GAA2B;IAChE,EAAE,EAAE,2BAA2B;IAC/B,EAAE,EAAE,2BAA2B;IAC/B,EAAE,EAAE,wBAAwB;IAC5B,EAAE,EAAE,+BAA+B;IACnC,EAAE,EAAE,wBAAwB;IAC5B,EAAE,EAAE,kCAAkC;IACtC,EAAE,EAAE,0BAA0B;IAC9B,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,+BAA+B;CACpC,CAAC"}
|
package/dist/platform.js
CHANGED
|
@@ -10,6 +10,7 @@ const dock_wash_matter_accessory_1 = require("./dock_wash_matter_accessory");
|
|
|
10
10
|
const logger_1 = __importDefault(require("./logger"));
|
|
11
11
|
const settings_1 = require("./settings");
|
|
12
12
|
const crypto_1 = require("./crypto");
|
|
13
|
+
const device_error_bridge_1 = require("./device_error_bridge");
|
|
13
14
|
const protocol_1 = require("./protocol");
|
|
14
15
|
const DEP0040_CODE = "DEP0040";
|
|
15
16
|
let dep0040FilterInstalled = false;
|
|
@@ -45,6 +46,7 @@ const DPS_STATUS_FIELDS = {
|
|
|
45
46
|
"122": "battery",
|
|
46
47
|
"123": "fan_power",
|
|
47
48
|
"124": "water_box_mode",
|
|
49
|
+
"133": "charge_status",
|
|
48
50
|
};
|
|
49
51
|
function translateDpsFields(payload) {
|
|
50
52
|
const dps = payload.dps;
|
|
@@ -121,6 +123,11 @@ class RoborockPlatform {
|
|
|
121
123
|
storagePath: storagePath,
|
|
122
124
|
currentRoomMqtt: this.platformConfig.currentRoomMqtt,
|
|
123
125
|
});
|
|
126
|
+
this.errorBridge = new device_error_bridge_1.DeviceErrorBridge(storagePath, async (duid) => {
|
|
127
|
+
const sent = await this.roborockAPI.resolveError(duid);
|
|
128
|
+
this.publishDeviceErrors();
|
|
129
|
+
return sent;
|
|
130
|
+
}, this.log);
|
|
124
131
|
/**
|
|
125
132
|
* When this event is fired it means Homebridge has restored all cached accessories from disk.
|
|
126
133
|
* Dynamic Platform plugins should only register new accessories after this event was fired,
|
|
@@ -138,6 +145,7 @@ class RoborockPlatform {
|
|
|
138
145
|
});
|
|
139
146
|
this.api.on("shutdown" /* APIEvent.SHUTDOWN */, () => {
|
|
140
147
|
this.log.debug("Shutting down...");
|
|
148
|
+
this.errorBridge.stop();
|
|
141
149
|
if (this.roborockAPI) {
|
|
142
150
|
this.roborockAPI.stopService();
|
|
143
151
|
}
|
|
@@ -232,6 +240,7 @@ class RoborockPlatform {
|
|
|
232
240
|
dockWash.updateFromRoborockData(data);
|
|
233
241
|
}
|
|
234
242
|
}
|
|
243
|
+
self.publishDeviceErrors();
|
|
235
244
|
return;
|
|
236
245
|
}
|
|
237
246
|
for (const vacuum of self.vacuums) {
|
|
@@ -241,12 +250,10 @@ class RoborockPlatform {
|
|
|
241
250
|
// Scenes load asynchronously; sync the Matter scene buttons once
|
|
242
251
|
// they are available (or when they change).
|
|
243
252
|
self.syncMatterScenes();
|
|
244
|
-
//
|
|
245
|
-
//
|
|
246
|
-
// the
|
|
247
|
-
//
|
|
248
|
-
// Mirror it into the Matter vacuums the same way updateDeviceState
|
|
249
|
-
// does for the HAP accessories.
|
|
253
|
+
// Periodic status sync. getVacuumDeviceStatus serves the device's
|
|
254
|
+
// live status (get_status polls and broadcasts) and falls back to
|
|
255
|
+
// the HomeData snapshot. Mirror it into the Matter vacuums the same
|
|
256
|
+
// way updateDeviceState does for the HAP accessories.
|
|
250
257
|
for (const matterVacuum of self.matterVacuums.values()) {
|
|
251
258
|
matterVacuum.refreshFromDevice();
|
|
252
259
|
}
|
|
@@ -254,12 +261,15 @@ class RoborockPlatform {
|
|
|
254
261
|
for (const dockWash of self.matterDockWash.values()) {
|
|
255
262
|
dockWash.refreshFromDevice();
|
|
256
263
|
}
|
|
264
|
+
self.publishDeviceErrors();
|
|
257
265
|
}
|
|
258
266
|
});
|
|
259
267
|
Promise.resolve(self.roborockAPI.startService(function () {
|
|
260
268
|
self.log.info("Service started");
|
|
261
269
|
//call the discoverDevices function
|
|
262
270
|
self.discoverDevices();
|
|
271
|
+
self.publishDeviceErrors();
|
|
272
|
+
self.errorBridge.start();
|
|
263
273
|
})).catch((error) => {
|
|
264
274
|
self.log.error(`Failed to start the Roborock service: ${error}. ` +
|
|
265
275
|
"The plugin will stay idle; fix the configuration or connectivity " +
|
|
@@ -309,6 +319,26 @@ class RoborockPlatform {
|
|
|
309
319
|
// model must start with "roborock.vacuum."
|
|
310
320
|
return typeof model === "string" && model.startsWith("roborock.vacuum.");
|
|
311
321
|
}
|
|
322
|
+
/**
|
|
323
|
+
* Publish every bridged vacuum's current robot and dock error for the
|
|
324
|
+
* settings page. Cheap when nothing changed (the bridge skips the write).
|
|
325
|
+
*/
|
|
326
|
+
publishDeviceErrors() {
|
|
327
|
+
if (!this.roborockAPI.isInited()) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const errorCode = (duid, field) => Number(this.roborockAPI.getVacuumDeviceStatus(duid, field)) || 0;
|
|
331
|
+
const devices = this.roborockAPI
|
|
332
|
+
.getVacuumList()
|
|
333
|
+
.filter((device) => !this.isSkippedDeviceId(device.duid))
|
|
334
|
+
.map((device) => ({
|
|
335
|
+
duid: device.duid,
|
|
336
|
+
name: device.name,
|
|
337
|
+
errorCode: errorCode(device.duid, "error_code"),
|
|
338
|
+
dockErrorCode: errorCode(device.duid, "dock_error_status"),
|
|
339
|
+
}));
|
|
340
|
+
this.errorBridge.publish(devices);
|
|
341
|
+
}
|
|
312
342
|
isSkippedDeviceId(deviceId) {
|
|
313
343
|
return this.resolveProtocol(deviceId) === "skip";
|
|
314
344
|
}
|
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":"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"}
|
package/dist/ui/index.js
CHANGED
|
@@ -8,6 +8,8 @@ const crypto_1 = __importDefault(require("crypto"));
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const crypto_2 = require("../crypto");
|
|
11
|
+
const device_error_bridge_1 = require("../device_error_bridge");
|
|
12
|
+
const error_codes_1 = require("../error_codes");
|
|
11
13
|
const roborockAuth = require("../../roborockLib/lib/roborockAuth");
|
|
12
14
|
const roborockHome = require("../../roborockLib/lib/roborockHome");
|
|
13
15
|
const QRCode = require("qrcode");
|
|
@@ -39,6 +41,8 @@ class RoborockUiServer {
|
|
|
39
41
|
this.homebridgePluginUiServer.onRequest("/auth/login", this.loginWithPassword.bind(this));
|
|
40
42
|
this.homebridgePluginUiServer.onRequest("/auth/logout", this.logout.bind(this));
|
|
41
43
|
this.homebridgePluginUiServer.onRequest("/devices/list", this.listDevices.bind(this));
|
|
44
|
+
this.homebridgePluginUiServer.onRequest("/devices/errors", this.getDeviceErrors.bind(this));
|
|
45
|
+
this.homebridgePluginUiServer.onRequest("/devices/resolve-error", this.resolveDeviceError.bind(this));
|
|
42
46
|
this.homebridgePluginUiServer.onRequest("/matter/status", this.getMatterStatus.bind(this));
|
|
43
47
|
this.homebridgePluginUiServer.onRequest("/matter/pairing", this.getMatterPairings.bind(this));
|
|
44
48
|
this.homebridgePluginUiServer.ready();
|
|
@@ -271,6 +275,7 @@ class RoborockUiServer {
|
|
|
271
275
|
loginResult = await roborockAuth.loginByPassword(loginApi, {
|
|
272
276
|
email,
|
|
273
277
|
password,
|
|
278
|
+
country: region.country,
|
|
274
279
|
k: signData.k,
|
|
275
280
|
s: nonce,
|
|
276
281
|
});
|
|
@@ -356,6 +361,90 @@ class RoborockUiServer {
|
|
|
356
361
|
};
|
|
357
362
|
}
|
|
358
363
|
}
|
|
364
|
+
/**
|
|
365
|
+
* Current device errors as published by the running plugin (see
|
|
366
|
+
* device_error_bridge.ts), with readable labels. Only devices that report
|
|
367
|
+
* an error are returned.
|
|
368
|
+
*/
|
|
369
|
+
async getDeviceErrors() {
|
|
370
|
+
const file = (0, device_error_bridge_1.readJson)(path_1.default.join(this.getStoragePath(), device_error_bridge_1.DEVICE_ERRORS_FILE));
|
|
371
|
+
if (!file || !Array.isArray(file.devices)) {
|
|
372
|
+
return { ok: true, devices: [] };
|
|
373
|
+
}
|
|
374
|
+
const devices = file.devices
|
|
375
|
+
.filter((device) => device.errorCode || device.dockErrorCode)
|
|
376
|
+
.map((device) => ({
|
|
377
|
+
duid: device.duid,
|
|
378
|
+
name: device.name,
|
|
379
|
+
errorCode: device.errorCode,
|
|
380
|
+
errorLabel: device.errorCode
|
|
381
|
+
? error_codes_1.ROBOROCK_ERROR_LABELS[device.errorCode] || "Unknown error"
|
|
382
|
+
: null,
|
|
383
|
+
dockErrorCode: device.dockErrorCode,
|
|
384
|
+
dockErrorLabel: device.dockErrorCode
|
|
385
|
+
? error_codes_1.ROBOROCK_DOCK_ERROR_LABELS[device.dockErrorCode] ||
|
|
386
|
+
"Unknown dock error"
|
|
387
|
+
: null,
|
|
388
|
+
}));
|
|
389
|
+
return { ok: true, devices, updatedAt: file.updatedAt };
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Ask the running plugin to resolve a device's error (like "Resolved" in
|
|
393
|
+
* the Roborock app) and wait for its answer.
|
|
394
|
+
*/
|
|
395
|
+
async resolveDeviceError(payload) {
|
|
396
|
+
if (!payload.duid || typeof payload.duid !== "string") {
|
|
397
|
+
return { ok: false, message: "Missing device id." };
|
|
398
|
+
}
|
|
399
|
+
const storagePath = this.getStoragePath();
|
|
400
|
+
const id = crypto_1.default.randomUUID();
|
|
401
|
+
const request = {
|
|
402
|
+
id,
|
|
403
|
+
duid: payload.duid,
|
|
404
|
+
requestedAt: Date.now(),
|
|
405
|
+
};
|
|
406
|
+
try {
|
|
407
|
+
fs_1.default.mkdirSync(path_1.default.join(storagePath, device_error_bridge_1.RESOLVE_REQUEST_DIR), {
|
|
408
|
+
recursive: true,
|
|
409
|
+
});
|
|
410
|
+
(0, device_error_bridge_1.writeJsonAtomic)((0, device_error_bridge_1.requestFilePath)(storagePath, id), request);
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
return {
|
|
414
|
+
ok: false,
|
|
415
|
+
message: `Could not send the request: ${(error === null || error === void 0 ? void 0 : error.message) || error}`,
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
// The plugin checks for requests every 2 s; resolving then takes a
|
|
419
|
+
// device round-trip or two. Stay inside the page's 15 s request budget.
|
|
420
|
+
const deadline = Date.now() + 12000;
|
|
421
|
+
const resultPath = (0, device_error_bridge_1.resultFilePath)(storagePath, id);
|
|
422
|
+
while (Date.now() < deadline) {
|
|
423
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
424
|
+
const result = (0, device_error_bridge_1.readJson)(resultPath);
|
|
425
|
+
if (result) {
|
|
426
|
+
try {
|
|
427
|
+
fs_1.default.unlinkSync(resultPath);
|
|
428
|
+
}
|
|
429
|
+
catch (error) {
|
|
430
|
+
// The plugin removes stale results as well.
|
|
431
|
+
}
|
|
432
|
+
return { ok: result.ok, message: result.message };
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
// Withdraw the request so a late pickup does not act on it.
|
|
436
|
+
try {
|
|
437
|
+
fs_1.default.unlinkSync((0, device_error_bridge_1.requestFilePath)(storagePath, id));
|
|
438
|
+
}
|
|
439
|
+
catch (error) {
|
|
440
|
+
// Already picked up; the plugin drops the unread result later.
|
|
441
|
+
}
|
|
442
|
+
return {
|
|
443
|
+
ok: false,
|
|
444
|
+
message: "The plugin did not answer in time. Make sure Homebridge is " +
|
|
445
|
+
"running with this version of the plugin, then check the error again.",
|
|
446
|
+
};
|
|
447
|
+
}
|
|
359
448
|
/**
|
|
360
449
|
* Report whether Homebridge Matter support is enabled on the main bridge
|
|
361
450
|
* (read from the Homebridge config.json) and whether the installed
|