跳转至

Matter 1.4 + Thread 智能家居协议:边缘路由搭建实战

家里换了 10 多台 Matter 设备,结果发现——没有 Thread Border Router,这些设备全是孤立的。Matter 协议再好看,没有 Thread 网络就是废的。这篇讲怎么在本地搭一套可用的 Thread 网络,让 Matter 设备真正"直连"起来。

Matter 1.4 新特性速览

Matter 1.4 在 2024 年底发布,相比 1.3 最大的变化是支持 Thread 2.0(原 Border Router 功能内建),以及 Energy Link 和 Water Valve 等新设备类型。

特性 1.3 1.4
Thread 支持 需外部 TBR 可选内建 TBR
设备类型 基础 20+ 种 + Energy Link / Water Valve / Air Quality
安全模型 Pairing Code 同左,但 Commissioning 流程更严格
网络发现 mDNS mDNS + 增强多播

我的判断:如果你现在买新设备,优先选标注"Thread"标识的。纯 Matter-over-WiFi 设备在未来 2-3 年会被 Thread 设备挤压。

Thread 网络架构

Thread 是一个自组织的 Mesh 网络,关键组件:

┌─────────────────────────────────────────────┐
│  Thread Network (2.4GHz, 6LoWPAN)          │
│  ┌─────┐  ┌─────┐  ┌─────┐                │
│  │LED灯 │←→│插座 │←→│传感器│ ← Router 角色 │
│  └──┬──┘  └──┬──┘  └──┬──┘                │
│     │        │        │                      │
│  ┌──▼──┐  ┌──▼──┐  ┌──▼──┐                │
│  │开关 │  │TBR  │  │门锁 │  ← Leader 选主  │
│  └──┬──┘  └──┬──┘  └──┬──┘                │
│     │        │        │                      │
│  ┌──▼────────▼────────▼──┐                  │
│  │   Border Router (TBR) │ ← 连 IPv6 上云   │
│  └───────────────────────┘                   │
└─────────────────────────────────────────────┘

关键概念: - End Device:电池设备(传感器、门锁),不路由流量,省电 - Router:插电设备(插座、灯),负责中继流量 - Leader:Thread 网络的管理者,动态选举,负责分配地址 - TBR(Border Router):Thread 网络和 IPv6 互联网的网关

自建 Thread Border Router 三种方案

方案 A:Home Assistant + openthread-border-router 插件

适合已有 HA 的用户,最简单。

# settings.yaml(OTBR 插件配置)
interface:
  name: wpan0
  device: /dev/ttyUSB0
  autobaud: false
webserver:
  port: 8080
dns:
  port: 5353
network:
  ssid: "HomeThread"
  channel: 15
# 安装插件
# Settings → Add-ons → Install from URL
# https://github.com/openthread/ot-br-posix/releases

# 启动后验证
docker exec homeassistant ls /dev/wpan0
docker logs homeassistant | grep -i otbr

前提:你的 HA 主机需要一块 Thread Radio。推荐 ESP32-C6 刷 OpenThread 固件,插 USB。

方案 B:Docker 独立部署

适合不想装插件、想要干净隔离环境的用户。

# ~/thread/docker-compose.yml
services:
  otbr:
    image: ghcr.io/openthread/ot-br-posix:latest
    restart: unless-stopped
    privileged: true
    network_mode: host
    environment:
      - OTBR_WEB_PORT=8080
      - OTBR_DEBUG_LEVEL=7
    volumes:
      - ./data:/data
      - /dev/ttyACM0:/dev/ttyACM0   # Thread Radio
    cap_add:
      - NET_ADMIN
      - NET_RAW
# 刷 ESP32-C6 为 Thread Radio
# 用 PlatformIO 或 esptool:
esptool.py --port /dev/ttyUSB0 \
  write_flash 0x0 otbr-esp32c6.bin

# 启动
cd ~/thread && docker compose up -d
# 验证
curl -s http://localhost:8080/api/v0/thread/networkinfo | jq .

你应该看到什么:{"state":"ready","pan_id":"0x1234","channel":15}。如果返回空或 error,检查串口设备是否挂载成功。

方案 C:Google Nest Hub / Apple HomePod 当 TBR

如果你家已经有 Google 或 Apple 生态设备,它们内置 Thread Border Router。

# Google Nest Hub 查看 Thread 网络
# Google Home App → Settings → Smart Home → Thread → Network Info

