# 1.米家业务相关在线地址
小米/米家产品库 - Xiaomi Miot Spec (opens new window)
AIoT平台高仿真系统 - 设备租借 (opens new window)
AIoT认证测试平台 - 自动测试 (opens new window)
# 2.米家WiFi设备的架构和通信流程
# 2-1、整体架构
米家生态的通信流程通常分为三层:
1、设备端:WiFi模组(如ESP32/乐鑫方案)运行定制固件,支持与云端/App交互。
2、云端服务器:小米的IoT平台(Miot Cloud)负责设备管理、指令转发和数据存储。
3、客户端(插件/App):通过SDK或API与云端交互,间接控制设备。
# 2-2、关键通信流程
1、设备配网(Provisioning)
设备初次联网需通过「Smart Config」或「AP配网模式」:
Smart Config:手机App发送WiFi SSID/Password的加密广播包(UDP),设备监听并解析。
AP模式:设备开启热点,用户连接后通过HTTP页面提交WiFi信息。
配网后:设备通过MQTT/TLS与小米云建立长连接,并上报设备信息(DID、Token等)。
2、认证与绑定
设备唯一标识:每个设备拥有唯一的DID(Device ID)和Token(加密密钥)。
绑定流程:用户通过App扫码或手动添加设备,云端验证Token后绑定设备到账户。
3. 通信协议
米家采用分层协议设计,核心协议包括:
传输层:基于TLS加密的MQTT协议(长连接)+ HTTP(配置/OTA升级)。
应用层:自定义二进制协议(部分设备开放HTTP API),数据格式通常为JSON或Protobuf。
MQTT 主题结构
设备与云端通过MQTT的Topic订阅/发布消息:
指令下发:miio/command/{DID}
状态上报:miio/report/{DID}
设备心跳:miio/heartbeat/{DID}
4. 指令交互流程
以开关灯为例:
App/插件端:调用小米云API(如miot-spec.com)发送指令(JSON格式)。
云端:验证权限后,通过MQTT将指令转发到目标设备。
设备端:执行指令并返回状态码(如{"code":0}表示成功)。
云端:将状态同步到App/插件端。
5. 本地通信(可选)
部分设备支持局域网控制(绕过云端):
协议:UDP广播 + 自定义二进制协议(如Xiaomi MIoT Spec Local)。
发现设备:发送广播包到端口54321,设备响应IP和Token。
指令加密:使用AES-CBC加密,密钥由Token派生。
# 2-3、插件端开发关键点
# 2-3-1、接入方式:
云端API:通过小米开放平台(Open Cloud)申请API权限,使用OAuth 2.0授权。
本地控制:需获取设备的Token和IP,直接发送加密指令(需逆向协议)。
# 2-3-2、SDK支持:
官方提供MiHome SDK或MIoT Spec,封装了协议细节。
第三方库(如python-miio)支持部分设备的本地控制。
# 2-3-3、数据格式示例(伪代码):
// 云端API指令
{
"method": "set_properties",
"params": [{
"did": "123456",
"siid": 2, // 服务ID
"piid": 1, // 属性ID
"value": true
}]
}
2
3
4
5
6
7
8
9
10
# 2-4.安全机制
设备认证:Token绑定设备与账户,防止未授权访问。
通信加密:TLS 1.2(云端) + AES(本地)。
动态刷新:部分设备支持Token周期性更新。
# 3.联网方式对比
联网方式 | 功耗 | 覆盖范围 | 带宽 | 适用规模 | 典型应用 |
---|---|---|---|---|---|
Wi-Fi | 高 | 中(依赖路由) | 高 | 中小型 | 智能电视、摄像头 |
Wi-Fi + BLE | 中 | 中 | 高 | 中小型 | 智能音箱、中控面板 |
BLE | 极低 | 短(10-50m) | 低 | 点对点/少量设备 | 手环、智能锁 |
BLE-Mesh | 低-中 | 中-大(接力) | 中低 | 大型(数百节点) | 商业照明、传感器网络 |
第三方云接入 | 依赖底层 | 全球 | 依赖网络 | 任意规模 | 跨区域设备管理 |
虚拟设备组 | 无影响 | 无限制 | 无影响 | 任意规模 | 场景化智能家居联动 |
# 选择建议
- 低功耗+近距离:优先BLE。
- 大规模组网:选择BLE-Mesh或Zigbee(未提及但常用)。
- 高带宽+互联网接入:Wi-Fi或双模。
- 快速商业化部署:第三方云接入。
- 多设备协同:虚拟设备组+兼容协议(如Matter)。
# Wi-Fi、BLE、BLE Mesh 对比
接入方式 | Wi-Fi | BLE | BLE Mesh |
---|---|---|---|
使用场景 | 有电源常供电、且用户多以 单个产品购买使用的产品,如空调、厨房电器 | 低功耗的硬件产品,如手环、按摩器等运动健康类产品 | 电工:灯、开关、插座、电风扇和窗帘 |
优势 | 上网简单,用户熟悉度高,不需要额外的 网关,可以和存量路由器直接通信 | 低成本、低功耗,近场与手机连接,不支持远程下行,支持上行(依赖网关) | 低成本、低功耗,支持远程上下行 ( 依赖 Mesh 网关 ),和近场 BLE GATT 直连 |
缺点 | 成本高,功耗高 | 远程上行 需要依赖 BLE 网关,远程下行 不支持 | 需要依赖 Mesh 网关,上下行指令长度较小 |
米家 BLE 设备通过网关只能上报数据,在没有网关时也可根据需要开发蓝牙直连功能控制设备。
米家 BLE Mesh 设备实现远程控制需要有 Mesh 网关,在没有网关时也可根据需要开发蓝牙直连功能控制设备。
# Wi-Fi 和 Wi-Fi + BLE 对比
Wi-Fi + BLE 双模
BLE 角色:用于低功耗待机、设备发现和快速配网(如通过 BLE 广播 Wi-Fi 的 SSID/密码)。
Wi-Fi 角色:配网完成后切换至 Wi-Fi 进行高速数据传输。
BLE 一般只用于配网
传统Wi-Fi配网方式(AP模式/手动输入密码)
AP模式(热点配网)
- 原理:
设备启动时,自身变成一个Wi-Fi热点(类似手机开热点)。
用户手机需要手动连接这个设备热点(如 Device_XXXX),然后在浏览器或App内输入家庭Wi-Fi的SSID和密码。
设备收到信息后,关闭热点模式,尝试连接家庭Wi-Fi。
- 缺点:
用户需要 手动切换手机Wi-Fi(从家庭Wi-Fi切换到设备热点),操作繁琐。
实际案例对比
- 场景1:智能灯泡配网
传统Wi-Fi方式:
1.断电重启灯泡,进入AP模式。
2.手机Wi-Fi列表里找到 Light_XXXX 并连接。
3.打开米家App,选择“添加设备”,手动输入家庭Wi-Fi密码。
4.等待配网,成功后手机需手动切换回家庭Wi-Fi。
BLE一键配网:
1.通电后,打开米家App,自动弹出“发现新设备”。
2.点击“确认配网”,App自动推送Wi-Fi信息。
3.灯泡连接成功,全程无需手动输入密码或切换Wi-Fi。
# 4. Wi-Fi设备和BLE-Mesh带网关设备的通信流程对比
# 4.1 Wi-Fi设备的通信流程
网络架构
直接连接互联网:Wi-Fi设备通过路由器直接接入云端,无需中间网关。
通信路径:设备 → 路由器 → 互联网(云服务器) → 用户手机/终端
通信特点
协议栈:基于TCP/IP(HTTP/MQTT/CoAP),依赖Wi-Fi的IEEE 802.11标准。
数据传输:
- 设备与云端长连接(如MQTT心跳包),实时双向通信。
- 用户通过手机App发送指令时,需经过云端中转(即使设备与手机在同一局域网)。
优缺点:
- ✅ 无需网关,部署简单。
- ❌ 依赖互联网,断网时无法控制(除非设备支持本地局域网协议,如Home Assistant)。
典型场景
智能摄像头、Wi-Fi插座等直接联网设备。
# 4.2 BLE-Mesh带网关设备的通信流程
网络架构
分层组网:BLE-Mesh设备通过网关与云端交互,网关是本地与云端的桥梁。
通信路径:设备 → BLE-Mesh节点(中继) → 网关 → 互联网 → 用户手机/终端
通信特点
协议栈:
- 设备间:BLE Mesh协议(基于蓝牙4.0+,使用GATT广播或洪泛路由)。
- 网关与云端:Wi-Fi/Ethernet + MQTT/HTTP。
数据传输:
- 本地控制:手机通过网关直接控制设备(不依赖云端,如米家蓝牙Mesh网关)。
- 远程控制:指令需经网关上传至云端,再返回网关执行。
- 自组网:节点间通过多跳中继传递数据,扩展覆盖范围。
优缺点:
- ✅ 断网时可本地控制(网关+手机在局域网内)。
- ❌ 需额外网关硬件,成本较高。
典型场景
蓝牙Mesh灯泡、传感器等低功耗设备(如Yeelight吸顶灯)。
# 4.3 核心差异对比表
对比项 | Wi-Fi设备 | BLE-Mesh带网关设备 |
---|---|---|
网络拓扑 | 星型(设备直连路由器) | 网状(设备-网关-云端) |
依赖网关 | 否 | 是 |
断网控制 | 通常不可用(除非支持本地协议) | 可通过网关本地控制 |
覆盖范围 | 依赖路由器信号 | 通过Mesh节点中继扩展 |
功耗 | 高(持续Wi-Fi连接) | 低(BLE间歇性通信) |
典型协议 | HTTP/MQTT over Wi-Fi | BLE Mesh Profile + 网关转MQTT |
# 4.4 通信流程示例
- Wi-Fi智能灯泡控制
1.用户点击App开关 → 指令发送至云端。
2.云端通过互联网推送指令到家庭路由器。
3.路由器通过Wi-Fi将指令传给灯泡。
BLE-Mesh灯泡控制(带网关)
场景1:远程控制
1.用户点击App开关 → 指令发送至云端。
2.云端推送指令到家庭网关(需网关在线)。
3.网关通过BLE-Mesh将指令广播至灯泡(可能经多跳中继)。场景2:本地控制(断网时)
1.手机直接连接网关(同一局域网)。
2.网关通过BLE-Mesh本地控制灯泡。