@homebridge-plugins/homebridge-ecovacs 8.0.0-beta.0 → 8.0.0-beta.2
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 +2 -0
- package/dist/config.d.ts +84 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -0
- package/dist/devices/BaseMatterAccessory.d.ts +4 -3
- package/dist/devices/BaseMatterAccessory.js +30 -5
- package/dist/devices/BaseMatterAccessory.js.map +1 -1
- package/dist/devices/EcovacsRoboticVacuumAccessory.d.ts +11 -9
- package/dist/devices/EcovacsRoboticVacuumAccessory.js +146 -29
- package/dist/devices/EcovacsRoboticVacuumAccessory.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +7 -2
- package/dist/homebridge-ui/server.js +40 -3
- package/dist/platform.d.ts +33 -20
- package/dist/platform.js +47 -39
- package/dist/platform.js.map +1 -1
- package/dist/utils/custom-chars.d.ts +3 -2
- package/dist/utils/custom-chars.js +16 -19
- package/dist/utils/custom-chars.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,8 @@ All notable changes to `@homebridge-plugins/homebridge-ecovacs` will be document
|
|
|
4
4
|
|
|
5
5
|
## v8.0.0 (Pending Release)
|
|
6
6
|
|
|
7
|
+
Many thanks to @tainguyen2512 for working on the Matter and Typescript integrations 🎉
|
|
8
|
+
|
|
7
9
|
### ⚠️ Breaking Changes
|
|
8
10
|
|
|
9
11
|
- Refactor device representation to align with HomeKit vacuum behavior
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { PlatformConfig } from 'homebridge';
|
|
2
|
+
export type AreaType = 'spotArea' | 'customArea';
|
|
3
|
+
export type AirDryingSwitch = 'presetting' | 'yes' | 'no';
|
|
4
|
+
export interface DeviceConfig {
|
|
5
|
+
label?: string;
|
|
6
|
+
deviceId?: string;
|
|
7
|
+
ignoreDevice?: boolean;
|
|
8
|
+
pollInterval?: number;
|
|
9
|
+
hideMotionSensor?: boolean;
|
|
10
|
+
motionDuration?: number;
|
|
11
|
+
lowBattThreshold?: number;
|
|
12
|
+
showMotionLowBatt?: boolean;
|
|
13
|
+
showBattHumidity?: boolean;
|
|
14
|
+
showAirDryingSwitch?: AirDryingSwitch;
|
|
15
|
+
supportTrueDetect?: boolean;
|
|
16
|
+
areaType1?: AreaType;
|
|
17
|
+
spotAreaIDs1?: string;
|
|
18
|
+
customAreaCoordinates1?: string;
|
|
19
|
+
areaNote1?: string;
|
|
20
|
+
areaType2?: AreaType;
|
|
21
|
+
spotAreaIDs2?: string;
|
|
22
|
+
customAreaCoordinates2?: string;
|
|
23
|
+
areaNote2?: string;
|
|
24
|
+
areaType3?: AreaType;
|
|
25
|
+
spotAreaIDs3?: string;
|
|
26
|
+
customAreaCoordinates3?: string;
|
|
27
|
+
areaNote3?: string;
|
|
28
|
+
areaType4?: AreaType;
|
|
29
|
+
spotAreaIDs4?: string;
|
|
30
|
+
customAreaCoordinates4?: string;
|
|
31
|
+
areaNote4?: string;
|
|
32
|
+
areaType5?: AreaType;
|
|
33
|
+
spotAreaIDs5?: string;
|
|
34
|
+
customAreaCoordinates5?: string;
|
|
35
|
+
areaNote5?: string;
|
|
36
|
+
areaType6?: AreaType;
|
|
37
|
+
spotAreaIDs6?: string;
|
|
38
|
+
customAreaCoordinates6?: string;
|
|
39
|
+
areaNote6?: string;
|
|
40
|
+
areaType7?: AreaType;
|
|
41
|
+
spotAreaIDs7?: string;
|
|
42
|
+
customAreaCoordinates7?: string;
|
|
43
|
+
areaNote7?: string;
|
|
44
|
+
areaType8?: AreaType;
|
|
45
|
+
spotAreaIDs8?: string;
|
|
46
|
+
customAreaCoordinates8?: string;
|
|
47
|
+
areaNote8?: string;
|
|
48
|
+
areaType9?: AreaType;
|
|
49
|
+
spotAreaIDs9?: string;
|
|
50
|
+
customAreaCoordinates9?: string;
|
|
51
|
+
areaNote9?: string;
|
|
52
|
+
areaType10?: AreaType;
|
|
53
|
+
spotAreaIDs10?: string;
|
|
54
|
+
customAreaCoordinates10?: string;
|
|
55
|
+
areaNote10?: string;
|
|
56
|
+
areaType11?: AreaType;
|
|
57
|
+
spotAreaIDs11?: string;
|
|
58
|
+
customAreaCoordinates11?: string;
|
|
59
|
+
areaNote11?: string;
|
|
60
|
+
areaType12?: AreaType;
|
|
61
|
+
spotAreaIDs12?: string;
|
|
62
|
+
customAreaCoordinates12?: string;
|
|
63
|
+
areaNote12?: string;
|
|
64
|
+
areaType13?: AreaType;
|
|
65
|
+
spotAreaIDs13?: string;
|
|
66
|
+
customAreaCoordinates13?: string;
|
|
67
|
+
areaNote13?: string;
|
|
68
|
+
areaType14?: AreaType;
|
|
69
|
+
spotAreaIDs14?: string;
|
|
70
|
+
customAreaCoordinates14?: string;
|
|
71
|
+
areaNote14?: string;
|
|
72
|
+
areaType15?: AreaType;
|
|
73
|
+
spotAreaIDs15?: string;
|
|
74
|
+
customAreaCoordinates15?: string;
|
|
75
|
+
areaNote15?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface EcovacsConfig extends PlatformConfig {
|
|
78
|
+
useYeedi?: boolean;
|
|
79
|
+
countryCode: string;
|
|
80
|
+
username: string;
|
|
81
|
+
password: string;
|
|
82
|
+
disableDeviceLogging?: boolean;
|
|
83
|
+
devices?: DeviceConfig[];
|
|
84
|
+
}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":""}
|
|
@@ -40,8 +40,10 @@ export declare abstract class BaseMatterAccessory implements MatterAccessory {
|
|
|
40
40
|
protected readonly log: Logger;
|
|
41
41
|
/** Set to true once the accessory has been registered with the Matter server. */
|
|
42
42
|
private _registered;
|
|
43
|
+
/** Queued state updates received before registration completes. */
|
|
44
|
+
private _pendingUpdates;
|
|
43
45
|
/** Call after api.matter.registerPlatformAccessories() resolves for this accessory. */
|
|
44
|
-
markRegistered(): void
|
|
46
|
+
markRegistered(): Promise<void>;
|
|
45
47
|
protected constructor(api: API, log: Logger, config: BaseMatterAccessoryConfig);
|
|
46
48
|
/**
|
|
47
49
|
* Update cluster state attributes.
|
|
@@ -49,10 +51,9 @@ export declare abstract class BaseMatterAccessory implements MatterAccessory {
|
|
|
49
51
|
protected updateState<K extends keyof ClusterStateMap>(cluster: K, attributes: Partial<ClusterStateMap[K]>, partId?: string): Promise<void>;
|
|
50
52
|
protected updateState(cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
|
|
51
53
|
/**
|
|
52
|
-
* Read current cluster state.
|
|
54
|
+
* Read the current cluster state.
|
|
53
55
|
*/
|
|
54
56
|
protected readState<K extends keyof ClusterStateMap>(cluster: K, partId?: string): Promise<Partial<ClusterStateMap[K]> | undefined>;
|
|
55
|
-
protected readState(cluster: string, partId?: string): Promise<Record<string, unknown> | undefined>;
|
|
56
57
|
protected logInfo(message: string, ...args: unknown[]): void;
|
|
57
58
|
protected logError(message: string, ...args: unknown[]): void;
|
|
58
59
|
protected logDebug(message: string, ...args: unknown[]): void;
|
|
@@ -25,9 +25,22 @@ export class BaseMatterAccessory {
|
|
|
25
25
|
log;
|
|
26
26
|
/** Set to true once the accessory has been registered with the Matter server. */
|
|
27
27
|
_registered = false;
|
|
28
|
+
/** Queued state updates received before registration completes. */
|
|
29
|
+
_pendingUpdates = [];
|
|
28
30
|
/** Call after api.matter.registerPlatformAccessories() resolves for this accessory. */
|
|
29
|
-
markRegistered() {
|
|
31
|
+
async markRegistered() {
|
|
30
32
|
this._registered = true;
|
|
33
|
+
// Flush any state updates that arrived before registration
|
|
34
|
+
for (const pending of this._pendingUpdates) {
|
|
35
|
+
try {
|
|
36
|
+
await this.api.matter.updateAccessoryState(this.UUID, pending.cluster, pending.attributes, pending.partId);
|
|
37
|
+
this.log.debug(`[${this.displayName}] Flushed queued ${pending.cluster} state:`, pending.attributes);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
this.log.error(`[${this.displayName}] Failed to flush queued ${pending.cluster} state: ${err instanceof Error ? err.message : err}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
this._pendingUpdates = [];
|
|
31
44
|
}
|
|
32
45
|
constructor(api, log, config) {
|
|
33
46
|
this.api = api;
|
|
@@ -54,14 +67,26 @@ export class BaseMatterAccessory {
|
|
|
54
67
|
}
|
|
55
68
|
async updateState(cluster, attributes, partId) {
|
|
56
69
|
if (!this._registered) {
|
|
57
|
-
this.log.debug(`[${this.displayName}]
|
|
70
|
+
this.log.debug(`[${this.displayName}] Queuing ${cluster} state update — not yet registered with Matter server.`);
|
|
71
|
+
this._pendingUpdates.push({ cluster, attributes, partId });
|
|
58
72
|
return;
|
|
59
73
|
}
|
|
60
|
-
|
|
61
|
-
|
|
74
|
+
try {
|
|
75
|
+
await this.api.matter.updateAccessoryState(this.UUID, cluster, attributes, partId);
|
|
76
|
+
this.log.debug(`[${this.displayName}] Updated ${cluster} state:`, attributes);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
this.log.error(`[${this.displayName}] Failed to update ${cluster} state: ${err instanceof Error ? err.message : err}`);
|
|
80
|
+
}
|
|
62
81
|
}
|
|
63
82
|
async readState(cluster, partId) {
|
|
64
|
-
|
|
83
|
+
try {
|
|
84
|
+
return await this.api.matter.getAccessoryState(this.UUID, cluster, partId);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
this.log.error(`[${this.displayName}] Failed to read ${cluster} state: ${err instanceof Error ? err.message : err}`);
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
65
90
|
}
|
|
66
91
|
logInfo(message, ...args) {
|
|
67
92
|
this.log.info(`[${this.displayName}] ${message}`, ...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMatterAccessory.js","sourceRoot":"","sources":["../../src/devices/BaseMatterAccessory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH;;;GAGG;AACH,MAAM,OAAgB,mBAAmB;IACvB,IAAI,CAAQ;IACZ,WAAW,CAAQ;IACnB,UAAU,CAAc;IACxB,YAAY,CAAQ;IACpB,YAAY,CAAQ;IACpB,KAAK,CAAQ;IACb,gBAAgB,CAAQ;IACxB,gBAAgB,CAAQ;IACxB,OAAO,CAAyB;IAChC,QAAQ,CAA8B;IACtC,QAAQ,CAA8B;IACtC,KAAK,CAA2B;IAE7B,GAAG,CAAK;IACR,GAAG,CAAQ;IAE9B,iFAAiF;IACzE,WAAW,GAAG,KAAK,CAAA;IAE3B,uFAAuF;IAChF,cAAc;
|
|
1
|
+
{"version":3,"file":"BaseMatterAccessory.js","sourceRoot":"","sources":["../../src/devices/BaseMatterAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,23 +6,23 @@
|
|
|
6
6
|
* Apple Home and other Matter ecosystems.
|
|
7
7
|
*
|
|
8
8
|
* Cluster mapping:
|
|
9
|
-
* rvcRunMode
|
|
9
|
+
* rvcRunMode ← CleanReport events (Idle / Cleaning / Mapping)
|
|
10
10
|
* rvcOperationalState ← ChargeState events (Stopped / Running / Paused /
|
|
11
11
|
* SeekingCharger / Charging / Docked)
|
|
12
|
-
* rvcCleanMode
|
|
13
|
-
* serviceArea
|
|
12
|
+
* rvcCleanMode ← CleanSpeed events (Vacuum / Max Clean)
|
|
13
|
+
* serviceArea ← configured spot-area IDs in plugin config
|
|
14
14
|
*
|
|
15
15
|
* Handler mapping (Matter → Ecovacs commands):
|
|
16
|
-
* rvcRunMode.changeToMode(1=Cleaning)
|
|
17
|
-
* rvcRunMode.changeToMode(0=Idle)
|
|
18
|
-
* rvcOperationalState.pause
|
|
19
|
-
* rvcOperationalState.resume
|
|
20
|
-
* rvcOperationalState.goHome
|
|
16
|
+
* rvcRunMode.changeToMode (1=Cleaning) → run('Clean' | 'Clean_V2')
|
|
17
|
+
* rvcRunMode.changeToMode (0=Idle) → run('Charge')
|
|
18
|
+
* rvcOperationalState.pause → run('Pause')
|
|
19
|
+
* rvcOperationalState.resume → run('Clean' | 'Clean_V2')
|
|
20
|
+
* rvcOperationalState.goHome → run('Charge')
|
|
21
21
|
*/
|
|
22
22
|
import type { API, Logger } from 'homebridge';
|
|
23
23
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
24
24
|
export interface EcovacsDeviceInfo {
|
|
25
|
-
/** Unique device ID (used for UUID generation
|
|
25
|
+
/** Unique device ID (used for UUID generation and serial number). */
|
|
26
26
|
did: string;
|
|
27
27
|
/** Device display name / nickname. */
|
|
28
28
|
nick: string;
|
|
@@ -74,5 +74,7 @@ export declare class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
74
74
|
updateRunMode(mode: number): Promise<void>;
|
|
75
75
|
/** Push the current map/area data into the Matter serviceArea cluster. */
|
|
76
76
|
private flushServiceAreas;
|
|
77
|
+
/** Disconnect the underlying device control (called during plugin shutdown). */
|
|
78
|
+
disconnect(): void;
|
|
77
79
|
private isDeviceReady;
|
|
78
80
|
}
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
* Apple Home and other Matter ecosystems.
|
|
7
7
|
*
|
|
8
8
|
* Cluster mapping:
|
|
9
|
-
* rvcRunMode
|
|
9
|
+
* rvcRunMode ← CleanReport events (Idle / Cleaning / Mapping)
|
|
10
10
|
* rvcOperationalState ← ChargeState events (Stopped / Running / Paused /
|
|
11
11
|
* SeekingCharger / Charging / Docked)
|
|
12
|
-
* rvcCleanMode
|
|
13
|
-
* serviceArea
|
|
12
|
+
* rvcCleanMode ← CleanSpeed events (Vacuum / Max Clean)
|
|
13
|
+
* serviceArea ← configured spot-area IDs in plugin config
|
|
14
14
|
*
|
|
15
15
|
* Handler mapping (Matter → Ecovacs commands):
|
|
16
|
-
* rvcRunMode.changeToMode(1=Cleaning)
|
|
17
|
-
* rvcRunMode.changeToMode(0=Idle)
|
|
18
|
-
* rvcOperationalState.pause
|
|
19
|
-
* rvcOperationalState.resume
|
|
20
|
-
* rvcOperationalState.goHome
|
|
16
|
+
* rvcRunMode.changeToMode (1=Cleaning) → run('Clean' | 'Clean_V2')
|
|
17
|
+
* rvcRunMode.changeToMode (0=Idle) → run('Charge')
|
|
18
|
+
* rvcOperationalState.pause → run('Pause')
|
|
19
|
+
* rvcOperationalState.resume → run('Clean' | 'Clean_V2')
|
|
20
|
+
* rvcOperationalState.goHome → run('Charge')
|
|
21
21
|
*/
|
|
22
22
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
23
23
|
/** Ecovacs clean-state values that indicate the vacuum is actively cleaning. */
|
|
@@ -53,7 +53,8 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
53
53
|
const manufacturer = device.company || 'Ecovacs';
|
|
54
54
|
const rawModel = device.model || 'Deebot';
|
|
55
55
|
// Matter spec: productLabel (defaults to productName/model) must not include vendorName
|
|
56
|
-
const
|
|
56
|
+
const escapedMfr = manufacturer.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
57
|
+
const model = rawModel.replace(new RegExp(escapedMfr, 'i'), '').trim() || rawModel;
|
|
57
58
|
super(api, log, {
|
|
58
59
|
UUID: api.matter.uuid.generate(`ecovacs-${serialNumber}`),
|
|
59
60
|
displayName: device.nick || device.did,
|
|
@@ -75,11 +76,12 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
75
76
|
currentMode: 0,
|
|
76
77
|
},
|
|
77
78
|
// ── Clean Mode ────────────────────────────────────────────────
|
|
79
|
+
// Only Vacuum (standard) and Max Clean (high power) are currently
|
|
80
|
+
// driven by Ecovacs CleanSpeed events. The device does not yet report
|
|
81
|
+
// Mop / Vacuum & Mop modes, so omitted to avoid a stale state.
|
|
78
82
|
rvcCleanMode: {
|
|
79
83
|
supportedModes: [
|
|
80
84
|
{ label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
|
|
81
|
-
{ label: 'Mop', mode: 1, modeTags: [{ value: 16386 }] },
|
|
82
|
-
{ label: 'Vacuum & Mop', mode: 2, modeTags: [{ value: 16385 }, { value: 16386 }] },
|
|
83
85
|
{ label: 'Max Clean', mode: 3, modeTags: [{ value: 7 }, { value: 16385 }] },
|
|
84
86
|
],
|
|
85
87
|
currentMode: 0,
|
|
@@ -97,6 +99,14 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
97
99
|
],
|
|
98
100
|
operationalState: 66, // start docked
|
|
99
101
|
},
|
|
102
|
+
// ── Power Source (battery) ────────────────────────────────────
|
|
103
|
+
powerSource: {
|
|
104
|
+
status: 0, // unknown until first BatteryInfo event
|
|
105
|
+
order: 0,
|
|
106
|
+
description: 'Battery',
|
|
107
|
+
batPercentRemaining: 0, // half-percent units (0-200)
|
|
108
|
+
batChargeLevel: 0, // 0 = OK, 1 = Warning, 2 = Critical
|
|
109
|
+
},
|
|
100
110
|
// ── Service Area (populated from device config if available) ──
|
|
101
111
|
serviceArea: {
|
|
102
112
|
supportedMaps: [],
|
|
@@ -134,10 +144,33 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
134
144
|
*/
|
|
135
145
|
connectControl(control) {
|
|
136
146
|
this.control = control;
|
|
147
|
+
// ── Device ready: fetch initial state ────────────────────────────
|
|
148
|
+
control.on('ready', (event) => {
|
|
149
|
+
if (!event) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
this.logDebug('Device ready — requesting initial state.');
|
|
153
|
+
control.run('GetBatteryState');
|
|
154
|
+
control.run('GetChargeState');
|
|
155
|
+
control.run(this.isV2 ? 'GetCleanState_V2' : 'GetCleanState');
|
|
156
|
+
control.run('GetCleanSpeed');
|
|
157
|
+
control.run('GetMaps');
|
|
158
|
+
});
|
|
137
159
|
control.on('CleanReport', (newVal) => void this.onCleanReport(newVal));
|
|
138
160
|
control.on('ChargeState', (newVal) => void this.onChargeState(newVal));
|
|
139
161
|
control.on('BatteryInfo', (newVal) => void this.onBatteryInfo(newVal));
|
|
140
162
|
control.on('CleanSpeed', (newVal) => void this.onCleanSpeed(newVal));
|
|
163
|
+
// ── Error / offline detection ──────────────────────────────────
|
|
164
|
+
control.on('Error', (err) => {
|
|
165
|
+
if (err === 'NoError: Robot is operational') {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
this.logWarn(`Device error: ${err}`);
|
|
169
|
+
if (err === 'Recipient unavailable') {
|
|
170
|
+
this.logWarn('Device appears to be offline.');
|
|
171
|
+
}
|
|
172
|
+
void this.updateOperationalState(3); // Error
|
|
173
|
+
});
|
|
141
174
|
// ── Service area discovery ──────────────────────────────────────
|
|
142
175
|
control.on('Maps', (data) => {
|
|
143
176
|
if (!data?.maps) {
|
|
@@ -145,7 +178,12 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
145
178
|
}
|
|
146
179
|
// Register each map and request its spot areas
|
|
147
180
|
Object.values(data.maps).forEach((m) => {
|
|
148
|
-
|
|
181
|
+
const mapId = Number(m.mapID);
|
|
182
|
+
if (Number.isNaN(mapId)) {
|
|
183
|
+
this.logWarn(`Ignoring map with invalid ID: ${m.mapID}`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
this.mapsById.set(mapId, m.mapName || `Map ${m.mapID}`);
|
|
149
187
|
control.run('GetSpotAreas', m.mapID);
|
|
150
188
|
});
|
|
151
189
|
});
|
|
@@ -164,6 +202,10 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
164
202
|
}
|
|
165
203
|
const areaId = Number(area.mapSpotAreaID);
|
|
166
204
|
const mapId = Number(area.mapID);
|
|
205
|
+
if (Number.isNaN(areaId) || Number.isNaN(mapId)) {
|
|
206
|
+
this.logWarn(`Ignoring area with invalid IDs: area=${area.mapSpotAreaID}, map=${area.mapID}`);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
167
209
|
const name = area.mapSpotAreaName || `Area ${area.mapSpotAreaID}`;
|
|
168
210
|
this.areasById.set(areaId, { mapId, name });
|
|
169
211
|
void this.flushServiceAreas();
|
|
@@ -177,6 +219,10 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
177
219
|
// ──────────────────────────────────────────────────────────────────────────
|
|
178
220
|
/** Maps Ecovacs CleanReport values to Matter rvcRunMode + rvcOperationalState. */
|
|
179
221
|
async onCleanReport(newVal) {
|
|
222
|
+
if (!newVal) {
|
|
223
|
+
this.logDebug('CleanReport received with empty value, ignoring');
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
180
226
|
const normalized = newVal.toLowerCase().replace(/[^a-z0-9]+/g, '');
|
|
181
227
|
if (CLEANING_STATES.has(normalized)) {
|
|
182
228
|
await this.updateRunMode(1); // Cleaning
|
|
@@ -186,12 +232,16 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
186
232
|
// idle / stop – operational state is driven by ChargeState going forward
|
|
187
233
|
await this.updateRunMode(0); // Idle
|
|
188
234
|
if (this.currentOperationalState === 1) {
|
|
189
|
-
await this.updateOperationalState(0); // Stopped (only if was
|
|
235
|
+
await this.updateOperationalState(0); // Stopped (only if it was running)
|
|
190
236
|
}
|
|
191
237
|
}
|
|
192
238
|
}
|
|
193
239
|
/** Maps Ecovacs ChargeState values to Matter rvcOperationalState. */
|
|
194
240
|
async onChargeState(newVal) {
|
|
241
|
+
if (!newVal) {
|
|
242
|
+
this.logDebug('ChargeState received with empty value, ignoring');
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
195
245
|
switch (newVal.toLowerCase()) {
|
|
196
246
|
case 'returning':
|
|
197
247
|
await this.updateRunMode(0); // Idle
|
|
@@ -209,9 +259,19 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
209
259
|
}
|
|
210
260
|
}
|
|
211
261
|
async onBatteryInfo(newVal) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
262
|
+
if (newVal == null || newVal < 0 || newVal > 100) {
|
|
263
|
+
this.logDebug(`BatteryInfo received with invalid value: ${newVal}`);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
// batPercentRemaining uses half-percent units (0-200)
|
|
267
|
+
const batPercentRemaining = newVal * 2;
|
|
268
|
+
// batChargeLevel: 0 = OK, 1 = Warning, 2 = Critical
|
|
269
|
+
const batChargeLevel = newVal <= 10 ? 2 : newVal <= 20 ? 1 : 0;
|
|
270
|
+
await this.updateState('powerSource', {
|
|
271
|
+
status: 1, // active
|
|
272
|
+
batPercentRemaining,
|
|
273
|
+
batChargeLevel,
|
|
274
|
+
});
|
|
215
275
|
}
|
|
216
276
|
/** Maps Ecovacs CleanSpeed to Matter rvcCleanMode. */
|
|
217
277
|
async onCleanSpeed(newVal) {
|
|
@@ -243,12 +303,19 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
243
303
|
}
|
|
244
304
|
async handleChangeCleanMode(request) {
|
|
245
305
|
this.logInfo(`rvcCleanMode.changeToMode → ${request.newMode}`);
|
|
246
|
-
// Mode 3 = Max Clean → speed 3; others → speed 2 (standard)
|
|
247
306
|
if (!this.isDeviceReady()) {
|
|
248
307
|
return;
|
|
249
308
|
}
|
|
250
|
-
|
|
251
|
-
|
|
309
|
+
switch (request.newMode) {
|
|
310
|
+
case 0: // Vacuum (standard) → speed 2
|
|
311
|
+
this.control.run('SetCleanSpeed', 2);
|
|
312
|
+
break;
|
|
313
|
+
case 3: // Max Clean → speed 3
|
|
314
|
+
this.control.run('SetCleanSpeed', 3);
|
|
315
|
+
break;
|
|
316
|
+
default:
|
|
317
|
+
this.logWarn(`unsupported clean mode: ${request.newMode}`);
|
|
318
|
+
}
|
|
252
319
|
}
|
|
253
320
|
async handlePause() {
|
|
254
321
|
this.logInfo('rvcOperationalState.pause');
|
|
@@ -263,7 +330,7 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
263
330
|
if (!this.isDeviceReady()) {
|
|
264
331
|
return;
|
|
265
332
|
}
|
|
266
|
-
this.control.run(
|
|
333
|
+
this.control.run('Resume');
|
|
267
334
|
await this.updateRunMode(1); // Cleaning
|
|
268
335
|
await this.updateOperationalState(1); // Running
|
|
269
336
|
}
|
|
@@ -277,14 +344,61 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
277
344
|
await this.updateOperationalState(64); // SeekingCharger
|
|
278
345
|
}
|
|
279
346
|
async handleSelectAreas(request) {
|
|
280
|
-
this.logInfo(`serviceArea.selectAreas → ${JSON.stringify(request)}`);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
347
|
+
this.logInfo(`serviceArea.selectAreas → ${JSON.stringify(request.newAreas)}`);
|
|
348
|
+
if (!this.isDeviceReady()) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
// Empty array means clean everywhere (no area constraint)
|
|
352
|
+
if (!request.newAreas || request.newAreas.length === 0) {
|
|
353
|
+
this.logDebug('No areas selected — starting full auto clean.');
|
|
354
|
+
this.control.run(this.isV2 ? 'Clean_V2' : 'Clean');
|
|
355
|
+
await this.updateState('serviceArea', { selectedAreas: [] });
|
|
356
|
+
await this.updateRunMode(1); // Cleaning
|
|
357
|
+
await this.updateOperationalState(1); // Running
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
// Validate that all requested areas are known
|
|
361
|
+
const validAreas = [];
|
|
362
|
+
for (const areaId of request.newAreas) {
|
|
363
|
+
if (this.areasById.has(areaId)) {
|
|
364
|
+
validAreas.push(areaId);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
this.logWarn(`selectAreas: unknown area ID ${areaId}, skipping`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
if (validAreas.length === 0) {
|
|
371
|
+
this.logWarn('selectAreas: no valid areas to clean');
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
// Send SpotArea command with comma-separated area IDs
|
|
375
|
+
const areaCommand = validAreas.join(',');
|
|
376
|
+
this.logDebug(`Sending SpotArea command: ${areaCommand}`);
|
|
377
|
+
if (this.isV2) {
|
|
378
|
+
this.control.run('SpotArea_V2', areaCommand);
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
this.control.run('SpotArea', 'start', areaCommand);
|
|
382
|
+
}
|
|
383
|
+
await this.updateState('serviceArea', { selectedAreas: validAreas });
|
|
384
|
+
await this.updateRunMode(1); // Cleaning
|
|
385
|
+
await this.updateOperationalState(1); // Running
|
|
284
386
|
}
|
|
285
387
|
async handleSkipArea(request) {
|
|
286
|
-
this.logInfo(`serviceArea.skipArea → ${
|
|
287
|
-
|
|
388
|
+
this.logInfo(`serviceArea.skipArea → area ${request.skippedArea}`);
|
|
389
|
+
if (!this.isDeviceReady()) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (!this.areasById.has(request.skippedArea)) {
|
|
393
|
+
this.logWarn(`skipArea: unknown area ID ${request.skippedArea}`);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
// Read the current selected areas and remove the skipped one
|
|
397
|
+
const currentState = await this.readState('serviceArea');
|
|
398
|
+
const currentAreas = currentState?.selectedAreas ?? [];
|
|
399
|
+
const remaining = currentAreas.filter(id => id !== request.skippedArea);
|
|
400
|
+
this.logDebug(`Skipping area ${request.skippedArea}, remaining: [${remaining.join(', ')}]`);
|
|
401
|
+
await this.updateState('serviceArea', { selectedAreas: remaining });
|
|
288
402
|
}
|
|
289
403
|
// ──────────────────────────────────────────────────────────────────────────
|
|
290
404
|
// Public update helpers (callable from the platform for immediate sync)
|
|
@@ -308,12 +422,15 @@ export class EcovacsRoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
308
422
|
}));
|
|
309
423
|
await this.updateState('serviceArea', { supportedMaps, supportedAreas });
|
|
310
424
|
}
|
|
311
|
-
// public async updateBatteryPercentage(_percentage: number): Promise<void> {
|
|
312
|
-
// // powerSource cluster is not yet supported by the Homebridge Matter API
|
|
313
|
-
// }
|
|
314
425
|
// ──────────────────────────────────────────────────────────────────────────
|
|
315
426
|
// Private helpers
|
|
316
427
|
// ──────────────────────────────────────────────────────────────────────────
|
|
428
|
+
/** Disconnect the underlying device control (called during plugin shutdown). */
|
|
429
|
+
disconnect() {
|
|
430
|
+
if (this.control?.is_ready) {
|
|
431
|
+
this.control.disconnect();
|
|
432
|
+
}
|
|
433
|
+
}
|
|
317
434
|
isDeviceReady() {
|
|
318
435
|
if (!this.control) {
|
|
319
436
|
this.logWarn('command ignored – device not yet connected');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EcovacsRoboticVacuumAccessory.js","sourceRoot":"","sources":["../../src/devices/EcovacsRoboticVacuumAccessory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EcovacsRoboticVacuumAccessory.js","sourceRoot":"","sources":["../../src/devices/EcovacsRoboticVacuumAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -285,8 +285,13 @@
|
|
|
285
285
|
document.getElementById("pageSupport").style.display = "none";
|
|
286
286
|
document.getElementById("pageDevices").style.display = "block";
|
|
287
287
|
|
|
288
|
-
|
|
289
|
-
|
|
288
|
+
let useMatter = false;
|
|
289
|
+
try {
|
|
290
|
+
const matterStatus = await homebridge.request("/isMatterActive");
|
|
291
|
+
useMatter = matterStatus && matterStatus.active;
|
|
292
|
+
} catch {
|
|
293
|
+
// Fall back to HAP view if the check fails
|
|
294
|
+
}
|
|
290
295
|
|
|
291
296
|
if (useMatter) {
|
|
292
297
|
// ── Matter mode ────────────────────────────────────────────────
|