matterbridge-ha-roborock 3.0.0 → 3.1.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 ADDED
@@ -0,0 +1,74 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [3.1.0] - 2024-12-31
6
+
7
+ ### Added
8
+ - ✨ **ServiceArea.currentArea 支持**:实时追踪扫地机当前所在房间
9
+ - 新增 `currentRoomSensorMap` 配置项,支持映射 HA 房间传感器
10
+ - 自动将中文房间名转换为 Matter Area ID
11
+ - 房间变化时自动更新 `currentArea` 属性
12
+
13
+ - 🎯 **区域清扫状态优化**:
14
+ - 改进状态映射逻辑,依赖 HA 的 `running` 属性
15
+ - 选区清扫开始时正确显示 "正在行进" (SeekingCharger)
16
+ - 进入房间后自动切换为 "正在清扫" (Running)
17
+
18
+ - 🏠 **返回基站功能修复**:
19
+ - 修复苹果家庭"返回基站"按钮无响应问题
20
+ - 添加 `RvcRunMode.Idle` 模式处理,正确触发返回充电座
21
+
22
+ ### Changed
23
+ - 🔄 **状态同步机制优化**:
24
+ - 移除 15 秒延迟刷新机制
25
+ - 移除 30 秒轮询备份机制
26
+ - 完全依赖 WebSocket 实时推送,响应更快
27
+
28
+ - 📊 **日志增强**:
29
+ - 添加房间变化检测日志
30
+ - 添加 `currentArea` 更新日志
31
+ - 优化操作状态显示(Transitioning⏳、ChargingTransition⚡)
32
+
33
+ ### Fixed
34
+ - 🐛 修复 `changeToMode` 命令未处理 Idle 模式的问题
35
+ - 🐛 修复区域清扫时状态映射优先级错误
36
+ - 🐛 修复 `isAreaCleaning` 标记未正确重置的问题
37
+
38
+ ### Technical Details
39
+ - 新增 `ROOM_NAME_TO_AREA_ID` 映射表
40
+ - 新增 `getRoomAreaId()` 辅助方法
41
+ - 优化 `mapHAStateToOperationalState()` 状态映射逻辑
42
+ - 增强 `HAVacuumController` 支持房间传感器监听
43
+
44
+ ---
45
+
46
+ ## [3.0.0] - 2024-12-30
47
+
48
+ ### Added
49
+ - 🎉 初始版本发布
50
+ - ✨ 支持 Home Assistant 扫地机桥接到 Matter
51
+ - 🏠 支持 Roborock/Dreame 扫地机
52
+ - 🗺️ 支持区域清扫(ServiceArea 集群)
53
+ - 🔋 支持电池状态监控
54
+ - 🎨 支持清洁模式切换(扫地、拖地、组合模式)
55
+ - 🌪️ 支持风速调节(Silent、Standard、Medium、Turbo)
56
+ - ⚙️ 支持传感器映射配置
57
+ - 🔌 WebSocket 实时状态同步
58
+ - 📡 REST API 命令控制
59
+
60
+ ### Supported Clusters
61
+ - PowerSource (电源)
62
+ - RvcOperationalState (操作状态)
63
+ - RvcRunMode (运行模式)
64
+ - RvcCleanMode (清洁模式)
65
+ - ServiceArea (服务区域)
66
+ - Identify (识别)
67
+
68
+ ---
69
+
70
+ ## Version History
71
+
72
+ - **3.1.0** - CurrentArea 支持 + 状态优化 + 返回基站修复
73
+ - **3.0.0** - 初始版本
74
+
package/README.md CHANGED
@@ -1,19 +1,321 @@
1
1
  # Matterbridge HA Roborock
2
2
 
