整體架構
小米智能家居採用 局域網廣播發現 + TCP/UDP 控制指令 的混合模式,核心流程如下:
- 設備入網:淨化器連上 WiFi 後,向雲端註冊,同時在局域網發送 mDNS/SSDP 廣播宣告存在。
- App 發現:手機 App 在同一局域網監聽廣播,或向雲端查詢綁定設備列表,獲取設備 IP、token、did 等信息。
- 本地通信:App 與設備建立 TCP 長連接(或 UDP),使用小米私有協議(基於 JSON/二進制)下發控制指令,如
{"method":"set_power","params":["on"]}。
- 狀態上報:設備執行後主動上報新狀態,App 更新 UI。
關鍵技術點
1. 局域網廣播發現
- App 發送 UDP 廣播包到
255.255.255.255:54321(或組播 224.0.0.50)。
- 設備收到回應自身信息:IP、MAC、model、固件版本。
- Root 手機可發送原始 ARP 掃描全網 IP,再用 UDP 探測是否為小米設備,極大加快發現速度。
2. 安全認證
- 每個設備出廠燒錄唯一
token (16 字節) 和 did。
- 指令採用 AES-CBC 加密,Key 由 token 派生,防止竊聽與重放攻擊。
- 雲端下發綁定令牌,App 本地緩存,斷網仍可本地控制。
3. 協議細節
// 手機發送開關指令示例 (UDP)
{
"id": 12345,
"method": "set_power",
"params": ["on"]
}
// 設備回應
{
"id": 12345,
"result": ["ok"]
}
開發者啟示
- IoT 設備優先實現 本地控制,雲端僅作綁定/固件升級/遠程訪問輔助。
- 使用 標準化發現協議 (mDNS, SSDP) 降低適配成本。
- 通信協議設計要 冪等、可重試、帶序列號,應對網絡抖動。