Commit Graph

27 Commits

Author SHA1 Message Date
impressionyang
1af5333792 fix: 修复阻塞事件循环的警告
将 serial.tools.list_ports.comports() 和串口验证移到线程池执行
避免阻塞 HA 事件循环,消除 asyncio_blocking_operations 警告
2026-04-16 16:08:57 +08:00
impressionyang
cbb36d7300 fix: 添加实际的扫描命令发送
start_scanning() 方法现在会发送 AT+PROV=SCAN 命令到网关
之前只设置了状态但没有发送实际扫描命令,导致扫描不到设备
2026-04-16 16:02:02 +08:00
impressionyang
13e2b36a0c fix: 允许在 scanning 状态重新开始扫描
修复重复点击扫描按钮时的错误,现在会重置扫描状态而不是报错
2026-04-16 15:35:23 +08:00
impressionyang
23f671fa62 fix: 修复 Lovelace 卡片加载错误
问题:Custom element not found: sigmesh-gateway-panel

修复内容:
1. sigmesh-gateway-panel.js:
   - 添加 window.customCards 注册
   - 添加卡片元数据(name, description, preview)
   - 更新使用说明

2. hacs.json:
   - 添加 frontend.extra_module_url 配置
   - 添加 category: integration

3. 新增 deploy.sh 部署脚本:
   - 自动复制集成文件和 Lovelace 卡片
   - 设置正确权限
   - 提示用户配置 frontend

4. README.md:
   - 添加部署脚本使用说明
   - 添加常见问题排查(卡片加载错误)
   - 区分手动部署和 HACS 安装两种方式

部署步骤:
1. chmod +x deploy.sh && ./deploy.sh
2. 在 configuration.yaml 添加 frontend.extra_module_url
3. ha core restart
4. 清除浏览器缓存后添加卡片
2026-04-16 14:26:00 +08:00
impressionyang
e140dd81c4 fix: 修复 Lovelace 卡片和过时常量警告
修复 1: Lovelace 卡片配置错误
- 重写 sigmesh-gateway-panel.js 遵循 HA 卡片规范
- 添加 setConfig 方法
- 添加 getCardSize 方法
- 添加静态方法 (getStubConfig, getConfigElement)
- 使用 ha-card 包装器和 shadow DOM
- 修复 hass 设置和渲染逻辑

修复 2: 过时常量警告
- light.py: 将 ATTR_COLOR_TEMP 替换为 ATTR_COLOR_TEMP_KELVIN
- 修复 HA Core 2026.1 兼容性警告

部署步骤:
1. cp custom_components/sigmesh_gateway/sigmesh-gateway-panel.js ~/.homeassistant/www/community/sigmesh_gateway/
2. cp -r custom_components/sigmesh_gateway ~/.homeassistant/custom_components/
3. ha core restart
2026-04-16 14:13:22 +08:00
impressionyang
04e942992b fix: 修复 OptionsFlow 配置表单显示问题
问题:集成配置选项面板中字体不显示

修复内容:
- 移除 vol.Coerce 包装器,直接使用 int/bool 类型
- 添加错误处理和显示
- 修复 self._hass 为 self.hass (OptionsFlow 中通过属性访问)
- 添加实际操作调用(扫描、配网、绑定、分组)
- 添加错误时返回上一步的逻辑

修改的方法:
- async_step_poll_config: 简化类型定义
- async_step_prov_action: 添加错误处理
- async_step_start_scan: 添加实际调用和错误处理
- async_step_stop_prov: 添加实际调用和错误处理
- async_step_bind_appkey: 添加实际调用和错误处理
- async_step_add_to_group: 添加实际调用和错误处理
- async_step_remove_from_group: 添加实际调用和错误处理
2026-04-16 13:51:37 +08:00
impressionyang
4c3eb62dfb feat: 实现完整的 Web UI 配网管理功能
新增 Web UI 组件:
- web_ui.py: RESTful API 端点(状态、扫描、配网、分组、设备)
- sigmesh-gateway-panel.js: Lovelace Dashboard 自定义卡片
  - 设备扫描和发现
- 配网操作(开始/停止/绑定 App Key)
  - 分组管理(添加/移除)
  - 实时状态监控

