v0.6.6-beta — Firmware modular para control LED en ESP32 con API REST/Serial, UI embebida, motor de efectos visual/audio y sincronizacion multi-nodo.
Repositorio activo y prioritario del proyecto.
| Perfil | Board | Pin LED | LEDs por defecto |
|---|---|---|---|
esp32c3supermini |
esp32-c3-devkitm-1 | 8 | 60 |
esp32dev |
esp32dev | 5 | 60 |
esp32s3 |
esp32-s3-devkitc-1 | 48 | 60 |
# Compilar
pio run -e esp32c3supermini
pio run -e esp32dev
pio run -e esp32s3
# Flash
pio run -e esp32c3supermini -t upload
# Script auxiliar (Windows)
.\tools\flash.ps1 -Profile esp32c3supermini -Action upload -Port COM6El workflow .github/workflows/firmware-build-release.yml automatiza:
- Build en GitHub Actions para
esp32c3supermini,esp32dev,esp32s3. - Generacion de artefactos
.zippor entorno (incluyefirmware.biny binarios de flash cuando existen). - Publicacion automatica de artefactos en la release al crear un tag o al publicar una release.
- Notas de release generadas desde
CHANGELOG.md(seccion de version del tag). - Archivo
SHA256SUMS.txtcon checksums de todos los artefactos.
Eventos que lo disparan:
pull_requestpushamainpushde tagsreleasepublicadaworkflow_dispatchmanual
- Archivo fuente:
CHANGELOG.md. - Historico consolidado de versiones legacy:
docs/wiki/Release-History.md. - Archivo de origen legacy (monorepo):
docs/old/CHANGELOG.md. - En cada PR se exige actualizar
CHANGELOG.mdvia.github/workflows/changelog-check.yml. - Checklist operativa de release:
docs/RELEASE_CHECKLIST.md. - Para publicar una release por tag, debe existir seccion en changelog con formato:
## [0.6.4-alpha] - 2026-07-27Si faltase esa seccion, el workflow de release falla para evitar releases sin trazabilidad.
- 2 tareas FreeRTOS:
controlTask(core0, ~10 ms) yrenderTask(core1, ~16 ms / ~62.5 FPS) - Servicios: CoreState, StorageService, PersistenceSchedulerService, ProfileService, UserPaletteService, WifiService, AudioService, EffectManager, SyncService, ApiService, WatchdogService
- UI: plantillas HTML/CSS en LittleFS (
data/ui) con fallback a HTML embebido - Backends LED: NeoPixelBus (principal), FastLED (alternativo), Digital
- Sync stack S1-S6: DDP, E1.31, cluster sync, reloj de fase compartido, telemetria runtime
- Descubrimiento mDNS:
_ddp._udpy_e131._udppara LedFx (entrada externa) y_duxsync._udppara sync interno de cluster
Base: http://<ip>/api/v1
| Grupo | Rutas principales |
|---|---|
| Estado | GET/PATCH /state, POST /system/restart, GET /diag |
| Config | GET/PATCH /config/{network,gpio,microphone,general}, GET/PATCH /config/debug, GET/POST /config/all |
| Sync | GET /sync/state, GET/PATCH /sync/config, PATCH /sync/mode |
| Perfiles | GET /profiles, /profiles/{save,apply,default,delete,clone} |
| Efectos | GET /effects, /effects/startup/save, /effects/sequence/{add,delete} |
| Paletas | GET /palettes, /palettes/{apply,save,delete} |
| Sistema | GET /hardware, GET /release, GET /metrics, POST /metrics/reset, GET /openapi.json |
Referencia completa: wiki/API-v1
NetworkConfig: WiFi (AP/STA), IP, DNS, NTPGpioConfig: hasta 4 salidas LED + bloquepower(consumo/voltaje/termica)MicrophoneConfig: I2S, sample rate, fftSize, gain, noise floor, pinsGeneralConfig: idioma, region, debugEnabled, heartbeatMsSyncConfig: modo sync, protocolo y puertos- Perfiles de usuario, paletas, estado runtime y secuencias de efectos
Esquema completo de configuracion: docs/wiki/Configuration-Schema.md
platformio.ini # Perfiles de build por placa
firmware/
src/ # Codigo fuente principal
include/ # Cabeceras del proyecto
config/ # Configuraciones y defaults
data/
ui/ # UI embebida (LittleFS)
tools/
flash.ps1 # Script build/flash Windows
docs/
MEMORIA_PROYECTO.md
CONTEXT_TRANSFER_FROM_MONOREPO.md
- Wiki del proyecto
- Arquitectura
- API v1 completa
- Esquema de configuracion
- Roadmap
- Memoria tecnica:
docs/MEMORIA_PROYECTO.md - Checklist de release:
docs/RELEASE_CHECKLIST.md - Checklist serial C3:
firmware/CHECKLIST_SERIAL_ESP32C3.md - Workflow build/release:
.github/workflows/firmware-build-release.yml
La Wiki de GitHub se gestiona en un repo separado (<repo>.wiki.git).
Para mantener una copia versionada en este workspace usa tools/wiki-sync.ps1 con mirror local en docs/wiki:
# Wiki remota -> docs/wiki
powershell -ExecutionPolicy Bypass -File .\tools\wiki-sync.ps1 -Mode pull
# docs/wiki -> Wiki remota
powershell -ExecutionPolicy Bypass -File .\tools\wiki-sync.ps1 -Mode pushReferencia completa: tools/README.md
Tambien tienes tasks de VS Code en .vscode/tasks.json:
Wiki: Pull to docs/wikiWiki: Push from docs/wikiWiki: Check sync drift
Y validacion automatica en CI con .github/workflows/wiki-sync-check.yml.
Ademas, el PR template en .github/pull_request_template.md incluye checklist de sincronizacion de wiki.
| Proyecto | Estado |
|---|---|
| DUXMAN-LED-ANDROID-APP | Activo |
| DUXMAN-LED-MOCKUP-PYTHON | Activo |
| DUXMAN-LED-NEXT | Deprecado / archivado |