**回读目标聚合(recordReadback)** - 所有 set 方法(TurnOn/TurnOff/SetMode/SetTargetTemp/SetFanSpeed/ SetSwing/SetTargetHumidity/SetAuxHeat/SetEco)成功后记录目标值 rbTarget - 同属性目标覆盖、不同属性追加,连续 set 自动聚合 **防抖 + 重试验证(readbackLoop)** - 静默窗口 readbackIdle=3s:等待最后一次 set 无新操作才开始验证 - 未命中目标时按 readbackRetryInterval=3s 重试,上限 readbackMaxRetries=5 - 整体超时 readbackTimeout=30s,防云端卡住导致回读永久挂起 - 命中后逐字段回调 OnPropsChanged 注册的 handler(与 MQTT 推送同语义) - rbValueEqual 数值比较用 epsilon=0.01,bool/string 直接相等 **白名单配置透传** - xiaomi.Config 新增 ReadbackModels 白名单(留空 = 全部不回读,默认) - Client 新增 NeedReadback(model) 判定 + Logger() 访问器 - bridge.Pool.NewPool(readbackModels...) 透传;newBridge 传入 Client 配置 **其他** - bridge 设备创建失败(Warn)与不支持跳过(Debug)分别记录日志
28 lines
1.1 KiB
Go
28 lines
1.1 KiB
Go
package xiaomi
|
||
|
||
// AuthInfo OAuth token 信息。
|
||
type AuthInfo struct {
|
||
AccessToken string `json:"access_token"`
|
||
RefreshToken string `json:"refresh_token"`
|
||
ExpiresIn int32 `json:"expires_in"` // 有效期(秒)
|
||
ExpiresTS int64 `json:"expires_ts"` // 过期时间戳(unix),0 则内部按 expires_in 计算
|
||
}
|
||
|
||
// Config 客户端初始化配置。
|
||
type Config struct {
|
||
AuthInfo AuthInfo // OAuth token 信息
|
||
UUID string // MIPS 设备标识,OAuth 前生成,永久不可变
|
||
UID string // 小米帐号 UID,OAuth 后从 API 获取
|
||
DataDir string // 存储根路径(token/设备/SPEC 缓存),多用户场景每个用户用不同目录,如 ./data/{uid}
|
||
|
||
RedirectURL string // OAuth 授权回调 URL
|
||
|
||
HomeIDs []int64 // 需要管理的家庭 ID 列表,nil/空=全部
|
||
|
||
// ReadbackModels 需要"set 成功后回读状态"的设备型号列表。
|
||
// 用于设备固件不广播云端指令的场景(如部分 BLE/Mesh 设备):
|
||
// 控制成功后 SDK 防抖延迟回读真实状态,并通过 OnPropsChanged 送达业务层。
|
||
// 留空 = 所有设备都不做回读(默认)。
|
||
ReadbackModels []string
|
||
}
|