# Apple HomePod 查看
# Home App → 右上角设置 → 家庭中心 → Thread

限制:Google 和 Apple 的 TBR 不互通,你只能选一家做出口。如果主要用 HA,建议自己搭方案 A 或 B。

Commissioning(配网)流程

Matter 设备配对靠二维码(QR Code)或手动配对码。流程:

1. 设备进入配网模式(长按按钮 5 秒,LED 快闪)
2. 手机/HA 扫描 QR Code 或输入 11 位配对码
3. HA 与设备建立 PASE 加密会话(Pairing Session)
4. 设备上线,出现在 HA 设备列表
# HA 里查看配对日志
docker logs homeassistant | grep -i "commission"

# 或从 CLI
ha core logs | grep -i matter

配对码格式:MATTERXXXXX(11 位,设备贴纸上有)。如果贴纸丢了,部分设备支持通过制造商 API 重置。

4 个真实踩坑案例

案例一:设备配对时提示"网络不可达"

现象:HA 能发现设备(mDNS),但 Commissioning 到一半卡住。

根因:Thread 网络没真正起效——OTBR 启动了但 Thread 接口没拿到 IPv6 地址。

# 检查 Thread 接口状态
ip -6 addr show wpan0
# 应该看到 fe80::/10 开头的 link-local 地址

# 如果只有 link-local,没有 global unicast(fdxx: 开头)
# 说明 Thread 网络 leader 选举失败

修复:重启 OTBR 并强制重新选举 leader:

docker restart otbr
# 等 30 秒后检查
ip -6 addr show wpan0

预防:Thread 网络需要至少一个 Router 设备在线才能选举 leader。确保家里有插电的 Thread 设备(如插座、灯)。

案例二:mDNS 设备发现不到

现象:手机扫码后 HA 搜不到设备,但设备 LED 快闪表示在配网。

根因:mDNS(Bonjour/Avahi)在多播被阻断。NAT 网关、VLAN 隔离、不同网段都会阻断 mDNS。

# Linux 上检查 Avahi
sudo systemctl status avahi-daemon
sudo apt install avahi-discover  # 手动发现 mDNS 设备

# 如果 Avahi 在跑但搜不到
# 可能是 firewall 拦截了 5353/udp
sudo ufw allow 5353/udp

修复:把 HA 和配网设备接在同一个交换机/路由器下(同一二层网段),禁用 VLAN 隔离后再试。

案例三:Thread 网络频繁重路由

现象:设备在线但状态刷新慢,偶尔掉线。

根因:Thread Router 设备太少,网络拓扑不稳定。每加一个 End Device 就要重新平衡路由表。

排查:

# OTBR Web UI 看拓扑
curl -s http://localhost:8080/api/v0/thread/topology | jq '.nodes[] | {addr:.address[-4:], role:.role}'

修复:增加 Router 设备密度。每 5-8 个 End Device 至少配 1 个 Router(插电型设备)。把电池传感器放在 Router 附近 2 米内。

案例四:Matter 1.4 设备配对后显示"未响应"

现象:设备添加成功,但状态永远 Last Updated "刚刚",实际操作无响应。

根因:Matter 1.4 新增了 Energy Link 集群,老版本 HA(2024.6 之前)不认识新集群,导致设备状态解析错误。

# 查 HA 版本
ha core info | grep version
# 确保 >= 2024.11

修复:升级 HA 到最新版。如果暂时不能升级,在 configuration.yaml 里关掉 Matter 1.4 扩展:

# configuration.yaml
matter:
  disable_network_provisioning: false
  # 注释掉不兼容的集成

这里最容易翻车:Matter 设备向后兼容性很差,HA 版本和设备固件版本必须对齐。每次 HA 大版本升级后,先检查 Matter 集成 changelog,确认没有 breaking change。

总结

Matter + Thread 是智能家居的统一方向,但当前阶段自建 TBR 是最稳的方案。Google/Apple 的 TBR 方便但生态锁死,第三方方案灵活但需要折腾。

我的判断:现在入局选 Matter-over-Thread 设备,但不要指望"即插即用"——你得先搭好 Thread 网络。预算允许的话,直接买 Google Nest Hub 2 或 Apple TV 4K 当 TBR,省心;技术爱好者推荐 HA + ESP32-C6 方案,可控性最高。

延伸阅读