matterbridge-ha-roborock 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/FEATURE_SUMMARY_v3.2.0.md +287 -0
- package/PROGRESS_FEATURE.md +488 -0
- package/README.md +84 -1
- package/RELEASE_CHECKLIST.md +1 -0
- package/config.json +24 -0
- package/deploy-to-server.sh +123 -0
- package/dist/src/ha-vacuum-controller.d.ts +21 -1
- package/dist/src/ha-vacuum-controller.js +91 -1
- package/dist/src/ha-vacuum-controller.js.map +1 -1
- package/dist/src/platform-config.d.ts +30 -0
- package/dist/src/platform-config.js +12 -0
- package/dist/src/platform-config.js.map +1 -1
- package/dist/src/platform.d.ts +15 -0
- package/dist/src/platform.js +200 -4
- package/dist/src/platform.js.map +1 -1
- package/package.json +1 -1
- package/publish.sh +1 -0
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
# 📊 清洁进度功能详细说明
|
|
2
|
+
|
|
3
|
+
## 🎯 功能概述
|
|
4
|
+
|
|
5
|
+
v3.2.0 新增的清洁进度功能,通过已清洁面积传感器和房间面积配置,实时计算清扫进度和预计结束时间。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ✨ 功能特性
|
|
10
|
+
|
|
11
|
+
### 1. 实时进度显示
|
|
12
|
+
- **清洁进度**:0-100% 的百分比显示
|
|
13
|
+
- **已清洁面积**:实时显示已清扫的平方米数
|
|
14
|
+
- **预计剩余时间**:智能估算完成清扫所需时间
|
|
15
|
+
|
|
16
|
+
### 2. 自动计算
|
|
17
|
+
- 根据选择的房间自动计算总面积
|
|
18
|
+
- 实时更新清洁进度
|
|
19
|
+
- 动态调整预计结束时间
|
|
20
|
+
|
|
21
|
+
### 3. 多场景支持
|
|
22
|
+
- ✅ 单房间清扫
|
|
23
|
+
- ✅ 多房间清扫
|
|
24
|
+
- ✅ 全屋清扫
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 🔧 配置指南
|
|
29
|
+
|
|
30
|
+
### 完整配置示例
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"name": "matterbridge-ha-roborock",
|
|
35
|
+
"type": "AccessoryPlatform",
|
|
36
|
+
"haUrl": "http://192.168.1.100:8123",
|
|
37
|
+
"haToken": "your-long-lived-access-token",
|
|
38
|
+
"deviceWhitelist": [
|
|
39
|
+
"vacuum.dreame_vacuum_r2254"
|
|
40
|
+
],
|
|
41
|
+
"batterySensorMap": {
|
|
42
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_battery_level"
|
|
43
|
+
},
|
|
44
|
+
"chargingSensorMap": {
|
|
45
|
+
"vacuum.dreame_vacuum_r2254": "binary_sensor.dreame_vacuum_r2254_charging_state"
|
|
46
|
+
},
|
|
47
|
+
"cleaningModeEntityMap": {
|
|
48
|
+
"vacuum.dreame_vacuum_r2254": "select.dreame_vacuum_r2254_cleaning_mode"
|
|
49
|
+
},
|
|
50
|
+
"errorSensorMap": {
|
|
51
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_error"
|
|
52
|
+
},
|
|
53
|
+
"currentRoomSensorMap": {
|
|
54
|
+
"vacuum.dreame_vacuum_r2254": "sensor.sao_di_ji_current_room"
|
|
55
|
+
},
|
|
56
|
+
"cleanedAreaSensorMap": {
|
|
57
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaned_area"
|
|
58
|
+
},
|
|
59
|
+
"roomAreaSizes": {
|
|
60
|
+
"浴室": 5.5,
|
|
61
|
+
"儿童房": 12.0,
|
|
62
|
+
"卧室": 15.0,
|
|
63
|
+
"阳光房": 10.0
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 配置项详解
|
|
69
|
+
|
|
70
|
+
#### cleanedAreaSensorMap(必需)
|
|
71
|
+
|
|
72
|
+
**作用**:映射扫地机的已清洁面积传感器
|
|
73
|
+
|
|
74
|
+
**格式**:
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"vacuum实体ID": "已清洁面积传感器ID"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**如何查找传感器ID**:
|
|
82
|
+
|
|
83
|
+
1. 在 Home Assistant 中进入"开发者工具" → "状态"
|
|
84
|
+
2. 搜索您的扫地机名称
|
|
85
|
+
3. 查找包含 `cleaned_area` 或类似名称的传感器
|
|
86
|
+
4. 常见命名格式:
|
|
87
|
+
- `sensor.扫地机名称_cleaned_area`
|
|
88
|
+
- `sensor.扫地机名称_total_cleaned_area`
|
|
89
|
+
- `sensor.扫地机名称_cleaning_area`
|
|
90
|
+
|
|
91
|
+
**示例**:
|
|
92
|
+
```json
|
|
93
|
+
"cleanedAreaSensorMap": {
|
|
94
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaned_area",
|
|
95
|
+
"vacuum.roborock_s7": "sensor.roborock_s7_cleaned_area"
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### roomAreaSizes(必需)
|
|
100
|
+
|
|
101
|
+
**作用**:定义每个房间的面积(平方米)
|
|
102
|
+
|
|
103
|
+
**格式**:
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"房间名称": 面积数值
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**重要提示**:
|
|
111
|
+
- 房间名称必须与 `src/platform.ts` 中 `SUPPORTED_AREAS` 的 `locationName` 完全一致
|
|
112
|
+
- 面积单位:平方米(m²)
|
|
113
|
+
- 支持小数(如 5.5)
|
|
114
|
+
|
|
115
|
+
**如何测量房间面积**:
|
|
116
|
+
|
|
117
|
+
方法1:使用扫地机 App
|
|
118
|
+
- 打开扫地机官方 App
|
|
119
|
+
- 查看地图中各房间的面积信息
|
|
120
|
+
- 直接使用 App 显示的数值
|
|
121
|
+
|
|
122
|
+
方法2:查看 Home Assistant
|
|
123
|
+
- 某些集成会提供房间面积属性
|
|
124
|
+
- 在实体属性中查找 `room_area` 或类似字段
|
|
125
|
+
|
|
126
|
+
方法3:手动测量
|
|
127
|
+
- 使用卷尺测量房间长度和宽度
|
|
128
|
+
- 计算:面积 = 长度(米) × 宽度(米)
|
|
129
|
+
- 对于不规则房间,可以分块计算后相加
|
|
130
|
+
|
|
131
|
+
**示例**:
|
|
132
|
+
```json
|
|
133
|
+
"roomAreaSizes": {
|
|
134
|
+
"客厅": 25.5, // 5.1m × 5.0m
|
|
135
|
+
"主卧": 18.0, // 4.5m × 4.0m
|
|
136
|
+
"次卧": 12.0, // 4.0m × 3.0m
|
|
137
|
+
"厨房": 8.5, // 3.4m × 2.5m
|
|
138
|
+
"浴室": 5.5, // 2.2m × 2.5m
|
|
139
|
+
"阳台": 6.0 // 3.0m × 2.0m
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 📐 进度计算原理
|
|
146
|
+
|
|
147
|
+
### 计算公式
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
// 1. 计算选择房间的总面积
|
|
151
|
+
总面积 = Σ(选择的每个房间面积)
|
|
152
|
+
|
|
153
|
+
// 2. 计算清洁进度
|
|
154
|
+
清洁进度(%) = (已清洁面积 / 总面积) × 100
|
|
155
|
+
|
|
156
|
+
// 3. 计算预计结束时间
|
|
157
|
+
已用时间 = 当前时间 - 清扫开始时间
|
|
158
|
+
预计总时间 = (已用时间 / 当前进度) × 100
|
|
159
|
+
预计剩余时间 = 预计总时间 - 已用时间
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 计算示例
|
|
163
|
+
|
|
164
|
+
**场景**:清扫浴室 + 儿童房
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
配置:
|
|
168
|
+
浴室面积:5.5 m²
|
|
169
|
+
儿童房面积:12.0 m²
|
|
170
|
+
总面积:17.5 m²
|
|
171
|
+
|
|
172
|
+
清扫过程:
|
|
173
|
+
T0 (开始):
|
|
174
|
+
已清洁面积:0 m²
|
|
175
|
+
进度:0%
|
|
176
|
+
预计剩余:计算中...
|
|
177
|
+
|
|
178
|
+
T5 (5分钟后):
|
|
179
|
+
已清洁面积:4.4 m²
|
|
180
|
+
进度:25%
|
|
181
|
+
已用时间:5 分钟
|
|
182
|
+
预计总时间:20 分钟
|
|
183
|
+
预计剩余:15 分钟
|
|
184
|
+
|
|
185
|
+
T10 (10分钟后):
|
|
186
|
+
已清洁面积:8.8 m²
|
|
187
|
+
进度:50%
|
|
188
|
+
已用时间:10 分钟
|
|
189
|
+
预计总时间:20 分钟
|
|
190
|
+
预计剩余:10 分钟
|
|
191
|
+
|
|
192
|
+
T18 (18分钟后):
|
|
193
|
+
已清洁面积:17.5 m²
|
|
194
|
+
进度:100%
|
|
195
|
+
完成!
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 📝 使用流程
|
|
201
|
+
|
|
202
|
+
### 1. 在 Apple Home 中选择房间
|
|
203
|
+
|
|
204
|
+
1. 打开苹果家庭 App
|
|
205
|
+
2. 找到扫地机设备
|
|
206
|
+
3. 点击进入详情
|
|
207
|
+
4. 选择要清扫的房间(如:浴室、儿童房)
|
|
208
|
+
|
|
209
|
+
### 2. 开始清扫
|
|
210
|
+
|
|
211
|
+
点击"开始清扫"按钮,系统会:
|
|
212
|
+
- 记录清扫开始时间
|
|
213
|
+
- 设置选择的房间列表
|
|
214
|
+
- 开始监听已清洁面积传感器
|
|
215
|
+
|
|
216
|
+
### 3. 实时监控进度
|
|
217
|
+
|
|
218
|
+
在日志中可以看到:
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
📍 选择区域: 浴室、儿童房
|
|
222
|
+
▶️ 继续清扫
|
|
223
|
+
🗺️ 清扫区域: Matter[1,2] → Dreame[2,3]
|
|
224
|
+
|
|
225
|
+
🔄 cleaning | 85% | 未充电 | sweeping_and_mopping | Standard | 🏠 过道 | 📊 0% | 🧹 0.0m²
|
|
226
|
+
状态标志: ▶️ started
|
|
227
|
+
|
|
228
|
+
🔄 cleaning | 84% | 未充电 | sweeping_and_mopping | Standard | 🏠 浴室 | 📊 15% | 🧹 2.6m²
|
|
229
|
+
状态标志: 🏃 running | ▶️ started
|
|
230
|
+
⏱️ 预计剩余: 12 分钟
|
|
231
|
+
|
|
232
|
+
🔄 cleaning | 82% | 未充电 | sweeping_and_mopping | Standard | 🏠 浴室 | 📊 31% | 🧹 5.4m²
|
|
233
|
+
状态标志: 🏃 running | ▶️ started
|
|
234
|
+
⏱️ 预计剩余: 9 分钟
|
|
235
|
+
|
|
236
|
+
🔄 cleaning | 80% | 未充电 | sweeping_and_mopping | Standard | 🏠 儿童房 | 📊 68% | 🧹 11.9m²
|
|
237
|
+
状态标志: 🏃 running | ▶️ started
|
|
238
|
+
⏱️ 预计剩余: 4 分钟
|
|
239
|
+
|
|
240
|
+
🔄 returning | 75% | 未充电 | sweeping_and_mopping | Standard | 🏠 过道
|
|
241
|
+
状态标志: 🔙 returning
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### 4. 清扫完成
|
|
245
|
+
|
|
246
|
+
当扫地机返回充电座时,进度信息会自动重置。
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 🎨 日志说明
|
|
251
|
+
|
|
252
|
+
### 进度相关日志标记
|
|
253
|
+
|
|
254
|
+
| 标记 | 说明 | 示例 |
|
|
255
|
+
|------|------|------|
|
|
256
|
+
| 📊 | 清洁进度百分比 | 📊 45% |
|
|
257
|
+
| 🧹 | 已清洁面积 | 🧹 7.9m² |
|
|
258
|
+
| ⏱️ | 预计剩余时间 | ⏱️ 预计剩余: 8 分钟 |
|
|
259
|
+
| 🏠 | 当前所在房间 | 🏠 浴室 |
|
|
260
|
+
|
|
261
|
+
### 完整日志示例
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
[2025-01-01 10:00:00] 📝 vacuum.dreame_vacuum_r2254
|
|
265
|
+
[2025-01-01 10:00:00] 电池: sensor.dreame_vacuum_r2254_battery_level
|
|
266
|
+
[2025-01-01 10:00:00] 充电: binary_sensor.dreame_vacuum_r2254_charging_state
|
|
267
|
+
[2025-01-01 10:00:00] 模式: select.dreame_vacuum_r2254_cleaning_mode
|
|
268
|
+
[2025-01-01 10:00:00] 错误: sensor.dreame_vacuum_r2254_error
|
|
269
|
+
[2025-01-01 10:00:00] 房间: sensor.sao_di_ji_current_room
|
|
270
|
+
[2025-01-01 10:00:00] 面积: sensor.dreame_vacuum_r2254_cleaned_area
|
|
271
|
+
[2025-01-01 10:00:00] 房间面积: 浴室:5.5m², 儿童房:12.0m², 卧室:15.0m², 阳光房:10.0m²
|
|
272
|
+
|
|
273
|
+
[2025-01-01 10:05:00] 📍 选择区域: 浴室、儿童房
|
|
274
|
+
[2025-01-01 10:05:01] ▶️ 继续清扫
|
|
275
|
+
[2025-01-01 10:05:01] 🗺️ 清扫区域: Matter[1,2] → Dreame[2,3]
|
|
276
|
+
|
|
277
|
+
[2025-01-01 10:05:05] 🔄 cleaning | 85% | 未充电 | sweeping_and_mopping | Standard | 🏠 过道 | 📊 0% | 🧹 0.0m²
|
|
278
|
+
[2025-01-01 10:05:05] 状态标志: ▶️ started
|
|
279
|
+
|
|
280
|
+
[2025-01-01 10:06:30] 🔄 cleaning | 84% | 未充电 | sweeping_and_mopping | Standard | 🏠 浴室 | 📊 25% | 🧹 4.4m²
|
|
281
|
+
[2025-01-01 10:06:30] 🚪 房间变化: 过道 → 浴室 (isAreaCleaning: true)
|
|
282
|
+
[2025-01-01 10:06:30] 状态标志: 🏃 running | ▶️ started
|
|
283
|
+
[2025-01-01 10:06:30] ⏱️ 预计剩余: 4 分钟
|
|
284
|
+
[2025-01-01 10:06:30] 🎯 已到达清扫区域: 浴室,开始清扫!
|
|
285
|
+
|
|
286
|
+
[2025-01-01 10:10:00] 🔄 cleaning | 80% | 未充电 | sweeping_and_mopping | Standard | 🏠 儿童房 | 📊 75% | 🧹 13.1m²
|
|
287
|
+
[2025-01-01 10:10:00] 🚪 房间变化: 浴室 → 儿童房 (isAreaCleaning: true)
|
|
288
|
+
[2025-01-01 10:10:00] 状态标志: 🏃 running | ▶️ started
|
|
289
|
+
[2025-01-01 10:10:00] ⏱️ 预计剩余: 2 分钟
|
|
290
|
+
[2025-01-01 10:10:00] 🎯 已到达清扫区域: 儿童房,开始清扫!
|
|
291
|
+
|
|
292
|
+
[2025-01-01 10:12:30] 🔄 returning | 75% | 未充电 | sweeping_and_mopping | Standard | 🏠 过道
|
|
293
|
+
[2025-01-01 10:12:30] 状态标志: 🔙 returning
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## 🐛 故障排查
|
|
299
|
+
|
|
300
|
+
### 问题 1:进度一直显示 0%
|
|
301
|
+
|
|
302
|
+
**可能原因**:
|
|
303
|
+
1. 未配置 `cleanedAreaSensorMap`
|
|
304
|
+
2. 未配置 `roomAreaSizes`
|
|
305
|
+
3. 传感器 ID 错误
|
|
306
|
+
4. 房间名称不匹配
|
|
307
|
+
|
|
308
|
+
**解决方法**:
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
# 1. 检查传感器是否存在
|
|
312
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
313
|
+
http://YOUR_HA_URL:8123/api/states/sensor.dreame_vacuum_r2254_cleaned_area
|
|
314
|
+
|
|
315
|
+
# 2. 检查传感器值
|
|
316
|
+
# 应该返回类似:{"state": "12.5", ...}
|
|
317
|
+
|
|
318
|
+
# 3. 检查配置文件
|
|
319
|
+
cat ~/.matterbridge/matterbridge-ha-roborock.config.json
|
|
320
|
+
|
|
321
|
+
# 4. 检查日志
|
|
322
|
+
tail -f ~/.matterbridge/logs/matterbridge.log | grep "面积"
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 问题 2:预计时间不准确
|
|
326
|
+
|
|
327
|
+
**原因**:
|
|
328
|
+
- 预计时间基于当前速度估算
|
|
329
|
+
- 扫地机速度会变化(不同房间、障碍物等)
|
|
330
|
+
- 初期估算误差较大,后期会更准确
|
|
331
|
+
|
|
332
|
+
**正常现象**:
|
|
333
|
+
- 清扫初期(0-20%):预计时间波动较大
|
|
334
|
+
- 清扫中期(20-80%):预计时间逐渐稳定
|
|
335
|
+
- 清扫后期(80-100%):预计时间最准确
|
|
336
|
+
|
|
337
|
+
### 问题 3:房间面积不知道怎么设置
|
|
338
|
+
|
|
339
|
+
**推荐方法**:
|
|
340
|
+
|
|
341
|
+
1. **使用扫地机 App**(最准确)
|
|
342
|
+
- 打开官方 App(米家、Dreame 等)
|
|
343
|
+
- 查看地图,App 通常会显示各房间面积
|
|
344
|
+
|
|
345
|
+
2. **运行一次全屋清扫**
|
|
346
|
+
- 让扫地机完整清扫一次
|
|
347
|
+
- 查看总清洁面积
|
|
348
|
+
- 按房间占比估算
|
|
349
|
+
|
|
350
|
+
3. **保守估算**
|
|
351
|
+
- 先设置一个大概值
|
|
352
|
+
- 观察几次清扫后调整
|
|
353
|
+
- 进度达到 100% 时清扫应该刚好完成
|
|
354
|
+
|
|
355
|
+
### 问题 4:日志中没有进度信息
|
|
356
|
+
|
|
357
|
+
**检查清单**:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# 1. 确认已编译最新代码
|
|
361
|
+
cd /Users/xmg/Projects/matterbridge-ha-roborock
|
|
362
|
+
npm run build
|
|
363
|
+
|
|
364
|
+
# 2. 确认配置文件正确
|
|
365
|
+
cat config.json | grep -A 5 "cleanedAreaSensorMap"
|
|
366
|
+
cat config.json | grep -A 10 "roomAreaSizes"
|
|
367
|
+
|
|
368
|
+
# 3. 重启 Matterbridge
|
|
369
|
+
# 停止并重新启动 Matterbridge 服务
|
|
370
|
+
|
|
371
|
+
# 4. 查看启动日志
|
|
372
|
+
tail -f ~/.matterbridge/logs/matterbridge.log | grep "面积"
|
|
373
|
+
# 应该看到:
|
|
374
|
+
# 面积: sensor.dreame_vacuum_r2254_cleaned_area
|
|
375
|
+
# 房间面积: 浴室:5.5m², 儿童房:12.0m², ...
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## 💡 使用技巧
|
|
381
|
+
|
|
382
|
+
### 1. 精确测量房间面积
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
# 在 Home Assistant 中运行一次单房间清扫
|
|
386
|
+
# 然后查看该房间的清洁面积
|
|
387
|
+
|
|
388
|
+
# 例如:清扫浴室
|
|
389
|
+
# 查看 sensor.dreame_vacuum_r2254_cleaned_area
|
|
390
|
+
# 假设显示 5.3m²,则配置:
|
|
391
|
+
"浴室": 5.3
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### 2. 处理不规则房间
|
|
395
|
+
|
|
396
|
+
对于 L 型或不规则房间:
|
|
397
|
+
- 分块测量后相加
|
|
398
|
+
- 或使用扫地机 App 显示的面积
|
|
399
|
+
- 可以略微放大 5-10%(考虑重复清扫区域)
|
|
400
|
+
|
|
401
|
+
### 3. 优化预计时间准确性
|
|
402
|
+
|
|
403
|
+
- 保持房间整洁,减少障碍物
|
|
404
|
+
- 使用稳定的清扫模式
|
|
405
|
+
- 多次清扫后,系统会"学习"平均速度
|
|
406
|
+
|
|
407
|
+
### 4. 全屋清扫进度
|
|
408
|
+
|
|
409
|
+
如果想显示全屋清扫进度:
|
|
410
|
+
- 在 `roomAreaSizes` 中配置所有房间
|
|
411
|
+
- 系统会自动累加所有房间面积
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 📊 技术细节
|
|
416
|
+
|
|
417
|
+
### VacuumState 接口扩展
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
export interface VacuumState {
|
|
421
|
+
// ... 原有字段
|
|
422
|
+
cleanedArea?: number; // 已清洁面积(m²)
|
|
423
|
+
progress?: number; // 清洁进度(0-100)
|
|
424
|
+
estimatedEndTime?: number; // 预计结束时间(Unix时间戳)
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### 进度计算逻辑
|
|
429
|
+
|
|
430
|
+
```typescript
|
|
431
|
+
private calculateProgress(
|
|
432
|
+
state: string,
|
|
433
|
+
cleanedArea?: number,
|
|
434
|
+
currentRoom?: string
|
|
435
|
+
): { progress?: number; estimatedEndTime?: number } {
|
|
436
|
+
// 只在清扫状态下计算
|
|
437
|
+
if (state !== 'cleaning') {
|
|
438
|
+
return { progress: undefined, estimatedEndTime: undefined };
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
// 计算选择房间的总面积
|
|
442
|
+
const totalArea = this.selectedRoomNames.reduce((sum, roomName) => {
|
|
443
|
+
return sum + (this.roomAreaSizes![roomName] || 0);
|
|
444
|
+
}, 0);
|
|
445
|
+
|
|
446
|
+
// 计算进度
|
|
447
|
+
const progress = Math.min(100, Math.round((cleanedArea / totalArea) * 100));
|
|
448
|
+
|
|
449
|
+
// 计算预计结束时间
|
|
450
|
+
const elapsedTime = Date.now() - this.cleaningStartTime;
|
|
451
|
+
const estimatedTotalTime = (elapsedTime / progress) * 100;
|
|
452
|
+
const estimatedEndTime = this.cleaningStartTime + estimatedTotalTime;
|
|
453
|
+
|
|
454
|
+
return { progress, estimatedEndTime };
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
## 🔄 版本历史
|
|
461
|
+
|
|
462
|
+
### v3.2.0 (2025-01-01)
|
|
463
|
+
- ✨ 新增清洁进度计算功能
|
|
464
|
+
- ✨ 新增预计结束时间估算
|
|
465
|
+
- ✨ 新增已清洁面积显示
|
|
466
|
+
- 📝 新增 `cleanedAreaSensorMap` 配置项
|
|
467
|
+
- 📝 新增 `roomAreaSizes` 配置项
|
|
468
|
+
- 🎨 优化日志输出,显示进度信息
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
## 🤝 贡献
|
|
473
|
+
|
|
474
|
+
如果您有改进建议或发现问题,欢迎:
|
|
475
|
+
- 提交 Issue
|
|
476
|
+
- 提交 Pull Request
|
|
477
|
+
- 分享使用经验
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## 📄 许可证
|
|
482
|
+
|
|
483
|
+
MIT License
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
**如果这个功能对你有帮助,请给个 ⭐ Star!**
|
|
488
|
+
|
package/README.md
CHANGED
|
@@ -87,6 +87,15 @@ npm install -g matterbridge-ha-roborock
|
|
|
87
87
|
},
|
|
88
88
|
"currentRoomSensorMap": {
|
|
89
89
|
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_current_room"
|
|
90
|
+
},
|
|
91
|
+
"cleanedAreaSensorMap": {
|
|
92
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaned_area"
|
|
93
|
+
},
|
|
94
|
+
"roomAreaSizes": {
|
|
95
|
+
"浴室": 5.5,
|
|
96
|
+
"儿童房": 12.0,
|
|
97
|
+
"卧室": 15.0,
|
|
98
|
+
"阳光房": 10.0
|
|
90
99
|
}
|
|
91
100
|
}
|
|
92
101
|
```
|
|
@@ -103,8 +112,11 @@ npm install -g matterbridge-ha-roborock
|
|
|
103
112
|
| `cleaningModeEntityMap` | object | ⭐ | 清洁模式实体映射 |
|
|
104
113
|
| `errorSensorMap` | object | ⭐ | 错误传感器映射 |
|
|
105
114
|
| `currentRoomSensorMap` | object | ⭐ | 当前房间传感器映射(v3.1.0+) |
|
|
115
|
+
| `cleanedAreaSensorMap` | object | 🆕 | 已清洁面积传感器映射(v3.2.0+) |
|
|
116
|
+
| `roomAreaSizes` | object | 🆕 | 房间面积配置,单位:平方米(v3.2.0+) |
|
|
106
117
|
|
|
107
|
-
⭐ = 强烈推荐配置以获得最佳体验
|
|
118
|
+
⭐ = 强烈推荐配置以获得最佳体验
|
|
119
|
+
🆕 = 新功能,用于计算清洁进度
|
|
108
120
|
|
|
109
121
|
## 🚀 使用
|
|
110
122
|
|
|
@@ -139,6 +151,77 @@ matterbridge
|
|
|
139
151
|
- 🗺️ 选择房间清扫
|
|
140
152
|
- 🔋 查看电量和充电状态
|
|
141
153
|
- 📍 查看当前位置
|
|
154
|
+
- 📊 查看清洁进度(v3.2.0+)
|
|
155
|
+
|
|
156
|
+
## 📊 清洁进度功能(v3.2.0 新增)
|
|
157
|
+
|
|
158
|
+
### 功能说明
|
|
159
|
+
|
|
160
|
+
通过配置房间面积和已清洁面积传感器,系统可以自动计算:
|
|
161
|
+
- **清洁进度**:实时显示清扫完成百分比(0-100%)
|
|
162
|
+
- **已清洁面积**:显示已清扫的平方米数
|
|
163
|
+
- **预计结束时间**:根据当前进度估算剩余时间
|
|
164
|
+
|
|
165
|
+
### 配置步骤
|
|
166
|
+
|
|
167
|
+
#### 1. 添加已清洁面积传感器
|
|
168
|
+
|
|
169
|
+
在配置文件中添加 `cleanedAreaSensorMap`:
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"cleanedAreaSensorMap": {
|
|
174
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaned_area"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
#### 2. 配置房间面积
|
|
180
|
+
|
|
181
|
+
在配置文件中添加 `roomAreaSizes`(单位:平方米):
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"roomAreaSizes": {
|
|
186
|
+
"浴室": 5.5,
|
|
187
|
+
"儿童房": 12.0,
|
|
188
|
+
"卧室": 15.0,
|
|
189
|
+
"阳光房": 10.0
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**注意**:房间名称必须与 `src/platform.ts` 中 `SUPPORTED_AREAS` 的 `locationName` 完全一致。
|
|
195
|
+
|
|
196
|
+
#### 3. 测量房间面积
|
|
197
|
+
|
|
198
|
+
如何获取房间面积:
|
|
199
|
+
1. 在 Home Assistant 中查看扫地机的地图
|
|
200
|
+
2. 使用扫地机 App 查看各房间面积
|
|
201
|
+
3. 或手动测量:长度 × 宽度(米)
|
|
202
|
+
|
|
203
|
+
### 进度计算原理
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
清洁进度 = (已清洁面积 / 选择房间总面积) × 100%
|
|
207
|
+
|
|
208
|
+
预计剩余时间 = (已用时间 / 当前进度) × (100 - 当前进度)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**示例**:
|
|
212
|
+
- 选择房间:浴室(5.5m²) + 儿童房(12m²) = 17.5m²
|
|
213
|
+
- 已清洁面积:8.75m²
|
|
214
|
+
- 清洁进度:50%
|
|
215
|
+
- 已用时间:10分钟
|
|
216
|
+
- 预计剩余:10分钟
|
|
217
|
+
|
|
218
|
+
### 日志输出示例
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
🔄 cleaning | 85% | 未充电 | sweeping_and_mopping | Standard | 🏠 浴室 | 📊 45% | 🧹 7.9m²
|
|
222
|
+
状态标志: 🏃 running | ▶️ started
|
|
223
|
+
⏱️ 预计剩余: 8 分钟
|
|
224
|
+
```
|
|
142
225
|
|
|
143
226
|
## 🗺️ 区域清扫配置
|
|
144
227
|
|
package/RELEASE_CHECKLIST.md
CHANGED
package/config.json
CHANGED
|
@@ -6,5 +6,29 @@
|
|
|
6
6
|
"deviceWhitelist": [
|
|
7
7
|
"vacuum.dreame_vacuum_r2254"
|
|
8
8
|
],
|
|
9
|
+
"batterySensorMap": {
|
|
10
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_battery_level"
|
|
11
|
+
},
|
|
12
|
+
"chargingSensorMap": {
|
|
13
|
+
"vacuum.dreame_vacuum_r2254": "binary_sensor.dreame_vacuum_r2254_charging_state"
|
|
14
|
+
},
|
|
15
|
+
"cleaningModeEntityMap": {
|
|
16
|
+
"vacuum.dreame_vacuum_r2254": "select.dreame_vacuum_r2254_cleaning_mode"
|
|
17
|
+
},
|
|
18
|
+
"errorSensorMap": {
|
|
19
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_error"
|
|
20
|
+
},
|
|
21
|
+
"currentRoomSensorMap": {
|
|
22
|
+
"vacuum.dreame_vacuum_r2254": "sensor.sao_di_ji_current_room"
|
|
23
|
+
},
|
|
24
|
+
"cleanedAreaSensorMap": {
|
|
25
|
+
"vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_cleaned_area"
|
|
26
|
+
},
|
|
27
|
+
"roomAreaSizes": {
|
|
28
|
+
"浴室": 5.5,
|
|
29
|
+
"儿童房": 12.0,
|
|
30
|
+
"卧室": 15.0,
|
|
31
|
+
"阳光房": 10.0
|
|
32
|
+
},
|
|
9
33
|
"debug": true
|
|
10
34
|
}
|