OpenThread 组件
Thread 是一种用于 IoT 设备的低功耗网状网络标准。低功耗对于电池供电的智能家居设备很重要。但是,它也是低带宽的,非常适合不发送大量数据的应用,如开关或运动传感器。
Thread 使用与 Zigbee 相同的 RF 技术(IEEE 802.15.4),但提供类似于 Wi-Fi 的 IPv6 连接。与 Zigbee 不同,Thread 本身不允许控制设备:它只是一种通信协议。要控制 Thread 设备,需要更高级别的协议:Matter 或 Apple HomeKit 或 ESPHome API。
此组件允许 ESPHome 节点通过 Thread 网络与 Home Assistant 通信。它允许向 Home Assistant 发送传感器状态和接收空中更新(OTA)。此 OpenThread 组件依赖于 OpenThread,这是 Thread 的开源实现。
NOTE
您需要一个 Thread 边界路由器 来将节点连接到 Thread 网络。边界路由器将 Home Assistant 网络上的 IPv6 数据包转换为 Thread 网络上的 6LoWPAN 数据包,允许跨两个网络进行通信。
此组件需要 ESP32(ESP32-C5、ESP32-C6 或 ESP32-H2,因为它们有 Thread 无线电芯片)并使用 ESP-IDF。
# ESP32-C6-DevKitM-1 开发板的 ESP-IDF 配置示例esp32: board: esp32-c6-devkitm-1 framework: type: esp-idf此示例展示如何为节点配置 Thread Dataset。
# OpenThread 组件配置示例network: enable_ipv6: true
openthread: device_type: FTD channel: 13 network_name: OpenThread-8f28 network_key: 0xdfd34f0f05cad978ec4e32b0413038ff pan_id: 0x8f28 ext_pan_id: 0xd63e8e3e495ebbc3 pskc: 0xc23a76e98f1a6483639b1ac1271e2e27 mesh_local_prefix: fd53:145f:ed22:ad81::/64 force_dataset: true- device_type (可选, 枚举): OpenThread 设备类型,
FTD或MTD。默认为FTD。 - channel (整数): 通道号,从 11 到 26
- network_name (字符串): 人类可读的网络名称
- network_key (字符串): OpenThread 网络密钥
- pan_id (字符串): 2 字节个人区域网络 ID(PAN ID)
- ext_pan_id (字符串): 8 字节扩展个人区域网络 ID(XPAN ID)
- pskc (字符串): PSKc 用于认证外部 Thread Commissioner 到 Thread 网络
- mesh_local_prefix (ipv6network): 用于构建网格本地 IPv6 地址(ML-EID),这些地址在网络分区内对每个 Thread 设备都是唯一的
- force_dataset (可选, 布尔值): 强制 ESPHome 配置覆盖设备上先前存储的任何 OpenThread
网络数据集,确保配置的参数在启动时始终应用。默认为
false - use_address (可选, 字符串): 手动覆盖用于连接 ESP 的地址。默认为自动生成的值。
- poll_period (可选, 时间): 当 MTD 设备上设置了 Poll_Period 时,父路由器会将任何消息排队并等待子设备提交轮询数据请求
NOTE
当 poll_period > 0 时,esphome.ota 不工作,请改用 http_request.ota,需要测试 timeout 和 watchdog_timeout 以找到正确的值。可能需要大于 100 秒的值。
Dataset TLV 配置
Section titled “Dataset TLV 配置”也可以从 Home Assistant 中的 Thread 信息提供整个 dataset TLV,各个值将自动从中提取。
# 来自 Home Assistant 中 Thread 信息的 OpenThread TLV 值示例openthread: tlv: 0e080000000000010000000300001035060004001fffe00208e227ac6a7f24052f0708fdb753eb517cb4d3051062b2442a928d9ea3b947a1618fc4085a030f4f70656e5468726561642d393837330102987304105330d857354330133c05e1fd7ae81a910c0402a0f7f8- tlv (字符串): 来自 Home Assistant 中 Thread 信息的 dataset TLV
OpenThread 设备类型
Section titled “OpenThread 设备类型”请参阅 https://openthread.io/guides/thread-primer/node-roles-and-types
- FTD - 全功能 Thread 设备,设置 CONFIG_OPENTHREAD_FTD,观察到的行为是这将启用 REED(路由器合格的终端设备)并可以升级为路由器。
- MTD - 最小 Thread 设备,设置 CONFIG_OPENTHREAD_MTD,不能升级为路由器。从 MTD 切换回 FTD 不会产生 REED,除非清除非易失性存储(NVS)。
睡眠终端设备(SED)
Section titled “睡眠终端设备(SED)”Poll Period 使设备作为 SED 运行。后续工作需要利用 esp-idf 中的电源管理和/或轻睡眠功能。 如果设备始终处于唤醒状态,API 超时为 60 秒,因此当轮询周期大于 60 秒时,ping 请求将强制与父设备交互。