matterbridge-ha-roborock 3.3.0 → 3.4.4

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 CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [3.3.1] - 2025-01-01
6
+
7
+ ### Added
8
+ - 🎨 **Matterbridge Web UI 配置支持**:
9
+ - 添加完整的配置 schema,支持在 Web UI 中可视化配置
10
+ - 所有配置项都有详细的中文说明和验证规则
11
+ - 支持密码字段隐藏(haToken)
12
+ - 添加配置示例文件 `config.example.json`
13
+
14
+ ### Changed
15
+ - 📝 **文档更新**:
16
+ - 添加 Web UI 配置方式说明
17
+ - 优化配置章节结构
18
+ - 提供更清晰的配置步骤
19
+
5
20
  ## [3.3.0] - 2025-01-01
6
21
 
7
22
  ### Added
@@ -285,3 +285,9 @@ v3.2.0 版本成功实现了清洁进度追踪功能,通过简单的配置即
285
285
  **版本**:v3.2.0
286
286
  **状态**:✅ 已完成并测试编译通过
287
287
 
288
+
289
+
290
+
291
+
292
+
293
+
@@ -486,3 +486,9 @@ MIT License
486
486
 
487
487
  **如果这个功能对你有帮助,请给个 ⭐ Star!**
488
488
 
489
+
490
+
491
+
492
+
493
+
494
+
package/README.md CHANGED
@@ -46,9 +46,31 @@ npm install -g matterbridge-ha-roborock
46
46
 
47
47
  ## ⚙️ 配置
48
48
 
49
+ ### 方式一:通过 Matterbridge Web UI 配置(推荐)
50
+
51
+ 1. 启动 Matterbridge:
52
+ ```bash
53
+ matterbridge
54
+ ```
55
+
56
+ 2. 打开浏览器访问:`http://localhost:8283`
57
+
58
+ 3. 在插件列表中找到 `matterbridge-ha-roborock`,点击配置按钮
59
+
60
+ 4. 在 Web UI 中填写配置项:
61
+ - **Home Assistant URL**: 你的 HA 地址(如 `http://192.168.1.100:8123`)
62
+ - **长期访问令牌**: 在 HA 中创建的令牌
63
+ - **设备白名单**: 添加扫地机实体 ID(如 `vacuum.dreame_vacuum_r2254`)
64
+ - **传感器映射**: 配置各种传感器的 entity_id
65
+ - **房间面积**: 配置各房间面积用于计算清洁进度
66
+
67
+ 5. 保存配置并重启插件
68
+
69
+ ### 方式二:手动编辑配置文件
70
+
49
71
  在 Matterbridge 配置目录(通常是 `~/.matterbridge/`)创建或编辑配置文件:
50
72
 
51
- ### 基础配置
73
+ #### 基础配置
52
74
 
53
75
  ```json
54
76
  {
@@ -62,7 +84,7 @@ npm install -g matterbridge-ha-roborock
62
84
  }
63
85
  ```
64
86
 
65
- ### 完整配置(推荐)
87
+ #### 完整配置(推荐)
66
88
 
67
89
  ```json
68
90
  {
@@ -100,7 +122,7 @@ npm install -g matterbridge-ha-roborock
100
122
  }
101
123
  ```
102
124
 
103
- ### 配置项说明
125
+ #### 配置项说明
104
126
 
105
127
  | 配置项 | 类型 | 必需 | 说明 |
106
128
  |--------|------|------|------|
@@ -177,3 +177,9 @@ npm install -g matterbridge-ha-roborock
177
177
  **发布人**: _______________
178
178
 
179
179
 
