- 实现 MIoT 客户端核心功能(MQTT 连接、设备管理、属性读写) - 支持云端 API 调用与局域网设备发现(mDNS) - 集成国际化(i18n)多语言支持 - 添加 MIoT 设备规约解析器(spec_parser) - 包含单元测试与使用示例
5.3 KiB
5.3 KiB
第二轮移植审查 — 方法级对齐度分析
审查时间:2026-06-28 方法:逐文件对比 Python 和 Go 版本的类、方法、属性
总体评估
| 类别 | 数量 | 说明 |
|---|---|---|
| 完全对齐 | 10/14 | 核心协议层(MIPS/MQTT/LAN/HTTP/storage/mdns/network/i18n) |
| 部分缺失 | 3/14 | miot_client/miot_cloud/spec_parser 有少量缺失 |
| HA 专属 | — | entity 类、spec_transform 等属 HomeAssistant 层,移除此 Go 版本无需移植 |
| 资源文件 | 2 处 | lan/profile_models.yaml、specs/ 目录未复制 |
需要修复的缺失项(按优先级)
🔴 High — 核心功能缺失
| # | 文件 | 缺失项 | 子文档 |
|---|---|---|---|
| H1 | spec_parser.go |
MIoTSpecProperty.eval_expr / value_format / value_precision | R2-01-spec-properties.md |
| H2 | spec_parser.go |
MIoTSpecValueList.names/values/descriptions/get_value_by_description/get_description_by_value | R2-02-spec-valuelist.md |
| H3 | spec_parser.go |
MIoTSpecProperty.writable/readable/notifiable 访问器 | R2-03-spec-accessors.md |
| H4 | miot_client*.go |
sub_device_state / unsub_device_state | R2-04-client-device-state.md |
| H5 | miot_cloud.go |
MIoTOauthClient.set_redirect_url | R2-05-cloud-oauth-redirect.md |
🟡 Medium — 配置/辅助功能缺失
| # | 文件 | 缺失项 | 子文档 |
|---|---|---|---|
| M1 | miot_client.go |
配置属性:action_debug / display_binary_text / display_binary_bool / cover_dead_zone_width / display_devices_changed_notify / persistent_notify | R2-06-client-config.md |
| M2 | miot_client*.go |
__request_refresh_auth_info / __request_refresh_user_cert | R2-07-client-auth-refresh.md |
| M3 | miot_client*.go |
_show*_notify 通知方法(3个) | R2-08-client-notify.md |
| M4 | miot_cloud.go |
get_prop_async(did,siid,piid) 单属性获取 | R2-09-cloud-single-prop.md |
| M5 | miot_storage.go |
MIoTCert.gen_user_csr | R2-10-storage-csr.md |
| M6 | miot_matcher.go |
iter_all_nodes / get(topic) | R2-11-matcher-methods.md |
| M7 | const.go |
CtrlMode.load() 字符串解析工厂 | R2-12-ctrlmode-load.md |
🟢 Low — 资源文件
| # | 缺失内容 | 子文档 |
|---|---|---|
| L1 | lan/profile_models.yaml — LAN 设备 profile 映射 |
R2-13-resources-lan.md |
| L2 | specs/ 目录(6个文件)— SPEC 扩展/过滤/多语言 |
R2-14-resources-specs.md |
无需移植的项(说明)
| Python 内容 | 原因 |
|---|---|
MIoTServiceEntity 等 4 个 entity 类 |
HA 专属,Go 是纯库 |
MIoTDevice.parse_miot_*_entity 系列 |
HA 专属 entity 解析 |
spec_transform / unit_convert / icon_convert |
HA 专属展示转换 |
gen_device_entity_id 系列 |
HA 专属 entity ID |
_SpecBoolTranslation / _SpecFilter / _SpecAdd / _SpecModify |
HA 专属 spec 配置 |
MIoTHttp 静态工具类 |
Go 中 net/http 直接调用 |
_MipsClient 的 log_debug/log_info/log_error |
Go 标准日志即可 |
__get_prop_handler 批量聚合 |
Go 已用同步方式替代 |
任务表(共 14 项)
| # | 文件 | 类别 | 优先级 |
|---|---|---|---|
| H1 | spec_parser.go | eval_expr/value_format/value_precision | 🔴 |
| H2 | spec_parser.go | ValueList 查询方法 | 🔴 |
| H3 | spec_parser.go | 属性访问器 | 🔴 |
| H4 | miot_client*.go | 设备状态订阅 | 🔴 |
| H5 | miot_cloud.go | OAuth redirect_url setter | 🔴 |
| M1 | miot_client.go | 配置属性 | 🟡 |
| M2 | miot_client*.go | auth/cert 刷新 | 🟡 |
| M3 | miot_client*.go | 通知方法 | 🟡 |
| M4 | miot_cloud.go | 单属性获取 | 🟡 |
| M5 | miot_storage.go | CSR 生成 | 🟡 |
| M6 | miot_matcher.go | 匹配器方法 | 🟡 |
| M7 | const.go | CtrlMode.load | 🟡 |
| L1 | - | 复制 lan/profile_models.yaml | 🟢 |
| L2 | - | 复制 specs/ 目录 | 🟢 |
子文档索引
go-miot/migration/
├── R2-01-spec-properties.md # eval_expr / value_format / value_precision
├── R2-02-spec-valuelist.md # names/values/descriptions/get_value_by/get_description_by
├── R2-03-spec-accessors.md # writable/readable/notifiable
├── R2-04-client-device-state.md # sub_device_state / unsub_device_state
├── R2-05-cloud-oauth-redirect.md # set_redirect_url
├── R2-06-client-config.md # 配置属性
├── R2-07-client-auth-refresh.md # auth/cert 刷新
├── R2-08-client-notify.md # 通知方法
├── R2-09-cloud-single-prop.md # 单属性获取
├── R2-10-storage-csr.md # CSR 生成
├── R2-11-matcher-methods.md # 匹配器方法
├── R2-12-ctrlmode-load.md # CtrlMode.load
├── R2-13-resources-lan.md # profile_models.yaml
└── R2-14-resources-specs.md # specs/ 目录