OpenThread Component

Thread is a low-power mesh networking standard for IoT devices. The low-power aspect is important for battery-powered smart home devices. However, it’s also low-bandwidth, making it ideal for applications that don’t send a lot of data, like switches or motion sensors.

Thread uses the same RF technology as Zigbee (IEEE 802.15.4) but provides IP connectivity similar to Wi-Fi. Unlike Zigbee, Thread by itself does not allow controlling devices: It is just a communication protocol. To control the Thread devices, a higher-level protocol is required: Matter or Apple HomeKit or ESPHome API .

The purpose of this component is to allow ESPHome nodes to communicate over a Thread network. It permits the state of sensors and binary sensors to be send to Home Assistant via 6LoWPAN packets. This OpenThread component relies on OpenThread which is an open-source implementation of Thread.

Note

You will need a Thread border router to connect your node to a Thread network.

Usage

This component requires an ESP32 (ESP32-C6 or ESP32-H2 because they have Thread radio chip) and the use of ESP-IDF.

# Example ESP-IDF configuration for ESP32-C6-DevKitM-1 board
esp32:
  board: esp32-c6-devkitm-1
  framework:
    type: esp-idf

Configuration examples

This example show how to configure Thread Dataset for a node.

# Example OpenThread component configuration
network:
  enable_ipv6: true

openthread:
  channel: 13
  network_name: OpenThread-8f28
  network_key: 0xdfd34f0f05cad978ec4e32b0413038ff
  pan_id: 0x8f28
  ext_pan_id: 0xd63e8e3e495ebbc3
  pskc: 0xc23a76e98f1a6483639b1ac1271e2e27
  force_dataset: true

Configuration variables:

  • channel (int): Channel number from 11 to 26

  • network_name (string): A human-readable Network Name

  • network_key (string): OpenThread network key

  • panid (string): 2-byte Personal Area Network ID (PAN ID)

  • extpanid (string): 8-byte Extended Personal Area Network ID (XPAN ID)

  • pskc (string): PSKc is used to authenticate an external Thread Commissioner to a Thread network

Configuration examples with dataset TLV

It is also possible to supply the entire dataset TLVs from the Thread information in Home Assistant and the individual values will be automatically extracted from it.

# Example OpenThread TLV value from the Thread information in Home Assistant
openthread:
  tlv: 0e080000000000010000000300001035060004001fffe00208e227ac6a7f24052f0708fdb753eb517cb4d3051062b2442a928d9ea3b947a1618fc4085a030f4f70656e5468726561642d393837330102987304105330d857354330133c05e1fd7ae81a910c0402a0f7f8

Configuration variables:

  • tlv (string): dataset TLVs from the Thread information in Home Assistant