3
- 桥接 Home Assistant 中的 Roborock 到 Matter。
3
+ [![npm version](https://badge.fury.io/js/matterbridge-ha-roborock.svg)](https://www.npmjs.com/package/matterbridge-ha-roborock)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ 将 Home Assistant 中的 Roborock/Dreame 扫地机桥接到 Matter 生态系统,支持苹果家庭、Google Home 等 Matter 控制器。
7
+
8
+ ## ✨ 功能特性
9
+
10
+ ### 核心功能
11
+ - 🏠 **完整的 Matter 扫地机支持**:实现 RoboticVacuumCleaner 设备类型
12
+ - 🗺️ **区域清扫**:支持选择特定房间进行清扫
13
+ - 📍 **实时位置追踪**:显示扫地机当前所在房间
14
+ - 🔋 **电池监控**:实时显示电量和充电状态
15
+ - 🎨 **清洁模式**:支持扫地、拖地、组合模式
16
+ - 🌪️ **风速调节**:Silent、Standard、Medium、Turbo
17
+ - ⚡ **实时同步**:通过 WebSocket 实时更新状态
18
+
19
+ ### Matter 集群支持
20
+ - ✅ PowerSource - 电源管理
21
+ - ✅ RvcOperationalState - 操作状态
22
+ - ✅ RvcRunMode - 运行模式
23
+ - ✅ RvcCleanMode - 清洁模式
24
+ - ✅ ServiceArea - 服务区域(分区清扫)
25
+ - ✅ Identify - 设备识别
26
+
27
+ ## 📦 安装
28
+
29
+ ### 通过 Matterbridge 安装(推荐)
30
+
31
+ 1. 安装 Matterbridge:
32
+ ```bash
33
+ npm install -g matterbridge
34
+ ```
35
+
36
+ 2. 安装插件:
37
+ ```bash
38
+ matterbridge -add matterbridge-ha-roborock
39
+ ```
40
+
41
+ ### 手动安装
42
+
43
+ ```bash
44
+ npm install -g matterbridge-ha-roborock
45
+ ```
46
+
47
+ ## ⚙️ 配置
48
+
49
+ 在 Matterbridge 配置目录(通常是 `~/.matterbridge/`)创建或编辑配置文件:
50
+
51
+ ### 基础配置
4
52
 
5
- ## 配置
6
53
  ```json
7
54
  {
55
+ "name": "matterbridge-ha-roborock",
56
+ "type": "AccessoryPlatform",
8
57
  "haUrl": "http://homeassistant.local:8123",
9
- "haToken": "your-token",
10
- "deviceWhitelist": ["vacuum.roborock_s7"]
58
+ "haToken": "your-long-lived-access-token",
59
+ "deviceWhitelist": [
60
+ "vacuum.dreame_vacuum_r2254"
61
+ ]
11
62
  }
12
63
  ```
13
64
 
14
- ## 开发
65
+ ### 完整配置(推荐)
66
+
67
+ ```json
68
+ {
69
+ "name": "matterbridge-ha-roborock",
70
+ "type": "AccessoryPlatform",
71
+ "haUrl": "http://192.168.1.100:8123",
72
+ "haToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
73
+ "deviceWhitelist": [
74
+ "vacuum.dreame_vacuum_r2254"
75
+ ],
76
+ "batterySensorMap": {
77
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_battery_level"
78
+ },
79
+ "chargingSensorMap": {
80
+ "vacuum.dreame_vacuum_r2254": "binary_sensor.dreame_vacuum_r2254_charging_state"
81
+ },
82
+ "cleaningModeEntityMap": {
83
+ "vacuum.dreame_vacuum_r2254": "select.dreame_vacuum_r2254_cleaning_mode"
84
+ },
85
+ "errorSensorMap": {
86
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_error"
87
+ },
88
+ "currentRoomSensorMap": {
89
+ "vacuum.dreame_vacuum_r2254": "sensor.dreame_vacuum_r2254_current_room"
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### 配置项说明
95
+
96
+ | 配置项 | 类型 | 必需 | 说明 |
97
+ |--------|------|------|------|
98
+ | `haUrl` | string | ✅ | Home Assistant 地址 |
99
+ | `haToken` | string | ✅ | Home Assistant 长期访问令牌 |
100
+ | `deviceWhitelist` | string[] | ✅ | 要桥接的扫地机实体 ID 列表 |
101
+ | `batterySensorMap` | object | ⭐ | 电池电量传感器映射 |
102
+ | `chargingSensorMap` | object | ⭐ | 充电状态传感器映射 |
103
+ | `cleaningModeEntityMap` | object | ⭐ | 清洁模式实体映射 |
104
+ | `errorSensorMap` | object | ⭐ | 错误传感器映射 |
105
+ | `currentRoomSensorMap` | object | ⭐ | 当前房间传感器映射(v3.1.0+) |
106
+
107
+ ⭐ = 强烈推荐配置以获得最佳体验
108
+
109
+ ## 🚀 使用
110
+
111
+ ### 1. 获取 Home Assistant 令牌
112
+
113
+ 1. 登录 Home Assistant
114
+ 2. 点击左下角用户名
115
+ 3. 滚动到"长期访问令牌"部分
116
+ 4. 点击"创建令牌"
117
+ 5. 复制令牌到配置文件
118
+
119
+ ### 2. 启动 Matterbridge
120
+
15
121
  ```bash
122
+ matterbridge
123
+ ```
124
+
125
+ ### 3. 添加到苹果家庭
126
+
127
+ 1. 打开苹果家庭 App
128
+ 2. 点击右上角 "+"
129
+ 3. 选择"添加配件"
130
+ 4. 选择"更多选项"
131
+ 5. 找到"扫地机"并点击
132
+ 6. 输入 Matterbridge 显示的配对码
133
+
134
+ ### 4. 开始使用
135
+
136
+ 在苹果家庭中,你可以:
137
+ - ▶️ 启动/暂停清扫
138
+ - 🏠 返回充电座
139
+ - 🗺️ 选择房间清扫
140
+ - 🔋 查看电量和充电状态
141
+ - 📍 查看当前位置
142
+
143
+ ## 🗺️ 区域清扫配置
144
+
145
+ ### 定义房间映射
146
+
147
+ 在 `src/platform.ts` 中配置你的房间映射:
148
+
149
+ ```typescript
150
+ // Matter Area ID -> Dreame Segment ID
151
+ const AREA_TO_SEGMENT_MAP: Record<number, string> = {
152
+ 1: '3', // 浴室 -> Dreame segment 3
153
+ 2: '4', // 儿童房 -> Dreame segment 4
154
+ 3: '5', // 卧室 -> Dreame segment 5
155
+ 4: '6', // 阳光房 -> Dreame segment 6
156
+ };
157
+
158
+ // HA 房间名称 -> Matter Area ID
159
+ const ROOM_NAME_TO_AREA_ID: Record<string, number | null> = {
160
+ '浴室': 1,
161
+ '儿童房': 2,
162
+ '卧室': 3,
163
+ '阳光房': 4,
164
+ '过道': null,
165
+ '充电座': null,
166
+ };
167
+
168
+ // 支持的区域定义
169
+ const SUPPORTED_AREAS = [
170
+ {
171
+ areaId: 1,
172
+ areaInfo: {
173
+ locationInfo: { locationName: '浴室' }
174
+ }
175
+ },
176
+ // ... 更多房间
177
+ ];
178
+ ```
179
+
180
+ ### 获取 Dreame Segment ID
181
+
182
+ 在 Home Assistant 开发者工具中调用服务:
183
+
184
+ ```yaml
185
+ service: dreame_vacuum.vacuum_clean_segment
186
+ target:
187
+ entity_id: vacuum.dreame_vacuum_r2254
188
+ data:
189
+ segments: [3, 4, 5] # 这些就是 segment ID
190
+ ```
191
+
192
+ ## 📊 状态映射
193
+
194
+ ### HA 状态 → Matter 操作状态
195
+
196
+ | HA State | Matter OperationalState | 显示 |
197
+ |----------|------------------------|------|
198
+ | `docked` | Docked (6) | 已充电 |
199
+ | `charging` | Charging (5) | 充电中 |
200
+ | `cleaning` + `running=true` | Running (1) | 正在清扫 |
201
+ | `cleaning` + `started=true` | SeekingCharger (4) | 正在行进 |
202
+ | `returning` | SeekingCharger (4) | 返回中 |
203
+ | `paused` | Paused (2) | 已暂停 |
204
+ | `error` | Error (3) | 错误 |
205
+
206
+ ### HA 状态 → Matter 运行模式
207
+
208
+ | HA State | Matter RunMode | 显示 |
209
+ |----------|---------------|------|
210
+ | `docked`, `idle` | Idle (1) | 空闲 |
211
+ | `cleaning` | Cleaning (2) | 清扫中 |
212
+ | `mapping` | Mapping (3) | 建图中 |
213
+
214
+ ## 🔧 开发
215
+
216
+ ### 环境要求
217
+
218
+ - Node.js >= 18.0.0
219
+ - TypeScript >= 5.3.0
220
+ - Matterbridge >= 3.0.0
221
+
222
+ ### 本地开发
223
+
224
+ ```bash
225
+ # 克隆仓库
226
+ git clone https://github.com/yourusername/matterbridge-ha-roborock.git
227
+ cd matterbridge-ha-roborock
228
+
229
+ # 安装依赖
16
230
  npm install
231
+
232
+ # 构建
17
233
  npm run build
234
+
235
+ # 监听模式
236
+ npm run watch
237
+
238
+ # 测试连接
18
239
  npm test
19
240
  ```
241
+
242
+ ### 项目结构
243
+
244
+ ```
245
+ matterbridge-ha-roborock/
246
+ ├── src/
247
+ │ ├── index.ts # 插件入口
248
+ │ ├── platform.ts # 核心平台逻辑
249
+ │ ├── platform-config.ts # 配置定义
250
+ │ ├── homeassistant-client.ts # HA 客户端
251
+ │ └── ha-vacuum-controller.ts # 扫地机控制器
252
+ ├── test/
253
+ │ └── test-connection.ts # 连接测试
254
+ ├── package.json
255
+ ├── tsconfig.json
256
+ ├── CHANGELOG.md
257
+ └── README.md
258
+ ```
259
+
260
+ ## 🐛 故障排查
261
+
262
+ ### 扫地机未显示
263
+
264
+ 1. 检查 HA 连接:
265
+ ```bash
266
+ curl -H "Authorization: Bearer YOUR_TOKEN" \
267
+ http://homeassistant.local:8123/api/states/vacuum.your_vacuum
268
+ ```
269
+
270
+ 2. 检查 Matterbridge 日志:
271
+ ```bash
272
+ tail -f ~/.matterbridge/logs/matterbridge.log
273
+ ```
274
+
275
+ ### 区域清扫不工作
276
+
277
+ 1. 验证 segment ID 映射是否正确
278
+ 2. 在 HA 中手动测试 `dreame_vacuum.vacuum_clean_segment` 服务
279
+ 3. 检查 `AREA_TO_SEGMENT_MAP` 配置
280
+
281
+ ### 返回基站无响应
282
+
283
+ - 确保使用 v3.1.0 或更高版本
284
+ - 检查 HA 中 `vacuum.return_to_base` 服务是否可用
285
+
286
+ ## 📝 更新日志
287
+
288
+ 查看 [CHANGELOG.md](./CHANGELOG.md) 了解详细更新历史。
289
+
290
+ ### v3.1.0 (2024-12-31)
291
+ - ✨ 新增 `currentArea` 支持,实时显示当前房间
292
+ - 🎯 优化区域清扫状态映射
293
+ - 🏠 修复返回基站功能
294
+ - 🔄 移除轮询机制,完全依赖 WebSocket
295
+
296
+ ### v3.0.0 (2024-12-30)
297
+ - 🎉 初始版本发布
298
+
299
+ ## 📄 许可证
300
+
301
+ MIT License - 详见 [LICENSE](./LICENSE) 文件
302
+
303
+ ## 🤝 贡献
304
+
305
+ 欢迎提交 Issue 和 Pull Request!
306
+
307
+ ## 🙏 致谢
308
+
309
+ - [Matterbridge](https://github.com/Luligu/matterbridge) - Matter 桥接框架
310
+ - [Home Assistant](https://www.home-assistant.io/) - 智能家居平台
311
+ - [Matter](https://csa-iot.org/all-solutions/matter/) - 智能家居标准
312
+
313
+ ## 📞 支持
314
+
315
+ - 📧 Email: your-email@example.com
316
+ - 💬 Issues: [GitHub Issues](https://github.com/yourusername/matterbridge-ha-roborock/issues)
317
+ - 📖 文档: [Wiki](https://github.com/yourusername/matterbridge-ha-roborock/wiki)
318
+
319
+ ---
320
+
321
+ **如果这个项目对你有帮助,请给个 ⭐ Star!**
@@ -0,0 +1,178 @@
1
+ # Release Checklist v3.1.0
2
+
3
+ ## 📋 发布前检查清单
4
+
5
+ ### 1️⃣ 代码准备
6
+ - [x] 更新版本号到 3.1.0 (package.json)
7
+ - [x] 创建 CHANGELOG.md
8
+ - [x] 更新 README.md
9
+ - [x] 创建 .npmignore
10
+ - [x] 清理并重新编译代码
11
+ - [x] 创建 npm 包 (npm pack)
12
+
13
+ ### 2️⃣ 测试验证
14
+ - [ ] 本地测试所有功能
15
+ - [ ] 基本清扫功能
16
+ - [ ] 区域清扫功能
17
+ - [ ] 返回基站功能
18
+ - [ ] currentArea 更新
19
+ - [ ] 状态同步
20
+ - [ ] 在 Matterbridge 中测试安装
21
+ - [ ] 在苹果家庭中测试控制
22
+
23
+ ### 3️⃣ 文档检查
24
+ - [x] README.md 包含完整使用说明
25
+ - [x] CHANGELOG.md 记录所有更改
26
+ - [x] 配置示例完整
27
+ - [x] 故障排查指南
28
+
29
+ ### 4️⃣ npm 发布
30
+ - [ ] 登录 npm 账号
31
+ ```bash
32
+ npm login
33
+ ```
34
+ - [ ] 检查登录状态
35
+ ```bash
36
+ npm whoami
37
+ ```
38
+ - [ ] 执行发布脚本
39
+ ```bash
40
+ ./publish.sh
41
+ ```
42
+ - [ ] 验证发布成功
43
+ ```bash
44
+ npm view matterbridge-ha-roborock
45
+ ```
46
+
47
+ ### 5️⃣ GitHub 发布
48
+ - [ ] 提交所有更改
49
+ ```bash
50
+ git add .
51
+ git commit -m "chore: release v3.1.0"
52
+ ```
53
+ - [ ] 创建 git tag
54
+ ```bash
55
+ git tag -a v3.1.0 -m "Release v3.1.0"
56
+ ```
57
+ - [ ] 推送到 GitHub
58
+ ```bash
59
+ git push origin main
60
+ git push origin v3.1.0
61
+ ```
62
+ - [ ] 在 GitHub 创建 Release
63
+ - 标题: `v3.1.0 - CurrentArea Support + State Optimization`
64
+ - 描述: 复制 CHANGELOG.md 中的 v3.1.0 部分
65
+
66
+ ### 6️⃣ 发布后验证
67
+ - [ ] 检查 npm 包页面
68
+ - https://www.npmjs.com/package/matterbridge-ha-roborock
69
+ - [ ] 测试全局安装
70
+ ```bash
71
+ npm install -g matterbridge-ha-roborock
72
+ ```
73
+ - [ ] 检查版本号
74
+ ```bash
75
+ npm list -g matterbridge-ha-roborock
76
+ ```
77
+
78
+ ### 7️⃣ 通知和推广
79
+ - [ ] 更新项目文档
80
+ - [ ] 发布更新公告
81
+ - [ ] 通知现有用户
82
+ - [ ] 更新相关论坛/社区帖子
83
+
84
+ ---
85
+
86
+ ## 🚀 快速发布命令
87
+
88
+ ```bash
89
+ # 1. 确保在正确的分支
90
+ git checkout main
91
+
92
+ # 2. 拉取最新代码
93
+ git pull
94
+
95
+ # 3. 运行发布脚本
96
+ ./publish.sh
97
+
98
+ # 4. 提交并推送
99
+ git add .
100
+ git commit -m "chore: release v3.1.0"
101
+ git tag -a v3.1.0 -m "Release v3.1.0"
102
+ git push origin main --tags
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 📝 发布说明模板
108
+
109
+ ### npm 发布说明
110
+
111
+ ```markdown
112
+ # matterbridge-ha-roborock v3.1.0
113
+
114
+ ## 🎉 新功能
115
+
116
+ - ✨ **ServiceArea.currentArea 支持**:实时追踪扫地机当前所在房间
117
+ - 🎯 **区域清扫状态优化**:改进状态映射逻辑
118
+ - 🏠 **返回基站功能修复**:修复苹果家庭"返回基站"按钮
119
+
120
+ ## 🔄 改进
121
+
122
+ - 移除轮询机制,完全依赖 WebSocket 实时推送
123
+ - 优化日志输出,更清晰的状态显示
124
+
125
+ ## 🐛 修复
126
+
127
+ - 修复 `changeToMode` 命令未处理 Idle 模式
128
+ - 修复区域清扫状态映射优先级
129
+
130
+ ## 📦 安装
131
+
132
+ \`\`\`bash
133
+ npm install -g matterbridge-ha-roborock
134
+ \`\`\`
135
+
136
+ ## 📖 文档
137
+
138
+ 查看 [README.md](https://github.com/yourusername/matterbridge-ha-roborock) 了解详细使用说明。
139
+ ```
140
+
141
+ ---
142
+
143
+ ## ⚠️ 注意事项
144
+
145
+ 1. **版本号规范**:遵循语义化版本 (Semantic Versioning)
146
+ - MAJOR.MINOR.PATCH (3.1.0)
147
+ - MAJOR: 不兼容的 API 更改
148
+ - MINOR: 向后兼容的功能新增
149
+ - PATCH: 向后兼容的问题修复
150
+
151
+ 2. **npm 发布权限**:确保有发布权限
152
+ ```bash
153
+ npm owner ls matterbridge-ha-roborock
154
+ ```
155
+
156
+ 3. **回滚方案**:如果发布有问题
157
+ ```bash
158
+ npm unpublish matterbridge-ha-roborock@3.1.0
159
+ ```
160
+ 注意:unpublish 有 24 小时限制
161
+
162
+ 4. **标签管理**:
163
+ - `latest`: 默认标签,用于稳定版本
164
+ - `beta`: 测试版本
165
+ - `next`: 下一个版本
166
+
167
+ ---
168
+
169
+ ## ✅ 发布完成
170
+
171
+ - [ ] npm 包已发布
172
+ - [ ] GitHub Release 已创建
173
+ - [ ] 文档已更新
174
+ - [ ] 用户已通知
175
+
176
+ **发布日期**: _______________
177
+ **发布人**: _______________
178
+
@@ -11,6 +11,7 @@ export interface VacuumState {
11
11
  cleaningMode?: string;
12
12
  error?: string;
13
13
  errorMsg?: string;
14
+ currentRoom?: string;
14
15
  rawAttributes?: any;
15
16
  }
16
17
  /**
@@ -31,9 +32,9 @@ export declare class HAVacuumController extends EventEmitter {
31
32
  private chargingSensorId?;
32
33
  private cleaningModeEntityId?;
33
34
  private errorSensorId?;
35
+ private currentRoomSensorId?;
34
36
  private currentState?;
35
- private pollInterval?;
36
- constructor(haClient: HomeAssistantClient, entityId: string, batterySensorId?: string, chargingSensorId?: string, cleaningModeEntityId?: string, errorSensorId?: string);
37
+ constructor(haClient: HomeAssistantClient, entityId: string, batterySensorId?: string, chargingSensorId?: string, cleaningModeEntityId?: string, errorSensorId?: string, currentRoomSensorId?: string);
37
38
  /**
38
39
  * 初始化控制器 - 获取初始状态并设置监听
39
40
  */
@@ -46,14 +47,6 @@ export declare class HAVacuumController extends EventEmitter {
46
47
  * 处理状态变化
47
48
  */
48
49
  private handleStateChange;
49
- /**
50
- * 启动轮询
51
- */
52
- private startPolling;
53
- /**
54
- * 停止轮询
55
- */
56
- private stopPolling;
57
50
  /**
58
51
  * 获取当前状态
59
52
  */