Skip to content

Update config for ESPHome 2026.9, fix XIAO antenna switch and README - #1

Merged
firsttris merged 1 commit into
mainfrom
claude/tender-turing-g2u251
Sep 28, 2026
Merged

firsttris merged 1 commit into
mainfrom
claude/tender-turing-g2u251

Conversation

@firsttris

Copy link
Copy Markdown
Owner

Summary

Brings the config up to date with ESPHome releases since January 2026 and fixes several issues found in a review.

Config (esp32c6-thread-router.yaml)

  • XIAO ESP32C6 RF switch: GPIO3 (switch power, LOW) and GPIO14 (antenna select) are now driven. Before, the external U.FL/SMA antenna of the recommended case was likely never used. Antenna is selectable via substitution antenna_default and an "External Antenna" switch in Home Assistant.
  • Security: API encryption key, OTA uses encryption: {} (same key; ESPHome advises against an OTA password when API encryption is set).
  • Diagnostics: openthread_info text sensors (role, RLOC16, channel, IP) and sensors (parent RSSI, TX retries, CCA errors, partition changes; new in 2026.8), plus uptime, restart button and status LED (GPIO15).
  • Documented (commented out) force_dataset and output_power (new in 2026.3).
  • name/friendly_name as substitutions, so additional routers are a small file that includes the main config via packages.

README

  • The TLV contains the network key in plain text (was described as "encrypted"); added a warning.
  • web.esphome.io can only flash, not compile; documented the compile + firmware.factory.bin flow.
  • Explained REED → router promotion, force_dataset for recreated networks, transmit power, diagnostics table, antenna choice, new api_encryption_key secret.
  • Consistent docker exec commands, new multi-router approach.

Other

  • docker-compose.yml: relative mount instead of /home/tristan/..., removed test credentials, privileged and version; uses the stable tag and passes the USB device through. The config path in the container is now /config/esp32c6-thread-router.yaml.
  • New CI workflow validating and compiling the config with dummy secrets (on push, PR and weekly).

Breaking change for existing devices

secrets.yaml needs a new api_encryption_key (openssl rand -base64 32), and Home Assistant will ask for it once after flashing.

Testing

  • esphome config passes with ESPHome 2026.9.0 for the main file and a packages-based second-router file.
  • A full compile could not be run locally (PlatformIO registry unreachable); the new CI workflow covers it.
  • Not tested on hardware.

🤖 Generated with Claude Code

https://claude.ai/code/session_014JAZVdMyX648XjEf47Vh4p


Generated by Claude Code

- Encrypt API and OTA with a shared encryption key
- Drive the XIAO ESP32C6 RF switch (GPIO3/GPIO14) so the external antenna works
- Add status LED, restart button, uptime and openthread_info diagnostic sensors
- Use substitutions so extra routers can include the main config
- Document force_dataset and output_power options
- README: TLV key is plain text, web.esphome.io only flashes, REED vs router
- docker-compose: relative mount, no hardcoded user path/credentials
- Add CI workflow that validates and compiles the config

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014JAZVdMyX648XjEf47Vh4p
@firsttris
firsttris merged commit 1e7b82d into main Sep 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants