TuxDMX
All rights reserved - Thomas / TuxiNet
TuxDMX er en headless, browserbaseret DMX-controller med FastAPI-backend, React dark UI, simulator-first udvikling og hardwareabstraktion mod OLA/USB-DMX.
Status
- Simulator mode kan startes lokalt og bruges til backend-, UI- og API-verifikation uden fysisk hardware.
- Primær target-platform er fysisk Debian 13 amd64.
- USB-DMX og OLA-output er verificeret af systemejeren på target-hosten.
- Codex påstår ikke, at den fysiske hardware er målt eller testet direkte i denne workspace-session.
- Resten af den manuelle hardwarevalidering og regressionstest er samlet i HARDWARE-VALIDATION.md.
Hurtig simulatorstart
Backend
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.lock
python -m uvicorn app.main:app --app-dir backend --reload
Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.lock
python -m uvicorn app.main:app --app-dir backend --reload
Frontend
pnpm install
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm dev
Standard-URL'er
- Web UI:
http://127.0.0.1:8000/når backend servererfrontend/dist - API health:
http://127.0.0.1:8000/api/v1/health - Live WebSocket:
ws://127.0.0.1:8000/ws/live
Verifikation
- Backend-tests:
pytest - Frontend-tests:
pnpm test - Frontend linting:
pnpm lint - TypeScript typecheck:
pnpm typecheck - Frontend production build:
pnpm build - Python lint/typecheck:
ruff check backendogmypy backend/app
Dokumentation
- ARCHITECTURE.md
- INSTALL-LINUX.md
- INSTALL-PI.md
- HARDWARE-VALIDATION.md
- TROUBLESHOOTING.md
- SECURITY.md
- docs/API-ENDPOINTS.md
- docs/MIXITUP.md
- docs/OFL.md
- docs/BPM.md
- docs/DEPENDENCIES.md
- docs/IMPLEMENTATION-STATUS.md
Repositoryoversigt
backend/: FastAPI, simulator, DMX-engine, auth, fixtures, BPM, triggers, backups og tests.frontend/: React dark UI, sidekomponenter og frontend-tests.scripts/: Linux/Pi-installation, update, uninstall, smoke-test og diagnostics.systemd/: systemd-unit og environment-eksempel til Linux-drift.test-data/fixtures/: små lovlige fixtures til simulator- og OFL-tests.
Produktion på Linux
- Debian 13 amd64:
sudo ./scripts/install-linux.sh,sudo ./scripts/update-linux.shogsudo ./scripts/uninstall-linux.sh - Raspberry Pi / ARM:
sudo ./scripts/install-pi.shogsudo ./scripts/update-pi.sh
Windows sync til Linux-share
Hvis du arbejder i Windows og vil kopiere den deploy-klare kode til et mounted share som Q:\home\thomas\TuxDMXWebUI, kan du bruge:
powershell -ExecutionPolicy Bypass -File .\scripts\sync-windows-deploy.ps1
Alternativt:
scripts\sync-windows-deploy.cmd
Scriptet kopierer projektet uden data, node_modules, .venv, cache-mapper, __pycache__ og git-metadata. Det sletter ikke noget paa destinationen. Brug -DryRun for at se, hvad der vil blive kopieret, eller -DestinationRoot <sti> for at pege paa en anden mappe.
Hvis sharet ikke tillader overwrite af enkelte filer, kan du bygge en lokal update-pakke i stedet:
powershell -ExecutionPolicy Bypass -File .\scripts\sync-windows-deploy.ps1 -PackageOnly
Standard-stien for pakken er Desktop\TuxDMXWebUI-update, og den kan aendres med -StageRoot <sti>.
Produktionsnoter
- Debian 13 amd64 er nu førsteborger-platform for Linux-installation.
- Den nuværende produktionsmaskine er en fysisk Debian 13 amd64-host.
- Frontend-tooling er fastlaast til Node 20 og
pnpm10.28.2 viapackageManagerogengines. - OLA og OLA Python-binding forventes fra Debian-pakker, og virtualenv oprettes med
--system-site-packages. - Permanente data ligger under
/var/lib/tuxdmx, logs under/var/log/tuxdmxog environment i/etc/tuxdmx/tuxdmx.env.
Home Assistant live-test
Denne sektion beskriver en konkret live-testopsætning for parallel drift med fysisk USB-DMX og Home Assistant. Den er en testopskrift og ikke en påstand om, at den er udført direkte fra denne Codex-workspace-session.
Mål
Universe 1: fysisk OLA-output til USB-DMX og almindelige DMX-lamperUniverse 10: internt HA-universe til Home Assistant-bro
Testsetup
- Sæt DMX-backend til
OLA / USB-DMX,Universe 1og korrekt OLA-port iSettings. - Under
Home Assistant-bro:- sæt
Base URL - indsæt long-lived token
- sæt
Standard HA-universetil10 - tryk
Test forbindelse
- sæt
- Tryk
Hent HA-enhederog vælg de relevante entiteter.
Konkrete mappings
-
RGB med master:
Universe 10Startadresse 1Fixturetype rgbEntity light.bar_rgbMaster dimmer = ja- Kanalbrug:
1 = master2 = rød3 = grøn4 = blå
-
Dimmer:
Universe 10Startadresse 5Fixturetype dimmerEntity light.bar_dimmer
-
Scene-trigger:
Universe 10Startadresse 6Fixturetype sceneEntity scene.party_mode
Forventet adfærd
- DMX på
Universe 1går fortsat ud via OLA og USB-DMX uden afhængighed af Home Assistant. - HA-mappings på
Universe 10oversætter kun de valgte kanaler til HA-kald. Sceneogautomationtrigges kun på rising edge.Switchbruger hysterese og må ikke flappe omkring midtpunktet.- Ved langsomt eller utilgængeligt HA droppes gamle pending opdateringer, så kun nyeste ønskede værdi sendes videre.
Fadesendes som HAtransitionfrem for mange mellemtrin.