ESP32 Mesh
ESP-IDF rewrite of the mesh/router scaffold described in `summary.md` and `todo.md`.
Current implementation includes:
- shared frame model and compact binary codec
- fixed-size dedup cache using `(src, seq)` entries
- neighbor tracking from `HELLO` frames
- route table with transport masks and fallback route
- router core with local delivery and forwarding
- native ESP-IDF Wi-Fi mesh transport using `esp_mesh`
- target-derived roles:
- `esp32` builds act as regular nodes
- `esp32s3` builds act as gateway nodes
Build
Use your installed ESP-IDF 5.5 environment:
idf.py set-target esp32 build
idf.py set-target esp32s3 build
Project files:
- [CMakeLists.txt](c:/Synchronised/mega/projects/esp32-mesh/CMakeLists.txt)
- [sdkconfig.defaults](c:/Synchronised/mega/projects/esp32-mesh/sdkconfig.defaults)
- [partitions.csv](c:/Synchronised/mega/projects/esp32-mesh/partitions.csv)
- [main](c:/Synchronised/mega/projects/esp32-mesh/main)
- [include/mesh](c:/Synchronised/mega/projects/esp32-mesh/include/mesh)
Current Behavior
- app initializes Wi-Fi, netif, NVS, and ESP-MESH
- all nodes join the same fixed-root mesh network
- `esp32s3` builds designate themselves as the root-capable gateway role
- periodic `HELLO` frames update node role and neighbor tracking
- broadcast frames use a mesh group address
- unicast frames use a learned node-ID to MAC mapping derived from received mesh traffic
Mesh Defaults
- mesh ID: fixed in [include/mesh/BuildConfig.h](c:/Synchronised/mega/projects/esp32-mesh/include/mesh/BuildConfig.h)
- mesh channel: `6`
- mesh AP password: `mesh-password`
- fixed root: enabled on all nodes, with the `esp32s3` target designated as gateway/root candidate
Validation Note
`idf.py` now recognizes this as a normal ESP-IDF project and gets through project configuration and partition generation. In this environment the full build is currently blocked by a failure inside ESP-IDF core components during compilation, before final app linkage, so application-level runtime validation is still pending.
Not Implemented Yet
- LoRa UART transport
- NRF24 transport
- ACK/retry reliability layer
- Internet backhaul via the websocket relay
- OTA staging logic
- persistent configuration and Kconfig customization