refactor: 重构 token 管理,新增 NATS adapter 和多示例

按照 TOKEN_REFACTOR.md / FIX_CONFIG.md 方案重构核心层:
- miot: Init() 优先读 storage token,新增 RefreshAuthInfo() 和刷新回调
- xiaomi: Config 改用 AuthInfo 结构体(含 UUID/UID/DataDir/OnTokenRefreshed)
- xiaomi: NewClient(ctx, Config) 新签名,新增 RefreshToken(),后台自动刷新
- xiaomi/devices: 设备控制接口重构
- 新增示例 12_ac_subscribe,其余示例适配新 Config
This commit is contained in:
2026-06-30 12:16:49 +08:00
parent a3d94c4b9f
commit 8ffc9e4e44
33 changed files with 1019 additions and 593 deletions
+13 -7
View File
@@ -22,10 +22,15 @@ func main() {
}
client, err := xiaomi.NewClient(ctx, xiaomi.Config{
ClientSecret: "",
AccessToken: cfg.AuthInfo.AccessToken,
UID: cfg.UID,
UUID: cfg.UUID,
AuthInfo: xiaomi.AuthInfo{
AccessToken: cfg.AuthInfo.AccessToken,
RefreshToken: cfg.AuthInfo.RefreshToken,
ExpiresIn: cfg.AuthInfo.ExpiresIn,
ExpiresTS: cfg.AuthInfo.ExpiresTS,
},
DataDir: "./data",
UUID: cfg.UUID,
UID: cfg.UID,
})
if err != nil {
log.Fatal(err)
@@ -88,9 +93,10 @@ func main() {
log.Printf("当前颜色: R=%d G=%d B=%d", r, g, b)
}
subID, err := lt.OnStateChanged(func(state devices.LightState) {
log.Printf("灯光状态变化: power=%v brightness=%d colorTemp=%dK rgb=[%d,%d,%d]",
state.Power, state.Brightness, state.ColorTemp,
subID, err := lt.OnStateChanged(func(state devices.LightState, changed string) {
log.Printf("灯光状态变化: %s → on=%v brightness=%d colorTemp=%dK rgb=[%d,%d,%d]",
changed,
state.On, state.Brightness, state.ColorTemperature,
state.ColorRGB[0], state.ColorRGB[1], state.ColorRGB[2])
})
if err != nil {