MQTT / Zigbee / Z-Wave 网关架构
概念速览
- MQTT:基于发布 / 订阅的轻量级物联网消息协议,端口 1883 (TCP)
- Zigbee:基于 IEEE 802.15.4 的低功耗 Mesh 网络,2.4 GHz,全球通用
- Z-Wave:基于 ITU-T G.9959 的低功耗 Mesh,主要在 800–900 MHz 频段
MQTT 部署
- Broker 选型:Mosquitto (轻量) / EMQX (集群) / HiveMQ (企业)
- 主题设计:
home/livingroom/light/statevshome/+/+/state(通配)
# Mosquitto 启动mosquitto -c /etc/mosquitto/mosquitto.conf
# 订阅所有智能灯状态mosquitto_sub -h localhost -t 'home/+/light/state' -vZigbee 桥接
| 方案 | 协议 | 优势 | 适用 |
|---|---|---|---|
| ZHA | 内置 | 零额外依赖 | Home Assistant 内置 |
| Zigbee2MQTT | 通过 MQTT | 支持 4000+ 设备 | 全平台 |
| deCONZ | 独立软件 | Phoscon App | 资深玩家 |
推荐 USB 协调器
- SONOFF Zigbee 3.0 USB Dongle Plus (ZBDongle-E):基于 Silicon Labs EFR32MG21,性价比高
- ITead Zigbee 3.0 USB Dongle (ZBDongle-P):基于 Texas Instruments CC2652P,稳定
- SLZB-06 / SLZB-06M:网络协调器,可放远端用网线连回
⛔ 别这么做 (Anti-patterns)
经验证的坑 —— 跳过 = 至少浪费半天,严重的烧板 / 锁机。
| ❌ 错误做法 | 💥 后果 | ⚠️ 风险 | 范围 |
|---|---|---|---|
| 不要在断电前直接拔 Valetudo 改装中的 USB-TTL | 刷机中途断电 = 变砖。先 dmesg 确认串口没掉再操作。 | 🟡 | 智米扫拖一体 / Roborock S5 Max |
| 不要把米家设备 token 上传到任何第三方云 | token = 设备控制权,泄漏 = 任何人可远程开门。 | 🔴 | 所有米家 / Aqara 设备 |
不要在生产 HA 配置里直接编辑 configuration.yaml 后 check_config 不通过就 reload | 错的 reload 会让 HA 启动失败 → 所有自动化停摆。用 configuration.yaml 备份 + git 版本化。 | 🟢 | Home Assistant |
| 不要给 Frigate 摄像头内网用 admin/admin 默认密码 | RTSP / ONVIF 默认账号 = 局域网裸奔。先改密码。 | 🟡 | 海康 / 大华摄像头 |
| 不要在 ESPHome 设备上直接 OTA 升级到主版本 (major) | 主版本常改 NVS 分区。OTA 升级后启动失败 = 拆壳刷机。先 flash USB 一次。 | 🟡 | ESP32-S3 语音卫星 / 智能开关 |
| 不要在智能家居自动化里写死设备 IP | DHCP 重启后 IP 变 = 自动化失效。用 hostname / mDNS / 静态租约。 | 🟢 | Home Assistant / Hubitat |
| 不要在 Matter 设备首次配对时关掉手机蓝牙 | Matter 配对 = BLE → WiFi handover,全程需要蓝牙。 | 🟢 | Aqara M3 / Apple Home |
🚨 风险总览 (Risk Matrix)
| 风险等级 | 含义 | 例子 |
|---|---|---|
| 🟢 低 | 改错可回滚 / 几分钟恢复 | pip 全局装包、DHCP IP 写死 |
| 🟡 中 | 需要重新刷机 / 重装 / 1-2 小时恢复 | 装错 ROS 2 版本、没 OTA 升级看版本 |
| 🔴 高 | 不可逆 / 烧板 / 安全风险 | 电池反接、micro-ROS 没看门狗、刷机中途断电 |