Jimmy 3ee89ce3b4 feat(driver): add HTTP routes, startup split, and binary envelope support
Wire controller messages through new modules (background tasks, runtime state,
startup) and add binary envelope handling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-03 14:54:12 +12:00
2025-12-03 13:36:19 +13:00
2026-03-14 02:41:07 +13:00
2025-12-01 09:33:41 +00:00

LED Driver — MicroPython

MicroPython LED driver for ESP32: presets, patterns, Wi-Fi (TCP + UDP discovery) or ESP-NOW transport, optional HTTP polling, and dynamic pattern modules under src/patterns/.

Prerequisites

  • MicroPython firmware on the ESP32
  • USB cable for programming
  • Python 3 with pipenv (on the host, for dev.py / tests)

Setup

  1. Install dependencies:

    pipenv install
    
  2. Deploy to the device:

    pipenv run dev
    

Project layout

led-driver/
├── src/
│   ├── main.py          # Entry: Wi-Fi/TCP or ESP-NOW path, process_data(), manifest OTA
│   ├── presets.py       # Preset runtime + Presets class
│   ├── preset.py        # Single preset helpers
│   ├── settings.py      # settings.json
│   ├── hello.py         # UDP discovery (port 8766) / hello payloads
│   ├── http_poll.py     # Optional HTTP polling helper
│   ├── utils.py         # Colour conversion / ordering
│   ├── presets.json     # Default preset file (on device)
│   └── patterns/        # Pattern modules (.py), loaded dynamically
├── tests/               # Host-side helpers (e.g. udp_client.py, test_mdns.py)
├── test/                # On-device style pattern tests (all.py, patterns/)
├── dev.py               # Deploy / sync to serial device
├── docs/API.md          # Wire format (long keys); Pi app docs short keys
├── msg.json             # Sample message
├── Pipfile
└── LICENSE

Transport: settings.json transport_type is typically wifi (TCP to the Pi on port 8765, discovery on 8766) or espnow. ESP-NOW code paths are loaded only when needed so a Wi-Fi-only image stays smaller.

Further reading

  • docs/API.md — JSON message fields as used in examples (pattern, colors, …). The Pi app may send short keys (p, c, …); behaviour matches once normalised on device.
Description
No description provided
Readme AGPL-3.0 494 KiB
Languages
Python 100%