2026-04-21 00:44:38 +12:00
2025-04-15 10:14:46 +00:00

led-controller

LED controller web app for managing profiles, zones, presets, and colour palettes, and sending commands to LED devices. Outbound paths include:

  • Serial → ESP-NOW bridge: JSON lines over UART to an ESP32 that forwards ESP-NOW frames (configure serial_port and baud in settings.json / Settings model).
  • Wi-Fi LED drivers: TCP JSON lines (default port 8765 on the Pi; drivers discover the controller via UDP 8766 broadcast).

Run

  • One-time setup for port 80 without root: sudo scripts/setup-port80.sh
  • Start app: pipenv run run (override listen port with the PORT environment variable)
  • Dev watcher (auto-restart on src/ changes): pipenv run dev
  • Regenerate docs/help.pdf from docs/help.md: pipenv run help-pdf (requires pandoc and chromium on the host)

UI modes

  • Run mode: focused control view. Select zones/presets and apply profiles. Editing actions are hidden.
  • Edit mode: management view. Shows Zones, Presets, Patterns, Colour Palette, and Send Presets controls, plus per-tile preset edit/remove and drag-reorder.

Profiles

  • Applying a profile updates session scope and refreshes the active zone content.
  • In Run mode, Profiles supports apply-only behaviour (no create/clone/delete).
  • In Edit mode, Profiles supports create/clone/delete.
  • Creating a profile always creates a populated default zone (starter presets).
  • Optional DJ zone seeding creates:
    • dj zone bound to device name dj
    • starter DJ presets (rainbow, single colour, transition)

Preset colours and palette linking

  • In preset editor, selecting a colour picker value auto-adds it when the picker closes.
  • Use From Palette to add a palette-linked preset colour.
  • Linked colours are stored as palette references and shown with a P badge.
  • When profile palette colours change, linked preset colours update across that profile.

API docs

  • Main API reference: docs/API.md

Driver pattern modules

Pattern .py sources live under led-driver/src/patterns. The Pi app resolves that path via util.driver_patterns.driver_patterns_dir(). If you deploy without that tree next to the app, set LED_CONTROLLER_PATTERNS_DIR to the directory that contains those files.

Description
No description provided
Readme AGPL-3.0 6 MiB
Languages
Python 54.5%
JavaScript 34.4%
HTML 5.5%
CSS 3.6%
Shell 1.6%
Other 0.4%