180
+
181
+
182
+
183
+
184
+
185
+
@@ -0,0 +1,228 @@
1
+ # Matterbridge Web UI 配置指南
2
+
3
+ 本插件完全支持通过 Matterbridge Web UI 进行可视化配置,无需手动编辑 JSON 文件。
4
+
5
+ ## 📱 访问 Web UI
6
+
7
+ 1. 启动 Matterbridge:
8
+ ```bash
9
+ matterbridge
10
+ ```
11
+
12
+ 2. 打开浏览器访问:
13
+ ```
14
+ http://localhost:8283
15
+ ```
16
+
17
+ 3. 如果是远程服务器,将 `localhost` 替换为服务器 IP 地址
18
+
19
+ ## ⚙️ 配置步骤
20
+
21
+ ### 1. 找到插件
22
+
23
+ 在 Matterbridge Web UI 的插件列表中找到 `matterbridge-ha-roborock`
24
+
25
+ ### 2. 点击配置按钮
26
+
27
+ 点击插件旁边的配置图标(齿轮图标)
28
+
29
+ ### 3. 填写配置项
30
+
31
+ #### 必填项
32
+
33
+ **Home Assistant URL**
34
+ - 格式:`http://IP:端口`
35
+ - 示例:`http://192.168.1.100:8123`
36
+ - 说明:你的 Home Assistant 完整地址
37
+
38
+ **Home Assistant 长期访问令牌**
39
+ - 在 Home Assistant 中创建:
40
+ 1. 点击左下角用户名
41
+ 2. 选择"安全"
42
+ 3. 滚动到"长期访问令牌"
43
+ 4. 点击"创建令牌"
44
+ 5. 复制生成的令牌
45
+ - 这是一个密码字段,输入后会自动隐藏
46
+
47
+ **Matter 模式**
48
+ - `server`(推荐):每个设备独立配对
49
+ - `bridge`:所有设备通过一个桥接器
50
+
51
+ #### 可选项(推荐配置)
52
+
53
+ **设备白名单**
54
+ - 点击"添加项"按钮
55
+ - 输入扫地机的 entity_id
56
+ - 示例:`vacuum.dreame_vacuum_r2254`
57
+ - 可以添加多个设备
58
+
59
+ **电池传感器映射**
60
+ - 格式:`vacuum.xxx` → `sensor.xxx_battery_level`
61
+ - 示例:
62
+ ```
63
+ 键: vacuum.dreame_vacuum_r2254
64
+ 值: sensor.dreame_vacuum_r2254_battery_level
65
+ ```
66
+
67
+ **充电状态传感器映射**
68
+ - 格式:`vacuum.xxx` → `binary_sensor.xxx_charging_state`
69
+ - 示例:
70
+ ```
71
+ 键: vacuum.dreame_vacuum_r2254
72
+ 值: binary_sensor.dreame_vacuum_r2254_charging_state
73
+ ```
74
+
75
+ **清洁模式实体映射**
76
+ - 格式:`vacuum.xxx` → `select.xxx_cleaning_mode`
77
+ - 示例:
78
+ ```
79
+ 键: vacuum.dreame_vacuum_r2254
80
+ 值: select.dreame_vacuum_r2254_cleaning_mode
81
+ ```
82
+
83
+ **错误传感器映射**
84
+ - 格式:`vacuum.xxx` → `sensor.xxx_error`
85
+ - 示例:
86
+ ```
87
+ 键: vacuum.dreame_vacuum_r2254
88
+ 值: sensor.dreame_vacuum_r2254_error
89
+ ```
90
+
91
+ **当前房间传感器映射**
92
+ - 格式:`vacuum.xxx` → `sensor.xxx_current_room`
93
+ - 示例:
94
+ ```
95
+ 键: vacuum.dreame_vacuum_r2254
96
+ 值: sensor.sao_di_ji_current_room
97
+ ```
98
+
99
+ **已清洁面积传感器映射**
100
+ - 格式:`vacuum.xxx` → `sensor.xxx_cleaned_area`
101
+ - 示例:
102
+ ```
103
+ 键: vacuum.dreame_vacuum_r2254
104
+ 值: sensor.dreame_vacuum_r2254_cleaned_area
105
+ ```
106
+
107
+ **清洁时间传感器映射**
108
+ - 格式:`vacuum.xxx` → `sensor.xxx_cleaning_time`
109
+ - 示例:
110
+ ```
111
+ 键: vacuum.dreame_vacuum_r2254
112
+ 值: sensor.dreame_vacuum_r2254_cleaning_time
113
+ ```
114
+
115
+ **房间面积配置**
116
+ - 用于计算清洁进度和预计完成时间
117
+ - 格式:`房间名称` → `面积(平方米)`
118
+ - 示例:
119
+ ```
120
+ 键: 浴室
121
+ 值: 5.5
122
+
123
+ 键: 儿童房
124
+ 值: 12
125
+
126
+ 键: 卧室
127
+ 值: 15
128
+
129
+ 键: 阳光房
130
+ 值: 10
131
+ ```
132
+
133
+ #### 高级选项
134
+
135
+ **轮询间隔 (毫秒)**
136
+ - 默认:30000 (30秒)
137
+ - 范围:5000 - 300000
138
+ - 说明:状态更新的轮询间隔
139
+
140
+ **调试模式**
141
+ - 默认:关闭
142
+ - 开启后会输出详细的调试日志
143
+
144
+ **关闭时注销设备**
145
+ - 默认:关闭
146
+ - 开启后插件关闭时会从 Matter 网络注销设备
147
+
148
+ ### 4. 保存配置
149
+
150
+ 点击"保存"按钮保存配置
151
+
152
+ ### 5. 重启插件
153
+
154
+ 保存后需要重启插件使配置生效:
155
+ 1. 在插件列表中找到 `matterbridge-ha-roborock`
156
+ 2. 点击重启按钮
157
+ 3. 等待插件重新加载
158
+
159
+ ## 🎯 配置验证
160
+
161
+ ### 检查插件状态
162
+
163
+ 在 Web UI 中查看插件状态:
164
+ - ✅ 绿色:运行正常
165
+ - ⚠️ 黄色:有警告
166
+ - ❌ 红色:有错误
167
+
168
+ ### 查看日志
169
+
170
+ 在 Web UI 中点击"日志"按钮查看详细日志:
171
+ - 确认 Home Assistant 连接成功
172
+ - 确认设备已注册
173
+ - 查看配对码
174
+
175
+ ### 测试配置
176
+
177
+ 1. 在苹果家庭或其他 Matter 控制器中添加设备
178
+ 2. 使用配对码配对
179
+ 3. 测试基本功能:
180
+ - 开始/暂停清扫
181
+ - 返回充电
182
+ - 选择房间清扫
183
+
184
+ ## 💡 常见问题
185
+
186
+ ### Q: 配置保存后没有生效?
187
+ A: 需要重启插件才能使配置生效
188
+
189
+ ### Q: 如何查看我的 entity_id?
190
+ A: 在 Home Assistant 中:
191
+ 1. 开发者工具 → 状态
192
+ 2. 搜索你的设备
193
+ 3. 复制 entity_id
194
+
195
+ ### Q: 房间名称从哪里获取?
196
+ A: 房间名称来自你的 Home Assistant 集成配置,通常在扫地机的地图配置中
197
+
198
+ ### Q: 配置了传感器映射但没有效果?
199
+ A: 确保:
200
+ 1. entity_id 正确(在 HA 中存在)
201
+ 2. 传感器有值(不是 unavailable)
202
+ 3. 已重启插件
203
+
204
+ ### Q: Web UI 无法访问?
205
+ A: 检查:
206
+ 1. Matterbridge 是否正在运行
207
+ 2. 防火墙是否允许 8283 端口
208
+ 3. 如果是远程访问,使用服务器 IP 而不是 localhost
209
+
210
+ ## 📚 更多信息
211
+
212
+ - [完整文档](./README.md)
213
+ - [配置示例](./config.example.json)
214
+ - [更新日志](./CHANGELOG.md)
215
+
216
+ ## 🆘 获取帮助
217
+
218
+ 如果遇到问题:
219
+ 1. 查看 Matterbridge 日志
220
+ 2. 启用调试模式获取详细信息
221
+ 3. 在 GitHub 提交 Issue
222
+
223
+
224
+
225
+
226
+
227
+
228
+
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "matterbridge-ha-roborock",
3
+ "type": "AccessoryPlatform",
4
+ "haUrl": "http://homeassistant.local:8123",
5
+ "haToken": "YOUR_LONG_LIVED_ACCESS_TOKEN_HERE",
6
+ "matterMode": "server",
7
+ "pollInterval": 30000,
8
+ "debug": false,
9
+ "deviceWhitelist": [
10
+ "vacuum.dreame_vacuum_r2254"
11
+ ],
12
+ "batterySensorMap": {
13
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_battery_level"
14
+ },
15
+ "chargingSensorMap": {
16
+ "vacuum.dreame_vacuum_r2254": "binary_sensor.dreame_vacuum_r2254_charging_state"
17
+ },
18
+ "cleaningModeEntityMap": {
19
+ "vacuum.dreame_vacuum_r2254": "select.dreame_vacuum_r2254_cleaning_mode"
20
+ },
21
+ "errorSensorMap": {
22
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_error"
23
+ },
24
+ "currentRoomSensorMap": {
25
+ "vacuum.dreame_vacuum_r2254": "sensor.sao_di_ji_current_room"
26
+ },
27
+ "cleanedAreaSensorMap": {
28
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaned_area"
29
+ },
30
+ "cleaningTimeSensorMap": {
31
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaning_time"
32
+ },
33
+ "roomAreaSizes": {
34
+ "浴室": 5.5,
35
+ "儿童房": 12,
36
+ "卧室": 15,
37
+ "阳光房": 10
38
+ },
39
+ "unregisterOnShutdown": false
40
+ }
41
+
42
+
43
+
44
+
45
+
46
+
47
+
@@ -121,3 +121,9 @@ else
121
121
  fi
