Skip to content

Repository files navigation

zhac-main-core

ESP32-P4 firmware for ZHAC. Runs the Zigbee coordinator, Lua script engine, and rule scheduler. Communicates with the S3 network core over SPI via the custom HAP binary protocol.

Responsibilities

  • Zigbee stack (Z-Stack / EZSP — selectable at build time)
  • Device interview + identity + diagnostics
  • Lua scheduler (callbacks on attribute change, cron triggers, rules)
  • HAP slave endpoint (responds to commands from S3)

Tree

zhac-main-core/
├── main/                (firmware entry, Kconfig, idf_component.yml)
├── components/
│   ├── hap_slave/
│   ├── lua_engine/
│   ├── lua_cjson/       (vendored MIT)
│   ├── zigbee_mgr/
│   ├── zigbee_backend/
│   ├── ezsp_driver/
│   ├── ezsp_backend/
│   └── znp_driver/
├── CMakeLists.txt
└── sdkconfig.defaults

Shared components (HAP protocol, device shadow, ZHC adapter, ...) are pulled at build time from zhac-components; the ZHC library from embedded-zhc.

Building standalone

git clone https://github.com/zhac-project/zhac-main-core.git
cd zhac-main-core
source /path/to/esp-idf-v6.0/export.sh
idf.py set-target esp32p4
idf.py build

Component Manager fetches zhac-components/* from GitHub on first build. For local development, override with:

git clone https://github.com/zhac-project/zhac-components.git ../zhac-components
git clone https://github.com/zhac-project/embedded-zhc.git   ../embedded-zhc

export IDF_COMPONENT_OVERRIDE_PATH=$PWD/../zhac-components/components
export EMBEDDED_ZHC_PATH=$PWD/../embedded-zhc
idf.py build

With the sibling layout above, CMake also resolves ../zhac-components/components without IDF_COMPONENT_OVERRIDE_PATH — the export just makes the override explicit.

Flash

idf.py -p /dev/ttyACM0 flash monitor

License

GNU AGPL v3 or later. See LICENSE.

Contributing

See CONTRIBUTING.md. All contributions require signing CLA.md.

Versioning

Releases tagged vYYYYMMDDVV (UTC date + 2-digit revision). Each repo tags its own version independently.

About

ESP32-P4 firmware for [ZHAC]. Runs the Zigbee coordinator, Lua script engine, and rule scheduler. Communicates with the S3 network core over SPI via the custom HAP binary protocol.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages