Ha, you saved me, thank you!
Yeah, I couldn’t get any output, so thought it’s wrong, but adding:
mqtt:
broker: 192.168.0.202
username: z2m
password: myzpwd
topic_prefix: null
log_topic: h2test
made it possible to see some logs:
mosquitto_sub -h 192.168.0.202 -u z2m -P myzpwd -t "h2test" --pretty -F "%t>%p"
like this:
h2test>[D][main:224]: Heartbeat - ESP32-h2-delta is alive!
h2test>[D][main:224]: Heartbeat - ESP32-h2-delta is alive!
h2test>[W][component:307]: mqtt cleared Warning flag
h2test>[I][mqtt:310]: Connected
h2test>[W][component:307]: mqtt cleared Warning flag
h2test>[I][mqtt:310]: Connected
h2test>[D][main:224]: Heartbeat - ESP32-h2-delta is alive!
h2test>[D][main:224]: Heartbeat - ESP32-h2-delta is alive!
h2test>[D][api:146]: Accept FD49:E5FC:83AF::3E5
h2test>[W][component:307]: api cleared Warning flag
h2test>[D][api.connection:1466]: Home Assistant 2025.8.0 (FD49:E5FC:83AF::3E5) connected
h2test>[D][main:224]: Heartbeat - ESP32-h2-delta is alive!
Anyway, with this config:
esphome:
name: h2delta
friendly_name: h2delta
esp32:
board: esp32-h2-devkitm-1
variant: ESP32H2
framework:
type: esp-idf
# Enable logging
logger:
level: DEBUG
mqtt:
broker: 192.168.0.202
username: z2m
password: myzpwd
topic_prefix: null
log_topic: h2test
api:
ota:
- platform: esphome
network:
enable_ipv6: true
interval:
- interval: 2s
then:
- logger.log: "Heartbeat - ESP32-h2-delta is alive!"
openthread:
tlv: 0e08000000000001000000030...7f8
force_dataset: true
text_sensor:
- platform: openthread_info
ip_address:
name: "Off-mesh routable IP Address"
channel:
name: "Channel"
role:
name: "Device Role"
rloc16:
name: "RLOC16"
ext_addr:
name: "Extended Address"
eui64:
name: "EUI64 Interface ID"
network_name:
name: "Network Name"
network_key:
name: "Network Key"
pan_id:
name: "PAN ID"
ext_pan_id:
name: "Extended PAN ID"
and applying via esphome run h2gamma.yaml, I was able to see the device being autodiscovered by the ESPHome in homeassistant and I could one-click add it:
Gotchas
A note for my futureself. thread/esphome doesn’t like changing names. I had three boards that I was frantically switching and they got the same hostname - the problem is that the hostname is probably partly cached on the border router level, so when I flashed boardA with h2alpha name and it connected (but I did not add it), and then I flashed boardB with the same config and therefore same h2alpha hostname, esphome gets confused and will show “Unable to add/connect” because the name is associated with the old ipv6 address (I think). Similarly, I couldn’t change hostname if I wanted to change it. The solution I found out (with a minor heartattack as I thought I factory-reset my border router) I could go to Reset Router:
It disappears for a second, then appears under “Other networks”, but you can click again on “Add to preferred network” - the network settings are the same, fortunately.
After this procedure, I was able to “reregister” new hostnames fine.
However, one particularly stuborn device was still showing with wrong name, and I couldn’t add it. I flashed the device again with a new name, used http://esp-ot-br.local/topology to figure out it’s IP address, click on “Add device”, and manually changed the IPV6 address as the one there was wrong with my new from /topology and tada it worked (it even fetched the correct name after adding it)
And to get the network status on http://esp-ot-br.local/index.html#Status, you need to click on “OverView” → it then fetches the data and you see the details instead of just “Unknown”

