- 实现 MIoT 客户端核心功能(MQTT 连接、设备管理、属性读写) - 支持云端 API 调用与局域网设备发现(mDNS) - 集成国际化(i18n)多语言支持 - 添加 MIoT 设备规约解析器(spec_parser) - 包含单元测试与使用示例
3.9 KiB
3.9 KiB
12 - miot_lan.py 移植计划
概览
| 项目 | 内容 |
|---|---|
| Python 文件 | py-miot/miot_lan.py (53,181字节) |
| Go 文件 | ❌ 缺失 |
| 状态 | ❌ 完全缺失 |
| 优先级 | 🟢 P2 |
| 预计工作量 | 20-28 小时 |
Python 版本核心类
设备管理
| 类名 | 行号 | 功能 | Go 状态 |
|---|---|---|---|
_MIoTLanDevice |
131 | LAN 设备(加密通信) | ❌ 缺失 |
_MIoTLanDeviceState |
123 | 设备状态枚举 | ❌ 缺失 |
数据类
| 类名 | 行号 | 功能 | Go 状态 |
|---|---|---|---|
_MIoTLanRequestData |
115 | LAN 请求数据 | ❌ 缺失 |
_MIoTLanSubDeviceData |
102 | 订阅设备数据 | ❌ 缺失 |
_MIoTLanBroadcastData |
91 | 广播数据 | ❌ 缺失 |
主类
| 类名 | 行号 | 功能 | Go 状态 |
|---|---|---|---|
MIoTLan |
~300 | LAN 管理主类 | ❌ 缺失 |
Go 版本现状
整个 miot_lan.py 模块在 Go 版本中完全缺失。
缺失的核心功能
-
设备管理
- 设备发现和注册
- 设备状态监控(PING/DEAD)
- 保活机制
-
加密通信
- AES-128-CBC 加密
- Token 管理
- 消息加解密
-
网络管理
- UDP 通信
- 广播和单播
- 网络接口管理
-
订阅管理
- 设备订阅/取消订阅
- 广播注册/取消注册
- 设备状态订阅
移植建议
第一批任务(数据结构和加密)
-
实现数据结构 (4小时)
- 数据类(RequestData, SubDeviceData, BroadcastData)
- 设备状态枚举
- LAN 设备结构体
-
实现加密通信 (4小时)
- AES-128-CBC 加密
- Token 管理
- 消息加解密
第二批任务(设备管理)
-
实现设备管理 (6小时)
- 设备发现和注册
- 设备状态监控
- 保活机制
-
实现网络通信 (4小时)
- UDP 通信
- 广播和单播
- 网络接口管理
第三批任务(高级功能)
-
实现订阅管理 (4小时)
- 设备订阅/取消订阅
- 广播注册/取消注册
-
实现网络状态管理 (3小时)
- 网络状态监控
- 网络不稳定性检测
-
单元测试 (4小时)
- 测试加密通信
- 测试设备发现
- 测试订阅管理
技术难点
1. AES 加密
问题:Python 使用 cryptography 库,Go 使用标准库
建议:
import (
"crypto/aes"
"crypto/cipher"
"crypto/md5"
)
func NewAESCipher(token []byte) (cipher.Block, []byte, error) {
aesKey := md5Sum(token)
aesIV := md5Sum(append(aesKey[:], token...))
block, err := aes.NewCipher(aesKey[:])
return block, aesIV[:], err
}
2. UDP 通信
问题:需要实现 UDP 广播和单播
建议:
import "net"
func (d *LanDevice) SendBroadcast(data []byte) error {
conn, err := net.DialUDP("udp", nil, &net.UDPAddr{
IP: net.IPv4bcast,
Port: 54321,
})
// ...
}
3. 设备状态监控
问题:需要实现 PING 检测和设备状态管理
建议:
type LanDeviceState int
const (
LanDeviceFresh LanDeviceState = iota
LanDevicePing1
LanDevicePing2
LanDevicePing3
LanDeviceDead
)
依赖关系
| 依赖文件 | 关系 | 说明 |
|---|---|---|
miot_error.py |
强依赖 | 错误定义 |
miot_network.py |
强依赖 | 网络管理 |
miot_mdns.py |
强依赖 | mDNS 发现 |
cryptography |
强依赖 | 加密库 |
进度跟踪
- 实现数据结构 (预计 4小时)
- 实现加密通信 (预计 4小时)
- 实现设备管理 (预计 6小时)
- 实现网络通信 (预计 4小时)
- 实现订阅管理 (预计 4小时)
- 实现网络状态管理 (预计 3小时)
- 单元测试 (预计 4小时)
总计:29小时
创建时间:2026-06-28 最后更新:2026-06-28 负责人:待定