Skip to content

Add companion OTA and configurable Zigbee nodes - #8

Closed
fellpower wants to merge 42 commits into
BufferRoot:masterfrom
fellpower:feature/tab5-ota
Closed

fellpower wants to merge 42 commits into
BufferRoot:masterfrom
fellpower:feature/tab5-ota

Conversation

@fellpower

Copy link
Copy Markdown

Problem and resulting behavior

The upstream firmware has no complete field-update path for the Tab5 companion controllers and no Tab5-managed external Zigbee I/O node. This draft adds guarded OTA workflows for the internal C6, ESP32-S3 bridge and NanoH2, plus a configurable external ESP32-C6 Zigbee Node.

A user can now update companion firmware from the Tab5, pair and retain an external Zigbee Node, configure its name/status LED/channels, and use switch, digital input/output and DS18B20 channel types without direct access to the installed controller.

Main changes

  • Add guarded Tab5 OTA flows for Internal C6, S3 bridge and NanoH2.
  • Support ESP-Hosted factory 1.4.1 and current 2.11.4 C6 update behavior.
  • Add ESP-NOW S3 discovery, liveness tracking, automatic reconnect and remotely stored board/UART settings.
  • Add NanoH2 UART OTA while keeping the Tab5 UI responsive during transfer.
  • Add the external Modulus Zigbee Node ESP32-C6 firmware.
  • Configure node name, status LED GPIO/polarity and up to twelve channels from the Tab5.
  • Support switch, digital output, digital input and DS18B20 endpoints.
  • Persist Zigbee radio, pairing and node configuration across restarts.
  • Improve the M Panel Zigbee and firmware-update interfaces.
  • Add reproducible build and local port helper scripts.

Validation

  • Zig test suite: 520 tests, successful.
  • Zigbee Node host tests: temperature decoding/CRC/range, GPIO conflicts, persistence and schema migration pass.
  • Internal C6 factory 1.4.1 -> ESP-Hosted 2.11.4 OTA tested on a physical Tab5.
  • NanoH2 OTA tested through the Tab5; verification/restart completes and the UI remains responsive.
  • External ESP32-C6 node pairing, retained reconnect, configurable GPIO and status LED tested.
  • Seeed XIAO ESP32-S3 discovery and connection tested.
  • Generic QFN56 ESP32-S3 full image flashed and successfully discovered/connected by the Tab5 ESP-NOW scan.

Still to validate before marking ready

  • Physical relay-board switching through the external node driver stage.
  • Physical DS18B20 sensor readings and disconnect/reconnect behavior.
  • Final release packaging and user documentation review.

This is intentionally a draft because the branch spans the complete OTA/Zigbee feature set and the remaining hardware acceptance tests have not yet been completed.

Removed detailed instructions for installing Modulus v3.1.3-ota.
Removed outdated instructions and details for testing C6-Legacy-OTA with Factory Version 1.4.1.
@fellpower fellpower closed this Sep 21, 2026
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.

1 participant