@switchbot/homebridge-switchbot 5.0.0-beta.51 → 5.0.0-beta.53

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.
@@ -1,67 +1,93 @@
1
- /* global NodeJS */
1
+ //
2
2
  import { BaseMatterAccessory } from './BaseMatterAccessory.js';
3
+ function detectModelFromContext(ctx) {
4
+ const t = ctx?.deviceType?.trim();
5
+ switch (t) {
6
+ case 'Robot Vacuum Cleaner S1':
7
+ return 'S1';
8
+ case 'Robot Vacuum Cleaner S1 Plus':
9
+ return 'S1 Plus';
10
+ case 'Robot Vacuum Cleaner S1 Pro':
11
+ return 'S1 Pro';
12
+ case 'Robot Vacuum Cleaner S1 Mini':
13
+ return 'S1 Mini';
14
+ case 'WoSweeper':
15
+ return 'WoSweeper';
16
+ case 'WoSweeperMini':
17
+ return 'WoSweeperMini';
18
+ case 'K10+':
19
+ return 'K10+';
20
+ case 'K10+ Pro':
21
+ return 'K10+ Pro';
22
+ case 'Robot Vacuum Cleaner K10+ Pro Combo':
23
+ case 'K10+ Pro Combo':
24
+ return 'K10+ Pro Combo';
25
+ case 'Robot Vacuum Cleaner S10':
26
+ return 'S10';
27
+ case 'Robot Vacuum Cleaner S20':
28
+ case 'S20':
29
+ return 'S20';
30
+ case 'Robot Vacuum Cleaner K11+':
31
+ case 'K11+':
32
+ return 'K11+';
33
+ case 'Robot Vacuum Cleaner K20 Plus Pro':
34
+ case 'K20+ Pro':
35
+ return 'K20+ Pro';
36
+ default:
37
+ return undefined;
38
+ }
39
+ }
40
+ function capabilitiesFor(model) {
41
+ // Defaults: conservative basic vac
42
+ if (!model) {
43
+ return { pause: false, resume: false, cleanAction: 'vacuum-only', suctionKind: 'powLevel-0-3', waterLevel: false };
44
+ }
45
+ // Basic vacuum models (S1 family, WoSweeper family, K10 family without Combo)
46
+ if (model === 'S1' || model === 'S1 Plus' || model === 'S1 Pro' || model === 'S1 Mini'
47
+ || model === 'WoSweeper' || model === 'WoSweeperMini'
48
+ || model === 'K10+' || model === 'K10+ Pro') {
49
+ return { pause: false, resume: false, cleanAction: 'vacuum-only', suctionKind: 'powLevel-0-3', waterLevel: false };
50
+ }
51
+ // K10+ Pro Combo: vacuum or mop, fanLevel, no waterLevel
52
+ if (model === 'K10+ Pro Combo') {
53
+ return { pause: true, resume: false, cleanAction: 'vacuum-or-mop', suctionKind: 'fanLevel-1-4', waterLevel: false };
54
+ }
55
+ // S10/S20: vacuum or vacuum+mop combo, fanLevel, waterLevel, plus advanced commands
56
+ if (model === 'S10' || model === 'S20') {
57
+ return {
58
+ pause: true,
59
+ resume: false,
60
+ cleanAction: 'vacuum-or-vacmop',
61
+ suctionKind: 'fanLevel-1-4',
62
+ waterLevel: true,
63
+ advancedCommands: {
64
+ setVolume: true,
65
+ selfClean: true,
66
+ addWaterForHumi: true,
67
+ },
68
+ };
69
+ }
70
+ // K11+/K20+ Pro: vacuum or mop, fanLevel, waterLevel, volume control
71
+ return {
72
+ pause: true,
73
+ resume: false,
74
+ cleanAction: 'vacuum-or-mop',
75
+ suctionKind: 'fanLevel-1-4',
76
+ waterLevel: true,
77
+ advancedCommands: {
78
+ setVolume: true,
79
+ },
80
+ };
81
+ }
3
82
  export class RoboticVacuumAccessory extends BaseMatterAccessory {
4
- activeTimers = [];
83
+ // Track current high-level preferences that affect OpenAPI payloads
84
+ currentCleanAction = 'vacuum';
85
+ currentFanLevel = 2;
86
+ capabilities;
5
87
  constructor(api, log, opts) {
6
88
  const serialNumber = opts?.serialNumber ?? 'VACUUM-001';
7
- const clusters = opts?.clusters ?? {
8
- rvcRunMode: {
9
- supportedModes: [
10
- { label: 'Idle', mode: 0, modeTags: [{ value: 16384 }] },
11
- { label: 'Cleaning', mode: 1, modeTags: [{ value: 16385 }] },
12
- { label: 'Mapping', mode: 2, modeTags: [{ value: 16386 }] },
13
- ],
14
- currentMode: 0,
15
- },
16
- rvcCleanMode: {
17
- supportedModes: [
18
- { label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
19
- { label: 'Mop', mode: 1, modeTags: [{ value: 16386 }] },
20
- { label: 'Vacuum & Mop', mode: 2, modeTags: [{ value: 16385 }, { value: 16386 }] },
21
- { label: 'Deep Clean', mode: 3, modeTags: [{ value: 16384 }] },
22
- { label: 'Deep Vacuum', mode: 4, modeTags: [{ value: 16384 }, { value: 16385 }] },
23
- { label: 'Deep Mop', mode: 5, modeTags: [{ value: 16384 }, { value: 16386 }] },
24
- { label: 'Quick Clean', mode: 6, modeTags: [{ value: 1 }, { value: 16385 }] },
25
- { label: 'Max Clean', mode: 7, modeTags: [{ value: 7 }, { value: 16385 }] },
26
- { label: 'Min Clean', mode: 8, modeTags: [{ value: 6 }, { value: 16385 }] },
27
- { label: 'Quiet Vacuum', mode: 9, modeTags: [{ value: 2 }, { value: 16385 }] },
28
- { label: 'Quiet Mop', mode: 10, modeTags: [{ value: 2 }, { value: 16386 }] },
29
- { label: 'Night Mode', mode: 11, modeTags: [{ value: 8 }, { value: 16385 }] },
30
- { label: 'Eco Vacuum', mode: 12, modeTags: [{ value: 4 }, { value: 16385 }] },
31
- { label: 'Eco Mop', mode: 13, modeTags: [{ value: 4 }, { value: 16386 }] },
32
- { label: 'Auto', mode: 14, modeTags: [{ value: 0 }, { value: 16385 }] },
33
- ],
34
- currentMode: 0,
35
- },
36
- rvcOperationalState: {
37
- operationalStateList: [
38
- { operationalStateId: 0 },
39
- { operationalStateId: 1 },
40
- { operationalStateId: 2 },
41
- { operationalStateId: 3 },
42
- { operationalStateId: 64 },
43
- { operationalStateId: 65 },
44
- { operationalStateId: 66 },
45
- ],
46
- operationalState: 66,
47
- },
48
- serviceArea: {
49
- supportedMaps: [],
50
- supportedAreas: [
51
- { areaId: 0, mapId: null, areaInfo: { locationInfo: { locationName: 'Living Room', floorNumber: 0, areaType: 7 }, landmarkInfo: null } },
52
- { areaId: 1, mapId: null, areaInfo: { locationInfo: { locationName: 'Kitchen', floorNumber: 0, areaType: 10 }, landmarkInfo: null } },
53
- { areaId: 2, mapId: null, areaInfo: { locationInfo: { locationName: 'Bedroom', floorNumber: 0, areaType: 2 }, landmarkInfo: null } },
54
- { areaId: 3, mapId: null, areaInfo: { locationInfo: { locationName: 'Bathroom', floorNumber: 0, areaType: 6 }, landmarkInfo: null } },
55
- ],
56
- selectedAreas: [0, 1, 2, 3],
57
- },
58
- };
59
- const handlers = opts?.handlers ?? {
60
- rvcRunMode: { changeToMode: async (request) => this.handleChangeRunMode(request) },
61
- rvcCleanMode: { changeToMode: async (request) => this.handleChangeCleanMode(request) },
62
- rvcOperationalState: { pause: async () => this.handlePause(), stop: async () => this.handleStop(), start: async () => this.handleStart(), resume: async () => this.handleResume(), goHome: async () => this.handleGoHome() },
63
- serviceArea: { selectAreas: async (request) => this.handleSelectAreas(request), skipArea: async (request) => this.handleSkipArea(request) },
64
- };
89
+ const model = detectModelFromContext(opts?.context);
90
+ const capabilities = capabilitiesFor(model);
65
91
  super(api, log, {
66
92
  uuid: opts?.uuid ?? api.matter.uuid.generate(serialNumber),
67
93
  displayName: opts?.displayName ?? 'Robot Vacuum',
@@ -71,188 +97,200 @@ export class RoboticVacuumAccessory extends BaseMatterAccessory {
71
97
  model: opts?.model ?? 'HB-MATTER-VACUUM-ROBOTIC',
72
98
  firmwareRevision: opts?.firmwareRevision ?? '2.0.0',
73
99
  hardwareRevision: opts?.hardwareRevision ?? '1.0.0',
74
- clusters,
75
- handlers,
76
- context: { deviceId: opts?.deviceId, ...(opts?.context ?? {}) },
100
+ clusters: {
101
+ rvcRunMode: {
102
+ supportedModes: [
103
+ { label: 'Idle', mode: 0, modeTags: [{ value: 16384 }] },
104
+ { label: 'Cleaning', mode: 1, modeTags: [{ value: 16385 }] },
105
+ ],
106
+ currentMode: 0,
107
+ },
108
+ rvcCleanMode: (() => {
109
+ if (capabilities.cleanAction === 'vacuum-only') {
110
+ return {
111
+ supportedModes: [
112
+ { label: 'Quiet', mode: 0, modeTags: [{ value: 2 }] },
113
+ { label: 'Standard', mode: 1, modeTags: [{ value: 16384 }] },
114
+ { label: 'Strong', mode: 2, modeTags: [{ value: 7 }] },
115
+ { label: 'MAX', mode: 3, modeTags: [{ value: 8 }] },
116
+ ],
117
+ currentMode: 1,
118
+ };
119
+ }
120
+ else if (capabilities.cleanAction === 'vacuum-or-mop') {
121
+ return {
122
+ supportedModes: [
123
+ { label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
124
+ { label: 'Mop', mode: 1, modeTags: [{ value: 16386 }] },
125
+ ],
126
+ currentMode: 0,
127
+ };
128
+ }
129
+ else {
130
+ return {
131
+ supportedModes: [
132
+ { label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
133
+ { label: 'Vacuum & Mop', mode: 1, modeTags: [{ value: 16385 }, { value: 16386 }] },
134
+ ],
135
+ currentMode: 0,
136
+ };
137
+ }
138
+ })(),
139
+ rvcOperationalState: {
140
+ operationalStateList: [
141
+ { operationalStateId: 0 }, // Stopped
142
+ { operationalStateId: 1 }, // Running
143
+ { operationalStateId: 2 }, // Paused
144
+ { operationalStateId: 64 }, // Seeking Charger
145
+ { operationalStateId: 65 }, // Charging
146
+ { operationalStateId: 66 }, // Docked
147
+ ],
148
+ operationalState: 66,
149
+ },
150
+ },
151
+ handlers: (() => {
152
+ const opHandlers = {
153
+ stop: async () => this.handleStop(),
154
+ start: async () => this.handleStart(),
155
+ goHome: async () => this.handleGoHome(),
156
+ };
157
+ if (capabilities.pause) {
158
+ opHandlers.pause = async () => this.handlePause();
159
+ }
160
+ if (capabilities.resume) {
161
+ opHandlers.resume = async () => this.handleResume();
162
+ }
163
+ return {
164
+ rvcRunMode: { changeToMode: async (request) => this.handleChangeRunMode(request) },
165
+ rvcCleanMode: { changeToMode: async (request) => this.handleChangeCleanMode(request) },
166
+ rvcOperationalState: opHandlers,
167
+ };
168
+ })(),
169
+ context: { deviceId: opts?.deviceId, ...(opts?.context ?? {}), deviceType: opts?.context?.deviceType },
77
170
  });
171
+ this.capabilities = capabilities;
78
172
  this.logInfo('initialized and ready.');
79
173
  }
80
174
  async handleChangeRunMode(request) {
81
175
  this.logInfo(`ChangeToMode (run) request received: ${JSON.stringify(request)}`);
82
176
  const { newMode } = request;
83
- const modeStr = ['Idle', 'Cleaning', 'Mapping'][newMode] || `Unknown (mode=${newMode})`;
177
+ const modeStr = ['Idle', 'Cleaning'][newMode] || `Unknown (mode=${newMode})`;
84
178
  this.logInfo(`changing run mode to: ${modeStr}`);
85
- // TODO: await myVacuumAPI.setRunMode(newMode)
86
- // Clear any existing timers
87
- this.clearTimers();
88
179
  if (newMode === 1) {
89
- // Switching to Cleaning mode - start the vacuum
90
- this.updateOperationalState(1); // Running
91
- // Simulate cleaning completion after 15 seconds
92
- const completionTimer = setTimeout(() => {
93
- this.logInfo('cleaning completed, returning to dock.');
94
- this.updateRunMode(0); // Set to Idle - cleaning session ending
95
- this.returnToDock();
96
- }, 15000);
97
- this.activeTimers.push(completionTimer);
180
+ await this.handleStart();
98
181
  }
99
182
  else if (newMode === 0) {
100
- // Switching to Idle mode - return to dock
101
- this.returnToDock();
102
- }
103
- else if (newMode === 2) {
104
- // Switching to Mapping mode - start mapping
105
- this.updateOperationalState(1); // Running
106
- // Simulate mapping completion after 20 seconds
107
- const completionTimer = setTimeout(() => {
108
- this.logInfo('mapping completed, returning to dock.');
109
- this.returnToDock();
110
- }, 20000);
111
- this.activeTimers.push(completionTimer);
183
+ await this.handleGoHome();
112
184
  }
113
185
  }
114
186
  async handleChangeCleanMode(request) {
115
187
  this.logInfo(`ChangeToMode (clean) request received: ${JSON.stringify(request)}`);
116
188
  const { newMode } = request;
117
- const modes = [
118
- 'Vacuum',
119
- 'Mop',
120
- 'Vacuum & Mop',
121
- 'Deep Clean',
122
- 'Deep Vacuum',
123
- 'Deep Mop',
124
- 'Quick Clean',
125
- 'Max Clean',
126
- 'Min Clean',
127
- 'Quiet Vacuum',
128
- 'Quiet Mop',
129
- 'Night Mode',
130
- 'Eco Vacuum',
131
- 'Eco Mop',
132
- 'Auto',
133
- ];
134
- const modeStr = modes[newMode] || `Unknown (mode=${newMode})`;
135
- this.logInfo(`changing clean mode to: ${modeStr}`);
136
- // TODO: await myVacuumAPI.setCleanMode(newMode)
189
+ if (this.capabilities.cleanAction === 'vacuum-only') {
190
+ const mapPow = ['Quiet', 'Standard', 'Strong', 'MAX'];
191
+ const label = mapPow[newMode] ?? `Unknown (${newMode})`;
192
+ this.logInfo(`changing suction level to: ${label}`);
193
+ if (this.capabilities.suctionKind === 'powLevel-0-3') {
194
+ try {
195
+ await this.sendOpenAPICommand('PowLevel', String(newMode));
196
+ }
197
+ catch (e) {
198
+ this.logWarn(`OpenAPI PowLevel failed: ${String(e?.message ?? e)}`);
199
+ }
200
+ }
201
+ else if (this.capabilities.suctionKind === 'fanLevel-1-4') {
202
+ this.currentFanLevel = (Math.min(3, Math.max(0, Number(newMode))) + 1);
203
+ try {
204
+ await this.sendOpenAPICommand('changeParam', JSON.stringify({ fanLevel: this.currentFanLevel }));
205
+ }
206
+ catch (e) {
207
+ this.logWarn(`OpenAPI changeParam(fanLevel) failed: ${String(e?.message ?? e)}`);
208
+ }
209
+ }
210
+ this.updateCleanMode(newMode);
211
+ return;
212
+ }
213
+ if (this.capabilities.cleanAction === 'vacuum-or-mop') {
214
+ const label = newMode === 0 ? 'Vacuum' : 'Mop';
215
+ this.currentCleanAction = newMode === 0 ? 'vacuum' : 'mop';
216
+ this.logInfo(`changing clean action to: ${label}`);
217
+ this.updateCleanMode(newMode);
218
+ return;
219
+ }
220
+ const label = newMode === 0 ? 'Vacuum' : 'Vacuum & Mop';
221
+ this.currentCleanAction = newMode === 0 ? 'vacuum' : 'vacuum_mop';
222
+ this.logInfo(`changing clean action to: ${label}`);
223
+ this.updateCleanMode(newMode);
137
224
  }
138
225
  async handlePause() {
139
226
  this.logInfo('pausing.');
140
- // TODO: await myVacuumAPI.pause()
141
- this.clearTimers(); // Clear cleaning completion timer
142
- this.updateOperationalState(2); // Paused
227
+ try {
228
+ await this.sendOpenAPICommand('pause');
229
+ }
230
+ catch (e) {
231
+ this.logWarn(`OpenAPI pause failed: ${String(e?.message ?? e)}`);
232
+ }
233
+ this.updateOperationalState(2);
143
234
  }
144
235
  async handleStop() {
145
236
  this.logInfo('stopping.');
146
- // TODO: await myVacuumAPI.stop()
147
- this.clearTimers();
148
- this.updateRunMode(0); // Reset to Idle
149
- this.updateOperationalState(0); // Stopped
237
+ try {
238
+ if (this.capabilities.cleanAction === 'vacuum-only' && this.capabilities.suctionKind === 'powLevel-0-3') {
239
+ await this.sendOpenAPICommand('stop');
240
+ }
241
+ else {
242
+ await this.sendOpenAPICommand('pause');
243
+ }
244
+ }
245
+ catch (e) {
246
+ this.logWarn(`OpenAPI stop/pause failed: ${String(e?.message ?? e)}`);
247
+ }
248
+ this.updateRunMode(0);
249
+ this.updateOperationalState(0);
150
250
  }
151
251
  async handleStart() {
152
- this.logInfo('starting (via start command).');
153
- // TODO: await myVacuumAPI.start()
154
- // Clear any existing timers
155
- this.clearTimers();
156
- this.updateRunMode(1); // Set to Cleaning mode - this will trigger the run mode handler logic
157
- this.updateOperationalState(1); // Running
158
- // Simulate cleaning completion after 15 seconds
159
- const completionTimer = setTimeout(() => {
160
- this.logInfo('cleaning completed, returning to dock.');
161
- this.updateRunMode(0); // Set to Idle - cleaning session ending
162
- this.returnToDock();
163
- }, 15000);
164
- this.activeTimers.push(completionTimer);
252
+ this.logInfo('starting clean.');
253
+ try {
254
+ if (this.capabilities.cleanAction === 'vacuum-only' && this.capabilities.suctionKind === 'powLevel-0-3') {
255
+ await this.sendOpenAPICommand('start');
256
+ }
257
+ else {
258
+ const action = this.currentCleanAction === 'vacuum_mop' ? 'sweep_mop' : this.currentCleanAction;
259
+ const param = { action, param: { fanLevel: this.currentFanLevel } };
260
+ if (this.capabilities.waterLevel) {
261
+ param.param.waterLevel = 1;
262
+ }
263
+ await this.sendOpenAPICommand('startClean', JSON.stringify(param));
264
+ }
265
+ }
266
+ catch (e) {
267
+ this.logWarn(`OpenAPI start/startClean failed: ${String(e?.message ?? e)}`);
268
+ }
269
+ this.updateRunMode(1);
270
+ this.updateOperationalState(1);
165
271
  }
166
272
  async handleResume() {
167
- this.logInfo('resuming.');
168
- // TODO: await myVacuumAPI.resume()
169
- // Clear any existing timers
170
- this.clearTimers();
171
- this.updateRunMode(1); // Set to Cleaning mode
172
- this.updateOperationalState(1); // Running
173
- // Simulate cleaning completion after 10 seconds (shorter since resuming)
174
- const completionTimer = setTimeout(() => {
175
- this.logInfo('cleaning completed, returning to dock.');
176
- this.updateRunMode(0); // Set to Idle - cleaning session ending
177
- this.returnToDock();
178
- }, 10000);
179
- this.activeTimers.push(completionTimer);
273
+ this.logInfo('resume requested.');
274
+ await this.handleStart();
180
275
  }
181
276
  async handleGoHome() {
182
- this.logInfo('goHome command received.');
183
- // TODO: await myVacuumAPI.goHome()
184
- // Clear any existing timers
185
- this.clearTimers();
186
- // Defer state updates to ensure handler completes first
187
- setImmediate(() => {
188
- // Set to Idle mode since we're ending the cleaning session
189
- this.updateRunMode(0);
190
- // Initiate return to dock sequence
191
- this.returnToDock();
192
- });
193
- }
194
- async handleSelectAreas(request) {
195
- this.logInfo(`SelectAreas request received: ${JSON.stringify(request)}`);
196
- const { newAreas } = request;
197
- const areaNames = newAreas.map((id) => ['Living Room', 'Kitchen', 'Bedroom', 'Bathroom'][id] || `Area ${id}`);
198
- this.logInfo(`selecting areas: ${areaNames.join(', ')}`);
199
- // TODO: await myVacuumAPI.selectAreas(newAreas)
200
- }
201
- async handleSkipArea(request) {
202
- this.logInfo(`SkipArea request received: ${JSON.stringify(request)}`);
203
- const { skippedArea } = request;
204
- const areaName = ['Living Room', 'Kitchen', 'Bedroom', 'Bathroom'][skippedArea] || `Area ${skippedArea}`;
205
- this.logInfo(`skipping area: ${areaName}`);
206
- // TODO: await myVacuumAPI.skipArea(skippedArea)
207
- }
208
- /**
209
- * Helper method to clear all active timers
210
- */
211
- clearTimers() {
212
- this.activeTimers.forEach(timer => clearTimeout(timer));
213
- this.activeTimers = [];
214
- }
215
- /**
216
- * Helper method to initiate return to dock sequence
217
- * Can be called synchronously from other handlers
218
- */
219
- returnToDock() {
220
- this.logInfo('initiating return to dock sequence.');
221
- // Defer ALL state updates to ensure handler completes first
222
- setImmediate(() => {
223
- // Start seeking charger directly (skip intermediate Stopped state)
224
- this.updateOperationalState(64); // Seeking Charger
225
- // After 5 seconds, start charging
226
- const chargingTimer = setTimeout(() => {
227
- this.logInfo('reached dock, now charging.');
228
- this.updateOperationalState(65); // Charging
229
- // After 3 more seconds, fully docked
230
- const dockedTimer = setTimeout(() => {
231
- this.logInfo('fully charged and docked.');
232
- this.updateOperationalState(66); // Docked
233
- }, 3000);
234
- this.activeTimers.push(dockedTimer);
235
- }, 5000);
236
- this.activeTimers.push(chargingTimer);
237
- });
277
+ this.logInfo('returning to dock.');
278
+ try {
279
+ await this.sendOpenAPICommand('dock');
280
+ }
281
+ catch (e) {
282
+ this.logWarn(`OpenAPI dock failed: ${String(e?.message ?? e)}`);
283
+ }
284
+ this.updateRunMode(0);
285
+ this.updateOperationalState(64);
238
286
  }
239
- /**
240
- * Update Methods - Use these to update the vacuum state from your API/device
241
- *
242
- * Since this is a platform accessory, state updates work immediately after registration.
243
- */
244
287
  updateOperationalState(state) {
245
288
  this.updateState('rvcOperationalState', { operationalState: state });
246
289
  const states = [
247
290
  'Stopped',
248
291
  'Running',
249
292
  'Paused',
250
- 'Error',
251
- null,
252
- null,
253
- null,
254
- null,
255
- ...Array.from({ length: 56 }).fill(null),
293
+ ...Array.from({ length: 61 }).fill(null),
256
294
  'Seeking Charger',
257
295
  'Charging',
258
296
  'Docked',
@@ -261,69 +299,31 @@ export class RoboticVacuumAccessory extends BaseMatterAccessory {
261
299
  }
262
300
  updateRunMode(mode) {
263
301
  this.updateState('rvcRunMode', { currentMode: mode });
264
- const modes = ['Idle', 'Cleaning', 'Mapping'];
302
+ const modes = ['Idle', 'Cleaning'];
265
303
  this.logInfo(`run mode updated to: ${modes[mode] || `Unknown (${mode})`}`);
266
304
  }
267
305
  updateCleanMode(mode) {
268
306
  this.updateState('rvcCleanMode', { currentMode: mode });
269
- const modes = [
270
- 'Vacuum',
271
- 'Mop',
272
- 'Vacuum & Mop',
273
- 'Deep Clean',
274
- 'Deep Vacuum',
275
- 'Deep Mop',
276
- 'Quick Clean',
277
- 'Max Clean',
278
- 'Min Clean',
279
- 'Quiet Vacuum',
280
- 'Quiet Mop',
281
- 'Night Mode',
282
- 'Eco Vacuum',
283
- 'Eco Mop',
284
- 'Auto',
285
- ];
286
- this.logInfo(`clean mode updated to: ${modes[mode] || `Unknown (${mode})`}`);
287
- }
288
- updateSelectedAreas(areaIds) {
289
- this.updateState('serviceArea', { selectedAreas: areaIds });
290
- const areaNames = areaIds.map(id => ['Living Room', 'Kitchen', 'Bedroom', 'Bathroom'][id] || `Area ${id}`);
291
- this.logInfo(`selected areas updated to: ${areaNames.join(', ') || 'All Areas'}`);
292
- }
293
- updateCurrentArea(areaId) {
294
- this.updateState('serviceArea', { currentArea: areaId });
295
- if (areaId !== null) {
296
- const areaName = ['Living Room', 'Kitchen', 'Bedroom', 'Bathroom'][areaId] || `Area ${areaId}`;
297
- this.logInfo(`current area updated to: ${areaName}`);
307
+ let label = `Unknown (${mode})`;
308
+ if (this.capabilities.cleanAction === 'vacuum-only') {
309
+ label = ['Quiet', 'Standard', 'Strong', 'MAX'][mode] || label;
310
+ }
311
+ else if (this.capabilities.cleanAction === 'vacuum-or-mop') {
312
+ label = ['Vacuum', 'Mop'][mode] || label;
298
313
  }
299
314
  else {
300
- this.logInfo('current area cleared');
315
+ label = ['Vacuum', 'Vacuum & Mop'][mode] || label;
301
316
  }
302
- }
303
- updateProgress(progress) {
304
- this.updateState('serviceArea', { progress });
305
- this.logInfo(`progress updated: ${progress.length} areas`);
317
+ this.logInfo(`clean mode updated to: ${label}`);
306
318
  }
307
319
  /**
308
- * Update battery percentage
309
- *
310
- * Note: The Matter specification for RoboticVacuumCleaner does not include
311
- * the PowerSource cluster. Battery information for robotic vacuums should be
312
- * communicated through device-specific status reporting or via the RVC
313
- * operational state cluster.
314
- *
315
- * This method is retained for API compatibility but does not update any
316
- * Matter cluster state.
317
- *
318
- * @param percentageOrBatPercentRemaining - Battery percentage (0-100) or batPercentRemaining (0-200)
320
+ * Update battery percentage (no PowerSource cluster for this device type)
319
321
  */
320
322
  async updateBatteryPercentage(percentageOrBatPercentRemaining) {
321
- // Accept either 0–100 (percentage) or 0–200 (batPercentRemaining) to be robust
322
323
  const isBatPercent = Number(percentageOrBatPercentRemaining) > 100;
323
324
  const percentage = isBatPercent
324
325
  ? Math.max(0, Math.min(100, Math.round(Number(percentageOrBatPercentRemaining) / 2)))
325
326
  : Math.max(0, Math.min(100, Math.round(Number(percentageOrBatPercentRemaining))));
326
- // Determine charge level based on percentage
327
327
  let chargeLevel = 0; // Ok
328
328
  if (percentage < 20) {
329
329
  chargeLevel = 2; // Critical
@@ -331,9 +331,7 @@ export class RoboticVacuumAccessory extends BaseMatterAccessory {
331
331
  else if (percentage < 40) {
332
332
  chargeLevel = 1; // Warning
333
333
  }
334
- // Log battery status only - PowerSource cluster is not supported for RoboticVacuumCleaner
335
334
  this.logInfo(`battery status: ${percentage}% (${chargeLevel === 0 ? 'Ok' : chargeLevel === 1 ? 'Warning' : 'Critical'})`);
336
- // Store battery info in context for reference
337
335
  if (this.context) {
338
336
  this.context.batteryPercentage = percentage;
339
337
  this.context.batteryChargeLevel = chargeLevel;
@@ -1 +1 @@
1
- {"version":3,"file":"RoboticVacuumAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/RoboticVacuumAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RoboticVacuumAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/RoboticVacuumAccessory.ts"],"names":[],"mappings":"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"}