Breadboard
docs
Example project · ESP32

Zigbee smart button + bulb

Two sealed products, no DevKit: a wireless smart button and the bulb it controls, each a real emulated ESP32-C6. The button puck is the coordinator — it forms the network, the bulb joins and binds, and then CLICK AND HOLD THE PUCK briefly: a real ZCL Toggle crosses the 802.15.4 air and the glass lights. Click the bulb for its live join state, and follow the join and toggle in the 📡 Sniffer. (The join takes a moment.)

The Zigbee smart button + bulb circuit as rendered by the simulator

How it works

Two sealed products, two real emulated ESP32-C6 chips, no DevKit. The button puck runs the esp-zigbee coordinator (switch) firmware: it forms the network and opens it for joining. The bulb hides its own C6 running esp-zigbee light firmware; it scans, joins, and binds to the coordinator over the shared 802.15.4 air. Clicking the puck presses its internal BOOT pin — the firmware’s GPIO interrupt fires and sends a real ZCL Toggle to the bound bulb, whose on/off callback drives the internal WS2812 that the glass renders.

What's on the bench

  • 2× Battery
  • Zigbee Bulb
  • Zigbee Smart Button

How it's wired

  • Battery · posZigbee Smart Button · vcc
  • Battery · negZigbee Smart Button · gnd
  • Battery · posZigbee Bulb · vcc
  • Battery · negZigbee Bulb · gnd

This project runs prebuilt firmware on the emulated board; open it in the simulator to watch it work and inspect every part live.

Try this

  • Wait for the bulb to join and bind (the serial tabs narrate it; the join takes a moment).
  • Click and hold the button puck briefly — the glass lights on the ZCL Toggle.
  • Click the bulb to see its live join state and color.
  • Open the 📡 Sniffer to watch the join, the bind, and each toggle as real 802.15.4 frames.

Related projects