# 问题修复记录 ## 2026-04-16: 修复平台加载和 OptionsFlow 错误 ### 问题描述 配置集成时出现错误,无法加载平台实体 ### 错误日志 #### 错误 1: 平台模块加载失败 ``` ModuleNotFoundError: No module named 'custom_components.sigmesh_gateway.sensor' ``` **原因**: 平台文件放在 `platforms/` 子目录中,但 HA 期望平台文件直接在集成根目录下 #### 错误 2: OptionsFlow config_entry 错误 ``` AttributeError: property 'config_entry' of 'SigMeshGatewayOptionsFlow' object has no setter ``` **原因**: 新版 HA 中 OptionsFlow 自动提供 `self.config_entry`,不需要手动设置 ### 解决方案 #### 修复 1: 移动平台文件到集成根目录 ```bash # 从 platforms/ 移到根目录 mv platforms/sensor.py . mv platforms/binary_sensor.py . mv platforms/switch.py . mv platforms/light.py . mv platforms/device_tracker.py . rmdir platforms ``` #### 修复 2: 修复 OptionsFlow ```diff class SigMeshGatewayOptionsFlow(config_entries.OptionsFlow): """SigMesh Gateway 选项流程.""" - def __init__(self, config_entry: config_entries.ConfigEntry) -> None: - """初始化选项流程.""" - self.config_entry = config_entry async def async_step_init(self, user_input: dict[str, Any] | None = None) -> FlowResult: ``` #### 修复 3: 添加集成图标 - 复制图标到 `custom_components/sigmesh_gateway/icons/icon.png` - HA 会自动识别该图标并显示在集成页面 ### 提交记录 | Commit | 说明 | |--------|------| | 19774a4 | fix: 修复平台加载和 OptionsFlow 错误 | ### 部署步骤 ```bash # 复制更新后的集成文件 cp -r /home/ubuntu/workspace/cherry-studio/enginneer/impress_sig_mesh_hacs/custom_components/sigmesh_gateway \ /custom_components/ # 重启 Home Assistant ha core restart ``` ### 验证 重启后,在 HA UI 中重新尝试添加集成,应能正常显示配置表单和创建实体。 --- ## 2026-04-15: 修复配置向导 500 错误 ### 问题描述 添加集成时出现 500 Internal Server Error ### 根本原因 1. **类型注解错误**:`config_flow.py` 使用了小写 `any` 而非 `Any` 2. **依赖包不存在**:`manifest.json` 中引用了不存在的 `bleak-mesh>=0.2.0` 3. **导入错误**:`coordinator.py` 从错误的模块导入 `MeshMessageEvent` 和 `ProvDeviceEvent` ### 错误日志 #### 错误 1: 依赖包不存在 ``` homeassistant.requirements.RequirementsNotFound: Requirements for sigmesh_gateway not found: ['bleak-mesh>=0.2.0']. ``` #### 错误 2: 导入错误 ``` Error occurred loading flow for integration sigmesh_gateway: cannot import name 'MeshMessageEvent' from 'custom_components.sigmesh_gateway.protocol_parser' ``` ### 解决方案 #### 修复 1: config_flow.py 类型注解 ```diff + from typing import Any - async def async_step_user(self, user_input: dict[str, any] | None = None) -> FlowResult: + async def async_step_user(self, user_input: dict[str, Any] | None = None) -> FlowResult: ``` #### 修复 2: manifest.json 依赖 ```diff - "requirements": ["pyserial-asyncio==0.6", "bleak-mesh>=0.2.0"], + "requirements": ["pyserial-asyncio-fast>=0.6"], ``` #### 修复 3: coordinator.py 导入 ```diff from .protocol_parser import ( DeviceManager, DeviceState, - MeshMessageEvent, ParsedMeshMessage, - ProvDeviceEvent, ProtocolParser, ) + from .serial_reader import ( + MeshMessageEvent, + ProvDeviceEvent, + SerialReader, + ) ``` ### 提交记录 | Commit | 说明 | |--------|------| | 472fec4 | fix: 修复 coordinator.py 导入错误 | | e905410 | fix: 修复 manifest.json 依赖错误 | | 66b86e3 | fix: 修复 config_flow.py 类型注解错误 | ### 部署步骤 ```bash # 复制更新后的集成文件 cp -r /home/ubuntu/workspace/cherry-studio/enginneer/impress_sig_mesh_hacs/custom_components/sigmesh_gateway \ /custom_components/ # 重启 Home Assistant ha core restart ``` ### 验证 重启后,在 HA UI 中重新尝试添加集成,应能正常显示配置表单。