配置更新:
- __init__.py: 集成 Web UI 和服务注册
- const.py: 添加服务常量定义
- services.py: 保留服务调用用于向后兼容
- README.md: 添加 Web UI 配置说明
- docs/UI 使用指南.md: 详细的 UI 使用文档

使用方式:
1. 配置 frontend.extra_module_url 加载 JS 面板
2. 在 Lovelace Dashboard 添加 custom:sigmesh-gateway-panel 卡片
3. 通过 UI 完成所有配网和分组操作

API 端点:
- GET /api/sigmesh_gateway/status - 获取配网状态
- POST /api/sigmesh_gateway/scan - 开始扫描
- POST /api/sigmesh_gateway/provisioning - 配网操作
- POST /api/sigmesh_gateway/group - 分组管理
- GET /api/sigmesh_gateway/devices - 设备列表
2026-04-16 13:41:28 +08:00
impressionyang
fa7a03b9eb docs: 创建配网使用指南
新增 docs/配网使用指南.md,包含:
- 配网流程说明(首次配置、扫描、配网、绑定)
- 分组管理操作(添加/移除设备到组)
- 高级功能(VENDOR 命令、停止配网)
- 组地址规划建议
- 配网状态事件说明
- 故障排查指南
- 服务列表参考
2026-04-16 12:06:12 +08:00
impressionyang
d21e7f1b3f feat: 添加配网和分组管理功能
新增功能:
- 配网管理模块 (provisioning.py): 支持设备扫描、配网、超时处理
- 配网配置步骤: UI 配置流程增加配网参数配置(Network Key, App Key 等)
- 分组管理:支持 SIG 分组和 VENDOR 分组的加入/删除操作
- HA 服务调用:7 个配网和分组相关的服务

文件变更:
- const.py: 添加配网相关常量(CONF_NETWORK_KEY, PROV_TIMEOUT 等)
- config_flow.py: 增加 prov_config 配置步骤和 OptionsFlow 菜单
- provisioning.py: 新建配网管理器(ProvisioningManager 类)
- coordinator.py: 集成配网管理器,添加配网状态管理方法
- services.py: 新建服务定义和注册
- services.yaml: HA 服务定义文件
- __init__.py: 集成服务注册和卸载
- PRD.md: 更新服务调用接口和配置参数文档

配网功能说明:
- 首次使用需配置 Network Key, App Key, Network ID, IV Index
- 配网超时时间:180 秒
- 组地址范围:0xC000 - 0xCFFF
- 支持 SIG 标准分组和 VENDOR 自定义分组
2026-04-16 12:05:13 +08:00
impressionyang
f1f2c77af4 docs: 更新网关配置文档
- 新增 docs/网关配置教程.md (基于 E104-BT12+tool 使用教程-V1.0.docx)
- 更新 PRD.md:
  - 更新网关型号为 E104-BT12USP
  - 添加 danglo 组网工具配置步骤
  - 添加协议帧格式详细说明
  - 添加组网配置要点和订阅限制
  - 移除不存在的 bleak-mesh 依赖
- 保存网关配置要点到记忆 (gateway_config.md)
2026-04-16 11:49:49 +08:00
impressionyang
9c71db2807 docs: 更新问题修复记录
- 添加 callback 导入缺失错误的修复记录
2026-04-16 09:55:38 +08:00
impressionyang
4031747635 fix: 添加缺失的 callback 导入
- 在 config_flow.py 中添加 `from homeassistant.core import callback`
- 修复 "Invalid handler specified" 错误
2026-04-16 09:55:08 +08:00
impressionyang
e88ddae6ca docs: 更新问题修复记录 - 添加第二次修复
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 09:48:31 +08:00
impressionyang
311cfbbe7e fix: 修复平台文件和 OptionsFlow 错误
修复内容:
1. 所有平台文件添加 coordinator.data None 检查
   - sensor.py, binary_sensor.py, switch.py, light.py, device_tracker.py
2. 修复 async_get_options_flow 签名
   - 改为实例方法,移除 config_entry 参数
   - 移除 @staticmethod 装饰器
3. OptionsFlow 添加正确的 __init__ 方法

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 09:48:00 +08:00
impressionyang
28e9800cae docs: 更新问题修复记录 - 添加平台加载错误修复
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 09:40:05 +08:00
impressionyang
19774a4a9f fix: 修复平台加载和 OptionsFlow 错误
主要修复:
1. 将平台文件从 platforms/ 移到集成根目录
   - sensor.py, binary_sensor.py, switch.py, light.py, device_tracker.py
2. 修复 OptionsFlow config_entry 属性错误
   - 移除手动设置的 config_entry
3. 添加集成图标 icons/icon.png
4. manifest.json 添加 integration_type: device

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 09:39:35 +08:00
impressionyang
acd23e6f64 docs: 添加项目图标
- 添加 .asset/impress_sig_mesh_hacs.png 作为 HACS 集成图标
- 在 hacs.json 中配置 icon 字段
- 在 README.md 顶部显示图标
- 更新 .gitignore 仅保留图标文件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 22:50:10 +08:00
impressionyang
9637c7f39d docs: 更新问题修复记录 - 添加导入错误修复
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:10:28 +08:00
impressionyang
472fec4a70 fix: 修复 coordinator.py 导入错误
问题:MeshMessageEvent 和 ProvDeviceEvent 定义在 serial_reader.py
但 coordinator.py 错误地从 protocol_parser.py 导入

修复:
- 从 protocol_parser 导入移除这两个类
- 改为从 serial_reader 导入
- 移除 _setup_callbacks 中多余的内部导入

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:09:40 +08:00
impressionyang
09bf82da9a docs: 添加问题修复记录
记录 2026-04-15 配置向导 500 错误的修复过程

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:03:59 +08:00
impressionyang
e905410ed7 fix: 修复 manifest.json 依赖错误
问题:bleak-mesh 包不存在导致 500 错误
解决:
- 移除不存在的 bleak-mesh 依赖
- 使用 pyserial-asyncio-fast 替代 pyserial-asyncio(HA 推荐)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:03:15 +08:00
impressionyang
66b86e3b74 fix: 修复 config_flow.py 类型注解错误
- 将 dict[str, any] 改为 dict[str, Any]
- 添加 typing.Any 导入

这会导致 500 Internal Server Error

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 18:49:18 +08:00
impressionyang
d58bf08472 docs: 添加调试信息收集指南
用于排查配置向导 500 错误,包含:
- 日志收集方法
- Python 语法检查
- 依赖验证
- 常见问题解决方案
- 快速诊断脚本

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 18:43:35 +08:00
impressionyang
f7b4c60af2 docs: 更新 README 安装和更新说明
- 添加本地部署方式(开发/测试推荐)
- 添加 HACS 安装方式
- 添加手动安装方式(生产环境)
- 添加 Git 更新流程说明

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 18:31:11 +08:00
impressionyang
db02581f5c docs: 添加部署指南文档
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 18:27:39 +08:00
impressionyang
79e39c28c9 更新:完善 .gitignore 文件
根据 HACS 项目规范添加:
- HACS 特定文件(RELEASE.md, changelog.md, .hacs/)
- 测试相关文件(.pytest_cache/, .coverage, htmlcov/)
- 敏感信息(*.pem, *.key, *.crt, .env)
- 临时文件和备份文件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 18:22:44 +08:00
impressionyang
6a66c9b474 初始提交:SigMesh Gateway HACS 集成
项目结构:
- custom_components/sigmesh_gateway/ - Home Assistant 集成
  - serial_reader.py - 串口读取器
  - protocol_parser.py - 协议解析器
  - coordinator.py - 数据协调器
  - platforms/ - 传感器/开关/灯光/设备追踪实体

文档:
- PRD.md - 产品需求文档
- README.md - 用户使用指南
- 可行性分析.md - 技术可行性分析
- 参数配置表.md - 配置参数记录
- 调试检查清单.md - 问题排查指南

功能特性:
- 串口通信 (115200 波特率)
- Bluetooth Mesh 协议解析
- 支持 200+ 设备接入
- UI 配置界面
- 多平台实体支持

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 18:20:48 +08:00