122
122
 
123
123
 
124
+
125
+
126
+
127
+
128
+
129
+
@@ -5,6 +5,7 @@ import { HomeAssistantClient } from './homeassistant-client.js';
5
5
  */
6
6
  export interface VacuumState {
7
7
  state: string;
8
+ detailedState?: string;
8
9
  batteryLevel: number;
9
10
  isCharging: boolean;
10
11
  fanSpeed?: string;
@@ -36,13 +37,17 @@ export declare class HAVacuumController extends EventEmitter {
36
37
  private cleaningModeEntityId?;
37
38
  private errorSensorId?;
38
39
  private currentRoomSensorId?;
40
+ private stateSensorId?;
39
41
  private cleanedAreaSensorId?;
40
42
  private cleaningTimeSensorId?;
41
43
  private hepaFilterSensorId?;
42
44
  private roomAreaSizes?;
43
45
  private selectedRoomNames;
44
46
  private currentState?;
45
- constructor(haClient: HomeAssistantClient, entityId: string, batterySensorId?: string, chargingSensorId?: string, cleaningModeEntityId?: string, errorSensorId?: string, currentRoomSensorId?: string, cleanedAreaSensorId?: string, cleaningTimeSensorId?: string, hepaFilterSensorId?: string, roomAreaSizes?: Record<string, number>);
47
+ private roomTimers;
48
+ private lastRoom?;
49
+ private taskStartTime;
50
+ constructor(haClient: HomeAssistantClient, entityId: string, batterySensorId?: string, chargingSensorId?: string, cleaningModeEntityId?: string, errorSensorId?: string, currentRoomSensorId?: string, stateSensorId?: string, cleanedAreaSensorId?: string, cleaningTimeSensorId?: string, hepaFilterSensorId?: string, roomAreaSizes?: Record<string, number>);
46
51
  /**
47
52
  * 初始化控制器 - 获取初始状态并设置监听
48
53
  */
@@ -117,6 +122,23 @@ export declare class HAVacuumController extends EventEmitter {
117
122
  * @param segmentMap Matter ID 到 Dreame ID 的映射
118
123
  */
119
124
  cleanSegments(segments: number[], segmentMap?: Record<number, string>): Promise<void>;
125
+ /**
126
+ * 更新房间计时器
127
+ * 当房间切换时记录上一个房间的时间,开始新房间的计时
128
+ */
129
+ updateRoomTimer(currentRoom: string | undefined, isCleaningState: boolean): void;
130
+ /**
131
+ * 获取指定房间的清扫时间(秒)
132
+ */
133
+ getRoomTime(roomName: string): number;
134
+ /**
135
+ * 重置所有房间计时器
136
+ */
137
+ resetRoomTimers(): void;
138
+ /**
139
+ * 获取房间计时信息(用于调试)
140
+ */
141
+ getRoomTimersInfo(): Record<string, number>;
120
142
  /**
121
143
  * 销毁控制器
122
144
  */
@@ -11,13 +11,18 @@ export class HAVacuumController extends EventEmitter {
11
11
  cleaningModeEntityId; // select.dreame_vacuum_r2254_cleaning_mode
12
12
  errorSensorId; // sensor.dreame_vacuum_r2254_error
13
13
  currentRoomSensorId; // sensor.sao_di_ji_current_room
14
+ stateSensorId; // sensor.dreame_vacuum_r2254_state (washing 等详细状态)
14
15
  cleanedAreaSensorId; // sensor.dreame_vacuum_r2254_cleaned_area
15
16
  cleaningTimeSensorId; // sensor.dreame_vacuum_r2254_cleaning_time
16
17
  hepaFilterSensorId; // sensor.dreame_vacuum_r2254_filter_left
17
18
  roomAreaSizes; // 房间面积配置
18
19
  selectedRoomNames = []; // 当前选择的房间名称列表
19
20
  currentState;
20
- constructor(haClient, entityId, batterySensorId, chargingSensorId, cleaningModeEntityId, errorSensorId, currentRoomSensorId, cleanedAreaSensorId, cleaningTimeSensorId, hepaFilterSensorId, roomAreaSizes) {
21
+ // 房间时间追踪
22
+ roomTimers = new Map();
23
+ lastRoom;
24
+ taskStartTime = 0;
25
+ constructor(haClient, entityId, batterySensorId, chargingSensorId, cleaningModeEntityId, errorSensorId, currentRoomSensorId, stateSensorId, cleanedAreaSensorId, cleaningTimeSensorId, hepaFilterSensorId, roomAreaSizes) {
21
26
  super();
22
27
  this.haClient = haClient;
23
28
  this.entityId = entityId;
@@ -26,6 +31,7 @@ export class HAVacuumController extends EventEmitter {
26
31
  this.cleaningModeEntityId = cleaningModeEntityId;
27
32
  this.errorSensorId = errorSensorId;
28
33
  this.currentRoomSensorId = currentRoomSensorId;
34
+ this.stateSensorId = stateSensorId;
29
35
  this.cleanedAreaSensorId = cleanedAreaSensorId;
30
36
  this.cleaningTimeSensorId = cleaningTimeSensorId;
31
37
  this.hepaFilterSensorId = hepaFilterSensorId;
@@ -63,6 +69,10 @@ export class HAVacuumController extends EventEmitter {
63
69
  // 当前房间传感器变化
64
70
  await this.updateState();
65
71
  }
72
+ else if (entityId === this.stateSensorId) {
73
+ // 状态传感器变化(washing 等详细状态)
74
+ await this.updateState();
75
+ }
66
76
  else if (entityId === this.cleanedAreaSensorId) {
67
77
  // 已清洁面积传感器变化
68
78
  await this.updateState();
@@ -204,8 +214,26 @@ export class HAVacuumController extends EventEmitter {
204
214
  // 如果没有配置传感器,尝试从主实体的 attributes 中读取
205
215
  hepaFilterLife = parseFloat(entity.attributes.filter_left) || 0;
206
216
  }
217
+ // 获取详细状态(washing 等)
218
+ let detailedState = entity.state; // 默认使用主实体状态
219
+ if (this.stateSensorId) {
220
+ try {
221
+ const stateSensor = await this.haClient.getEntityState(this.stateSensorId);
222
+ if (stateSensor.state && stateSensor.state !== 'unavailable') {
223
+ detailedState = stateSensor.state;
224
+ console.log(`[${this.entityId}] 📊 详细状态: ${detailedState} (来自 ${this.stateSensorId})`);
225
+ }
226
+ }
227
+ catch (error) {
228
+ console.error(`[${this.entityId}] Failed to get state sensor:`, error);
229
+ }
230
+ }
231
+ else {
232
+ console.log(`[${this.entityId}] 📊 主实体状态: entity.state="${entity.state}"`);
233
+ }
207
234
  this.currentState = {
208
235
  state: entity.state,
236
+ detailedState: detailedState, // 添加详细状态
209
237
  batteryLevel: batteryLevel,
210
238
  isCharging: isCharging,
211
239
  fanSpeed: entity.attributes.fan_speed,
@@ -218,6 +246,15 @@ export class HAVacuumController extends EventEmitter {
218
246
  hepaFilterLife: hepaFilterLife,
219
247
  rawAttributes: entity.attributes,
220
248
  };
249
+ // 如果是清洗拖布状态,不更新计时器
250
+ if (detailedState === 'washing') {
251
+ console.log(`[${this.entityId}] 🧽 扫地机正在清洗拖布,暂不开始计时`);
252
+ this.emit('stateChanged', this.currentState);
253
+ return; // 直接返回,不调用 updateRoomTimer
254
+ }
255
+ // 更新房间计时器
256
+ const isCleaningState = entity.state === 'cleaning';
257
+ this.updateRoomTimer(currentRoom, isCleaningState);
221
258
  this.emit('stateChanged', this.currentState);
222
259
  }
223
260
  /**
@@ -364,6 +401,105 @@ export class HAVacuumController extends EventEmitter {
364
401
  });
365
402
  }
366
403
  }
404
+ /**
405
+ * 更新房间计时器
406
+ * 当房间切换时记录上一个房间的时间,开始新房间的计时
407
+ */
408
+ updateRoomTimer(currentRoom, isCleaningState) {
409
+ const now = Date.now();
410
+ // 🔍 调试日志
411
+ console.log(`[${this.entityId}] 🔍 updateRoomTimer: currentRoom="${currentRoom}", isCleaningState=${isCleaningState}, lastRoom="${this.lastRoom}", taskStartTime=${this.taskStartTime}`);
412
+ // 如果开始清扫任务(从非清扫状态进入清扫状态)
413
+ if (isCleaningState && this.taskStartTime === 0) {
414
+ this.taskStartTime = now;
415
+ console.log(`[${this.entityId}] ⏱️ 开始清扫任务`);
416
+ }
417
+ // 如果结束清扫任务(从清扫状态进入非清扫状态)
418
+ if (!isCleaningState && this.taskStartTime > 0) {
419
+ // 保存最后一个房间的时间
420
+ if (this.lastRoom) {
421
+ const timer = this.roomTimers.get(this.lastRoom);
422
+ if (timer && timer.startTime > 0) {
423
+ timer.totalTime += (now - timer.startTime) / 1000; // 转换为秒
424
+ timer.startTime = 0;
425
+ console.log(`[${this.entityId}] ⏹️ 房间"${this.lastRoom}"清扫完成,总用时: ${Math.floor(timer.totalTime)}秒`);
426
+ }
427
+ }
428
+ this.taskStartTime = 0;
429
+ this.lastRoom = undefined;
430
+ return;
431
+ }
432
+ // 只在清扫状态下处理房间切换
433
+ if (!isCleaningState || !currentRoom) {
434
+ console.log(`[${this.entityId}] 🔍 跳过: isCleaningState=${isCleaningState}, currentRoom="${currentRoom}"`);
435
+ return;
436
+ }
437
+ // 房间切换检测
438
+ if (this.lastRoom && this.lastRoom !== currentRoom) {
439
+ const lastTimer = this.roomTimers.get(this.lastRoom);
440
+ if (lastTimer && lastTimer.startTime > 0) {
441
+ // 保存上一个房间的累计时间
442
+ lastTimer.totalTime += (now - lastTimer.startTime) / 1000; // 转换为秒
443
+ lastTimer.startTime = 0;
444
+ console.log(`[${this.entityId}] ✅ 房间"${this.lastRoom}"清扫完成,用时: ${Math.floor(lastTimer.totalTime)}秒`);
445
+ }
446
+ }
447
+ // 开始新房间的计时
448
+ if (currentRoom !== this.lastRoom) {
449
+ let timer = this.roomTimers.get(currentRoom);
450
+ if (!timer) {
451
+ timer = { startTime: 0, totalTime: 0 };
452
+ this.roomTimers.set(currentRoom, timer);
453
+ console.log(`[${this.entityId}] 🔍 创建新计时器: ${currentRoom}`);
454
+ }
455
+ timer.startTime = now;
456
+ console.log(`[${this.entityId}] 🚪 进入房间"${currentRoom}",开始计时 (startTime=${now})`);
457
+ this.lastRoom = currentRoom;
458
+ }
459
+ else {
460
+ console.log(`[${this.entityId}] 🔍 房间未变化: currentRoom="${currentRoom}" === lastRoom="${this.lastRoom}"`);
461
+ }
462
+ }
463
+ /**
464
+ * 获取指定房间的清扫时间(秒)
465
+ */
466
+ getRoomTime(roomName) {
467
+ const timer = this.roomTimers.get(roomName);
468
+ if (!timer) {
469
+ console.log(`[${this.entityId}] 🔍 getRoomTime("${roomName}"): 无计时器记录, 返回 0`);
470
+ return 0;
471
+ }
472
+ let totalTime = timer.totalTime;
473
+ // 如果这个房间正在清扫中,加上当前的时间
474
+ if (timer.startTime > 0) {
475
+ const currentTime = (Date.now() - timer.startTime) / 1000;
476
+ totalTime += currentTime;
477
+ console.log(`[${this.entityId}] 🔍 getRoomTime("${roomName}"): totalTime=${timer.totalTime}秒, startTime=${timer.startTime}, 当前额外=${Math.floor(currentTime)}秒, 总计=${Math.floor(totalTime)}秒`);
478
+ }
479
+ else {
480
+ console.log(`[${this.entityId}] 🔍 getRoomTime("${roomName}"): 计时器未运行 (startTime=0), totalTime=${timer.totalTime}秒`);
481
+ }
482
+ return Math.floor(totalTime);
483
+ }
484
+ /**
485
+ * 重置所有房间计时器
486
+ */
487
+ resetRoomTimers() {
488
+ console.log(`[${this.entityId}] 🔄 重置房间计时器`);
489
+ this.roomTimers.clear();
490
+ this.lastRoom = undefined;
491
+ this.taskStartTime = 0;
492
+ }
493
+ /**
494
+ * 获取房间计时信息(用于调试)
495
+ */
496
+ getRoomTimersInfo() {
497
+ const info = {};
498
+ for (const [room, timer] of this.roomTimers.entries()) {
499
+ info[room] = this.getRoomTime(room);
500
+ }
501
+ return info;
502
+ }
367
503
  /**
368
504
  * 销毁控制器
369
505
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ha-vacuum-controller.js","sourceRoot":"","sources":["../../src/ha-vacuum-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA6BtC;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAC1C,QAAQ,CAAsB;IAC9B,QAAQ,CAAS;IACjB,eAAe,CAAU;IACzB,gBAAgB,CAAU;IAC1B,oBAAoB,CAAU,CAAE,2CAA2C;IAC3E,aAAa,CAAU,CAAE,mCAAmC;IAC5D,mBAAmB,CAAU,CAAE,gCAAgC;IAC/D,mBAAmB,CAAU,CAAE,0CAA0C;IACzE,oBAAoB,CAAU,CAAE,2CAA2C;IAC3E,kBAAkB,CAAU,CAAE,yCAAyC;IACvE,aAAa,CAA0B,CAAE,SAAS;IAClD,iBAAiB,GAAa,EAAE,CAAC,CAAE,cAAc;IACjD,YAAY,CAAe;IAEnC,YACE,QAA6B,EAC7B,QAAgB,EAChB,eAAwB,EACxB,gBAAyB,EACzB,oBAA6B,EAC7B,aAAsB,EACtB,mBAA4B,EAC5B,mBAA4B,EAC5B,oBAA6B,EAC7B,kBAA2B,EAC3B,aAAsC;QAEtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,SAAS;QACT,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,QAAgB,EAAE,QAAa,EAAE,EAAE;YACzE,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,iBAAiB;gBACjB,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC7C,YAAY;gBACZ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC9C,YAAY;gBACZ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAClD,YAAY;gBACZ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,UAAU;gBACV,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjD,YAAY;gBACZ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjD,aAAa;gBACb,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAClD,YAAY;gBACZ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAsB;QACpD,SAAS;QACT,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC/E,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACzE,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,SAAS;QACT,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjF,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,kCAAkC,EAAE,KAAK,CAAC,CAAC;gBAC1E,sCAAsC;gBACtC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC;QACzD,CAAC;QAED,SAAS;QACT,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACzF,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,gCAAgC,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,SAAS;QACT,IAAI,QAAQ,GAAG,SAAS,CAAC;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3E,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,SAAS;QACT,IAAI,WAAW,GAAG,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAChF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC/D,oBAAoB;gBACpB,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;oBAC3D,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,aAAa,WAAW,EAAE,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,mBAAmB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,kBAAkB,CAAC,CAAC;QACnD,CAAC;QAED,UAAU;QACV,IAAI,WAAW,GAAG,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAChF,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;oBAC3D,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAED,SAAS;QACT,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACjF,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;oBAC3D,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,uCAAuC,EAAE,KAAK,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,cAAc,GAAG,SAAS,CAAC;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,uBAAuB;YACvB,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjF,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;oBAC/D,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACvD,mCAAmC;YACnC,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,YAAY,GAAG;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;YACrC,YAAY,EAAE,YAAY;YAC1B,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;YAC9B,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,YAAY;YAC1B,cAAc,EAAE,cAAc;YAC9B,aAAa,EAAE,MAAM,CAAC,UAAU;SACjC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,SAAmB;QACtC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;YACjD,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;YACjD,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;YAChD,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE;YAC1D,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBAClD,SAAS,EAAE,IAAI,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,cAAc,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,WAAW,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE;YACzD,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,IAAY;QACtC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE;YACzD,SAAS,EAAE,IAAI,CAAC,oBAAoB;YACpC,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,0BAA0B,CAAC,MAAuB;QACtD,UAAU;QACV,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACtD,kBAAkB;YAClB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,QAAQ;QACR,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,QAAkB,EAAE,UAAmC;QACzE,gCAAgC;QAChC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,cAAc,GAAG,QAAQ;iBAC5B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;iBACzB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,uBAAuB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjH,iBAAiB;YACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBACvE,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE;gBAC5D,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,CAAC;gBACP,EAAE,EAAE,QAAQ;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"ha-vacuum-controller.js","sourceRoot":"","sources":["../../src/ha-vacuum-controller.ts"],"names":[],"mappings":"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"}