From 1f110866f5672a60951cf53a5f9b904f0a5506d4 Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 25 Jul 2026 10:26:29 +0200 Subject: [PATCH] Update docs and screenshots --- .env.example | 17 + .github/workflows/ci.yml | 81 + .gitignore | 22 + LICENSE | 16 + NOTICE | 2 + README.md | 29 + TuxDMX-Codex-Komplet-Specifikation.md | 2295 ++++++++++++ backend/alembic.ini | 35 + backend/alembic/env.py | 55 + .../alembic/versions/20260712_0001_initial.py | 88 + ...20260719_0002_fixture_sources_and_patch.py | 68 + .../versions/20260722_0003_scene_targets.py | 44 + .../versions/20260724_0004_midi_bridge.py | 87 + backend/app/__init__.py | 2 + backend/app/api/__init__.py | 2 + backend/app/api/router.py | 7 + backend/app/api/routes.py | 702 ++++ backend/app/auth/__init__.py | 2 + backend/app/auth/service.py | 57 + backend/app/backup/__init__.py | 2 + backend/app/backup/service.py | 122 + backend/app/bpm/__init__.py | 2 + backend/app/bpm/service.py | 619 +++ backend/app/core/__init__.py | 2 + backend/app/core/config.py | 60 + backend/app/core/database.py | 45 + backend/app/core/dependencies.py | 62 + backend/app/core/logging.py | 32 + backend/app/dmx/__init__.py | 2 + backend/app/dmx/backends.py | 496 +++ backend/app/dmx/engine.py | 137 + backend/app/dmx/frame.py | 91 + backend/app/dmx/output_service.py | 152 + backend/app/effects/__init__.py | 2 + backend/app/effects/service.py | 163 + backend/app/fixtures/__init__.py | 2 + backend/app/fixtures/normalize.py | 107 + backend/app/fixtures/ofl.py | 48 + backend/app/fixtures/service.py | 289 ++ backend/app/homeassistant/service.py | 869 +++++ backend/app/live/__init__.py | 3 + backend/app/live/service.py | 219 ++ backend/app/main.py | 40 + backend/app/midi/__init__.py | 1 + backend/app/midi/service.py | 834 +++++ backend/app/mixitup/__init__.py | 2 + backend/app/mixitup/service.py | 39 + backend/app/models/__init__.py | 2 + backend/app/models/base.py | 6 + backend/app/models/entities.py | 225 ++ backend/app/models/schemas.py | 227 ++ backend/app/patch/__init__.py | 1 + backend/app/patch/service.py | 236 ++ backend/app/scenes/__init__.py | 2 + backend/app/scenes/service.py | 229 ++ backend/app/system/__init__.py | 3 + backend/app/system/service.py | 96 + backend/app/telemetry/__init__.py | 2 + backend/app/telemetry/service.py | 78 + backend/app/websocket/__init__.py | 2 + backend/app/websocket/router.py | 27 + backend/tests/conftest.py | 4 + backend/tests/test_api.py | 593 +++ backend/tests/test_artnet_backend.py | 118 + backend/tests/test_backup_restore.py | 35 + backend/tests/test_bpm_service.py | 61 + backend/tests/test_dmx_frame.py | 39 + backend/tests/test_effect_service.py | 55 + backend/tests/test_home_assistant_service.py | 682 ++++ backend/tests/test_install_scripts.py | 156 + backend/tests/test_midi_api.py | 322 ++ backend/tests/test_migrations.py | 45 + backend/tests/test_ofl_client.py | 37 + backend/tests/test_ola_backend.py | 141 + backend/tests/test_production_runtime.py | 66 + docs/MIDI_BRIDGE.md | 124 + docs/system-manual/MANUAL.md | 40 +- docs/system-manual/README.md | 3 +- docs/system-manual/SCREENSHOTS.md | 7 +- docs/system-manual/screenshots/backup.png | Bin 53482 -> 61900 bytes docs/system-manual/screenshots/bpm.png | Bin 69169 -> 72829 bytes docs/system-manual/screenshots/dashboard.png | Bin 70910 -> 81215 bytes .../system-manual/screenshots/dmx-monitor.png | Bin 118578 -> 122487 bytes docs/system-manual/screenshots/effects.png | Bin 56126 -> 60055 bytes docs/system-manual/screenshots/fixtures.png | Bin 54163 -> 58245 bytes docs/system-manual/screenshots/live-desk.png | Bin 67500 -> 75979 bytes docs/system-manual/screenshots/midi.png | Bin 0 -> 80510 bytes docs/system-manual/screenshots/mixitup.png | Bin 50469 -> 57288 bytes docs/system-manual/screenshots/patch.png | Bin 55659 -> 59992 bytes docs/system-manual/screenshots/placement.png | Bin 62775 -> 66998 bytes docs/system-manual/screenshots/scenes.png | Bin 55464 -> 59166 bytes docs/system-manual/screenshots/settings.png | Bin 63173 -> 67248 bytes docs/system-manual/screenshots/telemetry.png | Bin 53013 -> 60426 bytes eslint.config.js | 37 + frontend/index.html | 20 + frontend/src/App.tsx | 1280 +++++++ frontend/src/components/AppShell.tsx | 269 ++ frontend/src/components/ChannelGrid.tsx | 45 + frontend/src/components/StatusPill.tsx | 9 + frontend/src/lib/api.ts | 604 +++ frontend/src/main.tsx | 11 + frontend/src/pages/BackupPage.tsx | 40 + frontend/src/pages/BpmPage.tsx | 478 +++ frontend/src/pages/DashboardPage.tsx | 119 + frontend/src/pages/EffectsPage.tsx | 206 + frontend/src/pages/FixturesPage.tsx | 266 ++ frontend/src/pages/LiveDeskPage.tsx | 187 + frontend/src/pages/MidiPage.tsx | 536 +++ frontend/src/pages/MixitupPage.tsx | 37 + frontend/src/pages/MonitorPage.tsx | 58 + frontend/src/pages/PatchPage.tsx | 435 +++ frontend/src/pages/PlacementPage.tsx | 194 + frontend/src/pages/ScenesPage.tsx | 318 ++ frontend/src/pages/SettingsPage.tsx | 754 ++++ frontend/src/pages/TelemetryPage.tsx | 49 + frontend/src/styles.css | 1029 +++++ frontend/tests/App.test.tsx | 123 + frontend/tests/MidiPage.test.tsx | 120 + frontend/tests/SettingsPage.test.tsx | 143 + frontend/tests/setup.ts | 1 + package.json | 40 + pnpm-lock.yaml | 3316 +++++++++++++++++ pnpm-workspace.yaml | 8 + pyproject.toml | 63 + requirements.lock | 17 + scripts/collect-diagnostics.sh | 33 + scripts/control-system.sh | 45 + scripts/install-linux.sh | 9 + scripts/install-pi.sh | 9 + scripts/lib/install-common.sh | 773 ++++ scripts/pi-smoke-test.sh | 42 + scripts/push-git-tuxinet.ps1 | 192 + scripts/sync-windows-deploy.cmd | 4 + scripts/sync-windows-deploy.ps1 | 140 + scripts/uninstall-linux.sh | 5 + scripts/uninstall-pi.sh | 34 + scripts/update-linux.sh | 9 + scripts/update-pi.sh | 9 + systemd/tuxdmx.env.example | 15 + systemd/tuxdmx.service | 27 + .../fixtures/testco__gobo-color-wheel.json | 16 + .../fixtures/testco__invalid-fixture.json | 12 + test-data/fixtures/testco__matrix-pixel.json | 19 + .../fixtures/testco__moving-head-16bit.json | 17 + test-data/fixtures/testco__rgb-basic-par.json | 13 + .../fixtures/testco__rgbw-dimmer-strobe.json | 19 + .../fixtures/testco__switching-channel.json | 15 + tools/tuxdmx-midi-bridge/LICENSE | 6 + tools/tuxdmx-midi-bridge/README.md | 59 + tools/tuxdmx-midi-bridge/config.example.yaml | 20 + tools/tuxdmx-midi-bridge/install-linux.sh | 15 + tools/tuxdmx-midi-bridge/install-windows.bat | 11 + tools/tuxdmx-midi-bridge/pyproject.toml | 21 + tools/tuxdmx-midi-bridge/requirements.txt | 4 + tools/tuxdmx-midi-bridge/run-linux.sh | 12 + tools/tuxdmx-midi-bridge/run-windows.bat | 10 + tools/tuxdmx-midi-bridge/tests/test_config.py | 25 + .../tests/test_midi_serialization.py | 38 + .../tests/test_reconnect.py | 7 + .../tuxdmx-midi-bridge.service.example | 15 + .../tuxdmx_midi_bridge/__init__.py | 5 + .../tuxdmx_midi_bridge/__main__.py | 5 + .../tuxdmx_midi_bridge/client.py | 52 + .../tuxdmx_midi_bridge/config.py | 90 + .../tuxdmx_midi_bridge/logging_setup.py | 10 + .../tuxdmx_midi_bridge/main.py | 131 + .../tuxdmx_midi_bridge/midi.py | 87 + tsconfig.json | 22 + tsconfig.node.json | 9 + vite.config.ts | 20 + 170 files changed, 24657 insertions(+), 3 deletions(-) create mode 100644 .env.example create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 NOTICE create mode 100644 TuxDMX-Codex-Komplet-Specifikation.md create mode 100644 backend/alembic.ini create mode 100644 backend/alembic/env.py create mode 100644 backend/alembic/versions/20260712_0001_initial.py create mode 100644 backend/alembic/versions/20260719_0002_fixture_sources_and_patch.py create mode 100644 backend/alembic/versions/20260722_0003_scene_targets.py create mode 100644 backend/alembic/versions/20260724_0004_midi_bridge.py create mode 100644 backend/app/__init__.py create mode 100644 backend/app/api/__init__.py create mode 100644 backend/app/api/router.py create mode 100644 backend/app/api/routes.py create mode 100644 backend/app/auth/__init__.py create mode 100644 backend/app/auth/service.py create mode 100644 backend/app/backup/__init__.py create mode 100644 backend/app/backup/service.py create mode 100644 backend/app/bpm/__init__.py create mode 100644 backend/app/bpm/service.py create mode 100644 backend/app/core/__init__.py create mode 100644 backend/app/core/config.py create mode 100644 backend/app/core/database.py create mode 100644 backend/app/core/dependencies.py create mode 100644 backend/app/core/logging.py create mode 100644 backend/app/dmx/__init__.py create mode 100644 backend/app/dmx/backends.py create mode 100644 backend/app/dmx/engine.py create mode 100644 backend/app/dmx/frame.py create mode 100644 backend/app/dmx/output_service.py create mode 100644 backend/app/effects/__init__.py create mode 100644 backend/app/effects/service.py create mode 100644 backend/app/fixtures/__init__.py create mode 100644 backend/app/fixtures/normalize.py create mode 100644 backend/app/fixtures/ofl.py create mode 100644 backend/app/fixtures/service.py create mode 100644 backend/app/homeassistant/service.py create mode 100644 backend/app/live/__init__.py create mode 100644 backend/app/live/service.py create mode 100644 backend/app/main.py create mode 100644 backend/app/midi/__init__.py create mode 100644 backend/app/midi/service.py create mode 100644 backend/app/mixitup/__init__.py create mode 100644 backend/app/mixitup/service.py create mode 100644 backend/app/models/__init__.py create mode 100644 backend/app/models/base.py create mode 100644 backend/app/models/entities.py create mode 100644 backend/app/models/schemas.py create mode 100644 backend/app/patch/__init__.py create mode 100644 backend/app/patch/service.py create mode 100644 backend/app/scenes/__init__.py create mode 100644 backend/app/scenes/service.py create mode 100644 backend/app/system/__init__.py create mode 100644 backend/app/system/service.py create mode 100644 backend/app/telemetry/__init__.py create mode 100644 backend/app/telemetry/service.py create mode 100644 backend/app/websocket/__init__.py create mode 100644 backend/app/websocket/router.py create mode 100644 backend/tests/conftest.py create mode 100644 backend/tests/test_api.py create mode 100644 backend/tests/test_artnet_backend.py create mode 100644 backend/tests/test_backup_restore.py create mode 100644 backend/tests/test_bpm_service.py create mode 100644 backend/tests/test_dmx_frame.py create mode 100644 backend/tests/test_effect_service.py create mode 100644 backend/tests/test_home_assistant_service.py create mode 100644 backend/tests/test_install_scripts.py create mode 100644 backend/tests/test_midi_api.py create mode 100644 backend/tests/test_migrations.py create mode 100644 backend/tests/test_ofl_client.py create mode 100644 backend/tests/test_ola_backend.py create mode 100644 backend/tests/test_production_runtime.py create mode 100644 docs/MIDI_BRIDGE.md create mode 100644 docs/system-manual/screenshots/midi.png create mode 100644 eslint.config.js create mode 100644 frontend/index.html create mode 100644 frontend/src/App.tsx create mode 100644 frontend/src/components/AppShell.tsx create mode 100644 frontend/src/components/ChannelGrid.tsx create mode 100644 frontend/src/components/StatusPill.tsx create mode 100644 frontend/src/lib/api.ts create mode 100644 frontend/src/main.tsx create mode 100644 frontend/src/pages/BackupPage.tsx create mode 100644 frontend/src/pages/BpmPage.tsx create mode 100644 frontend/src/pages/DashboardPage.tsx create mode 100644 frontend/src/pages/EffectsPage.tsx create mode 100644 frontend/src/pages/FixturesPage.tsx create mode 100644 frontend/src/pages/LiveDeskPage.tsx create mode 100644 frontend/src/pages/MidiPage.tsx create mode 100644 frontend/src/pages/MixitupPage.tsx create mode 100644 frontend/src/pages/MonitorPage.tsx create mode 100644 frontend/src/pages/PatchPage.tsx create mode 100644 frontend/src/pages/PlacementPage.tsx create mode 100644 frontend/src/pages/ScenesPage.tsx create mode 100644 frontend/src/pages/SettingsPage.tsx create mode 100644 frontend/src/pages/TelemetryPage.tsx create mode 100644 frontend/src/styles.css create mode 100644 frontend/tests/App.test.tsx create mode 100644 frontend/tests/MidiPage.test.tsx create mode 100644 frontend/tests/SettingsPage.test.tsx create mode 100644 frontend/tests/setup.ts create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 pyproject.toml create mode 100644 requirements.lock create mode 100644 scripts/collect-diagnostics.sh create mode 100644 scripts/control-system.sh create mode 100644 scripts/install-linux.sh create mode 100644 scripts/install-pi.sh create mode 100644 scripts/lib/install-common.sh create mode 100644 scripts/pi-smoke-test.sh create mode 100644 scripts/push-git-tuxinet.ps1 create mode 100644 scripts/sync-windows-deploy.cmd create mode 100644 scripts/sync-windows-deploy.ps1 create mode 100644 scripts/uninstall-linux.sh create mode 100644 scripts/uninstall-pi.sh create mode 100644 scripts/update-linux.sh create mode 100644 scripts/update-pi.sh create mode 100644 systemd/tuxdmx.env.example create mode 100644 systemd/tuxdmx.service create mode 100644 test-data/fixtures/testco__gobo-color-wheel.json create mode 100644 test-data/fixtures/testco__invalid-fixture.json create mode 100644 test-data/fixtures/testco__matrix-pixel.json create mode 100644 test-data/fixtures/testco__moving-head-16bit.json create mode 100644 test-data/fixtures/testco__rgb-basic-par.json create mode 100644 test-data/fixtures/testco__rgbw-dimmer-strobe.json create mode 100644 test-data/fixtures/testco__switching-channel.json create mode 100644 tools/tuxdmx-midi-bridge/LICENSE create mode 100644 tools/tuxdmx-midi-bridge/README.md create mode 100644 tools/tuxdmx-midi-bridge/config.example.yaml create mode 100644 tools/tuxdmx-midi-bridge/install-linux.sh create mode 100644 tools/tuxdmx-midi-bridge/install-windows.bat create mode 100644 tools/tuxdmx-midi-bridge/pyproject.toml create mode 100644 tools/tuxdmx-midi-bridge/requirements.txt create mode 100644 tools/tuxdmx-midi-bridge/run-linux.sh create mode 100644 tools/tuxdmx-midi-bridge/run-windows.bat create mode 100644 tools/tuxdmx-midi-bridge/tests/test_config.py create mode 100644 tools/tuxdmx-midi-bridge/tests/test_midi_serialization.py create mode 100644 tools/tuxdmx-midi-bridge/tests/test_reconnect.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx-midi-bridge.service.example create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/__init__.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/__main__.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/client.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/config.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/logging_setup.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/main.py create mode 100644 tools/tuxdmx-midi-bridge/tuxdmx_midi_bridge/midi.py create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..bb21dc3 --- /dev/null +++ b/.env.example @@ -0,0 +1,17 @@ +TUXDMX_ENV=development +TUXDMX_APP_NAME=TuxDMX +TUXDMX_SECRET_KEY=change-me-before-production +TUXDMX_DATABASE_URL=sqlite+aiosqlite:///./data/tuxdmx.db +TUXDMX_SIMULATOR_ENABLED=true +TUXDMX_OLA_UNIVERSE=1 +TUXDMX_OLA_OUTPUT_PORT= +TUXDMX_OLA_SEND_TIMEOUT_MS=1000 +TUXDMX_DATA_DIR=./data +TUXDMX_BACKUP_DIR=./data/backups +TUXDMX_FIXTURE_CACHE_DIR=./data/fixtures +TUXDMX_DIAGNOSTICS_DIR=./data/diagnostics +TUXDMX_UPLOADS_DIR=./data/uploads +TUXDMX_LOG_DIR=./data +TUXDMX_FRONTEND_DIST=frontend/dist +TUXDMX_LOG_LEVEL=INFO +TUXDMX_ALLOW_LOCAL_DOCS=true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..278d892 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,81 @@ +name: CI + +on: + push: + pull_request: + +jobs: + backend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.lock + - name: Pip check + run: pip check + - name: Import greenlet + run: python -c "import greenlet; print(greenlet.__version__)" + - name: Ruff + run: ruff check backend + - name: Mypy + run: mypy backend/app + - name: Pytest + run: pytest + + shell: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install ShellCheck + run: sudo apt-get update && sudo apt-get install -y shellcheck + - name: Bash syntax check + run: | + bash -n scripts/install-pi.sh + bash -n scripts/update-pi.sh + bash -n scripts/install-linux.sh + bash -n scripts/update-linux.sh + bash -n scripts/uninstall-linux.sh + bash -n scripts/lib/install-common.sh + - name: ShellCheck + run: | + shellcheck scripts/install-pi.sh + shellcheck scripts/update-pi.sh + shellcheck scripts/install-linux.sh + shellcheck scripts/update-linux.sh + shellcheck scripts/uninstall-linux.sh + shellcheck scripts/lib/install-common.sh + + frontend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 10.28.2 + - uses: actions/setup-node@v4 + with: + node-version: "20.19.2" + cache: "pnpm" + - name: Install frontend dependencies + run: pnpm install --frozen-lockfile + - name: Frontend lint + run: pnpm lint + - name: Frontend typecheck + run: pnpm typecheck + - name: Frontend tests + run: pnpm test + - name: Frontend build + run: pnpm build + + arm64-smoke: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-qemu-action@v3 + - name: ARM64 compile check + run: docker run --rm --platform linux/arm64/v8 -v "$PWD":/workspace -w /workspace python:3.11-slim python -m compileall backend diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d71165b --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +.venv/ +__pycache__/ +.pytest_cache/ +.ruff_cache/ +.mypy_cache/ +.pnpm-store/ +node_modules/ +frontend/dist/ +data/ +backend/.coverage +backend/htmlcov/ +backend/.pytest_cache/ +*.pyc +*.pyo +*.sqlite3 +*.db +*.log +*.zip +*.tar +*.tar.gz +.env +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..62958b7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,16 @@ +TuxDMX +Copyright (c) Thomas / TuxiNet + +All rights reserved. + +This repository and all accompanying source code, documentation, scripts, builds, +and assets are proprietary and confidential unless Thomas / TuxiNet states +otherwise in writing. + +No permission is granted to copy, modify, distribute, sublicense, publish, +sell, or use this material outside the private scope approved by the copyright +holder. + +Third-party components remain subject to their own licenses. See +THIRD_PARTY_NOTICES.md and docs/DEPENDENCIES.md. + diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..fd77741 --- /dev/null +++ b/NOTICE @@ -0,0 +1,2 @@ +All rights reserved - Thomas / TuxiNet + diff --git a/README.md b/README.md index 50f6c4f..a98747c 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,13 @@ pnpm dev - [HARDWARE-VALIDATION.md](HARDWARE-VALIDATION.md) - [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - [SECURITY.md](SECURITY.md) +- [docs/system-manual/README.md](docs/system-manual/README.md) +- [docs/system-manual/MANUAL.md](docs/system-manual/MANUAL.md) - [docs/API-ENDPOINTS.md](docs/API-ENDPOINTS.md) - [docs/MIXITUP.md](docs/MIXITUP.md) - [docs/OFL.md](docs/OFL.md) - [docs/BPM.md](docs/BPM.md) +- [docs/MIDI_BRIDGE.md](docs/MIDI_BRIDGE.md) - [docs/DEPENDENCIES.md](docs/DEPENDENCIES.md) - [docs/IMPLEMENTATION-STATUS.md](docs/IMPLEMENTATION-STATUS.md) @@ -110,6 +113,32 @@ powershell -ExecutionPolicy Bypass -File .\scripts\sync-windows-deploy.ps1 -Pack Standard-stien for pakken er `Desktop\TuxDMXWebUI-update`, og den kan aendres med `-StageRoot `. +## Dokumentation og screenshots + +- Den opdaterede systemmanual ligger i `docs/system-manual/`. +- Screenshot-saettet er regenereret den 25. juli 2026 fra lokal `mock=1` preview og matcher den nuvaerende kompakte navigation med grupperede menuer. +- Saettet indeholder ogsaa `MIDI`-siden, saa hele den aktuelle WebUI er dækket. + +## Git upload via PowerShell + +Hvis du vil stage, committe og pushe direkte til TuxiNet Git fra PowerShell, kan du bruge helper-scriptet: + +```powershell +powershell -ExecutionPolicy Bypass -File .\scripts\push-git-tuxinet.ps1 -InitIfNeeded -SetOrigin -StageAll -Commit -CommitMessage "Update docs and screenshots" -Push +``` + +Standard-remote er: + +```text +https://git.tuxinet.dk/thomas/TuxDMX-WebUI.git +``` + +Hvis du kun vil se status og remote uden at pushe endnu: + +```powershell +powershell -ExecutionPolicy Bypass -File .\scripts\push-git-tuxinet.ps1 -SetOrigin +``` + ## Produktionsnoter - Debian 13 amd64 er nu førsteborger-platform for Linux-installation. diff --git a/TuxDMX-Codex-Komplet-Specifikation.md b/TuxDMX-Codex-Komplet-Specifikation.md new file mode 100644 index 0000000..d47e997 --- /dev/null +++ b/TuxDMX-Codex-Komplet-Specifikation.md @@ -0,0 +1,2295 @@ +# TuxDMX – komplet projektbeskrivelse til Codex + +## 1. Din rolle + +Du er senior softwarearkitekt og full-stack-udvikler. Byg et komplet, driftssikkert og dokumenteret system med navnet **TuxDMX**. + +TuxDMX skal være en headless, browserbaseret DMX-controller til Raspberry Pi. Systemet skal bruge **Open Lighting Architecture (OLA)** som hardware- og protokolbackend, sende DMX gennem et USB-DMX-interface direkte til Raspberry Pi’en og kunne styres fuldt ud gennem et mørkt Web UI. + +Systemet skal integreres med **MixItUp**, så Twitch-events, chatkommandoer og Channel Point-redemptions kan starte scener og effekter gennem HTTP-kald. + +Codex får ikke adgang til den fysiske Raspberry Pi, USB-DMX-interfacet eller lamperne. Derfor skal al hardwareafhængig kode isoleres bag interfaces, og projektet skal indeholde en komplet simulator, mock-backend, automatiske tests, installationsscripts og en manuel hardwarevalidering, som Thomas kan køre på Raspberry Pi’en. + +Der må ikke stå, at fysisk hardware er testet, når det ikke er tilfældet. + +--- + +# 2. Produktmål + +TuxDMX skal give følgende samlede løsning: + +```text +Browser / mobil / tablet + │ + ▼ +TuxDMX Web UI og REST API + │ + ├── Fixture-, patch-, scene- og effektmotor + ├── MixItUp/Twitch-triggerkø + ├── BPM- og beatmotor + ├── Telemetri og logning + └── Simulator + │ + ▼ +OLA / olad + │ + ▼ +USB-DMX-interface + │ + ▼ +DMX-lamper +``` + +Systemet skal kunne køre uden skærm, tastatur og mus på Raspberry Pi’en. + +--- + +# 3. Ikke-forhandlingsbare krav + +1. **100 % browserbetjening** + - Den normale bruger må ikke skulle redigere JSON, YAML, Python, JavaScript eller shellkode. + - Alle funktioner skal kunne konfigureres gennem formularer, knapper, dropdowns, sliders, farvevælgere, XY-felter, drag-and-drop og guider. + - Rå data må kun vises som read-only diagnostik under en avanceret sektion. + +2. **Mørkt design** + - Primær baggrund: `#080b12` + - Primær accent: `#00e5ff` + - Sekundær accent: `#ff3df2` + - God kontrast, responsivt layout og tydelig statusfarvekodning. + - Dansk som standardsprog. + - Arkitekturen skal være klar til engelsk oversættelse. + +3. **Headless Raspberry Pi** + - Målplatform: Raspberry Pi OS Lite 64-bit på Raspberry Pi 4 eller 5. + - Ingen desktop eller tilsluttet skærm må være nødvendig. + - Autostart med systemd. + - Automatisk genstart ved fejl. + - Web UI skal være tilgængeligt efter reboot. + +4. **USB-DMX direkte i Raspberry Pi** + - OLA skal stå for USB-DMX-driver, patch og output. + - TuxDMX må ikke være hårdt bundet til én bestemt adaptermodel. + - Systemet skal opdage og vise kompatible OLA-enheder og porte. + - Der skal være en guided opsætning af universe og outputport. + +5. **Open Fixture Library** + - Fixtures skal kunne findes gennem en søgning direkte i TuxDMX. + - Brugeren vælger manufacturer, fixture og DMX-mode fra UI. + - Fixturedata skal importeres, valideres, normaliseres og gemmes lokalt. + - Importerede fixtures skal kunne bruges offline efter import. + +6. **MixItUp** + - MixItUp skal være en integreret del af systemet. + - Brugeren skal kunne oprette Twitch-eventmapping uden at skrive kode. + - TuxDMX skal generere endpoint, token, HTTP-metode, headers og request-body, så de kan kopieres til MixItUp. + - TuxDMX skal svare hurtigt og lægge effekten i kø, så MixItUp ikke rammer timeout. + +7. **BPM og beat** + - Manuel BPM. + - Tap tempo. + - Automatisk BPM fra lydinput. + - JACK skal understøttes, men systemet skal også have en enklere ALSA/PipeWire-kompatibel capturemulighed. + - Audioanalyse skal kunne bruge aubio eller en tilsvarende letvægtsløsning. + - Effekter skal kunne synkroniseres til beat, halvnote, kvartnote, ottendedel og sekstendedel. + +8. **Telemetri** + - Live status for OLA, USB-DMX, output, frame rate, fejl og seneste DMX-frame. + - Live visning af alle 512 kanalers aktuelle og ønskede værdier. + - Log over scener, effekter, Twitch-events, BPM og hardwarestatus. + - Systemressourcer: CPU, RAM, temperatur, disk, uptime og processstatus. + - Der skal skelnes tydeligt mellem: + - “Frame afleveret til OLA/USB-backend” + - “Fysisk signal verificeret” + - TuxDMX må ikke hævde at have målt det elektriske DMX-signal uden understøttet RX, RDM, loopback eller ekstern sniffer. + +9. **Driftssikkerhed** + - Blackout/Panic skal altid have højeste prioritet. + - Strobe skal have maksimal varighed og cooldown. + - Ved stop eller fejl skal systemet kunne gå til en konfigurerbar sikker scene. + - Ingen Twitch-bruger må kunne holde en farlig eller generende effekt kørende permanent. + +10. **Ingen automatisk MIT-licens** + - Tilføj ikke MIT-licens eller anden permissiv licens. + - Projektet skal som udgangspunkt være privat/proprietært. + - Brug en kort “All rights reserved – Thomas / TuxiNet” notice, medmindre Thomas senere vælger en anden licens. + - Opret `THIRD_PARTY_NOTICES.md` med relevante tredjepartskomponenter og licenser. + - Kopiér ikke kode fra andre projekter uden korrekt licensgrundlag. + +--- + +# 4. Teknologistak + +## Backend + +Brug: + +- Python 3.11 eller nyere +- FastAPI +- Pydantic +- SQLAlchemy 2 +- Alembic +- SQLite som standard +- WebSocket til live opdateringer +- `httpx` til OFL-integration +- `psutil` til systemtelemetri +- Argon2 til password hashing +- Struktureret logging i JSON samt menneskelæsbar log +- AsyncIO hvor det giver mening + +Backend skal være typeannoteret og bestå statisk typekontrol. + +## Frontend + +Brug: + +- React +- TypeScript +- Vite +- Et let komponentlag; undgå et unødvendigt tungt enterprise-framework +- CSS-variabler eller Tailwind til dark theme +- WebSocket til live data +- Drag-and-drop til patch, grupper og chasertrin +- Responsivt design til desktop, tablet og mobil + +Frontend bygges til statiske filer og serveres af backend eller en lille lokal webserver. Node.js skal ikke være nødvendig ved normal drift på Raspberry Pi’en efter build. + +## DMX-backend + +- OLA / `olad` +- TuxDMX skal have et adapterinterface: + - `OlaDmxBackend` + - `SimulatorDmxBackend` + - mulighed for senere `ArtNetBackend` eller `SacnBackend` +- DMX-motoren skal være adskilt logisk fra HTTP-requesthåndtering. +- En dedikeret worker/proces eller workertråd skal eje frame-loopet, så langsomme webrequests ikke påvirker DMX-timing. + +## Installation + +Normal produktion skal installeres native på Raspberry Pi OS. Brug ikke Docker som primær runtime, fordi USB-, realtime-audio- og OLA-adgang ellers bliver mere kompliceret. + +Der må gerne være en valgfri Docker/devcontainer til lokal udvikling og CI, men den må ikke være den eneste installationsmetode. + +--- + +# 5. Arkitektur + +Opdel systemet i tydelige moduler: + +```text +tuxdmx/ +├── backend/ +│ ├── app/ +│ │ ├── api/ +│ │ ├── auth/ +│ │ ├── bpm/ +│ │ ├── core/ +│ │ ├── dmx/ +│ │ ├── effects/ +│ │ ├── fixtures/ +│ │ ├── mixitup/ +│ │ ├── models/ +│ │ ├── scenes/ +│ │ ├── telemetry/ +│ │ └── websocket/ +│ ├── alembic/ +│ └── tests/ +├── frontend/ +│ ├── src/ +│ └── tests/ +├── systemd/ +├── scripts/ +├── docs/ +├── test-data/ +├── pyproject.toml +├── README.md +├── INSTALL-PI.md +├── HARDWARE-VALIDATION.md +├── TROUBLESHOOTING.md +├── SECURITY.md +└── THIRD_PARTY_NOTICES.md +``` + +## Procesmodel + +Anbefalet: + +1. `olad` + - OLA-daemon. + - Ejer USB-DMX-enheden og outputporten. + +2. `tuxdmx` + - FastAPI, database, triggerkø, WebSocket og UI. + +3. `tuxdmx-engine` + - Dedikeret DMX-frame-, scene- og effektmotor. + - Kommunikerer lokalt med backend gennem Unix socket eller en anden enkel lokal IPC-løsning. + - Må ikke eksponeres direkte på LAN. + +4. `tuxdmx-bpm` + - Kan være integreret i engine-processen eller være en separat proces. + - Skal kunne genstartes uden at stoppe DMX-output. + +Hvis en separat procesmodel bliver unødvendigt kompleks, kan backend og engine køre i samme Python-pakke, men DMX-loopet skal stadig være isoleret fra webserverens event loop. + +--- + +# 6. Førstegangsopsætning + +Ved første besøg skal en guide åbne automatisk. + +## Trin 1 – Administrator + +- Opret lokal administrator. +- Brugernavn. +- Stærkt password. +- Vis ikke standardpassword. +- Opret sessionsbaseret login. + +## Trin 2 – System + +- Vis hostname, IP, platform, arkitektur og OS. +- Kontroller om OLA/`olad` kører. +- Kontroller om TuxDMX kan kommunikere med OLA. +- Vis fundne OLA-devices og porte. + +## Trin 3 – DMX + +- Vælg universe. +- Vælg OLA outputdevice og port. +- Testknap: + - “Send kanal 1 til 20 %” + - “Send kanal 1 til 100 %” + - “Sluk kanal 1” +- Test skal have timer og automatisk nulstille kanalen. + +## Trin 4 – Sikkerhed + +- Maksimal strobevarighed. +- Global master-limit, eksempelvis 80 %. +- Safe scene ved stop. +- Blackout-adfærd. +- Twitch-trigger rate limit. + +## Trin 5 – MixItUp + +- Generér integrations-token. +- Vis TuxDMX base-URL. +- Opret en testtrigger. +- Vis en trin-for-trin MixItUp-guide. + +## Trin 6 – Færdig + +- Gem konfiguration. +- Gå til Dashboard. +- Guiden skal kunne åbnes igen senere. + +--- + +# 7. Brugere og adgang + +Roller: + +- **Administrator** + - Alt. +- **Operator** + - Live Desk, scener, effekter, BPM og blackout. + - Må ikke ændre system-, bruger- eller API-sikkerhedsindstillinger. +- **Read only** + - Dashboard og telemetri. + +Krav: + +- Lokalt login. +- Argon2 password hash. +- Session-cookie. +- CSRF-beskyttelse. +- Rate limit på login. +- Auditlog for konfigurationsændringer. +- Mulighed for at deaktivere login på et fuldstændigt isoleret LAN, men kun efter tydelig advarsel. +- API-tokens skal kunne tilbagekaldes og roteres. +- Tokens vises kun fuldt ud ved oprettelse. + +--- + +# 8. Open Fixture Library-integration + +## Officielle endpoints + +Brug som udgangspunkt: + +```text +POST https://open-fixture-library.org/api/v1/get-search-results +``` + +Eksempel på request: + +```json +{ + "searchQuery": "showtec phantom", + "manufacturersQuery": [], + "categoriesQuery": [] +} +``` + +Resultatet er fixture keys som: + +```json +[ + "showtec/phantom-3r-beam", + "showtec/phantom-50-led-spot" +] +``` + +Hent OFL JSON-formatet gennem: + +```text +https://open-fixture-library.org/{manufacturerKey}/{fixtureKey}.ofl +``` + +Brug eventuelt manufacturer-endpoints til metadata: + +```text +GET https://open-fixture-library.org/api/v1/manufacturers +GET https://open-fixture-library.org/api/v1/manufacturers/{manufacturerKey} +``` + +## Vigtigt om OFL-formatet + +OFL-formatet kan ændre sig mellem schema-versioner. Derfor må resten af TuxDMX ikke bruge OFL-JSON direkte som sit interne runtime-format. + +Implementér: + +```text +OFL JSON + │ + ▼ +OflImporter + │ validering og versionskontrol + ▼ +TuxDMX Normalized Fixture Model + │ + ▼ +Database og runtime +``` + +Gem både: + +- Den originale importerede OFL-fil. +- `$schema`. +- Manufacturer key. +- Fixture key. +- OFL URL. +- Importdato. +- Hash. +- Normaliseret intern fixtureversion. +- Eventuelle warnings og unsupported capabilities. + +## Søge-UI + +Fixture-siden skal have: + +- Søgefelt. +- Manufacturer-filter. +- Kategori-filter. +- Resultatkort med: + - Manufacturer. + - Fixture-navn. + - Kategorier. + - Tilgængelige modes. + - Sidst ændret, når data findes. +- “Vis detaljer”. +- “Importér”. +- “Importér og patch”. +- Lokal cacheindikator. +- Offline fallback. + +## Importfunktioner + +Understøt mindst: + +- Manufacturer. +- Fixture name og short name. +- Categories. +- Physical data. +- DMX connector. +- Modes. +- Available channels. +- Default value. +- Highlight value. +- HTP/LTP precedence. +- Fine channels og 16-bit værdier. +- Capability-ranges. +- ColorIntensity. +- Intensity. +- Pan. +- Tilt. +- Shutter og strobe. +- Gobo- og color wheels. +- Prism. +- Focus. +- Zoom. +- Iris. +- Effect speed. +- Maintenance. +- NoFunction. +- Switching channels. +- Matrix/pixels, hvor det kan normaliseres sikkert. +- Ukendte capability-typer skal bevares som “Generic/Unsupported”, ikke kasseres lydløst. + +## Validering + +- Valider JSON. +- Kontroller mode channel count. +- Kontroller at patchen holder sig inden for kanal 1–512. +- Vis warnings før import. +- Blokér kun ved reelle invalide data. +- Tillad brugerdefineret fixture, hvis en lampe ikke findes i OFL. + +## Opdateringer + +- Vis når en importeret fixture har en nyere OFL-version. +- Overskriv aldrig lokal fixture eller patch automatisk. +- Vis diff og kræv brugerens godkendelse. +- Bevar eksisterende scenes referencer. +- Opret automatisk backup før migration. + +--- + +# 9. Internt fixtureformat + +Design et stabilt internt fixtureformat med versionsnummer. + +Eksempel på hovedbegreber: + +```text +FixtureDefinition +├── manufacturer +├── model +├── categories +├── modes[] +├── channels[] +├── wheels[] +├── matrix +├── physical +├── source +└── schema_version +``` + +Et mode skal indeholde en ordnet kanalmap. + +En normaliseret channel skal blandt andet have: + +- Key. +- Display name. +- Kanaltype. +- Default. +- Highlight. +- Resolution. +- Fine channelrelation. +- Precedence: HTP/LTP. +- Crossfade allowed. +- Capabilities med DMX range og semantik. +- Optional pixel key. +- Optional switching dependency. + +Opret en capability-adapter, så UI kan vise relevante kontroller: + +| Capability | UI-kontrol | +|---|---| +| Intensity | Slider | +| ColorIntensity RGB(W/A/UV) | Farvevælger + kanalsliders | +| Pan/Tilt | XY-pad + sliders | +| ShutterStrobe | Dropdown + strobe slider | +| WheelSlot | Dropdown med slotnavn/ikon | +| Focus/Zoom/Iris | Slider | +| EffectSpeed | Slider | +| Maintenance | Beskyttet dropdown med advarsel | +| Generic/Unsupported | Rå DMX-slider med tydelig mærkning | + +Maintenance-kanaler må ikke vises på Live Desk som standard. + +--- + +# 10. Patch og universer + +## Grundkrav + +- Universe 1 skal være fuldt understøttet. +- Datamodel og API skal være klar til flere universer senere. +- En fixtureinstans består af: + - Brugerdefineret navn. + - Fixturedefinition. + - Mode. + - Startadresse. + - Antal kanaler. + - Gruppe(r). + - Position. + - Tags. + - Enabled/disabled. + +## Patch UI + +- Universe-visning fra kanal 1 til 512. +- Vis optagede og frie områder. +- Drag-and-drop. +- Automatisk “find næste ledige adresse”. +- Konfliktkontrol. +- Vis kanalinterval, eksempelvis `1–14`. +- Mulighed for flere identiske fixtures. +- Duplicate fixture. +- Batch patch. +- Readdress. +- Disable uden at slette. +- Gruppér fixtures: + - Front. + - Bag. + - Venstre. + - Højre. + - Moving heads. + - PAR. + - Strobe. + - Egne grupper. + +## OLA-patch + +TuxDMX skal kunne: + +- Læse OLA-status og devices. +- Vælge outputport. +- Gemme den valgte port. +- Kontrollere ved start om porten stadig findes. +- Gå til tydelig degraded mode, hvis USB-enheden mangler. +- Automatisk genforbinde, når USB-DMX kommer tilbage. +- Ikke sende tilfældige kanalværdier ved reconnect. + +--- + +# 11. Live Desk + +Live Desk er den normale betjeningsside. + +## Toplinje + +- Master dimmer. +- Blackout. +- Freeze. +- Release all temporary effects. +- Aktuel scene. +- Aktuel BPM. +- Beatindikator. +- DMX/USB-status. +- Frame rate. +- Twitch-triggerkø. + +## Fixturekort + +Hvert kort skal vise kontroller, der passer til fixturetypen: + +- Dimmer. +- Farvevælger. +- RGB/RGBW/RGBAWUV. +- Pan/tilt XY-pad. +- Pan og tilt numeric/sliders. +- Shutter. +- Strobe. +- Gobo. +- Prism. +- Focus. +- Zoom. +- Iris. +- Effect/macro. +- Reset og maintenance skal kræve ekstra bekræftelse. + +## Gruppekontrol + +- Vælg fixturegruppe. +- Justér alle fixtures samlet. +- Relative pan/tilt. +- Fan/spread. +- Mirror. +- Invert pan/tilt. +- Global farve. +- Global dimmer. + +## Programmer/preview + +- Live output. +- Blind/editor mode. +- Preview i simulator uden at sende til hardware. +- “Take live” med fade. + +--- + +# 12. Scener + +En scene er et statisk eller delvist statisk sæt kanal-/fixtureværdier. + +Funktioner: + +- Opret. +- Redigér. +- Duplikér. +- Slet. +- Aktivér. +- Deaktivér. +- Fade in. +- Fade out. +- Hold time. +- Prioritet. +- Tags. +- Farve/ikon. +- Valgfri BPM-quantize. +- Valgfri master-limit. +- Gem kun berørte parametre, så en scene kan lægges oven på en anden. +- Preview før aktivering. +- Scenegrupper/banks. + +Eksempler: + +- Normal. +- Stream. +- Pause. +- Pink. +- Blue. +- Warm white. +- DJ intro. +- Raid. +- Blackout. +- Safe shutdown. + +Ved aktivering skal UI vise: + +- Starttid. +- Fade status. +- Kilde: manuel, MixItUp, API, schedule eller system. +- Bruger/event. +- Prioritet. +- Hvor længe scenen har kørt. + +--- + +# 13. Chasers og effektmotor + +## Chasers + +- En chaser består af steps. +- Hvert step kan være: + - Scene. + - Delvis fixture-state. + - Effekt. + - Pause. +- Step duration. +- Fade duration. +- Loop count. +- Ping-pong. +- Random order. +- BPM-sync. +- Start/stop/pause/resume. +- Restore previous state. + +## Indbyggede effekter + +Implementér mindst: + +1. Dimmer pulse. +2. Strobe med sikkerhedsbegrænsning. +3. RGB/RGBW color chase. +4. Rainbow. +5. Random color. +6. Alternate group chase. +7. Fade mellem farver. +8. Beat flash. +9. Moving-head circle. +10. Moving-head figure-eight. +11. Pan sweep. +12. Tilt sweep. +13. Fan/spread. +14. Raid-sekvens. +15. Subscriber-sekvens. +16. Follow flash. +17. Channel Point-farvevalg. +18. Blackout. +19. Return-to-base-scene. +20. Audio-reactive intensity. + +## Parametre + +Alle effektparametre skal konfigureres via UI: + +- Fixturegruppe. +- Farver. +- Intensitet. +- Varighed. +- Hastighed. +- BPM division. +- Fade. +- Strobe rate. +- Bevægelsesstørrelse. +- Center. +- Retning. +- Loop. +- Prioritet. +- Cooldown. +- Restore behavior. + +## Tilstand og prioritering + +Implementér en state/effect stack. + +Eksempel: + +```text +Base scene: Stream + │ + ├── Sub-effect, prioritet 40, 8 sekunder + │ + └── Raid-effect, prioritet 60, 15 sekunder + │ + └── Blackout, prioritet 1000 +``` + +Når en midlertidig effekt slutter, skal systemet vende tilbage til den korrekte underliggende state. + +## Merge + +- Intensity-kanaler bruger normalt HTP. +- Movement, color, wheels og andre positionskanaler bruger normalt LTP. +- Brug OFL precedence, når det findes. +- Brug en dokumenteret fallbackmapping, når precedence mangler. +- Blackout skal kunne overstyre alt. +- Freeze skal stoppe ændringer uden at nulstille output. + +--- + +# 14. DMX-frame engine + +## Grundprincip + +- 512 kanaler pr. universe. +- Værdier 0–255. +- Konfigurerbar outputrate, eksempelvis 25, 30 eller 40 frames/s. +- Standard: 30 frames/s, medmindre hardwaretest viser andet. +- Engine beregner target frame, transitions, effects og merge. +- Den seneste komplette frame afleveres til OLA. + +## Målinger + +For hver periode skal engine registrere: + +- Target frame rate. +- Faktisk frame rate. +- Jitter. +- Frame calculation time. +- OLA send duration. +- Success/failure. +- Dropped/skipped frames. +- Queue depth. +- Seneste succesfulde send. +- Seneste fejl. +- Reconnect count. + +## Fejlhåndtering + +- OLA utilgængelig: + - Log fejl. + - Gå i degraded mode. + - Fortsæt state engine. + - Forsøg reconnect med backoff. +- USB mangler: + - Tydelig rød status. + - Ingen falsk “DMX OK”. + - Automatisk reconnect. +- Engine crash: + - systemd restart. + - Safe state ved ny opstart. +- Databasefejl: + - DMX-engine skal så vidt muligt fortsætte med seneste in-memory state. +- UI disconnect: + - Må ikke stoppe lyset. + +--- + +# 15. BPM- og beatmotor + +## Input modes + +1. **Manual** + - Brugeren indtaster BPM. + +2. **Tap tempo** + - Stor tap-knap. + - Tastaturgenvej. + - Beregn median/robust average af seneste taps. + - Reset efter længere pause. + +3. **Audio** + - Vælg audio device/input. + - Understøt mono/stereo. + - Vælg kanal: left, right eller mix. + - Signal meter. + - Silence detection. + - BPM confidence. + +4. **External API** + - Modtag BPM og beat-pulse gennem REST/WebSocket. + - Gør det muligt senere at koble DJ-software, Companion eller andre systemer på. + +5. **Fremtidig adapter** + - Arkitekturen skal gøre MIDI Clock og OSC muligt senere, men det behøver ikke være fuldt implementeret i første release. + +## Audio capture + +Prioritér denne rækkefølge: + +1. JACK, når JACK er aktiveret og tilgængelig. +2. PipeWire/JACK compatibility, når relevant. +3. ALSA direkte capture som fallback. + +Brug aubio eller tilsvarende til: + +- Tempo detection. +- Beat detection. +- Confidence. +- Onsets. + +## Stabilisering + +- Konfigurerbart BPM-range, standard 60–200. +- Half/double-time correction. +- Smoothing. +- Minimum confidence. +- Hold seneste stabile BPM ved korte udfald. +- Markér BPM som “usikker” ved lav confidence. +- Beat phase må ikke hoppe voldsomt ved hver ny analyse. +- Mulighed for manuel “×2”, “÷2” og nudge. + +## Beat event bus + +Udsend interne events: + +```text +beat +bar +half +quarter +eighth +sixteenth +``` + +Effekter skal kunne quantizes til næste beat eller bar. + +## UI + +BPM-siden skal vise: + +- Aktuel BPM. +- Kilde. +- Confidence. +- Signalstyrke. +- Seneste beat. +- Beat-animation. +- Tap-knap. +- Start/stop audioanalyse. +- Audio device. +- Input channel. +- Sensitivity. +- BPM-range. +- Half/double. +- Test click track i simulator. + +## Testdata + +Opret syntetiske click tracks i tests ved eksempelvis: + +- 90 BPM. +- 120 BPM. +- 128 BPM. +- 140 BPM. +- 174 BPM. + +Brug ikke ophavsretligt beskyttet musik i repository. + +--- + +# 16. MixItUp og Twitch + +## Integrationsprincip + +MixItUp bruger Web Request Actions til at kalde TuxDMX. + +TuxDMX skal returnere hurtigt: + +- HTTP `202 Accepted` ved accepteret trigger. +- Triggeren lægges i intern kø. +- Svartid skal normalt være under 200 ms på LAN. +- Langvarige lyseffekter må aldrig holde HTTP-requesten åben. + +## API-token + +- Opret et separat token til MixItUp. +- Bearer token i header. +- Token kan roteres. +- Mulighed for IP allowlist. +- Rate limiting. +- Auditlog. +- Ingen API-token i URL querystring. + +## Generisk triggerendpoint + +```http +POST /api/v1/triggers/{slug} +Authorization: Bearer +Content-Type: application/json +``` + +Eksempel: + +```json +{ + "eventType": "raid", + "username": "$username", + "displayName": "$displayname", + "amount": "$raidviewercount", + "eventId": "$eventid", + "platform": "twitch", + "metadata": {} +} +``` + +TuxDMX må acceptere, at nogle MixItUp-identifiers mangler. + +## Simpelt endpoint + +Der skal også kunne genereres simple endpoints: + +```text +POST /api/v1/scenes/{sceneSlug}/activate +POST /api/v1/effects/{effectSlug}/trigger +POST /api/v1/blackout +POST /api/v1/bpm/tap +``` + +## Mapping-UI + +Siden “MixItUp” skal gøre det muligt at: + +- Oprette integration. +- Navngive integration. +- Generere token. +- Vælge eventtype: + - Follow. + - Subscription. + - Resub. + - Gift sub. + - Bits/Cheers. + - Raid. + - Channel Point Reward. + - Chat command. + - Moderator command. + - Giveaway event. + - Custom. +- Vælge scene eller effekt. +- Vælge varighed. +- Prioritet. +- Cooldown. +- Minimum amount/viewers/bits. +- Tilladte brugerroller. +- Restore behavior. +- Max samtidige triggers. +- Duplicate/idempotency window. +- Aktiv/inaktiv. +- Test-knap. + +## MixItUp-guide i UI + +For hver mapping skal UI generere: + +- HTTP-metode. +- URL. +- Headernavn og token. +- JSON body. +- Hvilke MixItUp special identifiers der foreslås. +- Copy-knapper. +- Testresultat. +- Seneste kald. +- Seneste fejl. + +Brugeren må ikke skulle skrive JavaScript. + +## Eventkø + +Køen skal understøtte: + +- Prioritet. +- Max længde. +- Deduplication med eventId. +- Cooldown per mapping. +- Cooldown per bruger. +- Global cooldown. +- Drop/replace/queue policy. +- “Raid erstatter mindre follow-effekt”. +- “Blackout rydder køen”. +- Live visning af køen. + +## Standardpresets + +Opret standardpresets, der kan redigeres: + +- Follow: kort hvid flash. +- Sub: pink/guld pulse. +- Resub: længere pulse. +- Gift sub: chase afhængigt af antal. +- Bits: intensitet afhængigt af amount. +- Raid: stor sekvens afhængigt af viewer count. +- Channel Points: valgt farve. +- `!party`: rainbow. +- Moderator blackout. +- Moderator normal scene. + +--- + +# 17. REST API + +API skal være versioneret under `/api/v1`. + +Minimum: + +## System + +```text +GET /api/v1/health +GET /api/v1/system/status +GET /api/v1/system/diagnostics +POST /api/v1/system/restart-service +``` + +## OLA/DMX + +```text +GET /api/v1/dmx/status +GET /api/v1/dmx/devices +GET /api/v1/dmx/universes +GET /api/v1/dmx/frame +POST /api/v1/dmx/test-channel +POST /api/v1/dmx/blackout +POST /api/v1/dmx/release-blackout +``` + +## Fixtures + +```text +GET /api/v1/fixtures +POST /api/v1/fixtures/search-ofl +POST /api/v1/fixtures/import-ofl +POST /api/v1/fixtures/import-file +POST /api/v1/fixtures/custom +GET /api/v1/fixtures/{id} +PUT /api/v1/fixtures/{id} +DELETE /api/v1/fixtures/{id} +``` + +## Patch + +```text +GET /api/v1/patch +POST /api/v1/patch +PUT /api/v1/patch/{id} +DELETE /api/v1/patch/{id} +POST /api/v1/patch/validate +``` + +## Scenes + +```text +GET /api/v1/scenes +POST /api/v1/scenes +GET /api/v1/scenes/{id} +PUT /api/v1/scenes/{id} +DELETE /api/v1/scenes/{id} +POST /api/v1/scenes/{slug}/activate +POST /api/v1/scenes/{slug}/release +``` + +## Effects/chasers + +```text +GET /api/v1/effects +POST /api/v1/effects +PUT /api/v1/effects/{id} +DELETE /api/v1/effects/{id} +POST /api/v1/effects/{slug}/trigger +POST /api/v1/effects/{slug}/stop +``` + +## BPM + +```text +GET /api/v1/bpm/status +POST /api/v1/bpm/manual +POST /api/v1/bpm/tap +POST /api/v1/bpm/audio/start +POST /api/v1/bpm/audio/stop +POST /api/v1/bpm/external +GET /api/v1/bpm/devices +``` + +## MixItUp + +```text +GET /api/v1/integrations/mixitup +POST /api/v1/integrations/mixitup +PUT /api/v1/integrations/mixitup/{id} +DELETE /api/v1/integrations/mixitup/{id} +POST /api/v1/integrations/mixitup/{id}/test +POST /api/v1/triggers/{slug} +``` + +## Telemetri + +```text +GET /api/v1/telemetry/live +GET /api/v1/telemetry/history +GET /api/v1/events +GET /api/v1/logs +``` + +## Backup + +```text +POST /api/v1/backups +GET /api/v1/backups +POST /api/v1/backups/{id}/restore +DELETE /api/v1/backups/{id} +``` + +FastAPI OpenAPI-dokumentation må eksistere, men skal som standard kun være tilgængelig for administrator eller på localhost i production. + +--- + +# 18. WebSocket + +Brug WebSocket til: + +- DMX frame/live channel values. +- Telemetri. +- BPM og beat. +- Scene transitions. +- Effektstatus. +- Triggerkø. +- Hardwarestatus. +- Logs. + +Klienten skal reconnecte automatisk med backoff. + +Undgå at sende alle 512 kanaler unødigt ved hver UI-frame. Brug: + +- Deltas, når det er praktisk. +- Begrænset UI-opdateringsrate. +- Snapshot ved connect. +- Binary format er valgfrit; almindelig kompakt JSON er acceptabelt i første release. + +--- + +# 19. Telemetri og diagnostik + +## Dashboard + +Vis: + +- TuxDMX version. +- Uptime. +- OLA connected/disconnected. +- USB-DMX device. +- Universe/port. +- DMX output aktiv. +- Software output status. +- Aktuel scene. +- Aktive effekter. +- BPM. +- Triggerkø. +- CPU. +- RAM. +- CPU-temperatur. +- Disk. +- Netværk. +- Seneste fejl. + +## DMX-monitor + +Vis: + +- 512-kanals grid/heatmap. +- Kanalnummer. +- Current value. +- Target value. +- Source. +- Fixture. +- Parameter. +- Priority. +- Fade status. +- Sidst ændret. +- Mini-graf for valgte kanaler. + +Vis også decoded fixture view, eksempelvis: + +```text +Fixture: Moving Head Left +Dimmer: 255 +Color: Blue +Pan: 32768 / 50 % +Tilt: 22000 / 34 % +Gobo: Stars +Shutter: Open +``` + +## USB/OLA + +Vis: + +- USB vendor/product ID, når tilgængeligt. +- Device path. +- OLA plugin. +- OLA device ID. +- Port. +- RX/TX/RDM capabilities. +- Connected since. +- Reconnect count. +- Seneste OLA-fejl. +- Seneste succesfulde frame. + +## Fysisk verifikation + +UI skal have en forklaring: + +> TuxDMX kan se den frame, som er beregnet og afleveret til OLA. Det beviser ikke alene, at det elektriske DMX-signal når lampen. Fysisk verifikation kræver understøttet DMX-input, RDM, loopback eller ekstern analyzer. + +Hvis adapteren understøtter RX eller RDM, må der senere tilføjes: + +- DMX input monitor. +- RDM discovery. +- Device responses. +- Loopback test. + +## Logning + +Kategorier: + +- SYSTEM. +- AUTH. +- OLA. +- USB. +- DMX. +- FIXTURE. +- PATCH. +- SCENE. +- EFFECT. +- BPM. +- MIXITUP. +- API. +- BACKUP. + +Niveauer: + +- DEBUG. +- INFO. +- WARNING. +- ERROR. +- CRITICAL. + +UI skal kunne: + +- Filtrere. +- Søge. +- Downloade diagnostikbundle. +- Vise seneste 100/1000 linjer. +- Redigere retention. + +Standard retention: + +- Detaljeret telemetri: 7 dage. +- Aggregeret telemetri: 30 dage. +- Eventlog: 90 dage. +- Auditlog: 180 dage. + +Gør værdierne konfigurerbare. + +--- + +# 20. Database + +Brug SQLite med WAL mode. + +Tabeller bør mindst dække: + +- users +- sessions +- api_tokens +- audit_log +- settings +- fixture_sources +- fixture_definitions +- fixture_modes +- fixture_channels +- fixture_capabilities +- fixture_instances +- fixture_groups +- fixture_group_members +- universes +- ola_bindings +- scenes +- scene_layers +- scene_values +- effects +- effect_parameters +- chasers +- chaser_steps +- trigger_mappings +- trigger_events +- trigger_queue +- bpm_settings +- telemetry_samples +- system_events +- backups +- schema_migrations + +Gem ikke telemetri ukontrolleret i fuld opløsning for evigt. Implementér pruning og aggregering. + +--- + +# 21. Backup og restore + +Backup skal indeholde: + +- Database. +- Konfiguration. +- Importerede OFL-filer. +- Custom fixtures. +- Scener. +- Effekter. +- MixItUp mappings. +- Brugere, men aldrig plaintext passwords. +- Version og manifest. +- Checksums. + +Funktioner: + +- Manuel backup. +- Automatisk daglig backup. +- Retention. +- Download gennem UI. +- Upload og restore. +- Pre-restore backup. +- Valider backup før restore. +- Vis hvilke versioner backupen kommer fra. +- Migration ved ældre schema. +- Restore må kræve administratorpassword. + +--- + +# 22. Systemservice og autostart + +Opret systemd units: + +```text +olad.service +tuxdmx.service +tuxdmx-engine.service +tuxdmx-bpm.service +``` + +Brug kun de services, arkitekturen reelt kræver. + +Krav: + +- `After=network-online.target` +- OLA skal være startet før DMX-engine. +- `Restart=on-failure` +- Fornuftig restart delay. +- Dedicated Linux user: `tuxdmx` +- Mindst mulige rettigheder. +- Medlemskab af nødvendige grupper: + - dialout + - plugdev + - audio +- Skrivbare data under `/var/lib/tuxdmx` +- Konfiguration under `/etc/tuxdmx` +- Logs gennem journald samt applikationslog. +- Applikation under `/opt/tuxdmx` +- Ingen drift som root, medmindre en helt konkret hardwarefunktion kræver det. + +## Safe shutdown + +Ved normal service-stop: + +1. Stop nye triggers. +2. Stop midlertidige effekter. +3. Fade til safe scene eller blackout efter indstilling. +4. Send flere sikre frames. +5. Stop DMX-engine. +6. Stop applikation. + +--- + +# 23. Installationsscript + +Opret: + +```text +scripts/install-pi.sh +scripts/update-pi.sh +scripts/uninstall-pi.sh +scripts/pi-smoke-test.sh +scripts/collect-diagnostics.sh +``` + +## `install-pi.sh` + +Skal: + +- Kontrollere OS og arkitektur. +- Kontrollere internet. +- Installere nødvendige apt-pakker. +- Installere eller kontrollere OLA. +- Oprette systembruger og mapper. +- Oprette Python virtualenv. +- Installere låste Python dependencies. +- Kopiere frontend build. +- Installere systemd units. +- Oprette config. +- Generere secret. +- Aktivere services. +- Vise IP og Web UI URL. +- Ikke overskrive eksisterende installation uden backup og bekræftelse. +- Have `--non-interactive` til automatiseret installation. +- Have tydelige fejlbeskeder. + +## `update-pi.sh` + +- Stop nye triggers. +- Backup. +- Download/kopiér ny version. +- Installer dependencies. +- Kør Alembic migration. +- Byg/installer. +- Start services. +- Kør health check. +- Rollback ved fejl. + +## `pi-smoke-test.sh` + +Skal kontrollere: + +- OS/arkitektur. +- OLA package/version. +- `olad` status. +- TuxDMX services. +- API health. +- Database. +- WebSocket. +- OLA forbindelse. +- USB devices. +- OLA device/port. +- Permission groups. +- Audio devices. +- JACK/ALSA status. +- Temperatur/disk. +- Send testframe i simulator. +- Valgfri hardwarekanaltest med eksplicit brugerbekræftelse. +- Returnere non-zero exit code ved fejl. +- Skrive en klar rapport. + +## `collect-diagnostics.sh` + +Skal generere en ZIP/TAR med: + +- Service status. +- Journaluddrag. +- TuxDMX logs. +- OLA status/config. +- `lsusb`. +- Relevant `dmesg`, filtreret. +- OS info. +- Python/package versions. +- Netværksstatus. +- Audio devices. +- Redigeret config uden secrets. +- Database integrity check. +- Ingen API tokens eller password hashes i rapporten. + +--- + +# 24. Simulator og udvikling uden Raspberry Pi + +Dette er obligatorisk, fordi Codex ikke kan teste den fysiske Pi. + +## Simulator backend + +`SimulatorDmxBackend` skal: + +- Emulere universe med 512 kanaler. +- Acceptere frames på samme måde som OLA-backenden. +- Simulere frame latency. +- Simulere fejl: + - USB disconnected. + - OLA unavailable. + - Send timeout. + - Dropped frame. + - Slow backend. +- Vise output i UI. +- Gemme framehistorik i memory. +- Understøtte automatiske assertions. + +## Fixture simulator + +Vis fixturekort visuelt: + +- PAR: farve og lysstyrke. +- Moving head: pan/tilt position, beam color, dimmer, gobo text. +- Strobe: vis sikker animation, ikke aggressiv fuldskærmsblink. +- Matrix: pixelgrid. + +Simulatoren behøver ikke være en fuld 3D-visualizer. + +## Fake OLA + +Implementér et mock interface, ikke en kopi af OLA. + +Tests skal kunne verificere: + +- Frames har korrekt længde. +- Værdier er 0–255. +- Correct universe. +- Reconnect. +- Error handling. +- Frame rate. +- Merge. +- Fade. + +## Recorded OFL responses + +Læg små, lovlige testfixtures i `test-data`: + +- RGB 3 channel. +- RGBW med dimmer og strobe. +- Moving head med 16-bit pan/tilt. +- Fixture med gobo/color wheel. +- Fixture med switching channel. +- Matrix/pixel fixture. +- Invalid fixture. + +Brug snapshots eller reducerede testdata, og dokumentér kilden/licensen. + +--- + +# 25. Tests + +## Backend unit tests + +- OFL parsing og normalisering. +- Schema/version detection. +- 8-bit og 16-bit. +- Fine channels. +- Capability ranges. +- Switching channels. +- Patch conflict. +- Address boundary 512. +- HTP. +- LTP. +- Scene merge. +- Fade interpolation. +- Effect stack. +- Restore previous state. +- Blackout priority. +- Strobe limits. +- Trigger cooldown. +- Idempotency. +- Token auth. +- Telemetry aggregation. +- Backup/restore. +- Database migrations. +- BPM smoothing. +- Half/double BPM. +- Synthetic click tracks. + +## Integration tests + +- FastAPI + SQLite. +- WebSocket. +- Mock engine. +- Fake OLA backend. +- OFL HTTP mock. +- MixItUp trigger request. +- Queue processing. +- Service degraded mode. + +## Frontend tests + +- Login. +- First-run wizard. +- Fixture search. +- Import. +- Patch. +- Scene creation. +- Effect creation. +- MixItUp mapping. +- Blackout. +- Telemetry. +- Responsive layout. +- Accessibility basics. + +Brug Playwright eller tilsvarende til centrale flows. + +## CI + +CI skal køre: + +- Formatting. +- Lint. +- Type check. +- Unit tests. +- Integration tests. +- Frontend tests. +- Production build. +- Dependency audit. +- Arm64 build/check gennem QEMU eller cross-build, hvor det er praktisk. + +CI må ikke markere fysisk DMX-hardware som testet. + +--- + +# 26. Sikkerhedsregler for lys + +## Strobe + +Standard: + +- Max varighed: 3 sekunder. +- Absolut max: 10 sekunder. +- Cooldown: 30 sekunder. +- Twitch må ikke ændre de globale maxgrænser. +- UI skal advare om fotosensitivitet. +- Administrator kan sænke grænserne. +- Strobe skal stoppe ved blackout, enginefejl eller trigger cancellation. + +## Master limit + +- Global intensitetsgrænse. +- Twitch-specifik intensitetsgrænse. +- Testmode-grænse. +- Per fixture/group limit. + +## Blackout + +- Fast knap i alle relevante UI-visninger. +- Tastaturgenvej. +- API endpoint. +- Højeste prioritet. +- Ryd eller pause triggerkø efter konfiguration. +- Kræv bekræftelse for release, hvis aktiveret som emergency blackout. + +## Maintenance/reset + +- Fixture reset, lamp on/off og maintenance-funktioner skal være beskyttet. +- Ikke tilgængelig for Twitch. +- Kræv administrator eller særskilt confirmation. + +--- + +# 27. UI-sider + +## 1. Login + +- Mørkt. +- TuxDMX logo/tekst. +- Ingen standardcredentials. + +## 2. Dashboard + +- Systemstatus. +- DMX. +- Scene. +- BPM. +- Twitch. +- Telemetri. +- Quick actions. + +## 3. Live Desk + +- Master. +- Blackout. +- Fixture- og gruppekontrol. +- Scene/effect launchpad. + +## 4. Fixtures + +- Lokale fixtures. +- OFL-søgning. +- Import. +- Custom fixture editor. +- Update status. + +## 5. Patch + +- Universe 1–512. +- Fixture placement. +- Conflict detection. +- OLA output. + +## 6. Groups + +- Fixturegrupper. +- Drag-and-drop. +- Tags. + +## 7. Scenes + +- Liste. +- Editor. +- Preview. +- Launch. + +## 8. Effects + +- Presets. +- Effect builder. +- Chaser timeline. +- BPM sync. + +## 9. BPM + +- Manual. +- Tap. +- Audio. +- Confidence. +- Input devices. + +## 10. MixItUp + +- Tokens. +- Mappings. +- Generator. +- Test. +- Eventlog. +- Queue. + +## 11. DMX Monitor + +- 512 grid. +- Decoded fixtures. +- Sources og priorities. + +## 12. Telemetry + +- Historik. +- Grafer. +- OLA/USB. +- System. + +## 13. Logs + +- Filter. +- Search. +- Download diagnostics. + +## 14. Backup + +- Create. +- Download. +- Restore. +- Retention. + +## 15. Settings + +- System. +- DMX. +- Safety. +- BPM. +- Telemetry. +- Language. +- Users. +- API. +- Update. + +--- + +# 28. Designkrav + +- Dark-only i første release. +- Undgå hvid flash ved sideindlæsning. +- Store touchvenlige knapper. +- Blackout skal være tydelig, men ikke kunne aktiveres ved et let fejltap uden valgfri bekræftelse. +- Brug status: + - Grøn: normal. + - Gul: degraded/warning. + - Rød: fejl/blackout. + - Blå/cyan: aktiv/live. + - Pink: Twitch/event. +- Ingen rå JSON-editor i normal UI. +- Tooltips med fixturecapability. +- Tastaturgenveje må kunne slås fra. +- Browser refresh må ikke ændre DMX-state. +- UI skal kunne miste forbindelsen uden at lyset stopper. + +--- + +# 29. Performancekrav + +Mål for Raspberry Pi 4/5: + +- Web UI reagerer normalt under 250 ms på LAN. +- Triggerendpoint svarer normalt under 200 ms. +- DMX-engine holder den valgte frame rate med begrænset jitter. +- WebSocket telemetri må ikke blokere DMX output. +- Database pruning skal køre uden mærkbar påvirkning. +- Fixture søgning skal bruge cache og debounce. +- Ingen memory leak ved 24 timers drift. +- Systemet skal kunne køre mindst 72 timer i simulator soak test. + +--- + +# 30. Fejltilstande, der skal håndteres + +- Ingen internet ved boot. +- OFL utilgængelig. +- USB-DMX ikke tilsluttet. +- USB-DMX trækkes ud under drift. +- OLA stopper. +- OLA starter langsomt. +- Audio device mangler. +- Audio device ændrer navn. +- JACK utilgængelig. +- Dårligt eller stille audiosignal. +- Database locked. +- Disk næsten fuld. +- Pi overtemperatur. +- Netværk forsvinder. +- Browser disconnect. +- Dublet Twitch-event. +- Trigger spam. +- Ugyldig OFL fixture. +- Fixture update ændrer mode. +- Scene refererer til slettet fixture. +- Backup fra ældre schema. +- Strømafbrydelse under write. +- Service restart midt i en effekt. + +Systemet skal vise forklarende fejl og foreslå næste skridt. + +--- + +# 31. Dokumentation + +## `README.md` + +- Hvad TuxDMX er. +- Arkitektur. +- Screenshots eller mock screenshots. +- Hurtig simulatorstart. +- Links til øvrig dokumentation. +- Ingen påstand om hardwaretest. + +## `INSTALL-PI.md` + +- Hardwarekrav. +- Raspberry Pi OS Lite 64-bit. +- USB-DMX. +- USB audio input. +- Installation. +- OLA. +- Firewall. +- Første login. +- Autostart. +- Update. +- Uninstall. + +## `HARDWARE-VALIDATION.md` + +En præcis trin-for-trin plan: + +1. Kør diagnostics. +2. Kontrollér OLA. +3. Tilslut USB-DMX. +4. Identificér device. +5. Patch port. +6. Tilslut én simpel lampe. +7. Sæt lampens DMX address. +8. Test dimmer. +9. Test RGB. +10. Test blackout. +11. Test reconnect. +12. Test scene. +13. Test MixItUp. +14. Test BPM. +15. Test reboot/autostart. +16. Kør 2 timers soak test. +17. Gem diagnostic bundle. + +Hvert trin skal have forventet resultat og fejlsøgning. + +## `TROUBLESHOOTING.md` + +- OLA kan ikke se USB. +- Permission denied. +- `/dev/ttyUSB*`. +- FTDI/Open DMX vs Pro device. +- Forkert plugin. +- Ingen DMX. +- Flimren. +- Service restart. +- Web UI virker ikke. +- MixItUp timeout. +- BPM finder forkert tempo. +- Audio xruns. +- Høj CPU. +- Databasefejl. + +## `MIXITUP.md` + +- Opret Web Request Action. +- Method. +- URL. +- Headers. +- JSON. +- Test. +- Special identifiers. +- Fejlsøgning. +- Sikkerhed. + +## `OFL.md` + +- Search. +- Import. +- Cache. +- Schema. +- Unsupported capabilities. +- Updating fixtures. + +## `SECURITY.md` + +- LAN deployment. +- Tokens. +- Passwords. +- Reverse proxy. +- HTTPS. +- Secrets. +- Backup. +- Reporting. + +--- + +# 32. Første releases omfang + +## Release 1.0 skal indeholde + +- Raspberry Pi headless installation. +- OLA backend. +- Simulator backend. +- Ét universe. +- USB-DMX output gennem OLA. +- OFL search/import. +- Custom fixture editor. +- Patch. +- Groups. +- Live Desk. +- Scenes. +- Chasers. +- De beskrevne grundeffekter. +- HTP/LTP merge. +- Blackout. +- Strobe safety. +- Manual BPM. +- Tap BPM. +- Audio BPM. +- MixItUp. +- REST API. +- WebSocket. +- Telemetry. +- Logs. +- Backup/restore. +- Users/roles. +- Autostart. +- Diagnostics. +- Tests. +- Dokumentation. + +## Må gerne udsættes til senere + +- Fuld 3D visualizer. +- Flere universer i UI. +- RDM configuration. +- DMX input. +- MIDI Clock. +- Ableton Link. +- Native Stream Deck plugin. +- Home Assistant integration. +- Companion module. +- Cloud access. +- Multi-node DMX. + +Arkitekturen må gerne forberede disse uden at gøre 1.0 unødvendigt kompliceret. + +--- + +# 33. Implementeringsrækkefølge + +Arbejd i disse faser og lav logiske git commits. + +## Fase 1 – Fundament + +- Repository. +- Backend. +- Frontend. +- Database. +- Login. +- Simulator. +- Health. +- Dark UI. +- CI. + +## Fase 2 – Fixture og patch + +- OFL client. +- Normalisering. +- Local cache. +- Fixture UI. +- Custom fixture. +- Patch. +- Conflict validation. + +## Fase 3 – DMX-engine + +- Frame model. +- Merge. +- Fades. +- Scene stack. +- Simulator output. +- OLA adapter. +- Reconnect. +- Telemetry. + +## Fase 4 – Scenes og effects + +- Scene editor. +- Launchpad. +- Chasers. +- Built-in effects. +- Safety. +- Restore state. + +## Fase 5 – BPM + +- Manual. +- Tap. +- Audio devices. +- JACK/ALSA. +- aubio. +- Beat event bus. +- BPM-sync effects. + +## Fase 6 – MixItUp + +- Tokens. +- Mapping UI. +- Trigger endpoints. +- Queue. +- Cooldowns. +- Presets. +- Test guide. + +## Fase 7 – Drift + +- systemd. +- Installer. +- Update. +- Backup. +- Diagnostics. +- Pi smoke test. +- Documentation. + +## Fase 8 – Hardening + +- Tests. +- Soak. +- Security review. +- Performance. +- Error states. +- Release package. + +--- + +# 34. Definition of Done + +Projektet er først færdigt, når: + +1. Det kan startes lokalt i simulator mode med én kommando. +2. Simulatoren viser alle 512 kanaler. +3. En fixture kan søges frem fra OFL og importeres. +4. En fixture kan patches uden adressekonflikt. +5. En scene kan oprettes gennem UI og aktiveres. +6. En chaser kan oprettes gennem UI. +7. En effekt kan afspilles og returnere til base-scenen. +8. Blackout overstyrer alt. +9. Strobe safety virker og er dækket af tests. +10. MixItUp-testendpoint returnerer hurtigt og trigger en effekt. +11. Manuel og tap BPM virker. +12. Audio BPM kan testes med syntetiske click tracks. +13. Telemetri viser current/target/source for DMX-kanaler. +14. OLA- og USB-fejl vises tydeligt. +15. Backup og restore virker i automatiske tests. +16. Autostart og systemd-filer er leveret. +17. `pi-smoke-test.sh` er leveret. +18. Hardwarevalideringsguiden er komplet. +19. Alle tests kører i CI. +20. Dokumentationen siger tydeligt, hvad der ikke er fysisk testet. +21. Ingen normal funktion kræver, at brugeren skriver kode i Web UI. +22. Der er ingen MIT-licens tilføjet automatisk. + +--- + +# 35. Acceptance tests på den rigtige Raspberry Pi + +Disse tests kan Codex ikke udføre. De skal leveres som en checkliste til Thomas. + +## Test A – Boot + +- Genstart Pi. +- OLA og TuxDMX starter automatisk. +- Web UI svarer. +- Safe scene er aktiv. + +## Test B – USB + +- Tilslut USB-DMX. +- Device vises i TuxDMX. +- Vælg port. +- Send testkanal. +- Lampen reagerer. + +## Test C – Reconnect + +- Træk USB-DMX ud. +- UI går til degraded/error. +- Tilslut igen. +- Systemet reconnecter. +- Ingen tilfældig flash. + +## Test D – Fixture + +- Importér den konkrete lampe fra OFL. +- Vælg korrekt mode. +- Patch korrekt adresse. +- Test alle relevante parametre. + +## Test E – Scene/effect + +- Opret base scene. +- Trigger sub-effect. +- Trigger raid oveni. +- Effektprioritet virker. +- Systemet vender tilbage til base scene. + +## Test F – MixItUp + +- Opret Web Request Action. +- Kald testtrigger. +- Se event i log. +- Se effekt. +- Bekræft hurtig HTTP response. +- Test cooldown og duplicate event. + +## Test G – BPM + +- Tilslut USB audio input. +- Vælg input. +- Afspil musik/click track. +- BPM og confidence vises. +- Beat-effekt følger rytmen. +- Test half/double. + +## Test H – Stabilitet + +- Kør minimum 2 timer med: + - Web UI åbent. + - BPM. + - Scener. + - Periodiske triggers. +- Kontrollér dropped frames, temperatur, RAM og logs. + +--- + +# 36. Kodestandard + +- Klar modulopdeling. +- Ingen gigantiske filer. +- Ingen skjulte globale states. +- Type annotations. +- Docstrings på public interfaces. +- Pydantic models ved API boundaries. +- Database migrations. +- Dependency lock. +- Central error handling. +- Structured logs. +- Unit-testbare services. +- Hardware interfaces skal kunne mockes. +- Secrets må ikke committes. +- `.env.example` uden hemmeligheder. +- Ingen default admin password. +- Ingen TODO-stubs i releasekritiske flows. +- Ingen fake success responses. +- Ingen swallow af exceptions uden logning. +- Ingen hårdkodet Raspberry Pi IP. +- Ingen hårdkodet USB device path. +- Ingen hårdkodede fixture channels. + +--- + +# 37. Vigtige designbeslutninger + +1. **OLA er hardwarebackend, ikke hele lyspulten.** + TuxDMX ejer scener, effects, UI, fixturelogik og Twitch-integration. + +2. **OFL normaliseres.** + Runtime må ikke afhænge direkte af en bestemt OFL schema-version. + +3. **Webrequests må ikke drive DMX synkront.** + De skal enqueue commands og returnere straks. + +4. **UI og DMX timing er adskilt.** + En langsom browser eller API-request må ikke skabe DMX-flimren. + +5. **Simulator er en førsteklasses backend.** + Ikke en eftertanke. + +6. **Telemetri er ærlig.** + Vis hvad software og OLA gør, men påstå ikke fysisk signalverifikation uden måling. + +7. **Safety har højere prioritet end Twitch.** + Blackout, master limit og strobe-limit kan aldrig omgås gennem integrationer. + +8. **Ingen kode kræves i UI.** + Avanceret funktionalitet bygges med forms og editors, ikke scripts. + +--- + +# 38. Første handling + +Start med at: + +1. Oprette repositorystrukturen. +2. Skrive `ARCHITECTURE.md` med konkrete valg. +3. Implementere simulatorbackend og DMX frame model. +4. Implementere minimal FastAPI health/status. +5. Implementere mørkt React-dashboard. +6. Oprette CI. +7. Oprette tests for 512-kanals frame, HTP/LTP og blackout. +8. Dokumentere hvordan simulatoren startes. + +Fortsæt derefter gennem implementeringsfaserne, indtil hele Release 1.0 er leveret. + +Når et valg er uklart, vælg den løsning der: + +- er lettest at vedligeholde, +- kører stabilt på Raspberry Pi, +- kan testes uden hardware, +- ikke kræver kode i UI, +- og ikke låser systemet til én bestemt USB-DMX-adapter. diff --git a/backend/alembic.ini b/backend/alembic.ini new file mode 100644 index 0000000..2ac7bf4 --- /dev/null +++ b/backend/alembic.ini @@ -0,0 +1,35 @@ +[alembic] +script_location = %(here)s/alembic +sqlalchemy.url = sqlite+aiosqlite:///./data/tuxdmx.db + +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = console +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s diff --git a/backend/alembic/env.py b/backend/alembic/env.py new file mode 100644 index 0000000..24a4956 --- /dev/null +++ b/backend/alembic/env.py @@ -0,0 +1,55 @@ +from __future__ import annotations + +import sys +from logging.config import fileConfig +from pathlib import Path + +from alembic import context +from sqlalchemy import engine_from_config, pool + +BACKEND_DIR = Path(__file__).resolve().parents[1] +if str(BACKEND_DIR) not in sys.path: + sys.path.insert(0, str(BACKEND_DIR)) + +from app.core.config import get_alembic_database_url, get_settings # noqa: E402 +from app.models import entities # noqa: F401, E402 +from app.models.base import Base # noqa: E402 + +config = context.config +settings = get_settings() +alembic_url = get_alembic_database_url(settings.database_url) +config.set_main_option("sqlalchemy.url", alembic_url) + +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +target_metadata = Base.metadata + + +def run_migrations_offline() -> None: + context.configure( + url=alembic_url, + target_metadata=target_metadata, + literal_binds=True, + compare_type=True, + ) + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online() -> None: + connectable = engine_from_config( + config.get_section(config.config_ini_section, {}), + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + with connectable.connect() as connection: + context.configure(connection=connection, target_metadata=target_metadata, compare_type=True) + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/backend/alembic/versions/20260712_0001_initial.py b/backend/alembic/versions/20260712_0001_initial.py new file mode 100644 index 0000000..cd07344 --- /dev/null +++ b/backend/alembic/versions/20260712_0001_initial.py @@ -0,0 +1,88 @@ +"""Initial TuxDMX schema.""" + +from __future__ import annotations + +import sqlalchemy as sa +from alembic import op + +revision = "20260712_0001" +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + "users", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("username", sa.String(length=100), nullable=False), + sa.Column("password_hash", sa.String(length=255), nullable=False), + sa.Column("role", sa.String(length=30), nullable=False), + sa.Column("disabled", sa.Boolean(), nullable=False, server_default=sa.false()), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_users_username", "users", ["username"], unique=True) + + op.create_table( + "settings", + sa.Column("key", sa.String(length=120), primary_key=True), + sa.Column("value", sa.JSON(), nullable=False), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), + ) + + op.create_table( + "fixture_definitions", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("slug", sa.String(length=160), nullable=False), + sa.Column("manufacturer", sa.String(length=120), nullable=False), + sa.Column("model", sa.String(length=160), nullable=False), + sa.Column("short_name", sa.String(length=120), nullable=True), + sa.Column("categories", sa.JSON(), nullable=False), + sa.Column("normalized_data", sa.JSON(), nullable=False), + sa.Column("source_id", sa.Integer(), nullable=True), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_fixture_definitions_slug", "fixture_definitions", ["slug"], unique=True) + + op.create_table( + "scenes", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("name", sa.String(length=160), nullable=False), + sa.Column("slug", sa.String(length=160), nullable=False), + sa.Column("color", sa.String(length=20), nullable=False), + sa.Column("icon", sa.String(length=40), nullable=True), + sa.Column("priority", sa.Integer(), nullable=False), + sa.Column("fade_in_ms", sa.Integer(), nullable=False), + sa.Column("fade_out_ms", sa.Integer(), nullable=False), + sa.Column("hold_ms", sa.Integer(), nullable=False), + sa.Column("master_limit", sa.Integer(), nullable=False), + sa.Column("values", sa.JSON(), nullable=False), + sa.Column("tags", sa.JSON(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_scenes_slug", "scenes", ["slug"], unique=True) + + op.create_table( + "effects", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("name", sa.String(length=160), nullable=False), + sa.Column("slug", sa.String(length=160), nullable=False), + sa.Column("effect_type", sa.String(length=80), nullable=False), + sa.Column("parameters", sa.JSON(), nullable=False), + sa.Column("priority", sa.Integer(), nullable=False), + sa.Column("cooldown_ms", sa.Integer(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_effects_slug", "effects", ["slug"], unique=True) + + +def downgrade() -> None: + op.drop_index("ix_effects_slug", table_name="effects") + op.drop_table("effects") + op.drop_index("ix_scenes_slug", table_name="scenes") + op.drop_table("scenes") + op.drop_index("ix_fixture_definitions_slug", table_name="fixture_definitions") + op.drop_table("fixture_definitions") + op.drop_table("settings") + op.drop_index("ix_users_username", table_name="users") + op.drop_table("users") diff --git a/backend/alembic/versions/20260719_0002_fixture_sources_and_patch.py b/backend/alembic/versions/20260719_0002_fixture_sources_and_patch.py new file mode 100644 index 0000000..d919ee8 --- /dev/null +++ b/backend/alembic/versions/20260719_0002_fixture_sources_and_patch.py @@ -0,0 +1,68 @@ +"""Add persisted fixture sources and patch instances.""" + +from __future__ import annotations + +import sqlalchemy as sa +from alembic import op + +revision = "20260719_0002" +down_revision = "20260712_0001" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + tables = set(inspector.get_table_names()) + + if "fixture_sources" not in tables: + op.create_table( + "fixture_sources", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("manufacturer_key", sa.String(length=100), nullable=False), + sa.Column("fixture_key", sa.String(length=150), nullable=False), + sa.Column("schema_ref", sa.String(length=255), nullable=False), + sa.Column("source_url", sa.String(length=255), nullable=False), + sa.Column("payload", sa.JSON(), nullable=False), + sa.Column("payload_hash", sa.String(length=64), nullable=False), + sa.Column("imported_at", sa.DateTime(timezone=True), nullable=False), + ) + + if "fixture_instances" not in tables: + op.create_table( + "fixture_instances", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("universe", sa.Integer(), nullable=False, server_default="1"), + sa.Column("name", sa.String(length=160), nullable=False), + sa.Column("definition_id", sa.Integer(), nullable=False), + sa.Column("mode_key", sa.String(length=120), nullable=False), + sa.Column("start_address", sa.Integer(), nullable=False), + sa.Column("channel_count", sa.Integer(), nullable=False), + sa.Column("enabled", sa.Boolean(), nullable=False, server_default=sa.true()), + sa.Column("group_names", sa.JSON(), nullable=False), + sa.Column("position", sa.JSON(), nullable=False), + sa.Column("tags", sa.JSON(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_fixture_instances_definition_id", "fixture_instances", ["definition_id"], unique=False) + else: + columns = {column["name"] for column in inspector.get_columns("fixture_instances")} + if "universe" not in columns: + with op.batch_alter_table("fixture_instances") as batch_op: + batch_op.add_column(sa.Column("universe", sa.Integer(), nullable=False, server_default="1")) + + +def downgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + tables = set(inspector.get_table_names()) + + if "fixture_instances" in tables: + columns = {column["name"] for column in inspector.get_columns("fixture_instances")} + if "universe" in columns: + with op.batch_alter_table("fixture_instances") as batch_op: + batch_op.drop_column("universe") + + if "fixture_sources" in tables: + op.drop_table("fixture_sources") diff --git a/backend/alembic/versions/20260722_0003_scene_targets.py b/backend/alembic/versions/20260722_0003_scene_targets.py new file mode 100644 index 0000000..1101cf5 --- /dev/null +++ b/backend/alembic/versions/20260722_0003_scene_targets.py @@ -0,0 +1,44 @@ +"""Add persisted scene targets.""" + +from __future__ import annotations + +import sqlalchemy as sa +from alembic import op + +revision = "20260722_0003" +down_revision = "20260719_0002" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + tables = set(inspector.get_table_names()) + if "scenes" not in tables: + return + + columns = {column["name"] for column in inspector.get_columns("scenes")} + if "targets" not in columns: + with op.batch_alter_table("scenes") as batch_op: + batch_op.add_column( + sa.Column( + "targets", + sa.JSON(), + nullable=False, + server_default=sa.text("'[]'"), + ) + ) + + +def downgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + tables = set(inspector.get_table_names()) + if "scenes" not in tables: + return + + columns = {column["name"] for column in inspector.get_columns("scenes")} + if "targets" in columns: + with op.batch_alter_table("scenes") as batch_op: + batch_op.drop_column("targets") diff --git a/backend/alembic/versions/20260724_0004_midi_bridge.py b/backend/alembic/versions/20260724_0004_midi_bridge.py new file mode 100644 index 0000000..2ea5474 --- /dev/null +++ b/backend/alembic/versions/20260724_0004_midi_bridge.py @@ -0,0 +1,87 @@ +"""Add MIDI bridge, token and mapping tables.""" + +from __future__ import annotations + +import sqlalchemy as sa +from alembic import op + +revision = "20260724_0004" +down_revision = "20260722_0003" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + tables = set(inspector.get_table_names()) + + if "midi_bridges" not in tables: + op.create_table( + "midi_bridges", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("bridge_id", sa.String(length=160), nullable=False), + sa.Column("device_name", sa.String(length=255), nullable=True), + sa.Column("ip_address", sa.String(length=64), nullable=True), + sa.Column("protocol_version", sa.Integer(), nullable=False, server_default="1"), + sa.Column("online", sa.Boolean(), nullable=False, server_default=sa.false()), + sa.Column("last_heartbeat_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("last_event_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("last_error", sa.Text(), nullable=True), + sa.Column("last_event", sa.JSON(), nullable=False, server_default=sa.text("'{}'")), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_midi_bridges_bridge_id", "midi_bridges", ["bridge_id"], unique=True) + + if "midi_bridge_tokens" not in tables: + op.create_table( + "midi_bridge_tokens", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("label", sa.String(length=120), nullable=False), + sa.Column("token_hash", sa.String(length=64), nullable=False), + sa.Column("bridge_id", sa.String(length=160), nullable=True), + sa.Column("scopes", sa.JSON(), nullable=False, server_default=sa.text("'[]'")), + sa.Column("last_used_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("revoked_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + ) + op.create_index("ix_midi_bridge_tokens_token_hash", "midi_bridge_tokens", ["token_hash"], unique=True) + + if "midi_mappings" not in tables: + op.create_table( + "midi_mappings", + sa.Column("id", sa.Integer(), primary_key=True), + sa.Column("name", sa.String(length=160), nullable=False), + sa.Column("enabled", sa.Boolean(), nullable=False, server_default=sa.true()), + sa.Column("bridge_id", sa.String(length=160), nullable=True), + sa.Column("device_name", sa.String(length=255), nullable=True), + sa.Column("message_type", sa.String(length=40), nullable=False), + sa.Column("channel", sa.Integer(), nullable=True), + sa.Column("number", sa.Integer(), nullable=False), + sa.Column("action", sa.String(length=60), nullable=False), + sa.Column("target_type", sa.String(length=40), nullable=False), + sa.Column("target_id", sa.String(length=160), nullable=True), + sa.Column("mode", sa.String(length=40), nullable=False, server_default="trigger"), + sa.Column("minimum_value", sa.Integer(), nullable=False, server_default="0"), + sa.Column("maximum_value", sa.Integer(), nullable=False, server_default="127"), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), + ) + + +def downgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + tables = set(inspector.get_table_names()) + + if "midi_mappings" in tables: + op.drop_table("midi_mappings") + + if "midi_bridge_tokens" in tables: + op.drop_index("ix_midi_bridge_tokens_token_hash", table_name="midi_bridge_tokens") + op.drop_table("midi_bridge_tokens") + + if "midi_bridges" in tables: + op.drop_index("ix_midi_bridges_bridge_id", table_name="midi_bridges") + op.drop_table("midi_bridges") diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 0000000..11715ea --- /dev/null +++ b/backend/app/__init__.py @@ -0,0 +1,2 @@ +"""TuxDMX backend package.""" + diff --git a/backend/app/api/__init__.py b/backend/app/api/__init__.py new file mode 100644 index 0000000..e95e744 --- /dev/null +++ b/backend/app/api/__init__.py @@ -0,0 +1,2 @@ +"""API modules.""" + diff --git a/backend/app/api/router.py b/backend/app/api/router.py new file mode 100644 index 0000000..fe82c54 --- /dev/null +++ b/backend/app/api/router.py @@ -0,0 +1,7 @@ +from fastapi import APIRouter + +from app.api.routes import router + +api_router = APIRouter() +api_router.include_router(router) + diff --git a/backend/app/api/routes.py b/backend/app/api/routes.py new file mode 100644 index 0000000..35c0eca --- /dev/null +++ b/backend/app/api/routes.py @@ -0,0 +1,702 @@ +from __future__ import annotations + +from fastapi import APIRouter, HTTPException, Request, Response, status + +from app.core.config import get_settings +from app.core.dependencies import app_state +from app.models.schemas import ( + BpmAudioConfigPayload, + BpmAudioStartPayload, + ChannelValue, + DmxOutputConfigPayload, + EffectPayload, + HealthResponse, + HomeAssistantConfigPayload, + HomeAssistantMappingPayload, + MidiBridgeEventPayload, + MidiBridgeHeartbeatPayload, + MidiBridgeTokenCreatePayload, + MidiLearnStartPayload, + MidiMappingPayload, + MidiTestMappingPayload, + ManualPatchValuesPayload, + PatchPayload, + PatchValidationPayload, + ScenePayload, + TriggerRequest, +) + +router = APIRouter() +settings = get_settings() + + +def _extract_bearer_token(request: Request) -> str | None: + authorization = request.headers.get("Authorization", "") + if not authorization.lower().startswith("bearer "): + return None + return authorization[7:].strip() or None + + +@router.get("/health", response_model=HealthResponse) +async def health() -> HealthResponse: + return HealthResponse( + status="ok", + simulator_enabled=settings.simulator_enabled, + version="1.0.0", + ) + + +@router.get("/system/status") +async def system_status() -> dict[str, object]: + return { + "app": settings.app_name, + "setup_required": False, + "engine": app_state.engine.snapshot(), + "telemetry": app_state.telemetry.snapshot(len(app_state.triggers.queue)), + "bpm": app_state.bpm.snapshot(), + } + + +@router.get("/system/diagnostics") +async def diagnostics() -> dict[str, object]: + return { + "engine": app_state.engine.snapshot(), + "telemetry": app_state.telemetry.snapshot(len(app_state.triggers.queue)), + "trigger_queue": app_state.triggers.snapshot(), + } + + +@router.post("/system/restart-service") +async def restart_service() -> dict[str, object]: + return await app_state.system.restart_service() + + +@router.post("/system/reboot-host") +async def reboot_host() -> dict[str, object]: + return await app_state.system.reboot_host() + + +@router.get("/dmx/status") +async def dmx_status() -> dict[str, object]: + return app_state.engine.snapshot() + + +@router.get("/dmx/devices") +async def dmx_devices() -> dict[str, object]: + status = app_state.engine.backend.get_status() + return { + "devices": [ + { + "name": status.device_name, + "backend": status.backend_name, + "connected": status.connected, + "output_port": status.selected_output_port, + "universe": status.selected_universe, + } + ] + } + + +@router.get("/dmx/config") +async def dmx_config() -> dict[str, object]: + return await app_state.dmx.get_config() + + +@router.put("/dmx/config") +async def dmx_config_save(payload: DmxOutputConfigPayload) -> dict[str, object]: + return await app_state.dmx.save_config(payload.model_dump()) + + +@router.post("/dmx/artnet/discover") +async def dmx_artnet_discover(timeout_s: float = 1.0) -> dict[str, object]: + return await app_state.dmx.discover_artnet(timeout_s) + + +@router.get("/dmx/universes") +async def dmx_universes() -> dict[str, object]: + status = app_state.engine.backend.get_status() + return { + "universes": [ + { + "id": status.selected_universe, + "frame_rate": settings.target_fps, + "output_port": status.selected_output_port, + } + ] + } + + +@router.get("/dmx/frame") +async def dmx_frame(universe: int | None = None) -> dict[str, object]: + selected_universe = universe or app_state.engine.backend.get_status().selected_universe + frame = app_state.engine.get_frame(selected_universe) + return { + "universe": frame.universe, + "values": frame.values, + "sources": frame.source_map, + } + + +@router.post("/dmx/test-channel") +async def dmx_test_channel(channel: int, value: int) -> dict[str, object]: + payload = ScenePayload( + name=f"Test kanal {channel}", + slug=f"test-channel-{channel}", + values=[ChannelValue(channel=channel, value=value, precedence="htp", source="test")], + ) + await app_state.scenes.save(payload) + await app_state.scenes.activate(payload.slug) + return {"status": "queued", "scene": payload} + + +@router.post("/dmx/blackout") +async def dmx_blackout() -> dict[str, str]: + app_state.engine.trigger_blackout() + return {"status": "blackout-active"} + + +@router.post("/dmx/release-blackout") +async def dmx_release_blackout() -> dict[str, str]: + app_state.engine.release_blackout() + return {"status": "blackout-released"} + + +@router.get("/live/mixer") +async def live_mixer() -> dict[str, object]: + return await app_state.live.snapshot() + + +@router.put("/live/mixer/{patch_id}") +async def live_mixer_set(patch_id: int, payload: ManualPatchValuesPayload) -> dict[str, object]: + try: + return await app_state.live.set_patch_values( + patch_id, + {int(channel): int(value) for channel, value in payload.values.items()}, + ) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.delete("/live/mixer/{patch_id}") +async def live_mixer_clear(patch_id: int) -> dict[str, object]: + return await app_state.live.clear_patch(patch_id) + + +@router.put("/live/mixer/home-assistant/{mapping_id}") +async def live_mixer_set_home_assistant(mapping_id: int, payload: ManualPatchValuesPayload) -> dict[str, object]: + try: + return await app_state.live.set_home_assistant_mapping_values( + mapping_id, + {int(channel): int(value) for channel, value in payload.values.items()}, + ) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.delete("/live/mixer/home-assistant/{mapping_id}") +async def live_mixer_clear_home_assistant(mapping_id: int) -> dict[str, object]: + try: + return await app_state.live.clear_home_assistant_mapping(mapping_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.get("/fixtures") +async def list_fixtures() -> dict[str, object]: + return {"items": await app_state.fixtures.list_fixtures()} + + +@router.post("/fixtures/search-ofl") +async def search_ofl(query: str) -> dict[str, object]: + return {"results": await app_state.fixtures.search_ofl(query)} + + +@router.post("/fixtures/import-ofl") +async def import_ofl(manufacturer_key: str, fixture_key: str) -> dict[str, object]: + return await app_state.fixtures.import_ofl(manufacturer_key, fixture_key) + + +@router.post("/fixtures/preview-ofl") +async def preview_ofl(manufacturer_key: str, fixture_key: str) -> dict[str, object]: + return await app_state.fixtures.preview_ofl(manufacturer_key, fixture_key) + + +@router.post("/fixtures/import-file") +async def import_fixture_file(payload: dict[str, object]) -> dict[str, object]: + return await app_state.fixtures.import_payload(payload) + + +@router.post("/fixtures/custom") +async def create_custom_fixture(payload: dict[str, object]) -> dict[str, object]: + return await import_fixture_file(payload) + + +@router.get("/fixtures/{fixture_id}") +async def get_fixture(fixture_id: int) -> dict[str, object]: + try: + return await app_state.fixtures.get_fixture(fixture_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail="Fixture not found") from exc + + +@router.put("/fixtures/{fixture_id}") +async def update_fixture(fixture_id: int, payload: dict[str, object]) -> dict[str, object]: + try: + return await app_state.fixtures.update_fixture(fixture_id, payload) + except LookupError as exc: + raise HTTPException(status_code=404, detail="Fixture not found") from exc + + +@router.delete("/fixtures/{fixture_id}", status_code=status.HTTP_204_NO_CONTENT) +async def delete_fixture(fixture_id: int) -> Response: + try: + await app_state.fixtures.delete_fixture(fixture_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail="Fixture not found") from exc + return Response(status_code=status.HTTP_204_NO_CONTENT) + + +@router.get("/patch") +async def patch_list() -> dict[str, object]: + return {"items": await app_state.patch.list_instances()} + + +@router.post("/patch", status_code=status.HTTP_201_CREATED) +async def patch_create(payload: PatchPayload) -> dict[str, object]: + try: + return await app_state.patch.create_instance(payload) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + except ValueError as exc: + raise HTTPException(status_code=409, detail=str(exc)) from exc + + +@router.put("/patch/{patch_id}") +async def patch_update(patch_id: int, payload: PatchPayload) -> dict[str, object]: + try: + return await app_state.patch.update_instance(patch_id, payload) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + except ValueError as exc: + raise HTTPException(status_code=409, detail=str(exc)) from exc + + +@router.delete("/patch/{patch_id}") +async def patch_delete(patch_id: int) -> dict[str, object]: + try: + return await app_state.patch.delete_instance(patch_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/patch/validate") +async def patch_validate(payload: PatchValidationPayload) -> dict[str, object]: + try: + return await app_state.patch.validate(payload) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.get("/scenes") +async def list_scenes() -> dict[str, object]: + return {"items": await app_state.scenes.list()} + + +@router.post("/scenes") +async def create_scene(payload: ScenePayload) -> dict[str, object]: + try: + return await app_state.scenes.save(payload) + except ValueError as exc: + raise HTTPException(status_code=409, detail=str(exc)) from exc + + +@router.get("/scenes/{scene_id}") +async def get_scene(scene_id: int) -> dict[str, object]: + try: + return await app_state.scenes.get(scene_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.put("/scenes/{scene_id}") +async def update_scene(scene_id: int, payload: ScenePayload) -> dict[str, object]: + try: + return await app_state.scenes.save(payload, scene_id=scene_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + except ValueError as exc: + raise HTTPException(status_code=409, detail=str(exc)) from exc + + +@router.delete("/scenes/{scene_id}") +async def delete_scene(scene_id: int) -> dict[str, object]: + try: + return await app_state.scenes.delete(scene_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/scenes/{scene_slug}/activate") +async def activate_scene(scene_slug: str) -> dict[str, object]: + try: + return await app_state.scenes.activate(scene_slug) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/scenes/{scene_slug}/release") +async def release_scene(scene_slug: str) -> dict[str, str]: + await app_state.scenes.release(scene_slug) + return {"status": "released"} + + +@router.get("/effects") +async def list_effects() -> dict[str, object]: + return {"items": [effect.model_dump() for effect in app_state.effects.list()]} + + +@router.post("/effects") +async def create_effect(payload: EffectPayload) -> dict[str, object]: + return app_state.effects.save(payload).model_dump() + + +@router.put("/effects/{effect_id}") +async def update_effect(effect_id: int, payload: EffectPayload) -> dict[str, object]: + return {"id": effect_id, **app_state.effects.save(payload).model_dump()} + + +@router.delete("/effects/{effect_id}") +async def delete_effect(effect_id: int) -> dict[str, object]: + effects = app_state.effects.list() + if effect_id >= len(effects): + raise HTTPException(status_code=404, detail="Effect not found") + slug = effects[effect_id].slug + app_state.effects.effects.pop(slug, None) + return {"deleted": slug} + + +@router.post("/effects/{effect_slug}/trigger") +async def trigger_effect(effect_slug: str) -> dict[str, object]: + return app_state.effects.trigger(effect_slug).model_dump() + + +@router.post("/effects/{effect_slug}/stop") +async def stop_effect(effect_slug: str) -> dict[str, str]: + app_state.effects.stop(effect_slug) + return {"status": "stopped"} + + +@router.get("/bpm/status") +async def bpm_status() -> dict[str, object]: + return app_state.bpm.snapshot() + + +@router.post("/bpm/manual") +async def bpm_manual(bpm: float) -> dict[str, object]: + return app_state.bpm.set_manual(bpm) + + +@router.post("/bpm/tap") +async def bpm_tap() -> dict[str, object]: + return app_state.bpm.tap() + + +@router.post("/bpm/audio/start") +async def bpm_audio_start(payload: BpmAudioStartPayload) -> dict[str, object]: + try: + return await app_state.bpm.start_audio(payload.device) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/bpm/audio/stop") +async def bpm_audio_stop() -> dict[str, str]: + snapshot = await app_state.bpm.stop_audio() + return {"status": "stopped", "mode": str(snapshot["mode"])} + + +@router.get("/bpm/config") +async def bpm_config() -> dict[str, object]: + return await app_state.bpm.get_config() + + +@router.put("/bpm/config") +async def bpm_config_save(payload: BpmAudioConfigPayload) -> dict[str, object]: + return await app_state.bpm.save_config(payload.preferred_device) + + +@router.post("/bpm/external") +async def bpm_external(bpm: float) -> dict[str, object]: + return app_state.bpm.set_manual(bpm) + + +@router.get("/bpm/devices") +async def bpm_devices() -> dict[str, object]: + return {"devices": await app_state.bpm.list_devices()} + + +@router.get("/integrations/mixitup") +async def list_mixitup_integrations() -> dict[str, object]: + return {"items": []} + + +@router.post("/integrations/mixitup") +async def create_mixitup_integration(payload: dict[str, object]) -> dict[str, object]: + return payload + + +@router.put("/integrations/mixitup/{integration_id}") +async def update_mixitup_integration( + integration_id: int, + payload: dict[str, object], +) -> dict[str, object]: + return { + "id": integration_id, + **payload, + } + + +@router.delete("/integrations/mixitup/{integration_id}") +async def delete_mixitup_integration(integration_id: int) -> dict[str, object]: + return {"deleted": integration_id} + + +@router.post("/integrations/mixitup/{integration_id}/test") +async def test_mixitup_integration(integration_id: int) -> dict[str, object]: + return {"id": integration_id, "status": "accepted", "latency_target_ms": 200} + + +@router.get("/integrations/home-assistant/config") +async def home_assistant_config() -> dict[str, object]: + return await app_state.home_assistant.get_config() + + +@router.put("/integrations/home-assistant/config") +async def save_home_assistant_config(payload: HomeAssistantConfigPayload) -> dict[str, object]: + return await app_state.home_assistant.save_config(payload.model_dump()) + + +@router.post("/integrations/home-assistant/test-connection") +async def test_home_assistant_connection() -> dict[str, object]: + return await app_state.home_assistant.test_connection() + + +@router.get("/integrations/home-assistant/entities") +async def list_home_assistant_entities() -> dict[str, object]: + return await app_state.home_assistant.list_entities() + + +@router.get("/integrations/home-assistant/mappings") +async def list_home_assistant_mappings() -> dict[str, object]: + return await app_state.home_assistant.list_mappings() + + +@router.post("/integrations/home-assistant/mappings") +async def create_home_assistant_mapping(payload: HomeAssistantMappingPayload) -> dict[str, object]: + return await app_state.home_assistant.create_mapping(payload.model_dump()) + + +@router.put("/integrations/home-assistant/mappings/{mapping_id}") +async def update_home_assistant_mapping(mapping_id: int, payload: HomeAssistantMappingPayload) -> dict[str, object]: + try: + return await app_state.home_assistant.update_mapping(mapping_id, payload.model_dump()) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.delete("/integrations/home-assistant/mappings/{mapping_id}") +async def delete_home_assistant_mapping(mapping_id: int) -> dict[str, object]: + try: + return await app_state.home_assistant.delete_mapping(mapping_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/integrations/home-assistant/mappings/{mapping_id}/test") +async def test_home_assistant_mapping(mapping_id: int) -> dict[str, object]: + try: + return await app_state.home_assistant.test_mapping(mapping_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.get("/integrations/midi/bridges") +async def list_midi_bridges() -> dict[str, object]: + return await app_state.midi.list_bridges() + + +@router.get("/integrations/midi/mappings") +async def list_midi_mappings() -> dict[str, object]: + return await app_state.midi.list_mappings() + + +@router.post("/integrations/midi/mappings") +async def create_midi_mapping(payload: MidiMappingPayload) -> dict[str, object]: + try: + return await app_state.midi.create_mapping(payload.model_dump()) + except ValueError as exc: + raise HTTPException(status_code=409, detail=str(exc)) from exc + + +@router.put("/integrations/midi/mappings/{mapping_id}") +async def update_midi_mapping(mapping_id: int, payload: MidiMappingPayload) -> dict[str, object]: + try: + return await app_state.midi.update_mapping(mapping_id, payload.model_dump()) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + except ValueError as exc: + raise HTTPException(status_code=409, detail=str(exc)) from exc + + +@router.delete("/integrations/midi/mappings/{mapping_id}") +async def delete_midi_mapping(mapping_id: int) -> dict[str, object]: + try: + return await app_state.midi.delete_mapping(mapping_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/integrations/midi/mappings/{mapping_id}/test") +async def test_midi_mapping(mapping_id: int, payload: MidiTestMappingPayload) -> dict[str, object]: + try: + return await app_state.midi.test_mapping(mapping_id, payload.value, payload.message_type) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.get("/integrations/midi/tokens") +async def list_midi_tokens() -> dict[str, object]: + return await app_state.midi.list_tokens() + + +@router.post("/integrations/midi/tokens") +async def create_midi_token(payload: MidiBridgeTokenCreatePayload) -> dict[str, object]: + return await app_state.midi.create_token(payload.model_dump()) + + +@router.delete("/integrations/midi/tokens/{token_id}") +async def revoke_midi_token(token_id: int) -> dict[str, object]: + try: + return await app_state.midi.revoke_token(token_id) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.get("/integrations/midi/learn") +async def get_midi_learn_state() -> dict[str, object]: + return await app_state.midi.get_learn_state() + + +@router.post("/integrations/midi/learn/start") +async def start_midi_learn(payload: MidiLearnStartPayload) -> dict[str, object]: + return await app_state.midi.start_learn(payload.timeout_seconds, payload.allow_passthrough) + + +@router.post("/integrations/midi/learn/cancel") +async def cancel_midi_learn() -> dict[str, object]: + return await app_state.midi.cancel_learn() + + +@router.post("/integrations/midi/bridge/heartbeat") +async def midi_bridge_heartbeat(request: Request, payload: MidiBridgeHeartbeatPayload) -> dict[str, object]: + try: + await app_state.midi.verify_token( + _extract_bearer_token(request), + "midi:heartbeat", + bridge_id=payload.bridge_id, + ) + return await app_state.midi.receive_heartbeat( + payload.model_dump(mode="json", exclude_none=True), + request.client.host if request.client else None, + ) + except PermissionError as exc: + raise HTTPException(status_code=401, detail=str(exc)) from exc + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + +@router.post("/integrations/midi/bridge/events") +async def midi_bridge_events(request: Request, payload: MidiBridgeEventPayload) -> dict[str, object]: + try: + await app_state.midi.verify_token( + _extract_bearer_token(request), + "midi:events", + bridge_id=payload.bridge_id, + ) + return await app_state.midi.receive_event( + payload.model_dump(mode="json"), + request.client.host if request.client else None, + ) + except PermissionError as exc: + raise HTTPException(status_code=401, detail=str(exc)) from exc + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + +@router.post("/triggers/{slug}", status_code=status.HTTP_202_ACCEPTED) +async def trigger_event(slug: str, payload: TriggerRequest) -> dict[str, object]: + return app_state.triggers.enqueue(slug, payload) + + +@router.get("/telemetry/live") +async def telemetry_live() -> dict[str, object]: + return app_state.telemetry.snapshot(len(app_state.triggers.queue)) + + +@router.get("/telemetry/history") +async def telemetry_history() -> dict[str, object]: + return {"samples": []} + + +@router.get("/events") +async def events() -> dict[str, object]: + return {"items": app_state.telemetry.snapshot()["events"]} + + +@router.get("/logs") +async def logs() -> dict[str, object]: + return {"items": app_state.telemetry.snapshot()["events"]} + + +@router.post("/backups") +async def create_backup() -> dict[str, object]: + backup = app_state.backups.create_backup() + return { + "status": "created", + "id": backup.id, + "label": backup.label, + "path": str(backup.archive_path), + "manifest": backup.manifest, + } + + +@router.get("/backups") +async def list_backups() -> dict[str, object]: + return { + "items": [ + { + "id": backup.id, + "label": backup.label, + "path": str(backup.archive_path), + "created_at": backup.created_at.isoformat(), + "manifest": backup.manifest, + } + for backup in app_state.backups.list_backups() + ] + } + + +@router.post("/backups/{backup_id}/restore") +async def restore_backup(backup_id: int) -> dict[str, object]: + restored = app_state.backups.restore_backup(str(backup_id)) + return { + "status": "restored", + "backup_id": restored.id, + "label": restored.label, + } + + +@router.delete("/backups/{backup_id}") +async def delete_backup(backup_id: int) -> dict[str, object]: + app_state.backups.delete_backup(str(backup_id)) + return {"deleted": backup_id} diff --git a/backend/app/auth/__init__.py b/backend/app/auth/__init__.py new file mode 100644 index 0000000..277f3a8 --- /dev/null +++ b/backend/app/auth/__init__.py @@ -0,0 +1,2 @@ +"""Authentication services.""" + diff --git a/backend/app/auth/service.py b/backend/app/auth/service.py new file mode 100644 index 0000000..4b062e0 --- /dev/null +++ b/backend/app/auth/service.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +import secrets +from dataclasses import dataclass +from datetime import UTC, datetime, timedelta + +from argon2 import PasswordHasher + + +@dataclass(slots=True) +class SessionData: + session_id: str + csrf_token: str + expires_at: datetime + role: str + username: str + + +class AuthService: + def __init__(self) -> None: + self._hasher = PasswordHasher() + self._sessions: dict[str, SessionData] = {} + + def hash_password(self, password: str) -> str: + return self._hasher.hash(password) + + def verify_password(self, password: str, password_hash: str) -> bool: + try: + return self._hasher.verify(password_hash, password) + except Exception: + return False + + def create_session(self, username: str, role: str) -> SessionData: + session_id = secrets.token_hex(24) + csrf_token = secrets.token_hex(16) + expires_at = datetime.now(UTC) + timedelta(hours=12) + session = SessionData( + session_id=session_id, + csrf_token=csrf_token, + expires_at=expires_at, + role=role, + username=username, + ) + self._sessions[session_id] = session + return session + + def get_session(self, session_id: str | None) -> SessionData | None: + if session_id is None: + return None + session = self._sessions.get(session_id) + if session is None: + return None + if session.expires_at < datetime.now(UTC): + self._sessions.pop(session_id, None) + return None + return session + diff --git a/backend/app/backup/__init__.py b/backend/app/backup/__init__.py new file mode 100644 index 0000000..c224cea --- /dev/null +++ b/backend/app/backup/__init__.py @@ -0,0 +1,2 @@ +"""Backup and restore services.""" + diff --git a/backend/app/backup/service.py b/backend/app/backup/service.py new file mode 100644 index 0000000..7271ab0 --- /dev/null +++ b/backend/app/backup/service.py @@ -0,0 +1,122 @@ +from __future__ import annotations + +import json +import shutil +import zipfile +from dataclasses import dataclass +from datetime import UTC, datetime +from pathlib import Path +from typing import Any + + +@dataclass(slots=True) +class BackupRecordData: + id: str + label: str + archive_path: Path + manifest: dict[str, object] + created_at: datetime + + +class BackupService: + def __init__(self, data_dir: Path, backup_dir: Path) -> None: + self.data_dir = data_dir + self.backup_dir = backup_dir + self.backup_dir.mkdir(parents=True, exist_ok=True) + + def create_backup(self, label: str | None = None) -> BackupRecordData: + created_at = datetime.now(UTC) + backup_id = created_at.strftime("%Y%m%d%H%M%S") + safe_label = label or f"backup-{backup_id}" + archive_path = self.backup_dir / f"{safe_label}.zip" + manifest: dict[str, Any] = { + "id": backup_id, + "label": safe_label, + "created_at": created_at.isoformat(), + "format_version": 1, + "included_paths": [], + } + + with zipfile.ZipFile(archive_path, "w", compression=zipfile.ZIP_DEFLATED) as archive: + for file_path in sorted(self.data_dir.rglob("*")): + if not file_path.is_file(): + continue + if self.backup_dir in file_path.parents: + continue + relative = file_path.relative_to(self.data_dir) + archive.write(file_path, arcname=f"data/{relative.as_posix()}") + manifest["included_paths"].append(f"data/{relative.as_posix()}") + archive.writestr("manifest.json", json.dumps(manifest, indent=2, ensure_ascii=True)) + + return BackupRecordData( + id=backup_id, + label=safe_label, + archive_path=archive_path, + manifest=manifest, + created_at=created_at, + ) + + def list_backups(self) -> list[BackupRecordData]: + backups: list[BackupRecordData] = [] + for archive_path in sorted(self.backup_dir.glob("*.zip"), reverse=True): + try: + with zipfile.ZipFile(archive_path) as archive: + manifest = json.loads(archive.read("manifest.json").decode("utf-8")) + except (KeyError, zipfile.BadZipFile, json.JSONDecodeError): + continue + backups.append( + BackupRecordData( + id=str(manifest["id"]), + label=str(manifest["label"]), + archive_path=archive_path, + manifest=manifest, + created_at=datetime.fromisoformat(str(manifest["created_at"])), + ) + ) + return backups + + def restore_backup(self, backup_id: str) -> BackupRecordData: + target = next((item for item in self.list_backups() if item.id == backup_id), None) + if target is None: + raise FileNotFoundError(f"Backup {backup_id} ikke fundet") + + self.create_backup(label=f"pre-restore-{backup_id}") + temp_dir = self.backup_dir / f"restore-{backup_id}" + if temp_dir.exists(): + shutil.rmtree(temp_dir) + temp_dir.mkdir(parents=True, exist_ok=True) + + try: + with zipfile.ZipFile(target.archive_path) as archive: + archive.extractall(temp_dir) + + restored_data_dir = temp_dir / "data" + self._clear_runtime_files() + + if restored_data_dir.exists(): + for file_path in sorted(restored_data_dir.rglob("*")): + if not file_path.is_file(): + continue + relative = file_path.relative_to(restored_data_dir) + destination = self.data_dir / relative + destination.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(file_path, destination) + finally: + shutil.rmtree(temp_dir, ignore_errors=True) + + return target + + def _clear_runtime_files(self) -> None: + for file_path in sorted(self.data_dir.rglob("*"), reverse=True): + if self.backup_dir == file_path or self.backup_dir in file_path.parents: + continue + if file_path.is_file(): + file_path.unlink() + elif file_path.is_dir(): + file_path.rmdir() + + def delete_backup(self, backup_id: str) -> None: + target = next((item for item in self.list_backups() if item.id == backup_id), None) + if target is None: + raise FileNotFoundError(f"Backup {backup_id} ikke fundet") + target.archive_path.unlink(missing_ok=True) diff --git a/backend/app/bpm/__init__.py b/backend/app/bpm/__init__.py new file mode 100644 index 0000000..9b73978 --- /dev/null +++ b/backend/app/bpm/__init__.py @@ -0,0 +1,2 @@ +"""BPM services.""" + diff --git a/backend/app/bpm/service.py b/backend/app/bpm/service.py new file mode 100644 index 0000000..d973baf --- /dev/null +++ b/backend/app/bpm/service.py @@ -0,0 +1,619 @@ +from __future__ import annotations + +import asyncio +import math +import sys +from array import array +from collections import deque +from dataclasses import dataclass +from datetime import UTC, datetime +from statistics import fmean, median +from time import monotonic +from typing import Any + +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.models.entities import Setting + + +BPM_AUDIO_SETTING_KEY = "bpm_audio" +AUTO_ALSA_DEVICE = "alsa:auto" +SB_ALIAS_DEVICE = "alsa:plughw:CARD=SB,DEV=0" +SB_FALLBACK_DEVICE = "alsa:plughw:1,0" +DEFAULT_ALSA_DEVICE = "alsa:default" +DEFAULT_SAMPLE_RATE = 44_100 +DEFAULT_CHANNELS = 1 +DEFAULT_AUDIO_FORMAT = "S16_LE" + + +@dataclass(slots=True) +class AudioDevice: + id: str + name: str + backend: str + is_default: bool = False + recommended: bool = False + + +class BeatAnalyzer: + def __init__(self, sample_rate: int = DEFAULT_SAMPLE_RATE, window_size: int = 1024) -> None: + self.sample_rate = sample_rate + self.window_size = window_size + self._buffer = array("h") + self._processed_samples = 0 + self._last_trigger_sample = -sample_rate + self._energy_history: deque[float] = deque(maxlen=48) + self._beat_times: deque[float] = deque(maxlen=16) + self.bpm = 120.0 + self.confidence = 0.0 + self.last_beat_at: float | None = None + self.current_level = 0.0 + self.peak_level = 0.0 + self.clipping = False + + def feed_pcm16(self, chunk: bytes) -> tuple[float, float] | None: + samples = array("h") + samples.frombytes(chunk[: len(chunk) - (len(chunk) % 2)]) + if sys.byteorder != "little": + samples.byteswap() + self._buffer.extend(samples) + + updated = False + while len(self._buffer) >= self.window_size: + window = self._buffer[: self.window_size] + del self._buffer[: self.window_size] + updated = self._process_window(window) or updated + self._processed_samples += len(window) + + if updated: + return self.bpm, self.confidence + return None + + def _process_window(self, window: array[int]) -> bool: + if not window: + return False + + energy = math.sqrt(sum(sample * sample for sample in window) / len(window)) / 32768.0 + peak = max(abs(sample) for sample in window) / 32768.0 + self.current_level = round(max(max(0.0, min(1.0, energy)), self.current_level * 0.82), 4) + self.peak_level = round(max(peak, self.peak_level * 0.92), 4) + self.clipping = peak >= 0.985 + baseline = fmean(self._energy_history) if self._energy_history else 0.03 + threshold = max(0.08, baseline * 2.4) + self._energy_history.append(energy) + + min_interval = int(self.sample_rate * 0.2) + if energy < threshold or self._processed_samples - self._last_trigger_sample < min_interval: + return False + + timestamp = self._processed_samples / self.sample_rate + self._beat_times.append(timestamp) + self._last_trigger_sample = self._processed_samples + self.last_beat_at = timestamp + + if len(self._beat_times) < 2: + return False + + intervals = [ + self._beat_times[index] - self._beat_times[index - 1] + for index in range(1, len(self._beat_times)) + ] + beat_seconds = median(intervals) + if beat_seconds <= 0: + return False + + bpm = self._normalize_bpm(60.0 / beat_seconds) + jitter = 0.0 + if len(intervals) > 1: + average = fmean(intervals) + jitter = fmean(abs(interval - average) for interval in intervals) + self.bpm = round(bpm, 2) + regularity = max(0.0, 1.0 - min(jitter / max(beat_seconds, 0.001), 1.0)) + self.confidence = round(min(1.0, regularity * min(1.0, len(intervals) / 6)), 3) + return True + + def _normalize_bpm(self, bpm: float) -> float: + while bpm < 70.0: + bpm *= 2.0 + while bpm > 180.0: + bpm /= 2.0 + return bpm + + +class BpmService: + def __init__(self, session_factory: async_sessionmaker[AsyncSession] = SessionLocal) -> None: + self._session_factory = session_factory + self.mode = "manual" + self.current_bpm = 120.0 + self.confidence = 1.0 + self.last_error: str | None = None + self.audio_connected = False + self.current_device = "manual" + self.selected_device = AUTO_ALSA_DEVICE + self.recommended_device = SB_ALIAS_DEVICE + self.beat_counter = 0 + self.last_beat_detected_at: float | None = None + self._tap_times: list[float] = [] + self._manual_bpm = 120.0 + self._audio_task: asyncio.Task[None] | None = None + self._audio_process: asyncio.subprocess.Process | None = None + self._analyzer = BeatAnalyzer() + self._device_cache: list[dict[str, object]] = [ + self._serialize_device( + AudioDevice( + id=AUTO_ALSA_DEVICE, + name="Auto (SB -> plughw:CARD=SB,DEV=0 -> plughw:1,0 -> default)", + backend="alsa", + is_default=True, + ) + ), + self._serialize_device(AudioDevice(id=DEFAULT_ALSA_DEVICE, name="ALSA default", backend="alsa")), + self._serialize_device( + AudioDevice(id="synthetic-click-track", name="Syntetisk click track", backend="synthetic") + ), + ] + + async def startup(self) -> None: + await self._load_config() + await self.list_devices() + + async def shutdown(self) -> None: + await self.stop_audio() + + def set_manual(self, bpm: float) -> dict[str, object]: + self._manual_bpm = float(bpm) + self.mode = "manual" + self.current_device = "manual" + self.current_bpm = round(float(bpm), 2) + self.confidence = 1.0 + self.audio_connected = False + self.last_error = None + self._cancel_audio_runtime() + return self.snapshot() + + def tap(self) -> dict[str, object]: + now = monotonic() + self._tap_times = [value for value in self._tap_times if now - value < 4.0] + self._tap_times.append(now) + if len(self._tap_times) >= 2: + intervals = [ + self._tap_times[index] - self._tap_times[index - 1] + for index in range(1, len(self._tap_times)) + ] + beat_seconds = median(intervals) + if beat_seconds > 0: + self.current_bpm = round(60 / beat_seconds, 2) + self._manual_bpm = self.current_bpm + self.mode = "tap" + self.current_device = "tap" + self.confidence = min(1.0, len(intervals) / 4) + self.audio_connected = False + self.last_error = None + self._mark_beat_event() + return self.snapshot() + + async def start_audio(self, device: str = AUTO_ALSA_DEVICE) -> dict[str, object]: + await self.stop_audio() + self._analyzer = BeatAnalyzer() + normalized_device = self._normalize_device_id(device) + self.mode = f"audio:{normalized_device}" + self.current_device = "pending" + self.confidence = 0.0 + self.audio_connected = False + self.last_error = None + + if normalized_device == "synthetic-click-track": + self._audio_task = asyncio.create_task(self._synthetic_click_loop(), name="tuxdmx-bpm-synthetic") + return self.snapshot() + + if normalized_device.startswith("alsa:"): + candidates = await self._resolve_alsa_candidates(normalized_device) + self._audio_task = asyncio.create_task( + self._alsa_capture_loop(candidates), + name="tuxdmx-bpm-alsa", + ) + return self.snapshot() + + raise LookupError(f"Ukendt BPM-device: {normalized_device}") + + async def stop_audio(self) -> dict[str, object]: + self._cancel_audio_runtime() + if self._audio_task is not None: + try: + await self._audio_task + except asyncio.CancelledError: + pass + if self._audio_process is not None: + try: + await self._audio_process.wait() + except ProcessLookupError: + pass + self._audio_task = None + self._audio_process = None + self.audio_connected = False + if self.mode.startswith("audio:"): + self.mode = "manual" + self.current_device = "manual" + self.current_bpm = self._manual_bpm + self.confidence = 1.0 + return self.snapshot() + + async def get_config(self) -> dict[str, object]: + return { + "preferred_device": self.selected_device, + "recommended_device": self.recommended_device, + "sample_rate": DEFAULT_SAMPLE_RATE, + "channels": DEFAULT_CHANNELS, + "format": DEFAULT_AUDIO_FORMAT, + } + + async def save_config(self, preferred_device: str) -> dict[str, object]: + self.selected_device = self._normalize_device_id(preferred_device) + await self.list_devices() + payload = await self.get_config() + async with self._session_factory() as session: + setting = await session.get(Setting, BPM_AUDIO_SETTING_KEY) + if setting is None: + setting = Setting(key=BPM_AUDIO_SETTING_KEY, value=payload, updated_at=datetime.now(UTC)) + session.add(setting) + else: + setting.value = payload + setting.updated_at = datetime.now(UTC) + await session.commit() + return await self.get_config() + + async def list_devices(self) -> list[dict[str, object]]: + devices: list[AudioDevice] = [] + self._append_device( + devices, + AudioDevice( + id=AUTO_ALSA_DEVICE, + name="Auto (SB -> plughw:CARD=SB,DEV=0 -> plughw:1,0 -> default)", + backend="alsa", + is_default=True, + ), + ) + self._append_device( + devices, + AudioDevice(id="synthetic-click-track", name="Syntetisk click track", backend="synthetic"), + ) + self._append_device(devices, AudioDevice(id=DEFAULT_ALSA_DEVICE, name="ALSA default", backend="alsa")) + + for device in await self._list_alsa_hardware_devices(): + self._append_device(devices, device) + + try: + process = await asyncio.create_subprocess_exec( + "arecord", + "-L", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + except (FileNotFoundError, NotImplementedError): + self.recommended_device = self._pick_recommended_device(devices) + for device in devices: + device.recommended = device.id == self.recommended_device + self._device_cache = [self._serialize_device(device) for device in devices] + return self._device_cache + + stdout, _stderr = await process.communicate() + if process.returncode == 0: + for raw_line in stdout.decode("utf-8", errors="ignore").splitlines(): + line = raw_line.strip() + if not line or line.startswith("#") or raw_line.startswith(" "): + continue + self._append_device(devices, AudioDevice(id=f"alsa:{line}", name=line, backend="alsa")) + + self.recommended_device = self._pick_recommended_device(devices) + for device in devices: + device.recommended = device.id == self.recommended_device + self._device_cache = [self._serialize_device(device) for device in devices] + return self._device_cache + + def snapshot(self) -> dict[str, object]: + return { + "mode": self.mode, + "bpm": round(self.current_bpm, 2), + "confidence": round(self.confidence, 3), + "devices": [str(device["id"]) for device in self._device_cache], + "device_details": self._device_cache, + "current_device": self.current_device, + "selected_device": self.selected_device, + "recommended_device": self.recommended_device, + "audio_connected": self.audio_connected, + "last_error": self.last_error, + "last_beat_at": self._analyzer.last_beat_at, + "last_beat_detected_at": self.last_beat_detected_at, + "beat_counter": self.beat_counter, + "input_level": round(self._analyzer.current_level, 4), + "peak_level": round(self._analyzer.peak_level, 4), + "clipping": self._analyzer.clipping, + "sample_rate": DEFAULT_SAMPLE_RATE, + "channels": DEFAULT_CHANNELS, + "format": DEFAULT_AUDIO_FORMAT, + } + + async def _alsa_capture_loop(self, candidates: list[str]) -> None: + last_error: str | None = None + for candidate in candidates: + alsa_device = candidate.split(":", 1)[1] + try: + process = await asyncio.create_subprocess_exec( + "arecord", + "-D", + alsa_device, + "-q", + "-f", + DEFAULT_AUDIO_FORMAT, + "-c", + str(DEFAULT_CHANNELS), + "-r", + str(DEFAULT_SAMPLE_RATE), + "-t", + "raw", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + except FileNotFoundError: + self._fallback_to_manual("arecord blev ikke fundet på systemet.") + return + + self._audio_process = process + self.current_device = candidate + self.mode = f"audio:{candidate}" + connected_once = False + stderr_output = b"" + + try: + if process.stdout is None: + last_error = "ALSA-capture kunne ikke starte." + continue + while True: + chunk = await process.stdout.read(4096) + if not chunk: + break + connected_once = True + self.audio_connected = True + result = self._analyzer.feed_pcm16(chunk) + if result is None: + continue + bpm, confidence = result + self.current_bpm = bpm + self.confidence = confidence + self._mark_beat_event() + except asyncio.CancelledError: + if process.returncode is None: + process.terminate() + await process.wait() + raise + finally: + if process.returncode is None: + process.terminate() + await process.wait() + if process.stderr is not None: + stderr_output = await process.stderr.read() + self._audio_process = None + + error = self._humanize_alsa_error( + candidate, + stderr_output.decode("utf-8", errors="ignore").strip(), + ) + if connected_once: + if self.mode.startswith("audio:"): + self._fallback_to_manual(error or "Audio-input stoppede.") + return + + last_error = error or f"Kunne ikke åbne ALSA-input {alsa_device}." + self.audio_connected = False + + if self.mode.startswith("audio:"): + self._fallback_to_manual(last_error or "Audio-input stoppede.") + + async def _synthetic_click_loop(self) -> None: + self.audio_connected = True + click_interval = 0.5 + sample_rate = self._analyzer.sample_rate + click_width = 2048 + silence_width = int(sample_rate * click_interval) - click_width + amplitude = 22000 + + click = array("h", [amplitude if index < 128 else 0 for index in range(click_width)]) + silence = array("h", [0] * max(0, silence_width)) + + try: + while True: + self._feed_array(click) + self._feed_array(silence) + await asyncio.sleep(click_interval) + except asyncio.CancelledError: + raise + finally: + self.audio_connected = False + + def _feed_array(self, values: array[int]) -> None: + if not values: + return + result = self._analyzer.feed_pcm16(values.tobytes()) + if result is None: + return + bpm, confidence = result + self.current_bpm = bpm + self.confidence = confidence + self._mark_beat_event() + + def _cancel_audio_runtime(self) -> None: + if self._audio_task is not None: + self._audio_task.cancel() + if self._audio_process is not None and self._audio_process.returncode is None: + self._audio_process.terminate() + + def _fallback_to_manual(self, error: str) -> None: + self.mode = "manual" + self.current_device = "manual" + self.current_bpm = self._manual_bpm + self.confidence = 1.0 + self.audio_connected = False + self.last_error = error + self._analyzer.current_level = 0.0 + self._analyzer.peak_level = 0.0 + self._analyzer.clipping = False + + def _mark_beat_event(self) -> None: + self.beat_counter += 1 + self.last_beat_detected_at = monotonic() + + def _serialize_device(self, device: AudioDevice) -> dict[str, Any]: + return { + "id": device.id, + "name": device.name, + "backend": device.backend, + "is_default": device.is_default, + "recommended": device.recommended, + } + + async def _list_alsa_hardware_devices(self) -> list[AudioDevice]: + try: + process = await asyncio.create_subprocess_exec( + "arecord", + "-l", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + except (FileNotFoundError, NotImplementedError): + return [] + + stdout, _stderr = await process.communicate() + if process.returncode != 0: + return [] + + devices: list[AudioDevice] = [] + for raw_line in stdout.decode("utf-8", errors="ignore").splitlines(): + line = raw_line.strip() + if not line or not line.startswith("card "): + continue + card = self._parse_card_line(line) + device = self._parse_device_from_card_line(line) + if card is None or device is None: + continue + card_index, card_key, card_name = card + device_index, _device_key, device_name = device + label = f"{card_name} / {device_name}" if device_name else card_name + self._append_device( + devices, + AudioDevice(id=f"alsa:hw:{card_index},{device_index}", name=label, backend="alsa"), + ) + self._append_device( + devices, + AudioDevice( + id=f"alsa:plughw:{card_index},{device_index}", + name=f"{label} (plughw)", + backend="alsa", + ), + ) + if card_key: + self._append_device( + devices, + AudioDevice( + id=f"alsa:plughw:CARD={card_key},DEV={device_index}", + name=f"{label} (stabil alias)", + backend="alsa", + ), + ) + return devices + + async def _load_config(self) -> None: + async with self._session_factory() as session: + setting = await session.get(Setting, BPM_AUDIO_SETTING_KEY) + if setting is None or not isinstance(setting.value, dict): + return + preferred = setting.value.get("preferred_device") + if isinstance(preferred, str) and preferred.strip(): + self.selected_device = self._normalize_device_id(preferred) + + async def _resolve_alsa_candidates(self, requested_device: str) -> list[str]: + await self.list_devices() + candidates: list[str] = [] + if requested_device == AUTO_ALSA_DEVICE: + if self.selected_device != AUTO_ALSA_DEVICE: + candidates.append(self.selected_device) + candidates.extend([self.recommended_device, SB_ALIAS_DEVICE, SB_FALLBACK_DEVICE, DEFAULT_ALSA_DEVICE]) + else: + candidates.append(requested_device) + if requested_device == SB_ALIAS_DEVICE: + candidates.extend([SB_FALLBACK_DEVICE, DEFAULT_ALSA_DEVICE]) + elif requested_device == SB_FALLBACK_DEVICE: + candidates.append(DEFAULT_ALSA_DEVICE) + + unique_candidates: list[str] = [] + for candidate in candidates: + normalized = self._normalize_device_id(candidate) + if not normalized.startswith("alsa:"): + continue + if normalized not in unique_candidates: + unique_candidates.append(normalized) + return unique_candidates or [DEFAULT_ALSA_DEVICE] + + def _append_device(self, devices: list[AudioDevice], device: AudioDevice) -> None: + if any(existing.id == device.id for existing in devices): + return + devices.append(device) + + def _pick_recommended_device(self, devices: list[AudioDevice]) -> str: + preferred_ids = [SB_ALIAS_DEVICE, SB_FALLBACK_DEVICE, DEFAULT_ALSA_DEVICE] + for preferred_id in preferred_ids: + if any(device.id == preferred_id for device in devices): + return preferred_id + for device in devices: + if "SB" in device.id.upper(): + return device.id + return DEFAULT_ALSA_DEVICE + + def _normalize_device_id(self, device: str) -> str: + normalized = device.strip() if device else AUTO_ALSA_DEVICE + if not normalized: + return AUTO_ALSA_DEVICE + if normalized == "default": + return DEFAULT_ALSA_DEVICE + if normalized.startswith("alsa:") or normalized == "synthetic-click-track": + return normalized + if normalized.startswith("plughw:") or normalized.startswith("hw:"): + return f"alsa:{normalized}" + return f"alsa:{normalized}" + + def _humanize_alsa_error(self, candidate: str, error: str) -> str: + if not error: + return f"Audio-input {candidate.split(':', 1)[1]} stoppede." + normalized = error.lower() + if "device or resource busy" in normalized: + return ( + "Mikrofonen er optaget af en anden proces. Luk PipeWire, PulseAudio eller en " + "anden TuxDMX/arecord-proces, eller vælg et andet ALSA-input." + ) + if "cannot get card index" in normalized or "no such file or directory" in normalized: + return f"ALSA-input {candidate.split(':', 1)[1]} blev ikke fundet." + if "audio open error" in normalized or "unable to open slave" in normalized: + return f"Kunne ikke åbne ALSA-input {candidate.split(':', 1)[1]}." + return error + + def _parse_card_line(self, line: str) -> tuple[str, str, str] | None: + try: + after_prefix = line.split("card ", 1)[1] + card_index = after_prefix.split(":", 1)[0].strip() + after_index = after_prefix.split(":", 1)[1] + card_key = after_index.split("[", 1)[0].split(",", 1)[0].strip() + card_name = after_index.split("[", 1)[1].split("]", 1)[0].strip() + return card_index, card_key, card_name + except IndexError: + return None + + def _parse_device_from_card_line(self, line: str) -> tuple[str, str, str] | None: + try: + after_device = line.split("device ", 1)[1] + device_index = after_device.split(":", 1)[0].strip() + after_index = after_device.split(":", 1)[1] + device_key = after_index.split("[", 1)[0].strip().rstrip(",") + device_name = after_index.split("[", 1)[1].split("]", 1)[0].strip() + return device_index, device_key, device_name + except IndexError: + return None diff --git a/backend/app/core/__init__.py b/backend/app/core/__init__.py new file mode 100644 index 0000000..008f820 --- /dev/null +++ b/backend/app/core/__init__.py @@ -0,0 +1,2 @@ +"""Core application services.""" + diff --git a/backend/app/core/config.py b/backend/app/core/config.py new file mode 100644 index 0000000..e5577fe --- /dev/null +++ b/backend/app/core/config.py @@ -0,0 +1,60 @@ +from functools import lru_cache +from pathlib import Path + +from pydantic import Field +from pydantic_settings import BaseSettings, SettingsConfigDict + + +class Settings(BaseSettings): + model_config = SettingsConfigDict(env_prefix="TUXDMX_", env_file=".env", extra="ignore") + + app_name: str = "TuxDMX" + env: str = "development" + secret_key: str = "development-secret-change-me" + database_url: str = "sqlite+aiosqlite:///./data/tuxdmx.db" + simulator_enabled: bool = True + allow_local_docs: bool = True + log_level: str = "INFO" + target_fps: int = Field(default=30, ge=1, le=44) + ola_universe: int = Field(default=1, ge=1, le=63999) + ola_output_port: str | None = None + ola_send_timeout_ms: int = Field(default=1000, ge=100, le=10000) + system_control_enabled: bool = True + system_service_name: str = "tuxdmx.service" + system_control_helper: str = "/opt/tuxdmx/scripts/control-system.sh" + frontend_dist: Path = Path("frontend/dist") + data_dir: Path = Path("data") + backup_dir: Path = Path("data/backups") + fixture_cache_dir: Path = Path("data/fixtures") + diagnostics_dir: Path = Path("data/diagnostics") + uploads_dir: Path = Path("data/uploads") + log_dir: Path = Path("data") + + +def resolve_path(path: Path) -> Path: + return path.expanduser().resolve(strict=False) + + +@lru_cache(maxsize=1) +def get_settings() -> Settings: + settings = Settings() + settings.frontend_dist = resolve_path(settings.frontend_dist) + settings.data_dir = resolve_path(settings.data_dir) + settings.backup_dir = resolve_path(settings.backup_dir) + settings.fixture_cache_dir = resolve_path(settings.fixture_cache_dir) + settings.diagnostics_dir = resolve_path(settings.diagnostics_dir) + settings.uploads_dir = resolve_path(settings.uploads_dir) + settings.log_dir = resolve_path(settings.log_dir) + settings.data_dir.mkdir(parents=True, exist_ok=True) + settings.backup_dir.mkdir(parents=True, exist_ok=True) + settings.fixture_cache_dir.mkdir(parents=True, exist_ok=True) + settings.diagnostics_dir.mkdir(parents=True, exist_ok=True) + settings.uploads_dir.mkdir(parents=True, exist_ok=True) + settings.log_dir.mkdir(parents=True, exist_ok=True) + return settings + + +def get_alembic_database_url(database_url: str) -> str: + if database_url.startswith("sqlite+aiosqlite:///"): + return database_url.replace("sqlite+aiosqlite:///", "sqlite:///", 1) + return database_url diff --git a/backend/app/core/database.py b/backend/app/core/database.py new file mode 100644 index 0000000..c2a2d95 --- /dev/null +++ b/backend/app/core/database.py @@ -0,0 +1,45 @@ +from collections.abc import AsyncIterator + +from sqlalchemy import event, text +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine + +from app.core.config import get_settings +from app.models.base import Base + +settings = get_settings() +engine = create_async_engine(settings.database_url, future=True) +SessionLocal = async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession) + + +@event.listens_for(engine.sync_engine, "connect") +def _enable_sqlite_pragmas(dbapi_connection, _connection_record) -> None: # type: ignore[no-untyped-def] + cursor = dbapi_connection.cursor() + cursor.execute("PRAGMA journal_mode=WAL;") + cursor.execute("PRAGMA foreign_keys=ON;") + cursor.close() + + +async def init_database() -> None: + async with engine.begin() as connection: + await connection.execute(text("PRAGMA journal_mode=WAL;")) + await connection.run_sync(Base.metadata.create_all) + await _ensure_compatible_schema(connection) + + +async def get_db_session() -> AsyncIterator[AsyncSession]: + async with SessionLocal() as session: + yield session + + +async def _ensure_compatible_schema(connection) -> None: # type: ignore[no-untyped-def] + def sync_ensure(sync_connection) -> None: # type: ignore[no-untyped-def] + scene_columns = { + row[1] + for row in sync_connection.exec_driver_sql("PRAGMA table_info('scenes')").fetchall() + } + if "targets" not in scene_columns: + sync_connection.exec_driver_sql( + "ALTER TABLE scenes ADD COLUMN targets JSON NOT NULL DEFAULT '[]'" + ) + + await connection.run_sync(sync_ensure) diff --git a/backend/app/core/dependencies.py b/backend/app/core/dependencies.py new file mode 100644 index 0000000..43f1a5a --- /dev/null +++ b/backend/app/core/dependencies.py @@ -0,0 +1,62 @@ +from app.auth.service import AuthService +from app.backup.service import BackupService +from app.bpm.service import BpmService +from app.core.config import get_settings +from app.dmx.backends import OlaDmxBackend, SimulatorDmxBackend +from app.dmx.engine import DmxEngine +from app.dmx.output_service import DmxOutputService +from app.effects.service import EffectService +from app.fixtures.service import FixtureService +from app.homeassistant.service import HomeAssistantService +from app.live.service import LiveDeskService +from app.midi.service import MidiService +from app.mixitup.service import TriggerService +from app.patch.service import PatchService +from app.scenes.service import SceneService +from app.system.service import SystemControlService +from app.telemetry.service import TelemetryService + + +class ApplicationState: + def __init__(self) -> None: + settings = get_settings() + self.telemetry = TelemetryService() + backend = ( + SimulatorDmxBackend(universe=settings.ola_universe) + if settings.simulator_enabled + else OlaDmxBackend( + universe=settings.ola_universe, + output_port=settings.ola_output_port, + send_timeout_s=settings.ola_send_timeout_ms / 1000, + ) + ) + self.engine = DmxEngine(self.telemetry, backend=backend) + self.auth = AuthService() + self.fixtures = FixtureService() + self.patch = PatchService() + self.scenes = SceneService(self.engine) + self.bpm = BpmService() + self.effects = EffectService(self.engine, self.bpm) + self.dmx = DmxOutputService(self.engine) + self.home_assistant = HomeAssistantService(self.engine) + self.live = LiveDeskService(self.engine, home_assistant=self.home_assistant) + self.triggers = TriggerService(self.engine, self.effects, self.scenes) + self.midi = MidiService(self.engine, self.scenes, self.effects) + self.backups = BackupService(settings.data_dir, settings.backup_dir) + self.system = SystemControlService() + + async def startup(self) -> None: + await self.dmx.startup() + await self.home_assistant.startup() + await self.midi.startup() + await self.bpm.startup() + await self.engine.start() + + async def shutdown(self) -> None: + await self.effects.shutdown() + await self.home_assistant.shutdown() + await self.bpm.shutdown() + await self.engine.stop() + + +app_state = ApplicationState() diff --git a/backend/app/core/logging.py b/backend/app/core/logging.py new file mode 100644 index 0000000..6c0f2c6 --- /dev/null +++ b/backend/app/core/logging.py @@ -0,0 +1,32 @@ +import json +import logging +from datetime import UTC, datetime + +from app.core.config import get_settings + + +class JsonFormatter(logging.Formatter): + def format(self, record: logging.LogRecord) -> str: + payload = { + "timestamp": datetime.now(UTC).isoformat(), + "level": record.levelname, + "logger": record.name, + "message": record.getMessage(), + } + return json.dumps(payload, ensure_ascii=True) + + +def configure_logging() -> None: + settings = get_settings() + root = logging.getLogger() + if root.handlers: + return + + root.setLevel(settings.log_level.upper()) + console = logging.StreamHandler() + console.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s")) + root.addHandler(console) + + json_handler = logging.FileHandler(settings.log_dir / "tuxdmx.json.log", encoding="utf-8") + json_handler.setFormatter(JsonFormatter()) + root.addHandler(json_handler) diff --git a/backend/app/dmx/__init__.py b/backend/app/dmx/__init__.py new file mode 100644 index 0000000..db048ab --- /dev/null +++ b/backend/app/dmx/__init__.py @@ -0,0 +1,2 @@ +"""DMX runtime services.""" + diff --git a/backend/app/dmx/backends.py b/backend/app/dmx/backends.py new file mode 100644 index 0000000..f58f7ed --- /dev/null +++ b/backend/app/dmx/backends.py @@ -0,0 +1,496 @@ +from __future__ import annotations + +import asyncio +import socket +import struct +import threading +from array import array +from collections import deque +from collections.abc import Callable +from dataclasses import dataclass, field +from datetime import UTC, datetime +from typing import Any, Protocol + +from app.dmx.frame import DmxFrame + + +def utc_now() -> datetime: + return datetime.now(UTC) + + +@dataclass(slots=True) +class BackendStatus: + connected: bool = True + degraded: bool = False + last_error: str | None = None + reconnect_count: int = 0 + latency_ms: int = 5 + device_name: str = "Simulator universe 1" + connected_since: datetime = field(default_factory=utc_now) + backend_name: str = "simulator" + last_successful_frame: datetime | None = None + frames_sent: int = 0 + send_errors: int = 0 + selected_universe: int = 1 + selected_output_port: str | None = None + + +class DmxBackend: + async def startup(self) -> None: + return None + + async def shutdown(self) -> None: + return None + + async def send_frame(self, frame: DmxFrame) -> None: # pragma: no cover - interface + raise NotImplementedError + + def get_status(self) -> BackendStatus: # pragma: no cover - interface + raise NotImplementedError + + +@dataclass(slots=True) +class ArtNetNode: + ip: str + short_name: str + long_name: str + net: int + sub_switch: int + port_count: int + raw_port_address: int + + @property + def label(self) -> str: + name = self.long_name or self.short_name or self.ip + return f"{name} ({self.ip})" + + +class OlaClientAdapter(Protocol): + def open(self) -> None: ... + + def close(self) -> None: ... + + def send_frame(self, universe: int, values: list[int]) -> None: ... + + +class PythonOlaClientAdapter: + def __init__(self, timeout_s: float = 1.0) -> None: + self.timeout_s = timeout_s + self._wrapper_class: type[Any] | None = None + + def open(self) -> None: + if self._wrapper_class is not None: + return + try: + from ola.ClientWrapper import ClientWrapper + except ImportError as exc: # pragma: no cover - depends on Pi runtime + raise RuntimeError( + "Python OLA bindings blev ikke fundet. " + "Installer ola-python eller OLA's Python-modul." + ) from exc + self._wrapper_class = ClientWrapper + + def close(self) -> None: + self._wrapper_class = None + + def send_frame(self, universe: int, values: list[int]) -> None: + self.open() + assert self._wrapper_class is not None + + wrapper = self._wrapper_class() + client = wrapper.Client() + dmx_buffer = array("B", values) + completed = threading.Event() + result: dict[str, object] = { + "success": False, + "error": f"Timeout under afsendelse til olad efter {self.timeout_s:.2f}s", + } + + def stop_wrapper() -> None: + try: + wrapper.Stop() + except Exception: + return + + def on_timeout() -> None: + completed.set() + stop_wrapper() + + def callback(state: object | None = None) -> None: + if completed.is_set(): + return + result["success"] = self._state_succeeded(state) + if not result["success"]: + result["error"] = self._state_message(state) + completed.set() + stop_wrapper() + + timer = threading.Timer(self.timeout_s, on_timeout) + timer.daemon = True + timer.start() + try: + client.SendDmx(universe, dmx_buffer, callback) + wrapper.Run() + except Exception as exc: + raise RuntimeError(f"OLA SendDmx fejlede: {exc}") from exc + finally: + timer.cancel() + + if not bool(result["success"]): + raise RuntimeError(str(result["error"])) + + def _state_succeeded(self, state: object | None) -> bool: + if state is None: + return True + if isinstance(state, bool): + return state + for attribute in ("Succeeded", "succeeded", "Ok", "ok", "success"): + member = getattr(state, attribute, None) + if callable(member): + try: + return bool(member()) + except Exception: + continue + if member is not None: + return bool(member) + return True + + def _state_message(self, state: object | None) -> str: + if state is None: + return "Ukendt OLA-fejl" + for attribute in ("message", "error", "status"): + member = getattr(state, attribute, None) + if callable(member): + try: + value = member() + except Exception: + continue + if value: + return str(value) + elif member: + return str(member) + return str(state) + + +class OlaDmxBackend(DmxBackend): + def __init__( + self, + *, + universe: int = 1, + output_port: str | None = None, + send_timeout_s: float = 1.0, + adapter_factory: Callable[[], OlaClientAdapter] | None = None, + ) -> None: + self._adapter_factory = adapter_factory or ( + lambda: PythonOlaClientAdapter(timeout_s=send_timeout_s) + ) + self._adapter: OlaClientAdapter | None = None + self._has_connected_once = False + self._status = BackendStatus( + connected=False, + degraded=True, + last_error="Afventer forbindelse til olad", + backend_name="ola", + device_name="OLA DMX output", + selected_universe=universe, + selected_output_port=output_port, + ) + + async def startup(self) -> None: + return None + + async def shutdown(self) -> None: + await self._disconnect() + + async def send_frame(self, frame: DmxFrame) -> None: + await self._ensure_connected() + assert self._adapter is not None + + try: + await asyncio.to_thread( + self._adapter.send_frame, + self._status.selected_universe, + frame.values.copy(), + ) + except Exception as exc: + self._status.connected = False + self._status.degraded = True + self._status.last_error = str(exc) + self._status.send_errors += 1 + await self._disconnect() + raise + + self._status.connected = True + self._status.degraded = False + self._status.last_error = None + self._status.frames_sent += 1 + self._status.last_successful_frame = utc_now() + + def get_status(self) -> BackendStatus: + return self._status + + async def _ensure_connected(self) -> None: + if self._adapter is not None: + return + adapter = self._adapter_factory() + await asyncio.to_thread(adapter.open) + self._adapter = adapter + self._status.connected = True + self._status.degraded = False + self._status.last_error = None + if self._has_connected_once: + self._status.reconnect_count += 1 + else: + self._has_connected_once = True + self._status.connected_since = utc_now() + + async def _disconnect(self) -> None: + if self._adapter is None: + return + adapter = self._adapter + self._adapter = None + await asyncio.to_thread(adapter.close) + + +ARTNET_PORT = 6454 +ARTNET_HEADER = b"Art-Net\x00" +ARTNET_OPCODE_POLL = 0x2000 +ARTNET_OPCODE_POLL_REPLY = 0x2100 +ARTNET_OPCODE_DMX = 0x5000 + + +def build_artnet_dmx_packet(universe: int, values: list[int], sequence: int = 1) -> bytes: + dmx_values = bytes(array("B", values[:512] + [0] * max(0, 512 - len(values)))) + port_address = max(0, universe - 1) + sub_uni = port_address & 0xFF + net = (port_address >> 8) & 0x7F + length = len(dmx_values) + return b"".join( + [ + ARTNET_HEADER, + struct.pack("H", length), + dmx_values, + ] + ) + + +def build_artnet_poll_packet() -> bytes: + return b"".join( + [ + ARTNET_HEADER, + struct.pack(" ArtNetNode | None: + if len(packet) < 190 or not packet.startswith(ARTNET_HEADER): + return None + opcode = struct.unpack_from("H", packet, 172)[0] + sw_out_0 = packet[190] if len(packet) > 190 else 0 + raw_port_address = (net << 8) | sw_out_0 + return ArtNetNode( + ip=ip, + short_name=short_name, + long_name=long_name, + net=net, + sub_switch=sub_switch, + port_count=port_count, + raw_port_address=raw_port_address, + ) + + +def discover_artnet_nodes(timeout_s: float = 1.0) -> list[ArtNetNode]: + nodes: dict[str, ArtNetNode] = {} + poll_packet = build_artnet_poll_packet() + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + try: + sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(("", 0)) + sock.settimeout(max(0.05, timeout_s / 5)) + sock.sendto(poll_packet, ("255.255.255.255", ARTNET_PORT)) + deadline = datetime.now(UTC).timestamp() + timeout_s + while datetime.now(UTC).timestamp() < deadline: + try: + packet, _addr = sock.recvfrom(1024) + except socket.timeout: + continue + node = parse_artnet_poll_reply(packet) + if node is not None: + nodes[node.ip] = node + finally: + sock.close() + return sorted(nodes.values(), key=lambda item: (item.long_name or item.short_name or item.ip, item.ip)) + + +class ArtNetDmxBackend(DmxBackend): + def __init__( + self, + *, + universe: int = 1, + target_host: str = "255.255.255.255", + output_port: str | None = None, + ) -> None: + self._target_host = target_host + self._sequence = 0 + self._socket: socket.socket | None = None + self._status = BackendStatus( + connected=False, + degraded=True, + last_error="Afventer Artnet socket", + backend_name="artnet", + device_name=f"Art-Net output {target_host}", + selected_universe=universe, + selected_output_port=output_port or target_host, + ) + + async def startup(self) -> None: + if self._socket is not None: + return + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + self._socket = sock + self._status.connected = True + self._status.degraded = False + self._status.last_error = None + self._status.connected_since = utc_now() + + async def shutdown(self) -> None: + if self._socket is not None: + self._socket.close() + self._socket = None + self._status.connected = False + + async def send_frame(self, frame: DmxFrame) -> None: + if self._socket is None: + await self.startup() + assert self._socket is not None + self._sequence = (self._sequence + 1) % 256 + packet = build_artnet_dmx_packet(self._status.selected_universe, frame.values.copy(), self._sequence) + try: + self._socket.sendto(packet, (self._target_host, ARTNET_PORT)) + except OSError as exc: + self._status.connected = False + self._status.degraded = True + self._status.last_error = str(exc) + self._status.send_errors += 1 + raise RuntimeError(str(exc)) from exc + + self._status.connected = True + self._status.degraded = False + self._status.last_error = None + self._status.frames_sent += 1 + self._status.last_successful_frame = utc_now() + + def get_status(self) -> BackendStatus: + return self._status + + +class SimulatorDmxBackend(DmxBackend): + def __init__(self, universe: int = 1) -> None: + self._status = BackendStatus( + selected_universe=universe, + selected_output_port="simulator", + device_name=f"Simulator universe {universe}", + ) + self._history: deque[DmxFrame] = deque(maxlen=120) + self._faults: set[str] = set() + + def inject_fault(self, fault: str, enabled: bool) -> None: + if enabled: + self._faults.add(fault) + else: + self._faults.discard(fault) + + def history(self) -> list[DmxFrame]: + return list(self._history) + + async def send_frame(self, frame: DmxFrame) -> None: + if "ola_unavailable" in self._faults: + self._record_error("OLA utilgaengelig i simulator") + raise RuntimeError(self._status.last_error or "Simulatorfejl") + if "usb_disconnected" in self._faults: + self._record_error("USB-DMX er frakoblet i simulator") + raise RuntimeError(self._status.last_error or "Simulatorfejl") + if "send_timeout" in self._faults: + await asyncio.sleep(0.25) + self._record_error("Simuleret send timeout") + raise TimeoutError(self._status.last_error or "Simuleret send timeout") + + await asyncio.sleep(self._status.latency_ms / 1000) + was_connected = self._status.connected + self._status.connected = True + self._status.degraded = "slow_backend" in self._faults + self._status.last_error = None + self._status.frames_sent += 1 + self._status.last_successful_frame = utc_now() + if not was_connected: + self._status.connected_since = utc_now() + self._status.reconnect_count += 1 + self._history.append(frame.copy()) + + def get_status(self) -> BackendStatus: + return self._status + + def _record_error(self, message: str) -> None: + self._status.connected = False + self._status.degraded = True + self._status.last_error = message + self._status.send_errors += 1 + + +class FakeOlaClientAdapter: + def __init__( + self, + *, + output_port: str = "mock-port-1", + open_results: list[Exception | None] | None = None, + send_results: list[Exception | None] | None = None, + ) -> None: + self.output_port = output_port + self.open_results: deque[Exception | None] = deque(open_results or []) + self.send_results: deque[Exception | None] = deque(send_results or []) + self.is_open = False + self.open_calls = 0 + self.close_calls = 0 + self.sent_frames: list[tuple[int, list[int]]] = [] + + def open(self) -> None: + self.open_calls += 1 + if self.open_results: + outcome = self.open_results.popleft() + if outcome is not None: + raise outcome + self.is_open = True + + def close(self) -> None: + self.close_calls += 1 + self.is_open = False + + def send_frame(self, universe: int, values: list[int]) -> None: + if not self.is_open: + raise RuntimeError("Mock OLA-adapter er ikke aaben") + self.sent_frames.append((universe, values.copy())) + if self.send_results: + outcome = self.send_results.popleft() + if outcome is not None: + raise outcome + + +FakeOlaAdapter = FakeOlaClientAdapter diff --git a/backend/app/dmx/engine.py b/backend/app/dmx/engine.py new file mode 100644 index 0000000..a38152a --- /dev/null +++ b/backend/app/dmx/engine.py @@ -0,0 +1,137 @@ +from __future__ import annotations + +import asyncio +import logging +import time +from collections import deque +from datetime import UTC, datetime + +from app.core.config import get_settings +from app.dmx.backends import DmxBackend, SimulatorDmxBackend +from app.dmx.frame import DmxFrame, FrameLayer, merge_layers +from app.telemetry.service import TelemetryService + +logger = logging.getLogger(__name__) + + +class DmxEngine: + def __init__(self, telemetry: TelemetryService, backend: DmxBackend | None = None) -> None: + self._settings = get_settings() + self.telemetry = telemetry + self.backend = backend or SimulatorDmxBackend() + self.layers: dict[str, FrameLayer] = {} + self.blackout = False + self.freeze = False + self.master = 255 + self.current_frame = DmxFrame() + self.current_frames: dict[int, DmxFrame] = {1: DmxFrame()} + self._task: asyncio.Task[None] | None = None + self._running = False + self._frame_times: deque[float] = deque(maxlen=120) + + @property + def is_running(self) -> bool: + return self._running + + async def start(self) -> None: + if self._running: + return + await self.backend.startup() + self._running = True + self._task = asyncio.create_task(self._loop()) + + async def stop(self) -> None: + self._running = False + if self._task is not None: + self._task.cancel() + try: + await self._task + except asyncio.CancelledError: + pass + self._task = None + await self.backend.shutdown() + + def configure_backend(self, backend: DmxBackend) -> None: + self.backend = backend + + async def replace_backend(self, backend: DmxBackend) -> None: + was_running = self._running + if was_running: + await self.stop() + self.backend = backend + selected_universe = self.backend.get_status().selected_universe + self.current_frame = DmxFrame(universe=selected_universe) + self.current_frames = {selected_universe: self.current_frame.copy()} + if was_running: + await self.start() + + async def _loop(self) -> None: + interval = 1 / self._settings.target_fps + while self._running: + started = time.perf_counter() + try: + if not self.freeze: + frames = merge_layers(list(self.layers.values()), blackout=self.blackout) + if self.master < 255: + for frame in frames.values(): + frame.values = [int((value / 255) * self.master) for value in frame.values] + self.current_frames = {universe: frame.copy() for universe, frame in frames.items()} + selected_universe = self.backend.get_status().selected_universe + frame = self.current_frames.get(selected_universe, DmxFrame(universe=selected_universe)) + self.current_frame = frame.copy() + await self.backend.send_frame(frame) + self.telemetry.record_send_success(self.backend.get_status()) + self._frame_times.append(time.perf_counter() - started) + except Exception as exc: + logger.exception("DMX send failed") + self.telemetry.record_send_failure(str(exc), self.backend.get_status()) + elapsed = time.perf_counter() - started + await asyncio.sleep(max(0, interval - elapsed)) + + def set_layer(self, layer: FrameLayer) -> None: + self.layers[layer.name] = layer + + def remove_layer(self, name: str) -> None: + self.layers.pop(name, None) + + def trigger_blackout(self) -> None: + self.blackout = True + + def release_blackout(self) -> None: + self.blackout = False + + def get_frame(self, universe: int) -> DmxFrame: + frame = self.current_frames.get(universe) + if frame is None: + return DmxFrame(universe=universe) + return frame.copy() + + def snapshot(self) -> dict[str, object]: + status = self.backend.get_status() + fps = 0.0 + if self._frame_times: + average = sum(self._frame_times) / len(self._frame_times) + if average > 0: + fps = 1 / average + return { + "backend": status.backend_name, + "connected": status.connected, + "degraded": status.degraded, + "last_error": status.last_error, + "last_successful_frame": status.last_successful_frame.isoformat() + if status.last_successful_frame is not None + else None, + "frames_sent": status.frames_sent, + "send_errors": status.send_errors, + "reconnect_count": status.reconnect_count, + "selected_universe": status.selected_universe, + "selected_output_port": status.selected_output_port, + "available_universes": sorted(self.current_frames), + "blackout": self.blackout, + "freeze": self.freeze, + "master": self.master, + "fps": round(fps, 2), + "frame": self.current_frame.values, + "source_map": self.current_frame.source_map, + "updated_at": datetime.now(UTC).isoformat(), + } diff --git a/backend/app/dmx/frame.py b/backend/app/dmx/frame.py new file mode 100644 index 0000000..ef5accd --- /dev/null +++ b/backend/app/dmx/frame.py @@ -0,0 +1,91 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from datetime import UTC, datetime + + +def clamp_channel(value: int) -> int: + return max(0, min(255, int(value))) + + +@dataclass(slots=True) +class FrameLayer: + name: str + priority: int + values_by_universe: dict[int, dict[int, int]] + precedence_map_by_universe: dict[int, dict[int, str]] = field(default_factory=dict) + created_at: datetime = field(default_factory=lambda: datetime.now(UTC)) + + @property + def values(self) -> dict[int, int]: + return self.values_by_universe.get(1, {}) + + @property + def precedence_map(self) -> dict[int, str]: + return self.precedence_map_by_universe.get(1, {}) + + @classmethod + def from_channel_values( + cls, + name: str, + priority: int, + values: dict[int, int], + precedence_map: dict[int, str] | None = None, + *, + universe: int = 1, + ) -> "FrameLayer": + return cls( + name=name, + priority=priority, + values_by_universe={universe: values}, + precedence_map_by_universe={universe: precedence_map or {}}, + ) + + +@dataclass(slots=True) +class DmxFrame: + universe: int = 1 + values: list[int] = field(default_factory=lambda: [0] * 512) + source_map: list[str] = field(default_factory=lambda: ["idle"] * 512) + + def set_channel(self, channel: int, value: int, source: str = "manual") -> None: + if not 1 <= channel <= 512: + raise ValueError("Channel must be in range 1..512") + self.values[channel - 1] = clamp_channel(value) + self.source_map[channel - 1] = source + + def copy(self) -> DmxFrame: + return DmxFrame(self.universe, self.values.copy(), self.source_map.copy()) + + +def merge_layers(layers: list[FrameLayer], blackout: bool = False) -> dict[int, DmxFrame]: + universes = sorted( + { + int(universe) + for layer in layers + for universe in layer.values_by_universe + } + ) or [1] + if blackout: + return {universe: DmxFrame(universe=universe) for universe in universes} + + ordered = sorted(layers, key=lambda layer: (layer.priority, layer.created_at)) + frames = {universe: DmxFrame(universe=universe) for universe in universes} + for universe, frame in frames.items(): + for channel in range(1, 513): + channel_candidates: list[tuple[FrameLayer, int]] = [] + for layer in ordered: + values = layer.values_by_universe.get(universe, {}) + if channel in values: + channel_candidates.append((layer, clamp_channel(values[channel]))) + if not channel_candidates: + continue + + precedence_map = channel_candidates[-1][0].precedence_map_by_universe.get(universe, {}) + precedence = precedence_map.get(channel, "ltp").lower() + if precedence == "htp": + chosen_layer, chosen_value = max(channel_candidates, key=lambda pair: pair[1]) + else: + chosen_layer, chosen_value = channel_candidates[-1] + frame.set_channel(channel, chosen_value, chosen_layer.name) + return frames diff --git a/backend/app/dmx/output_service.py b/backend/app/dmx/output_service.py new file mode 100644 index 0000000..88a90e9 --- /dev/null +++ b/backend/app/dmx/output_service.py @@ -0,0 +1,152 @@ +from __future__ import annotations + +from datetime import UTC, datetime +from typing import Literal + +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.config import get_settings +from app.core.database import SessionLocal +from app.dmx.backends import ( + ArtNetDmxBackend, + ArtNetNode, + OlaDmxBackend, + SimulatorDmxBackend, + discover_artnet_nodes, +) +from app.dmx.engine import DmxEngine +from app.models.entities import Setting + + +DMX_OUTPUT_SETTING_KEY = "dmx_output" +BackendKind = Literal["simulator", "ola", "artnet"] + + +class DmxOutputService: + def __init__( + self, + engine: DmxEngine, + session_factory: async_sessionmaker[AsyncSession] = SessionLocal, + ) -> None: + self.engine = engine + self._session_factory = session_factory + self._settings = get_settings() + self._config = self._default_config() + self._artnet_nodes: list[ArtNetNode] = [] + + async def startup(self) -> None: + await self._load_config() + self.engine.configure_backend(self._build_backend(self._config)) + + async def get_config(self) -> dict[str, object]: + return { + **self._config, + "artnet_nodes": [self._serialize_node(node) for node in self._artnet_nodes], + } + + async def save_config(self, payload: dict[str, object]) -> dict[str, object]: + normalized = self._normalize_config(payload) + self._config = normalized + await self._persist_config(normalized) + backend = self._build_backend(normalized) + if self.engine.is_running: + await self.engine.replace_backend(backend) + else: + self.engine.configure_backend(backend) + return await self.get_config() + + async def discover_artnet(self, timeout_s: float = 1.0) -> dict[str, object]: + nodes = await self._discover(timeout_s) + self._artnet_nodes = nodes + return { + "items": [self._serialize_node(node) for node in nodes], + "count": len(nodes), + } + + async def _discover(self, timeout_s: float) -> list[ArtNetNode]: + return await self._to_thread_discovery(timeout_s) + + async def _to_thread_discovery(self, timeout_s: float) -> list[ArtNetNode]: + import asyncio + + return await asyncio.to_thread(discover_artnet_nodes, timeout_s) + + async def _load_config(self) -> None: + async with self._session_factory() as session: + setting = await session.get(Setting, DMX_OUTPUT_SETTING_KEY) + if setting is None or not isinstance(setting.value, dict): + return + self._config = self._normalize_config(setting.value) + + async def _persist_config(self, config: dict[str, object]) -> None: + async with self._session_factory() as session: + setting = await session.get(Setting, DMX_OUTPUT_SETTING_KEY) + if setting is None: + setting = Setting( + key=DMX_OUTPUT_SETTING_KEY, + value=config, + updated_at=datetime.now(UTC), + ) + session.add(setting) + else: + setting.value = config + setting.updated_at = datetime.now(UTC) + await session.commit() + + def _default_config(self) -> dict[str, object]: + backend: BackendKind = "simulator" if self._settings.simulator_enabled else "ola" + return { + "backend": backend, + "universe": self._settings.ola_universe, + "output_port": self._settings.ola_output_port or "", + "target_host": "", + } + + def _normalize_config(self, payload: dict[str, object]) -> dict[str, object]: + backend = str(payload.get("backend", self._default_config()["backend"])).lower() + if backend not in {"simulator", "ola", "artnet"}: + backend = "simulator" + universe = int(payload.get("universe", self._settings.ola_universe) or self._settings.ola_universe) + output_port = str(payload.get("output_port", "") or "").strip() + target_host = str(payload.get("target_host", "") or "").strip() + if backend == "artnet" and not target_host: + target_host = "255.255.255.255" + if backend == "simulator": + output_port = "simulator" + return { + "backend": backend, + "universe": max(1, min(63999, universe)), + "output_port": output_port, + "target_host": target_host, + } + + def _build_backend(self, config: dict[str, object]): + backend = str(config["backend"]) + universe = int(config["universe"]) + output_port = str(config.get("output_port", "") or "") or None + if backend == "ola": + return OlaDmxBackend( + universe=universe, + output_port=output_port, + send_timeout_s=self._settings.ola_send_timeout_ms / 1000, + ) + if backend == "artnet": + target_host = str(config.get("target_host", "") or "255.255.255.255") + return ArtNetDmxBackend( + universe=universe, + target_host=target_host, + output_port=output_port or target_host, + ) + return SimulatorDmxBackend(universe=universe) + + def _serialize_node(self, node: ArtNetNode) -> dict[str, object]: + return { + "ip": node.ip, + "short_name": node.short_name, + "long_name": node.long_name, + "label": node.label, + "net": node.net, + "sub_switch": node.sub_switch, + "port_count": node.port_count, + "raw_port_address": node.raw_port_address, + } diff --git a/backend/app/effects/__init__.py b/backend/app/effects/__init__.py new file mode 100644 index 0000000..37d38e7 --- /dev/null +++ b/backend/app/effects/__init__.py @@ -0,0 +1,2 @@ +"""Effect runtime services.""" + diff --git a/backend/app/effects/service.py b/backend/app/effects/service.py new file mode 100644 index 0000000..0b1fd28 --- /dev/null +++ b/backend/app/effects/service.py @@ -0,0 +1,163 @@ +from __future__ import annotations + +import asyncio +from dataclasses import dataclass +from time import monotonic + +from app.bpm.service import BpmService +from app.dmx.engine import DmxEngine +from app.dmx.frame import FrameLayer +from app.models.schemas import EffectPayload + + +@dataclass(slots=True) +class ActiveEffect: + slug: str + started_at: float + duration_ms: int + sync_mode: str = "manual" + + +class EffectService: + def __init__(self, engine: DmxEngine, bpm: BpmService) -> None: + self.engine = engine + self.bpm = bpm + self.effects: dict[str, EffectPayload] = {} + self.active_effects: dict[str, ActiveEffect] = {} + self._effect_tasks: dict[str, asyncio.Task[None]] = {} + + def save(self, payload: EffectPayload) -> EffectPayload: + self.effects[payload.slug] = payload + return payload + + def list(self) -> list[EffectPayload]: + return list(self.effects.values()) + + def trigger(self, slug: str) -> EffectPayload: + effect = self.effects[slug] + self.stop(slug) + + if effect.effect_type == "beat-flash": + self._effect_tasks[slug] = asyncio.create_task( + self._run_beat_flash(effect), + name=f"tuxdmx-effect-{slug}", + ) + self.active_effects[slug] = ActiveEffect( + slug=slug, + started_at=monotonic(), + duration_ms=self._coerce_duration_ms(effect.parameters.get("duration_ms"), fallback=180), + sync_mode="bpm", + ) + return effect + + values_by_universe, precedence_map_by_universe = self._resolve_channel_maps(effect) + duration_ms = self._coerce_duration_ms(effect.parameters.get("duration_ms"), fallback=5000) + self.engine.set_layer( + FrameLayer( + name=f"effect:{slug}", + priority=effect.priority, + values_by_universe=values_by_universe, + precedence_map_by_universe=precedence_map_by_universe, + ) + ) + self.active_effects[slug] = ActiveEffect( + slug=slug, + started_at=monotonic(), + duration_ms=duration_ms, + sync_mode="static", + ) + return effect + + def stop(self, slug: str) -> None: + task = self._effect_tasks.pop(slug, None) + if task is not None: + task.cancel() + self.engine.remove_layer(f"effect:{slug}") + self.active_effects.pop(slug, None) + + async def shutdown(self) -> None: + for slug in list(self._effect_tasks): + self.stop(slug) + tasks = list(self._effect_tasks.values()) + self._effect_tasks.clear() + for task in tasks: + try: + await task + except asyncio.CancelledError: + pass + + async def _run_beat_flash(self, effect: EffectPayload) -> None: + slug = effect.slug + values_by_universe, precedence_map_by_universe = self._resolve_channel_maps(effect) + if not any(values_by_universe.values()): + return + + pulse_ms = self._coerce_duration_ms(effect.parameters.get("duration_ms"), fallback=180) + pulse_seconds = max(0.05, pulse_ms / 1000) + last_seen_beat = self.bpm.beat_counter + next_manual_pulse_at = monotonic() + + try: + while True: + bpm_value = max(40.0, min(220.0, float(self.bpm.current_bpm))) + beat_interval = max(0.2, 60.0 / bpm_value) + should_pulse = False + + if self.bpm.audio_connected: + if self.bpm.beat_counter != last_seen_beat: + last_seen_beat = self.bpm.beat_counter + should_pulse = True + else: + await asyncio.sleep(0.02) + continue + else: + now = monotonic() + if now >= next_manual_pulse_at: + next_manual_pulse_at = now + beat_interval + should_pulse = True + else: + await asyncio.sleep(min(0.05, next_manual_pulse_at - now)) + continue + + if not should_pulse: + continue + + self.engine.set_layer( + FrameLayer( + name=f"effect:{slug}", + priority=effect.priority, + values_by_universe=values_by_universe, + precedence_map_by_universe=precedence_map_by_universe, + ) + ) + await asyncio.sleep(min(pulse_seconds, beat_interval * 0.8)) + self.engine.remove_layer(f"effect:{slug}") + except asyncio.CancelledError: + self.engine.remove_layer(f"effect:{slug}") + raise + + def _resolve_channel_maps(self, effect: EffectPayload) -> tuple[dict[int, dict[int, int]], dict[int, dict[int, str]]]: + raw_channels = effect.parameters.get("channels", {}) + raw_precedence = effect.parameters.get("precedence", {}) + channels = raw_channels if isinstance(raw_channels, dict) else {} + precedence = raw_precedence if isinstance(raw_precedence, dict) else {} + values = { + int(channel): int(value) + for channel, value in channels.items() + } + precedence_map = { + int(channel): str(value) + for channel, value in precedence.items() + } + universe = int(effect.parameters.get("universe", 1) or 1) + return {universe: values}, {universe: precedence_map} + + def _coerce_duration_ms(self, raw_value: object, fallback: int) -> int: + if isinstance(raw_value, (int, float)): + return max(50, int(raw_value)) + if isinstance(raw_value, str): + try: + return max(50, int(float(raw_value))) + except ValueError: + return fallback + return fallback diff --git a/backend/app/fixtures/__init__.py b/backend/app/fixtures/__init__.py new file mode 100644 index 0000000..4ecaa63 --- /dev/null +++ b/backend/app/fixtures/__init__.py @@ -0,0 +1,2 @@ +"""Fixture import and normalization.""" + diff --git a/backend/app/fixtures/normalize.py b/backend/app/fixtures/normalize.py new file mode 100644 index 0000000..8f08675 --- /dev/null +++ b/backend/app/fixtures/normalize.py @@ -0,0 +1,107 @@ +from __future__ import annotations + + +def normalize_fixture( + payload: dict[str, object], manufacturer_key: str, fixture_key: str +) -> dict[str, object]: + modes = payload.get("modes", []) + available_channels = payload.get("availableChannels", {}) + normalized_modes: list[dict[str, object]] = [] + for mode in modes if isinstance(modes, list) else []: + channels = mode.get("channels", []) if isinstance(mode, dict) else [] + normalized_channels: list[dict[str, object]] = [] + for index, channel in enumerate(channels, start=1): + if isinstance(channel, str): + channel_definition = ( + available_channels.get(channel, {}) + if isinstance(available_channels, dict) + else {} + ) + capability = ( + channel_definition.get("capability") + if isinstance(channel_definition, dict) + else None + ) + capabilities = ( + channel_definition.get("capabilities") + if isinstance(channel_definition, dict) + else None + ) + channel_capabilities = ( + capabilities + if isinstance(capabilities, list) + else [capability] + if capability is not None + else [] + ) + capability_types = [ + str(item.get("type", "")).lower() + for item in channel_capabilities + if isinstance(item, dict) + ] + normalized_channels.append( + { + "index": index, + "key": channel, + "display_name": channel.replace("-", " ").title(), + "precedence": ( + "htp" + if "dim" in channel.lower() or "intensity" in capability_types + else "ltp" + ), + "resolution": 8, + "capabilities": channel_capabilities, + } + ) + elif isinstance(channel, dict): + key = str( + channel.get("name", channel.get("key", channel.get("display_name", f"channel-{index}"))) + ) + capability = channel.get("capability") + capabilities = channel.get("capabilities") + channel_capabilities = ( + capabilities + if isinstance(capabilities, list) + else [capability] + if capability is not None + else [] + ) + normalized_channels.append( + { + "index": index, + "key": key, + "display_name": str(channel.get("display_name", key)), + "precedence": str( + channel.get( + "precedence", + "htp" if "dim" in key.lower() else "ltp", + ) + ).lower(), + "resolution": int(channel.get("resolution", 8)), + "capabilities": channel_capabilities, + } + ) + normalized_modes.append( + { + "key": ( + str(mode.get("name", mode.get("key", "default"))) + if isinstance(mode, dict) + else "default" + ), + "channel_count": len(normalized_channels), + "channels": normalized_channels, + } + ) + return { + "manufacturer": manufacturer_key, + "model": payload.get("name", fixture_key), + "short_name": payload.get("shortName"), + "categories": payload.get("categories", []), + "modes": normalized_modes, + "schema_version": payload.get("$schema", "unknown"), + "source": { + "manufacturer_key": manufacturer_key, + "fixture_key": fixture_key, + }, + "warnings": [], + } diff --git a/backend/app/fixtures/ofl.py b/backend/app/fixtures/ofl.py new file mode 100644 index 0000000..ae62207 --- /dev/null +++ b/backend/app/fixtures/ofl.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +import json +from pathlib import Path + +import httpx + + +class OflClient: + search_url = "https://open-fixture-library.org/api/v1/get-search-results" + fixture_base = "https://open-fixture-library.org" + + async def search(self, query: str) -> list[dict[str, object]]: + fallback = self._search_local(query) + try: + async with httpx.AsyncClient(timeout=6.0) as client: + response = await client.post( + self.search_url, + json={ + "searchQuery": query, + "manufacturersQuery": [], + "categoriesQuery": [], + }, + ) + response.raise_for_status() + keys = response.json() + return [{"fixture_key": key, "cached": False} for key in keys] + except Exception: + return fallback + + async def fetch_fixture(self, manufacturer_key: str, fixture_key: str) -> dict[str, object]: + local_path = Path("test-data/fixtures") / f"{manufacturer_key}__{fixture_key}.json" + if local_path.exists(): + return json.loads(local_path.read_text(encoding="utf-8")) + + url = f"{self.fixture_base}/{manufacturer_key}/{fixture_key}.json" + async with httpx.AsyncClient(timeout=10.0) as client: + response = await client.get(url) + response.raise_for_status() + return response.json() + + def _search_local(self, query: str) -> list[dict[str, object]]: + results: list[dict[str, object]] = [] + lowered = query.lower() + for path in Path("test-data/fixtures").glob("*.json"): + if lowered in path.stem.lower(): + results.append({"fixture_key": path.stem.replace("__", "/"), "cached": True}) + return results diff --git a/backend/app/fixtures/service.py b/backend/app/fixtures/service.py new file mode 100644 index 0000000..3da5c93 --- /dev/null +++ b/backend/app/fixtures/service.py @@ -0,0 +1,289 @@ +from __future__ import annotations + +import hashlib +import json +from pathlib import Path +from typing import Any + +from sqlalchemy import delete, select +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.fixtures.normalize import normalize_fixture +from app.fixtures.ofl import OflClient +from app.models.entities import FixtureDefinition, FixtureInstance, FixtureSource + + +class FixtureService: + def __init__( + self, + session_factory: async_sessionmaker[AsyncSession] = SessionLocal, + client: OflClient | None = None, + ) -> None: + self._session_factory = session_factory + self.client = client or OflClient() + self.test_data_path = Path("test-data/fixtures") + + async def search_ofl(self, query: str) -> list[dict[str, object]]: + if not query.strip(): + return [] + return await self.client.search(query) + + async def preview_ofl(self, manufacturer_key: str, fixture_key: str) -> dict[str, object]: + fixture = await self.client.fetch_fixture(manufacturer_key, fixture_key) + return normalize_fixture(fixture, manufacturer_key, fixture_key) + + async def import_ofl(self, manufacturer_key: str, fixture_key: str) -> dict[str, object]: + source_payload = await self.client.fetch_fixture(manufacturer_key, fixture_key) + normalized = normalize_fixture(source_payload, manufacturer_key, fixture_key) + return await self._upsert_fixture(normalized, source_payload) + + async def import_payload(self, payload: dict[str, object]) -> dict[str, object]: + normalized = self._normalize_import_payload(payload) + return await self._upsert_fixture(normalized, payload) + + async def list_fixtures(self) -> list[dict[str, object]]: + async with self._session_factory() as session: + result = await session.execute(select(FixtureDefinition).order_by(FixtureDefinition.created_at, FixtureDefinition.id)) + definitions = result.scalars().all() + return [self._serialize_definition(definition) for definition in definitions] + + async def get_fixture(self, fixture_id: int) -> dict[str, object]: + async with self._session_factory() as session: + definition = await session.get(FixtureDefinition, fixture_id) + if definition is None: + raise LookupError("Fixture not found") + return self._serialize_definition(definition) + + async def update_fixture(self, fixture_id: int, payload: dict[str, object]) -> dict[str, object]: + async with self._session_factory() as session: + definition = await session.get(FixtureDefinition, fixture_id) + if definition is None: + raise LookupError("Fixture not found") + + existing = dict(definition.normalized_data) + merged = dict(existing) + for key in ("manufacturer", "model", "short_name", "categories", "modes", "schema_version", "source", "warnings"): + if key in payload: + merged[key] = payload[key] + + definition.manufacturer = str(merged.get("manufacturer", definition.manufacturer)) + definition.model = str(merged.get("model", definition.model)) + definition.short_name = self._optional_str(merged.get("short_name")) + definition.categories = self._string_list(merged.get("categories", [])) + definition.normalized_data = merged + await session.commit() + await session.refresh(definition) + return self._serialize_definition(definition) + + async def delete_fixture(self, fixture_id: int) -> None: + async with self._session_factory() as session: + definition = await session.get(FixtureDefinition, fixture_id) + if definition is None: + raise LookupError("Fixture not found") + + await session.execute(delete(FixtureInstance).where(FixtureInstance.definition_id == fixture_id)) + source_id = definition.source_id + await session.delete(definition) + await session.flush() + if source_id is not None: + result = await session.execute( + select(FixtureDefinition).where( + FixtureDefinition.source_id == source_id, + FixtureDefinition.id != fixture_id, + ).limit(1) + ) + if result.scalar_one_or_none() is None: + source = await session.get(FixtureSource, source_id) + if source is not None: + await session.delete(source) + await session.commit() + + async def _upsert_fixture( + self, + normalized: dict[str, object], + source_payload: dict[str, object], + ) -> dict[str, object]: + source = normalized.get("source", {}) + manufacturer_key = str(source.get("manufacturer_key", "custom")) if isinstance(source, dict) else "custom" + fixture_key = str(source.get("fixture_key", "custom")) if isinstance(source, dict) else "custom" + slug = f"{manufacturer_key}/{fixture_key}" + payload_hash = hashlib.sha256(json.dumps(source_payload, sort_keys=True).encode("utf-8")).hexdigest() + schema_ref = str(normalized.get("schema_version", "unknown")) + source_url = str(source_payload.get("oflURL", "")) if isinstance(source_payload, dict) else "" + + async with self._session_factory() as session: + fixture_source = await self._upsert_source( + session, + manufacturer_key=manufacturer_key, + fixture_key=fixture_key, + schema_ref=schema_ref, + source_url=source_url, + payload=source_payload, + payload_hash=payload_hash, + ) + + result = await session.execute(select(FixtureDefinition).where(FixtureDefinition.slug == slug)) + definition = result.scalar_one_or_none() + if definition is None: + definition = FixtureDefinition( + slug=slug, + manufacturer=str(normalized.get("manufacturer", manufacturer_key)), + model=str(normalized.get("model", fixture_key)), + short_name=self._optional_str(normalized.get("short_name")), + categories=self._string_list(normalized.get("categories", [])), + normalized_data=normalized, + source_id=fixture_source.id, + ) + session.add(definition) + else: + definition.manufacturer = str(normalized.get("manufacturer", definition.manufacturer)) + definition.model = str(normalized.get("model", definition.model)) + definition.short_name = self._optional_str(normalized.get("short_name")) + definition.categories = self._string_list(normalized.get("categories", [])) + definition.normalized_data = normalized + definition.source_id = fixture_source.id + + await session.commit() + await session.refresh(definition) + return self._serialize_definition(definition) + + async def _upsert_source( + self, + session: AsyncSession, + *, + manufacturer_key: str, + fixture_key: str, + schema_ref: str, + source_url: str, + payload: dict[str, object], + payload_hash: str, + ) -> FixtureSource: + result = await session.execute( + select(FixtureSource).where( + FixtureSource.manufacturer_key == manufacturer_key, + FixtureSource.fixture_key == fixture_key, + ) + ) + fixture_source = result.scalar_one_or_none() + if fixture_source is None: + fixture_source = FixtureSource( + manufacturer_key=manufacturer_key, + fixture_key=fixture_key, + schema_ref=schema_ref, + source_url=source_url, + payload=payload, + payload_hash=payload_hash, + ) + session.add(fixture_source) + await session.flush() + return fixture_source + + fixture_source.schema_ref = schema_ref + fixture_source.source_url = source_url + fixture_source.payload = payload + fixture_source.payload_hash = payload_hash + await session.flush() + return fixture_source + + def _serialize_definition(self, definition: FixtureDefinition) -> dict[str, object]: + normalized = dict(definition.normalized_data) + return { + "id": definition.id, + "slug": definition.slug, + "manufacturer": definition.manufacturer, + "model": definition.model, + "short_name": definition.short_name, + "categories": definition.categories, + "modes": normalized.get("modes", []), + "schema_version": normalized.get("schema_version", "unknown"), + "source": normalized.get("source", {}), + "warnings": normalized.get("warnings", []), + } + + def _normalize_import_payload(self, payload: dict[str, object]) -> dict[str, object]: + if self._looks_like_ofl_fixture(payload): + source_payload = payload.get("source", {}) + source = source_payload if isinstance(source_payload, dict) else {} + manufacturer_key = str(source.get("manufacturer_key", payload.get("manufacturer_key", "custom"))) + fixture_key = str( + source.get( + "fixture_key", + payload.get("fixture_key", str(payload.get("name", "custom-fixture")).lower().replace(" ", "-")), + ) + ) + normalized = normalize_fixture(payload, manufacturer_key, fixture_key) + manufacturer_name = payload.get("manufacturer") + if manufacturer_name not in (None, ""): + normalized["manufacturer"] = str(manufacturer_name) + return normalized + return self._normalize_custom_payload(payload) + + def _normalize_custom_payload(self, payload: dict[str, object]) -> dict[str, object]: + manufacturer = str(payload.get("manufacturer", "custom")) + model = str(payload.get("model", payload.get("name", "Custom fixture"))) + source_payload = payload.get("source", {}) + source = source_payload if isinstance(source_payload, dict) else {} + manufacturer_key = str(source.get("manufacturer_key", manufacturer.lower().replace(" ", "-"))) + fixture_key = str(source.get("fixture_key", model.lower().replace(" ", "-"))) + raw_modes = payload.get("modes", []) + modes: list[dict[str, object]] = [] + for index, mode in enumerate(raw_modes if isinstance(raw_modes, list) else [], start=1): + if not isinstance(mode, dict): + continue + raw_channels = mode.get("channels", []) + channels: list[dict[str, object]] = [] + for channel_index, channel in enumerate(raw_channels if isinstance(raw_channels, list) else [], start=1): + if isinstance(channel, dict): + channels.append( + { + "index": int(channel.get("index", channel_index)), + "key": str(channel.get("key", channel.get("display_name", f"channel-{channel_index}"))), + "display_name": str(channel.get("display_name", channel.get("key", f"Channel {channel_index}"))), + "precedence": str(channel.get("precedence", "ltp")).lower(), + "resolution": int(channel.get("resolution", 8)), + "capabilities": channel.get("capabilities", []), + } + ) + elif isinstance(channel, str): + channels.append( + { + "index": channel_index, + "key": channel, + "display_name": channel, + "precedence": "htp" if "dim" in channel.lower() else "ltp", + "resolution": 8, + "capabilities": [], + } + ) + modes.append( + { + "key": str(mode.get("key", mode.get("name", f"mode-{index}"))), + "channel_count": int(mode.get("channel_count", len(channels))), + "channels": channels, + } + ) + return { + "manufacturer": manufacturer, + "model": model, + "short_name": payload.get("short_name"), + "categories": self._string_list(payload.get("categories", [])), + "modes": modes, + "schema_version": str(payload.get("schema_version", "custom")), + "source": { + "manufacturer_key": manufacturer_key, + "fixture_key": fixture_key, + }, + "warnings": payload.get("warnings", []), + } + + def _string_list(self, values: object) -> list[str]: + if not isinstance(values, list): + return [] + return [str(value) for value in values] + + def _optional_str(self, value: object) -> str | None: + return str(value) if value not in (None, "") else None + + def _looks_like_ofl_fixture(self, payload: dict[str, object]) -> bool: + return isinstance(payload.get("availableChannels"), dict) and isinstance(payload.get("modes"), list) diff --git a/backend/app/homeassistant/service.py b/backend/app/homeassistant/service.py new file mode 100644 index 0000000..f8e743e --- /dev/null +++ b/backend/app/homeassistant/service.py @@ -0,0 +1,869 @@ +from __future__ import annotations + +import asyncio +import logging +from dataclasses import dataclass +from datetime import UTC, datetime +from time import monotonic +from typing import Any, Protocol + +import httpx +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.dmx.engine import DmxEngine +from app.models.entities import Setting + + +logger = logging.getLogger(__name__) + +HA_CONFIG_KEY = "home_assistant_config" +HA_MAPPINGS_KEY = "home_assistant_mappings" +SWITCH_ON_THRESHOLD = 140 +SWITCH_OFF_THRESHOLD = 115 +EDGE_TRIGGER_THRESHOLD = 128 +ON_OFF_ENTITY_DOMAINS = {"light", "switch", "input_boolean"} +TRIGGER_ENTITY_DOMAINS = {"scene", "automation"} + + +class HomeAssistantAdapter(Protocol): + async def get_api_root(self, base_url: str, token: str) -> dict[str, object]: ... + + async def get_config(self, base_url: str, token: str) -> dict[str, object]: ... + + async def list_entities(self, base_url: str, token: str) -> list[dict[str, object]]: ... + + async def call_service( + self, + base_url: str, + token: str, + domain: str, + service: str, + data: dict[str, object], + ) -> dict[str, object]: ... + + +class HttpxHomeAssistantAdapter: + def __init__(self, timeout_s: float = 2.0) -> None: + self.timeout_s = timeout_s + + async def get_api_root(self, base_url: str, token: str) -> dict[str, object]: + return await self._get_json(base_url, token, "/api/") + + async def get_config(self, base_url: str, token: str) -> dict[str, object]: + return await self._get_json(base_url, token, "/api/config") + + async def list_entities(self, base_url: str, token: str) -> list[dict[str, object]]: + payload = await self._get_json(base_url, token, "/api/states") + if not isinstance(payload, list): + return [] + return [item for item in payload if isinstance(item, dict)] + + async def call_service( + self, + base_url: str, + token: str, + domain: str, + service: str, + data: dict[str, object], + ) -> dict[str, object]: + async with httpx.AsyncClient(timeout=self.timeout_s) as client: + response = await client.post( + f"{base_url.rstrip('/')}/api/services/{domain}/{service}", + headers=self._headers(token), + json=data, + ) + response.raise_for_status() + payload = response.json() + return payload if isinstance(payload, dict) else {"result": payload} + + async def _get_json(self, base_url: str, token: str, path: str) -> dict[str, object] | list[object]: + async with httpx.AsyncClient(timeout=self.timeout_s) as client: + response = await client.get( + f"{base_url.rstrip('/')}{path}", + headers=self._headers(token), + ) + response.raise_for_status() + payload = response.json() + if isinstance(payload, (dict, list)): + return payload + return {} + + def _headers(self, token: str) -> dict[str, str]: + return { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + } + + +@dataclass(slots=True) +class MappingRuntime: + last_dmx_values: list[int] + last_sent_raw_values: list[int] | None = None + last_sent_summary: str | None = None + last_success_at: datetime | None = None + last_error: str | None = None + last_error_at: datetime | None = None + last_service: str | None = None + in_flight: bool = False + pending_raw_values: list[int] | None = None + resync_required: bool = False + switch_state: bool | None = None + + +class HomeAssistantService: + def __init__( + self, + engine: DmxEngine, + session_factory: async_sessionmaker[AsyncSession] = SessionLocal, + adapter: HomeAssistantAdapter | None = None, + ) -> None: + self.engine = engine + self._session_factory = session_factory + self._adapter = adapter or HttpxHomeAssistantAdapter() + self._config = self._default_config() + self._token = "" + self._mappings: list[dict[str, object]] = [] + self._entities_by_id: dict[str, dict[str, object]] = {} + self._mapping_runtime: dict[int, MappingRuntime] = {} + self._mapping_tasks: dict[int, asyncio.Task[None]] = {} + self._running = False + self._task: asyncio.Task[None] | None = None + self._dispatch_count = 0 + self._error_count = 0 + self._last_error: str | None = None + self._last_successful_call_at: datetime | None = None + self._last_connection_success_at: datetime | None = None + self._last_connection_error: str | None = None + self._ha_version: str | None = None + self._auth_ok = False + self._reachable = False + + async def startup(self) -> None: + await self._load() + self._running = True + self._task = asyncio.create_task(self._loop(), name="tuxdmx-home-assistant-bridge") + + async def shutdown(self) -> None: + self._running = False + for task in list(self._mapping_tasks.values()): + task.cancel() + for task in list(self._mapping_tasks.values()): + try: + await task + except asyncio.CancelledError: + pass + self._mapping_tasks.clear() + if self._task is not None: + self._task.cancel() + try: + await self._task + except asyncio.CancelledError: + pass + self._task = None + + async def get_config(self) -> dict[str, object]: + return { + **self._config, + "has_token": bool(self._token), + "token_mask": "********" if self._token else "", + "mapping_count": len(self._mappings), + "dispatch_count": self._dispatch_count, + "error_count": self._error_count, + "last_error": self._last_error, + "last_successful_call_at": self._iso(self._last_successful_call_at), + "last_connection_success_at": self._iso(self._last_connection_success_at), + "last_connection_error": self._last_connection_error, + "ha_version": self._ha_version, + "auth_ok": self._auth_ok, + "reachable": self._reachable, + } + + async def save_config(self, payload: dict[str, object]) -> dict[str, object]: + normalized = self._normalize_config(payload) + incoming_token = str(payload.get("token", "") or "").strip() + if incoming_token: + self._token = incoming_token + self._config = normalized + await self._persist_setting( + HA_CONFIG_KEY, + { + **normalized, + "token": self._token, + }, + ) + return await self.get_config() + + async def test_connection(self) -> dict[str, object]: + base_url = str(self._config["base_url"]) + if not base_url or not self._token: + self._reachable = False + self._auth_ok = False + self._last_connection_error = "Base URL eller token mangler." + return { + "reachable": False, + "auth_ok": False, + "ha_version": self._ha_version, + "last_error": self._last_connection_error, + "last_successful_call_at": self._iso(self._last_successful_call_at), + "last_connection_success_at": self._iso(self._last_connection_success_at), + } + + try: + await self._adapter.get_api_root(base_url, self._token) + config = await self._adapter.get_config(base_url, self._token) + except httpx.HTTPStatusError as exc: + self._reachable = True + self._auth_ok = exc.response.status_code != 401 + self._last_connection_error = self._summarize_exception(exc) + return { + "reachable": self._reachable, + "auth_ok": False, + "ha_version": self._ha_version, + "last_error": self._last_connection_error, + "last_successful_call_at": self._iso(self._last_successful_call_at), + "last_connection_success_at": self._iso(self._last_connection_success_at), + } + except Exception as exc: + self._reachable = False + self._auth_ok = False + self._last_connection_error = self._summarize_exception(exc) + return { + "reachable": False, + "auth_ok": False, + "ha_version": self._ha_version, + "last_error": self._last_connection_error, + "last_successful_call_at": self._iso(self._last_successful_call_at), + "last_connection_success_at": self._iso(self._last_connection_success_at), + } + + self._reachable = True + self._auth_ok = True + self._last_connection_error = None + self._last_connection_success_at = datetime.now(UTC) + self._ha_version = str(config.get("version", "") or self._ha_version or "") + return { + "reachable": True, + "auth_ok": True, + "ha_version": self._ha_version, + "last_error": None, + "last_successful_call_at": self._iso(self._last_successful_call_at), + "last_connection_success_at": self._iso(self._last_connection_success_at), + } + + async def list_entities(self) -> dict[str, object]: + if not self._config["base_url"] or not self._token: + return {"items": []} + entities = await self._adapter.list_entities(str(self._config["base_url"]), self._token) + items: list[dict[str, object]] = [] + self._entities_by_id.clear() + for entity in entities: + normalized = self._normalize_entity(entity) + if normalized is None: + continue + self._entities_by_id[str(normalized["entity_id"])] = normalized + items.append(normalized) + items.sort(key=lambda item: (str(item["domain"]), str(item["friendly_name"]), str(item["entity_id"]))) + self._last_connection_success_at = datetime.now(UTC) + self._reachable = True + self._auth_ok = True + return {"items": items} + + async def list_mappings(self) -> dict[str, object]: + return {"items": [self._serialize_mapping(mapping) for mapping in self._mappings]} + + async def create_mapping(self, payload: dict[str, object]) -> dict[str, object]: + mapping = self._normalize_mapping(payload) + mapping["id"] = self._next_mapping_id() + self._mappings.append(mapping) + self._ensure_runtime(int(mapping["id"]), self._channel_span(mapping)) + await self._persist_mappings() + return self._serialize_mapping(mapping) + + async def update_mapping(self, mapping_id: int, payload: dict[str, object]) -> dict[str, object]: + mapping = self._find_mapping(mapping_id) + updated = self._normalize_mapping({**mapping, **payload, "id": mapping_id}) + updated["id"] = mapping_id + index = next(index for index, item in enumerate(self._mappings) if int(item["id"]) == mapping_id) + self._mappings[index] = updated + runtime = self._ensure_runtime(mapping_id, self._channel_span(updated)) + runtime.resync_required = True + await self._persist_mappings() + return self._serialize_mapping(updated) + + async def delete_mapping(self, mapping_id: int) -> dict[str, object]: + mapping = self._find_mapping(mapping_id) + task = self._mapping_tasks.pop(mapping_id, None) + if task is not None: + task.cancel() + self._mappings = [item for item in self._mappings if int(item["id"]) != mapping_id] + self._mapping_runtime.pop(mapping_id, None) + await self._persist_mappings() + return {"deleted": mapping_id, "entity_id": mapping["entity_id"]} + + async def test_mapping(self, mapping_id: int) -> dict[str, object]: + mapping = self._find_mapping(mapping_id) + raw_values = self._build_test_values(mapping) + runtime = self._ensure_runtime(mapping_id, self._channel_span(mapping)) + result = await self._dispatch_mapping(mapping, raw_values, runtime, force=True) + runtime.resync_required = True + return { + "status": "sent" if result else "skipped", + "mapping_id": mapping_id, + "entity_id": mapping["entity_id"], + } + + async def dispatch_once(self) -> None: + await self._dispatch_enabled_mappings() + await self._drain_mapping_tasks() + + async def _loop(self) -> None: + try: + while self._running: + await self._dispatch_enabled_mappings() + await asyncio.sleep(0.05) + except asyncio.CancelledError: + raise + + async def _dispatch_enabled_mappings(self) -> None: + if not bool(self._config["enabled"]): + return + if not self._config["base_url"] or not self._token: + return + self._prune_orphaned_runtimes() + for mapping in self._mappings: + mapping_id = int(mapping["id"]) + runtime = self._ensure_runtime(mapping_id, self._channel_span(mapping)) + frame = self.engine.get_frame(int(mapping["universe"])) + raw_values = self._read_raw_values(mapping, frame.values) + previous_observed = runtime.last_dmx_values.copy() + runtime.last_dmx_values = raw_values.copy() + if not bool(mapping["enabled"]): + continue + if runtime.in_flight: + runtime.pending_raw_values = raw_values.copy() + continue + if runtime.resync_required: + runtime.resync_required = False + self._schedule_dispatch(mapping, runtime, raw_values, force=True) + continue + if not self._should_dispatch(mapping, runtime, previous_observed, raw_values): + continue + self._schedule_dispatch(mapping, runtime, raw_values) + + def _schedule_dispatch( + self, + mapping: dict[str, object], + runtime: MappingRuntime, + raw_values: list[int], + *, + force: bool = False, + ) -> None: + mapping_id = int(mapping["id"]) + runtime.in_flight = True + runtime.pending_raw_values = None + task = asyncio.create_task( + self._dispatch_task(mapping_id, raw_values.copy(), force=force), + name=f"tuxdmx-ha-mapping-{mapping_id}", + ) + self._mapping_tasks[mapping_id] = task + + async def _dispatch_task(self, mapping_id: int, raw_values: list[int], *, force: bool = False) -> None: + try: + mapping = self._find_mapping(mapping_id) + except LookupError: + return + runtime = self._ensure_runtime(mapping_id, self._channel_span(mapping)) + try: + await self._dispatch_mapping(mapping, raw_values, runtime, force=force) + finally: + runtime.in_flight = False + self._mapping_tasks.pop(mapping_id, None) + pending = runtime.pending_raw_values.copy() if runtime.pending_raw_values is not None else None + runtime.pending_raw_values = None + if pending is not None and bool(mapping.get("enabled", True)): + if runtime.resync_required: + runtime.resync_required = False + self._schedule_dispatch(mapping, runtime, pending, force=True) + elif runtime.last_sent_raw_values != pending: + self._schedule_dispatch(mapping, runtime, pending) + + async def _dispatch_mapping( + self, + mapping: dict[str, object], + raw_values: list[int], + runtime: MappingRuntime, + *, + force: bool = False, + ) -> bool: + call = self._build_service_call(mapping, raw_values, runtime, force=force) + if call is None: + return False + domain, service, data, summary = call + try: + await self._adapter.call_service(str(self._config["base_url"]), self._token, domain, service, data) + except Exception as exc: + message = self._summarize_exception(exc) + runtime.last_error = message + runtime.last_error_at = datetime.now(UTC) + self._error_count += 1 + self._last_error = message + self._last_connection_error = message + self._reachable = not isinstance(exc, (httpx.ConnectError, httpx.ReadTimeout, httpx.ConnectTimeout)) + if isinstance(exc, httpx.HTTPStatusError): + self._auth_ok = exc.response.status_code != 401 + logger.warning("Home Assistant dispatch failed: %s", message) + return False + + runtime.last_error = None + runtime.last_service = f"{domain}.{service}" + runtime.last_sent_summary = summary + runtime.last_success_at = datetime.now(UTC) + runtime.last_sent_raw_values = raw_values.copy() + if mapping["fixture_type"] == "switch": + normalized = self._normalized_value(raw_values[0], mapping) + if normalized >= SWITCH_ON_THRESHOLD: + runtime.switch_state = True + elif normalized <= SWITCH_OFF_THRESHOLD: + runtime.switch_state = False + self._dispatch_count += 1 + self._last_error = None + self._last_successful_call_at = runtime.last_success_at + self._last_connection_success_at = runtime.last_success_at + self._last_connection_error = None + self._reachable = True + self._auth_ok = True + return True + + def _should_dispatch( + self, + mapping: dict[str, object], + runtime: MappingRuntime, + previous_observed: list[int], + raw_values: list[int], + ) -> bool: + fixture_type = str(mapping["fixture_type"]) + if fixture_type in {"scene", "automation"}: + previous = previous_observed[0] if previous_observed else 0 + current = raw_values[0] if raw_values else 0 + return previous < EDGE_TRIGGER_THRESHOLD <= current + + if fixture_type == "switch": + current = self._normalized_value(raw_values[0], mapping) + if runtime.switch_state is None: + if current >= SWITCH_ON_THRESHOLD: + return True + if current <= SWITCH_OFF_THRESHOLD: + return True + return False + if not runtime.switch_state and current >= SWITCH_ON_THRESHOLD: + return True + if runtime.switch_state and current <= SWITCH_OFF_THRESHOLD: + return True + return False + + previous_sent = runtime.last_sent_raw_values + if previous_sent is None: + return True + deadband = max(0, int(mapping["deadband"])) + if max(abs(current - old) for current, old in zip(raw_values, previous_sent, strict=False)) < deadband: + return False + rate_limit_hz = max(0.1, float(mapping["rate_limit_hz"])) + interval = 1.0 / rate_limit_hz + if runtime.last_success_at is None: + return True + return (monotonic() - self._datetime_to_monotonic_reference(runtime.last_success_at)) >= interval + + def _datetime_to_monotonic_reference(self, value: datetime) -> float: + delta = datetime.now(UTC) - value + return monotonic() - max(0.0, delta.total_seconds()) + + def _build_service_call( + self, + mapping: dict[str, object], + raw_values: list[int], + runtime: MappingRuntime, + *, + force: bool = False, + ) -> tuple[str, str, dict[str, object], str] | None: + fixture_type = str(mapping["fixture_type"]) + entity_id = str(mapping["entity_id"]) + transition = max(0.0, int(mapping["fade_ms"]) / 1000) + entity_domain = self._entity_domain(entity_id) + + if fixture_type == "switch": + normalized = self._normalized_value(raw_values[0], mapping) + if entity_domain not in ON_OFF_ENTITY_DOMAINS: + runtime.last_error = f"Entity {entity_id} understoetter ikke on/off-routing for fixturetype switch." + runtime.last_error_at = datetime.now(UTC) + return None + if normalized >= SWITCH_ON_THRESHOLD or force: + return (entity_domain, "turn_on", {"entity_id": entity_id}, f"{entity_domain}.turn_on {entity_id}") + if normalized <= SWITCH_OFF_THRESHOLD: + return (entity_domain, "turn_off", {"entity_id": entity_id}, f"{entity_domain}.turn_off {entity_id}") + return None + + if fixture_type == "scene": + if not force and self._normalized_value(raw_values[0], mapping) < EDGE_TRIGGER_THRESHOLD: + return None + if entity_domain != "scene": + runtime.last_error = f"Entity {entity_id} er ikke en scene." + runtime.last_error_at = datetime.now(UTC) + return None + return ("scene", "turn_on", {"entity_id": entity_id}, f"scene.turn_on {entity_id}") + + if fixture_type == "automation": + if not force and self._normalized_value(raw_values[0], mapping) < EDGE_TRIGGER_THRESHOLD: + return None + if entity_domain != "automation": + runtime.last_error = f"Entity {entity_id} er ikke en automation." + runtime.last_error_at = datetime.now(UTC) + return None + return ("automation", "trigger", {"entity_id": entity_id}, f"automation.trigger {entity_id}") + + capabilities = self._entities_by_id.get(entity_id) + if capabilities is None: + runtime.last_error = "Entity-capabilities mangler. Hent HA-enheder eller test forbindelsen først." + runtime.last_error_at = datetime.now(UTC) + return None + if entity_domain != "light": + runtime.last_error = f"Entity {entity_id} understoetter ikke fixturetype {fixture_type}." + runtime.last_error_at = datetime.now(UTC) + return None + + if fixture_type == "dimmer": + brightness = self._normalized_value(raw_values[0], mapping) + if brightness <= 0 and not force: + return ("light", "turn_off", {"entity_id": entity_id, "transition": transition}, f"light.turn_off {entity_id}") + payload: dict[str, object] = {"entity_id": entity_id, "transition": transition} + if bool(capabilities.get("supports_brightness", False)): + payload["brightness"] = max(1, brightness) + return ("light", "turn_on", payload, f"light.turn_on {entity_id} brightness={payload.get('brightness', 'on')}") + + if fixture_type == "rgb": + return self._build_rgb_call(mapping, raw_values, capabilities, transition, include_white=False, force=force) + if fixture_type == "rgbw": + return self._build_rgb_call(mapping, raw_values, capabilities, transition, include_white=True, force=force) + if fixture_type == "cct": + return self._build_cct_call(mapping, raw_values, capabilities, transition, force=force) + return None + + def _build_rgb_call( + self, + mapping: dict[str, object], + raw_values: list[int], + capabilities: dict[str, object], + transition: float, + *, + include_white: bool, + force: bool, + ) -> tuple[str, str, dict[str, object], str] | None: + entity_id = str(mapping["entity_id"]) + has_master = bool(mapping["master_dimmer"]) + offset = 1 if has_master else 0 + master = self._normalized_value(raw_values[0], mapping) if has_master else 255 + colors = [self._normalized_value(value, mapping) for value in raw_values[offset : offset + 3]] + white = self._normalized_value(raw_values[offset + 3], mapping) if include_white else 0 + scaled_colors = [int(round(color * (master / 255))) for color in colors] + scaled_white = int(round(white * (master / 255))) if include_white else 0 + brightness = master if has_master else max(scaled_colors + ([scaled_white] if include_white else [0])) + if brightness <= 0 and not force: + return ("light", "turn_off", {"entity_id": entity_id, "transition": transition}, f"light.turn_off {entity_id}") + + payload: dict[str, object] = {"entity_id": entity_id, "transition": transition} + if bool(capabilities.get("supports_brightness", False)): + payload["brightness"] = max(1, brightness) + + if include_white: + if bool(capabilities.get("supports_rgbw", False)): + payload["rgbw_color"] = scaled_colors + [scaled_white] + return ( + "light", + "turn_on", + payload, + f"light.turn_on {entity_id} rgbw={payload['rgbw_color']} brightness={payload.get('brightness', 'on')}", + ) + if bool(capabilities.get("supports_rgbww", False)): + payload["rgbww_color"] = scaled_colors + [scaled_white, 0] + return ( + "light", + "turn_on", + payload, + f"light.turn_on {entity_id} rgbww={payload['rgbww_color']} brightness={payload.get('brightness', 'on')}", + ) + return None + + if bool(capabilities.get("supports_rgb", False)): + payload["rgb_color"] = scaled_colors + return ( + "light", + "turn_on", + payload, + f"light.turn_on {entity_id} rgb={payload['rgb_color']} brightness={payload.get('brightness', 'on')}", + ) + if bool(capabilities.get("supports_rgbw", False)): + payload["rgbw_color"] = scaled_colors + [0] + return ( + "light", + "turn_on", + payload, + f"light.turn_on {entity_id} rgbw={payload['rgbw_color']} brightness={payload.get('brightness', 'on')}", + ) + if bool(capabilities.get("supports_rgbww", False)): + payload["rgbww_color"] = scaled_colors + [0, 0] + return ( + "light", + "turn_on", + payload, + f"light.turn_on {entity_id} rgbww={payload['rgbww_color']} brightness={payload.get('brightness', 'on')}", + ) + return None + + def _build_cct_call( + self, + mapping: dict[str, object], + raw_values: list[int], + capabilities: dict[str, object], + transition: float, + *, + force: bool, + ) -> tuple[str, str, dict[str, object], str] | None: + if not bool(capabilities.get("supports_color_temp_kelvin", False)): + return None + entity_id = str(mapping["entity_id"]) + has_master = bool(mapping["master_dimmer"]) + offset = 1 if has_master else 0 + master = self._normalized_value(raw_values[0], mapping) if has_master else 255 + warm = self._normalized_value(raw_values[offset], mapping) + cold = self._normalized_value(raw_values[offset + 1], mapping) + brightness = master if has_master else max(warm, cold) + if brightness <= 0 and not force: + return ("light", "turn_off", {"entity_id": entity_id, "transition": transition}, f"light.turn_off {entity_id}") + total = max(1, warm + cold) + cool_ratio = cold / total + kelvin = int(round(2200 + (cool_ratio * 4300))) + payload: dict[str, object] = { + "entity_id": entity_id, + "color_temp_kelvin": kelvin, + "transition": transition, + } + if bool(capabilities.get("supports_brightness", False)): + payload["brightness"] = max(1, brightness) + return ( + "light", + "turn_on", + payload, + f"light.turn_on {entity_id} kelvin={kelvin} brightness={payload.get('brightness', 'on')}", + ) + + def _build_test_values(self, mapping: dict[str, object]) -> list[int]: + fixture_type = str(mapping["fixture_type"]) + if fixture_type in {"scene", "automation", "switch"}: + return [255] + if fixture_type == "dimmer": + return [255] + if fixture_type == "rgb": + return [255, 255, 80, 80] if bool(mapping["master_dimmer"]) else [255, 80, 80] + if fixture_type == "rgbw": + return [255, 255, 80, 80, 40] if bool(mapping["master_dimmer"]) else [255, 80, 80, 40] + if fixture_type == "cct": + return [255, 255, 120] if bool(mapping["master_dimmer"]) else [255, 120] + return [255] + + def _read_raw_values(self, mapping: dict[str, object], values: list[int]) -> list[int]: + start_address = int(mapping["start_address"]) + span = self._channel_span(mapping) + if start_address < 1 or start_address + span - 1 > 512: + return [0] * span + return values[start_address - 1 : start_address - 1 + span] + + def _channel_span(self, mapping: dict[str, object]) -> int: + fixture_type = str(mapping["fixture_type"]) + has_master = bool(mapping["master_dimmer"]) + if fixture_type in {"dimmer", "switch", "scene", "automation"}: + return 1 + if fixture_type == "rgb": + return 4 if has_master else 3 + if fixture_type == "rgbw": + return 5 if has_master else 4 + if fixture_type == "cct": + return 3 if has_master else 2 + return 1 + + def _normalized_value(self, raw_value: int, mapping: dict[str, object]) -> int: + clamped = max(0, min(255, int(raw_value))) + if bool(mapping["invert_channel"]): + clamped = 255 - clamped + minimum = max(0, min(255, int(mapping["min_value"]))) + maximum = max(minimum, min(255, int(mapping["max_value"]))) + return int(round(minimum + ((clamped / 255) * (maximum - minimum)))) + + async def _load(self) -> None: + async with self._session_factory() as session: + config_setting = await session.get(Setting, HA_CONFIG_KEY) + mappings_setting = await session.get(Setting, HA_MAPPINGS_KEY) + if config_setting is not None and isinstance(config_setting.value, dict): + raw_config = dict(config_setting.value) + self._token = str(raw_config.get("token", "") or "").strip() + self._config = self._normalize_config(raw_config) + if mappings_setting is not None and isinstance(mappings_setting.value, dict): + items = mappings_setting.value.get("items", []) + if isinstance(items, list): + self._mappings = [self._normalize_mapping(item) for item in items if isinstance(item, dict)] + for mapping in self._mappings: + self._ensure_runtime(int(mapping["id"]), self._channel_span(mapping)) + + async def _persist_setting(self, key: str, value: dict[str, object]) -> None: + async with self._session_factory() as session: + setting = await session.get(Setting, key) + if setting is None: + setting = Setting(key=key, value=value, updated_at=datetime.now(UTC)) + session.add(setting) + else: + setting.value = value + setting.updated_at = datetime.now(UTC) + await session.commit() + + async def _persist_mappings(self) -> None: + await self._persist_setting(HA_MAPPINGS_KEY, {"items": self._mappings}) + + def _default_config(self) -> dict[str, object]: + return { + "enabled": False, + "base_url": "", + "default_universe": 10, + } + + def _normalize_config(self, payload: dict[str, object]) -> dict[str, object]: + return { + "enabled": bool(payload.get("enabled", False)), + "base_url": str(payload.get("base_url", "") or "").strip(), + "default_universe": max(1, min(63999, int(payload.get("default_universe", 10) or 10))), + } + + def _normalize_mapping(self, payload: dict[str, object]) -> dict[str, object]: + fixture_type = str(payload.get("fixture_type", "dimmer")).lower() + if fixture_type not in {"dimmer", "rgb", "rgbw", "cct", "switch", "scene", "automation"}: + fixture_type = "dimmer" + mapping = { + "id": int(payload.get("id", 0) or 0), + "name": str(payload.get("name", "") or "").strip() or str(payload.get("entity_id", "") or "").strip(), + "universe": max(1, min(63999, int(payload.get("universe", self._config["default_universe"]) or self._config["default_universe"]))), + "start_address": max(1, min(512, int(payload.get("start_address", 1) or 1))), + "fixture_type": fixture_type, + "entity_id": str(payload.get("entity_id", "") or "").strip(), + "rate_limit_hz": max(0.1, min(30.0, float(payload.get("rate_limit_hz", 5) or 5))), + "deadband": max(0, min(255, int(payload.get("deadband", 2) or 2))), + "fade_ms": max(0, min(10000, int(payload.get("fade_ms", 0) or 0))), + "invert_channel": bool(payload.get("invert_channel", False)), + "min_value": max(0, min(255, int(payload.get("min_value", 0) or 0))), + "max_value": max(0, min(255, int(payload.get("max_value", 255) or 255))), + "enabled": bool(payload.get("enabled", True)), + "master_dimmer": bool(payload.get("master_dimmer", fixture_type in {"rgb", "rgbw", "cct"})), + } + if mapping["max_value"] < mapping["min_value"]: + mapping["max_value"] = mapping["min_value"] + if not mapping["name"]: + mapping["name"] = mapping["entity_id"] or f"{fixture_type}-{mapping['universe']}-{mapping['start_address']}" + return mapping + + def _normalize_entity(self, payload: dict[str, object]) -> dict[str, object] | None: + entity_id = str(payload.get("entity_id", "") or "").strip() + if "." not in entity_id: + return None + domain = entity_id.split(".", 1)[0] + if domain not in {"light", "switch", "input_boolean", "scene", "automation"}: + return None + attributes = payload.get("attributes", {}) + attr_map = attributes if isinstance(attributes, dict) else {} + supported_modes = attr_map.get("supported_color_modes", []) + modes = {str(mode).lower() for mode in supported_modes if isinstance(mode, str)} + color_mode = str(attr_map.get("color_mode", "") or "").lower() + if color_mode: + modes.add(color_mode) + friendly_name = str(attr_map.get("friendly_name", "") or "") + supports_brightness = domain == "light" and any(mode not in {"onoff"} for mode in modes) + supports_rgb = domain == "light" and any(mode in {"rgb", "hs", "xy"} for mode in modes) + supports_rgbw = domain == "light" and "rgbw" in modes + supports_rgbww = domain == "light" and "rgbww" in modes + supports_color_temp_kelvin = domain == "light" and "color_temp" in modes + return { + "entity_id": entity_id, + "domain": domain, + "friendly_name": friendly_name, + "state": str(payload.get("state", "")), + "supports_brightness": supports_brightness, + "supports_rgb": supports_rgb, + "supports_rgbw": supports_rgbw, + "supports_rgbww": supports_rgbww, + "supports_color_temp_kelvin": supports_color_temp_kelvin, + } + + def _entity_domain(self, entity_id: str) -> str: + if "." not in entity_id: + return "" + return entity_id.split(".", 1)[0].strip().lower() + + def _serialize_mapping(self, mapping: dict[str, object]) -> dict[str, object]: + runtime = self._ensure_runtime(int(mapping["id"]), self._channel_span(mapping)) + status = "disabled" + if bool(mapping["enabled"]): + status = "sending" if runtime.in_flight else "active" + if runtime.last_error: + status = "error" + return { + **mapping, + "channel_span": self._channel_span(mapping), + "status": status, + "last_dmx_values": runtime.last_dmx_values, + "last_sent_summary": runtime.last_sent_summary, + "last_service": runtime.last_service, + "last_success_at": self._iso(runtime.last_success_at), + "last_error": runtime.last_error, + "last_error_at": self._iso(runtime.last_error_at), + "in_flight": runtime.in_flight, + } + + def _next_mapping_id(self) -> int: + return max((int(mapping["id"]) for mapping in self._mappings), default=0) + 1 + + def _find_mapping(self, mapping_id: int) -> dict[str, object]: + for mapping in self._mappings: + if int(mapping["id"]) == mapping_id: + return mapping + raise LookupError("Home Assistant mapping not found") + + def _ensure_runtime(self, mapping_id: int, span: int) -> MappingRuntime: + runtime = self._mapping_runtime.get(mapping_id) + if runtime is None: + runtime = MappingRuntime(last_dmx_values=[0] * span) + self._mapping_runtime[mapping_id] = runtime + return runtime + if len(runtime.last_dmx_values) != span: + runtime.last_dmx_values = [0] * span + runtime.last_sent_raw_values = None + runtime.pending_raw_values = None + return runtime + + def _prune_orphaned_runtimes(self) -> None: + active_ids = {int(mapping["id"]) for mapping in self._mappings} + for mapping_id in list(self._mapping_runtime): + if mapping_id not in active_ids: + self._mapping_runtime.pop(mapping_id, None) + + async def _drain_mapping_tasks(self) -> None: + while self._mapping_tasks: + tasks = list(self._mapping_tasks.values()) + await asyncio.gather(*tasks, return_exceptions=True) + + def _iso(self, value: datetime | None) -> str | None: + return value.isoformat() if value is not None else None + + def _summarize_exception(self, exc: Exception) -> str: + if isinstance(exc, httpx.HTTPStatusError): + return f"HTTP {exc.response.status_code} fra Home Assistant" + if isinstance(exc, (httpx.ConnectTimeout, httpx.ReadTimeout)): + return "Timeout ved kald til Home Assistant" + if isinstance(exc, httpx.ConnectError): + return "Home Assistant kunne ikke kontaktes" + return str(exc) or exc.__class__.__name__ diff --git a/backend/app/live/__init__.py b/backend/app/live/__init__.py new file mode 100644 index 0000000..42ebd04 --- /dev/null +++ b/backend/app/live/__init__.py @@ -0,0 +1,3 @@ +from app.live.service import LiveDeskService + +__all__ = ["LiveDeskService"] diff --git a/backend/app/live/service.py b/backend/app/live/service.py new file mode 100644 index 0000000..1f72eb2 --- /dev/null +++ b/backend/app/live/service.py @@ -0,0 +1,219 @@ +from __future__ import annotations + +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.dmx.engine import DmxEngine +from app.dmx.frame import FrameLayer +from app.homeassistant.service import HomeAssistantService +from app.patch.service import PatchService + + +class LiveDeskService: + def __init__( + self, + engine: DmxEngine, + home_assistant: HomeAssistantService | None = None, + session_factory: async_sessionmaker[AsyncSession] = SessionLocal, + ) -> None: + self.engine = engine + self.patch = PatchService(session_factory) + self.home_assistant = home_assistant + self._values_by_patch: dict[int, dict[int, int]] = {} + self._values_by_home_assistant_mapping: dict[int, dict[int, int]] = {} + + async def snapshot(self) -> dict[str, object]: + patches = await self.patch.list_instances() + items: list[dict[str, object]] = [] + for patch in patches: + relative_values = self._values_by_patch.get(int(patch["id"]), {}) + channels: list[dict[str, object]] = [] + for channel in patch.get("channels", []): + if not isinstance(channel, dict): + continue + relative_index = int(channel.get("index", 0)) + absolute_channel = int(patch["start_address"]) + relative_index - 1 + channels.append( + { + "index": relative_index, + "absolute_channel": absolute_channel, + "key": str(channel.get("key", f"channel-{relative_index}")), + "display_name": str(channel.get("display_name", f"Channel {relative_index}")), + "precedence": str(channel.get("precedence", "ltp")), + "resolution": int(channel.get("resolution", 8)), + "value": int(relative_values.get(relative_index, 0)), + } + ) + items.append( + { + "id": f"patch:{patch['id']}", + "source_type": "patch", + "source_id": patch["id"], + "patch_id": patch["id"], + "name": patch["name"], + "manufacturer": patch["manufacturer"], + "model": patch["model"], + "mode_key": patch["mode_key"], + "universe": patch["universe"], + "start_address": patch["start_address"], + "end_address": patch["end_address"], + "channel_count": patch["channel_count"], + "entity_id": None, + "status": "active" if patch.get("enabled", True) else "disabled", + "last_sent_summary": None, + "channels": channels, + } + ) + if self.home_assistant is not None: + mappings = (await self.home_assistant.list_mappings())["items"] + for mapping in mappings: + if not isinstance(mapping, dict): + continue + mapping_id = int(mapping["id"]) + relative_values = self._values_by_home_assistant_mapping.get(mapping_id, {}) + channels = [] + for channel in self._build_home_assistant_channels(mapping): + relative_index = int(channel["index"]) + absolute_channel = int(mapping["start_address"]) + relative_index - 1 + channels.append( + { + "index": relative_index, + "absolute_channel": absolute_channel, + "key": str(channel["key"]), + "display_name": str(channel["display_name"]), + "precedence": str(channel["precedence"]), + "resolution": 8, + "value": int(relative_values.get(relative_index, 0)), + } + ) + items.append( + { + "id": f"home_assistant:{mapping_id}", + "source_type": "home_assistant", + "source_id": mapping_id, + "patch_id": None, + "name": mapping["name"], + "manufacturer": "Home Assistant", + "model": mapping["fixture_type"], + "mode_key": f"HA {mapping['fixture_type']}", + "universe": mapping["universe"], + "start_address": mapping["start_address"], + "end_address": int(mapping["start_address"]) + int(mapping["channel_span"]) - 1, + "channel_count": mapping["channel_span"], + "entity_id": mapping["entity_id"], + "status": mapping["status"], + "last_sent_summary": mapping["last_sent_summary"], + "channels": channels, + } + ) + return {"items": items} + + async def set_patch_values(self, patch_id: int, values: dict[int, int]) -> dict[str, object]: + patches = await self.patch.list_instances() + patch = next((item for item in patches if int(item["id"]) == patch_id), None) + if patch is None: + raise LookupError("Patch not found") + + channel_map = { + int(channel["index"]): channel + for channel in patch.get("channels", []) + if isinstance(channel, dict) and "index" in channel + } + sanitized_values: dict[int, int] = {} + absolute_values: dict[int, int] = {} + precedence_map: dict[int, str] = {} + for relative_index, raw_value in values.items(): + if relative_index not in channel_map: + continue + value = max(0, min(255, int(raw_value))) + sanitized_values[relative_index] = value + absolute_channel = int(patch["start_address"]) + relative_index - 1 + absolute_values[absolute_channel] = value + precedence_map[absolute_channel] = str(channel_map[relative_index].get("precedence", "ltp")).lower() + + self._values_by_patch[patch_id] = sanitized_values + self.engine.set_layer( + FrameLayer.from_channel_values( + name=f"mixer:patch:{patch_id}", + priority=90, + values=absolute_values, + precedence_map=precedence_map, + universe=int(patch["universe"]), + ) + ) + return await self.snapshot() + + async def clear_patch(self, patch_id: int) -> dict[str, object]: + self._values_by_patch.pop(patch_id, None) + self.engine.remove_layer(f"mixer:patch:{patch_id}") + return await self.snapshot() + + async def set_home_assistant_mapping_values(self, mapping_id: int, values: dict[int, int]) -> dict[str, object]: + if self.home_assistant is None: + raise LookupError("Home Assistant live mixer is not available") + mappings = (await self.home_assistant.list_mappings())["items"] + mapping = next((item for item in mappings if int(item["id"]) == mapping_id), None) + if mapping is None: + raise LookupError("Home Assistant mapping not found") + + channel_map = { + int(channel["index"]): channel for channel in self._build_home_assistant_channels(mapping) + } + sanitized_values: dict[int, int] = {} + absolute_values: dict[int, int] = {} + precedence_map: dict[int, str] = {} + for relative_index, raw_value in values.items(): + if relative_index not in channel_map: + continue + value = max(0, min(255, int(raw_value))) + sanitized_values[relative_index] = value + absolute_channel = int(mapping["start_address"]) + relative_index - 1 + absolute_values[absolute_channel] = value + precedence_map[absolute_channel] = str(channel_map[relative_index].get("precedence", "ltp")).lower() + + self._values_by_home_assistant_mapping[mapping_id] = sanitized_values + self.engine.set_layer( + FrameLayer.from_channel_values( + name=f"mixer:home-assistant:{mapping_id}", + priority=90, + values=absolute_values, + precedence_map=precedence_map, + universe=int(mapping["universe"]), + ) + ) + return await self.snapshot() + + async def clear_home_assistant_mapping(self, mapping_id: int) -> dict[str, object]: + self._values_by_home_assistant_mapping.pop(mapping_id, None) + self.engine.remove_layer(f"mixer:home-assistant:{mapping_id}") + return await self.snapshot() + + def _build_home_assistant_channels(self, mapping: dict[str, object]) -> list[dict[str, object]]: + fixture_type = str(mapping["fixture_type"]) + has_master = bool(mapping.get("master_dimmer", False)) + if fixture_type == "switch": + return [{"index": 1, "key": "Switch", "display_name": "State", "precedence": "ltp"}] + if fixture_type == "scene": + return [{"index": 1, "key": "Scene", "display_name": "Trigger", "precedence": "ltp"}] + if fixture_type == "automation": + return [{"index": 1, "key": "Automation", "display_name": "Trigger", "precedence": "ltp"}] + if fixture_type == "dimmer": + return [{"index": 1, "key": "Dimmer", "display_name": "Dimmer", "precedence": "ltp"}] + + channels: list[dict[str, object]] = [] + next_index = 1 + if has_master: + channels.append({"index": next_index, "key": "Master", "display_name": "Master", "precedence": "ltp"}) + next_index += 1 + if fixture_type == "rgb": + names = ["Red", "Green", "Blue"] + elif fixture_type == "rgbw": + names = ["Red", "Green", "Blue", "White"] + elif fixture_type == "cct": + names = ["Warm", "Cold"] + else: + names = ["Channel"] + for name in names: + channels.append({"index": next_index, "key": name, "display_name": name, "precedence": "ltp"}) + next_index += 1 + return channels diff --git a/backend/app/main.py b/backend/app/main.py new file mode 100644 index 0000000..1b9a5a4 --- /dev/null +++ b/backend/app/main.py @@ -0,0 +1,40 @@ +from collections.abc import AsyncIterator +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from fastapi.staticfiles import StaticFiles + +from app.api.router import api_router +from app.core.config import get_settings +from app.core.database import init_database +from app.core.dependencies import app_state +from app.core.logging import configure_logging +from app.websocket.router import websocket_router + + +@asynccontextmanager +async def lifespan(_: FastAPI) -> AsyncIterator[None]: + configure_logging() + await init_database() + await app_state.startup() + try: + yield + finally: + await app_state.shutdown() + + +settings = get_settings() +app = FastAPI(title=settings.app_name, lifespan=lifespan, docs_url=None, redoc_url=None) +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) +app.include_router(api_router, prefix="/api/v1") +app.include_router(websocket_router) + +if settings.frontend_dist.exists(): + app.mount("/", StaticFiles(directory=settings.frontend_dist, html=True), name="frontend") diff --git a/backend/app/midi/__init__.py b/backend/app/midi/__init__.py new file mode 100644 index 0000000..df612c2 --- /dev/null +++ b/backend/app/midi/__init__.py @@ -0,0 +1 @@ +"""MIDI bridge integration services.""" diff --git a/backend/app/midi/service.py b/backend/app/midi/service.py new file mode 100644 index 0000000..a1458cb --- /dev/null +++ b/backend/app/midi/service.py @@ -0,0 +1,834 @@ +from __future__ import annotations + +import hashlib +import hmac +import logging +import secrets +from collections import deque +from dataclasses import dataclass +from datetime import UTC, datetime, timedelta +from fnmatch import fnmatch +from time import monotonic +from typing import Any + +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.dmx.engine import DmxEngine +from app.dmx.frame import FrameLayer +from app.effects.service import EffectService +from app.models.entities import MidiBridge, MidiBridgeToken, MidiMapping, Scene +from app.scenes.service import SceneService + +logger = logging.getLogger(__name__) + +MIDI_PROTOCOL_VERSION = 1 +MIDI_SCOPES = ["midi:connect", "midi:events", "midi:heartbeat"] +MIDI_ACTIONS = { + "activate_scene", + "deactivate_scene", + "toggle_scene", + "flash_scene", + "blackout_on", + "blackout_off", + "blackout_toggle", + "set_master_dimmer", + "set_scene_intensity", + "start_effect", + "stop_effect", +} +MIDI_MODES = {"trigger", "toggle", "hold", "flash", "continuous"} +SCENE_ACTIONS = { + "activate_scene", + "deactivate_scene", + "toggle_scene", + "flash_scene", + "set_scene_intensity", +} +EFFECT_ACTIONS = {"start_effect", "stop_effect"} + + +def utc_now() -> datetime: + return datetime.now(UTC) + + +@dataclass(slots=True) +class TokenCacheEntry: + id: int + label: str + token_hash: str + bridge_id: str | None + scopes: list[str] + created_at: datetime + revoked_at: datetime | None + last_used_at: datetime | None + + +@dataclass(slots=True) +class LearnState: + active: bool = False + allow_passthrough: bool = False + expires_at: datetime | None = None + captured_event: dict[str, object] | None = None + + +class MidiService: + def __init__( + self, + engine: DmxEngine, + scenes: SceneService, + effects: EffectService, + session_factory: async_sessionmaker[AsyncSession] = SessionLocal, + ) -> None: + self.engine = engine + self.scenes = scenes + self.effects = effects + self._session_factory = session_factory + self._mappings: list[dict[str, object]] = [] + self._tokens: list[TokenCacheEntry] = [] + self._bridges: dict[str, dict[str, object]] = {} + self._bridge_event_windows: dict[str, deque[float]] = {} + self._bridge_persist_deadline: dict[str, float] = {} + self._toggle_state: dict[int, bool] = {} + self._hold_state: dict[int, bool] = {} + self._learn_state = LearnState() + + async def startup(self) -> None: + await self.reload() + + async def reload(self) -> None: + await self._reload_mappings() + await self._reload_tokens() + await self._reload_bridges() + + async def list_mappings(self) -> dict[str, object]: + return {"items": [dict(item) for item in self._mappings]} + + async def get_mapping(self, mapping_id: int) -> dict[str, object]: + mapping = self._mapping_by_id(mapping_id) + if mapping is None: + raise LookupError("MIDI-mapping ikke fundet") + return dict(mapping) + + async def create_mapping(self, payload: dict[str, object]) -> dict[str, object]: + record = MidiMapping( + name=str(payload["name"]).strip(), + enabled=bool(payload.get("enabled", True)), + bridge_id=self._normalize_optional_text(payload.get("bridge_id")), + device_name=self._normalize_optional_text(payload.get("device_name")), + message_type=str(payload["message_type"]).strip(), + channel=self._optional_int(payload.get("channel")), + number=int(payload["number"]), + action=str(payload["action"]).strip(), + target_type=str(payload.get("target_type") or "scene").strip(), + target_id=self._normalize_optional_text(payload.get("target_id")), + mode=str(payload.get("mode") or "trigger").strip(), + minimum_value=int(payload.get("minimum_value", 0)), + maximum_value=int(payload.get("maximum_value", 127)), + updated_at=utc_now(), + ) + self._validate_mapping_record(record) + + async with self._session_factory() as session: + session.add(record) + await session.commit() + await session.refresh(record) + + await self._reload_mappings() + return self._serialize_mapping(record, None) + + async def update_mapping(self, mapping_id: int, payload: dict[str, object]) -> dict[str, object]: + async with self._session_factory() as session: + record = await session.get(MidiMapping, mapping_id) + if record is None: + raise LookupError("MIDI-mapping ikke fundet") + record.name = str(payload["name"]).strip() + record.enabled = bool(payload.get("enabled", True)) + record.bridge_id = self._normalize_optional_text(payload.get("bridge_id")) + record.device_name = self._normalize_optional_text(payload.get("device_name")) + record.message_type = str(payload["message_type"]).strip() + record.channel = self._optional_int(payload.get("channel")) + record.number = int(payload["number"]) + record.action = str(payload["action"]).strip() + record.target_type = str(payload.get("target_type") or "scene").strip() + record.target_id = self._normalize_optional_text(payload.get("target_id")) + record.mode = str(payload.get("mode") or "trigger").strip() + record.minimum_value = int(payload.get("minimum_value", 0)) + record.maximum_value = int(payload.get("maximum_value", 127)) + record.updated_at = utc_now() + self._validate_mapping_record(record) + await session.commit() + await session.refresh(record) + + await self._reload_mappings() + return self._mapping_by_id(mapping_id) or self._serialize_mapping(record, None) + + async def delete_mapping(self, mapping_id: int) -> dict[str, object]: + async with self._session_factory() as session: + record = await session.get(MidiMapping, mapping_id) + if record is None: + raise LookupError("MIDI-mapping ikke fundet") + await session.delete(record) + await session.commit() + + self._toggle_state.pop(mapping_id, None) + self._hold_state.pop(mapping_id, None) + await self._reload_mappings() + return {"deleted": mapping_id} + + async def create_token(self, payload: dict[str, object]) -> dict[str, object]: + raw_token = f"tuxmidi_{secrets.token_urlsafe(32)}" + record = MidiBridgeToken( + label=str(payload["label"]).strip(), + token_hash=self._hash_token(raw_token), + bridge_id=self._normalize_optional_text(payload.get("bridge_id")), + scopes=self._normalize_scopes(payload.get("scopes")), + created_at=utc_now(), + ) + async with self._session_factory() as session: + session.add(record) + await session.commit() + await session.refresh(record) + + await self._reload_tokens() + serialized = self._serialize_token(record) + serialized["token"] = raw_token + return serialized + + async def list_tokens(self) -> dict[str, object]: + return {"items": [self._serialize_token_entry(entry) for entry in self._tokens]} + + async def revoke_token(self, token_id: int) -> dict[str, object]: + async with self._session_factory() as session: + record = await session.get(MidiBridgeToken, token_id) + if record is None: + raise LookupError("MIDI-token ikke fundet") + record.revoked_at = utc_now() + await session.commit() + + await self._reload_tokens() + return {"revoked": token_id} + + async def list_bridges(self) -> dict[str, object]: + self._expire_bridge_presence() + items = sorted(self._bridges.values(), key=lambda bridge: str(bridge["bridge_id"]).casefold()) + return {"items": [dict(item) for item in items]} + + async def get_learn_state(self) -> dict[str, object]: + self._expire_learn_state() + return self._serialize_learn_state() + + async def start_learn(self, timeout_seconds: int, allow_passthrough: bool) -> dict[str, object]: + self._learn_state = LearnState( + active=True, + allow_passthrough=allow_passthrough, + expires_at=utc_now() + timedelta(seconds=timeout_seconds), + captured_event=None, + ) + return self._serialize_learn_state() + + async def cancel_learn(self) -> dict[str, object]: + self._learn_state.active = False + self._learn_state.expires_at = None + return self._serialize_learn_state() + + async def receive_heartbeat(self, payload: dict[str, object], remote_ip: str | None) -> dict[str, object]: + if int(payload.get("protocol_version", 0)) != MIDI_PROTOCOL_VERSION: + raise ValueError("Ugyldig MIDI protocol_version") + bridge_id = str(payload["bridge_id"]).strip() + bridge = self._touch_bridge( + bridge_id=bridge_id, + device_name=self._normalize_optional_text(payload.get("device")), + remote_ip=remote_ip, + protocol_version=int(payload.get("protocol_version", MIDI_PROTOCOL_VERSION)), + is_event=False, + event=None, + error=None, + ) + await self._persist_bridge(bridge_id, force=True) + return { + "accepted": True, + "bridge_id": bridge_id, + "online": bool(bridge["online"]), + "protocol_version": MIDI_PROTOCOL_VERSION, + } + + async def receive_event(self, payload: dict[str, object], remote_ip: str | None) -> dict[str, object]: + if int(payload.get("protocol_version", 0)) != MIDI_PROTOCOL_VERSION: + raise ValueError("Ugyldig MIDI protocol_version") + bridge_id = str(payload["bridge_id"]).strip() + event = self._normalize_event(payload) + bridge = self._touch_bridge( + bridge_id=bridge_id, + device_name=str(payload.get("device") or "").strip(), + remote_ip=remote_ip, + protocol_version=int(payload.get("protocol_version", MIDI_PROTOCOL_VERSION)), + is_event=True, + event=event, + error=None, + ) + if not self._check_bridge_rate_limit(bridge_id): + bridge["last_error"] = "For mange MIDI-events fra bridgen." + await self._persist_bridge(bridge_id, force=True) + return {"accepted": False, "reason": "rate-limited"} + + if self._learn_state.active and not self._learn_state.allow_passthrough: + self._capture_learn_event(bridge, event) + await self._persist_bridge(bridge_id) + return {"accepted": True, "captured_for_learning": True, "matched": 0} + + matches = [mapping for mapping in self._mappings if self._mapping_matches(mapping, bridge, event)] + executed = 0 + errors: list[str] = [] + for mapping in matches: + try: + if self._learn_state.active and self._learn_state.captured_event is None: + self._capture_learn_event(bridge, event) + performed = await self._dispatch_mapping(mapping, event) + executed += 1 if performed else 0 + except Exception as exc: + error_message = f"Mapping {mapping['id']} fejlede: {exc}" + errors.append(error_message) + bridge["last_error"] = error_message + logger.warning("MIDI mapping failed: %s", error_message) + + await self._persist_bridge(bridge_id, force=bool(errors)) + return { + "accepted": True, + "bridge_id": bridge_id, + "matched": len(matches), + "executed": executed, + "errors": errors, + } + + async def test_mapping(self, mapping_id: int, value: int, message_type: str | None = None) -> dict[str, object]: + mapping = self._mapping_by_id(mapping_id) + if mapping is None: + raise LookupError("MIDI-mapping ikke fundet") + test_event = { + "type": message_type or str(mapping["message_type"]), + "channel": int(mapping["channel"] or 0), + "number": int(mapping["number"]), + "value": value, + } + await self._dispatch_mapping(mapping, test_event) + return { + "status": "sent", + "mapping_id": mapping_id, + "service": mapping["action"], + "value": value, + } + + async def verify_token(self, token: str | None, required_scope: str, bridge_id: str | None = None) -> TokenCacheEntry: + if not token: + raise PermissionError("Mangler Bearer-token") + token_hash = self._hash_token(token) + for entry in self._tokens: + if not hmac.compare_digest(entry.token_hash, token_hash): + continue + if entry.revoked_at is not None: + break + if required_scope not in entry.scopes: + break + if entry.bridge_id and bridge_id and entry.bridge_id != bridge_id: + break + await self._mark_token_used(entry.id) + return entry + raise PermissionError("Ugyldig eller tilbagekaldt MIDI-token") + + async def _dispatch_mapping(self, mapping: dict[str, object], event: dict[str, object]) -> bool: + action = str(mapping["action"]) + mode = str(mapping["mode"]) + target_id = self._normalize_optional_text(mapping.get("target_id")) + value = int(event["value"]) + normalized = self._normalize_value(value, int(mapping["minimum_value"]), int(mapping["maximum_value"])) + message_type = str(event["type"]) + if action == "activate_scene" and target_id: + if mode == "hold": + if message_type == "note_on": + await self.scenes.activate(target_id) + self._hold_state[int(mapping["id"])] = True + return True + if message_type == "note_off": + await self.scenes.release(target_id) + self._hold_state[int(mapping["id"])] = False + return True + return False + if message_type == "note_off": + return False + await self.scenes.activate(target_id) + return True + + if action == "deactivate_scene" and target_id: + if message_type == "note_off" and mode == "hold": + return False + await self.scenes.release(target_id) + return True + + if action == "toggle_scene" and target_id: + if message_type == "note_off": + return False + if self.engine.layers.get(f"scene:{target_id}") is not None: + await self.scenes.release(target_id) + self._toggle_state[int(mapping["id"])] = False + else: + await self.scenes.activate(target_id) + self._toggle_state[int(mapping["id"])] = True + return True + + if action == "flash_scene" and target_id: + layer_name = f"midi:flash:{mapping['id']}:{target_id}" + if message_type == "note_on": + layer = await self._build_scene_layer( + target_id, + layer_name=layer_name, + scale=1.0, + priority_override=90, + ) + self.engine.set_layer(layer) + self._hold_state[int(mapping["id"])] = True + return True + if message_type == "note_off": + self.engine.remove_layer(layer_name) + self._hold_state[int(mapping["id"])] = False + return True + return False + + if action == "blackout_on": + if message_type == "note_off" and mode != "continuous": + return False + self.engine.trigger_blackout() + return True + + if action == "blackout_off": + if message_type == "note_off" and mode != "continuous": + return False + self.engine.release_blackout() + return True + + if action == "blackout_toggle": + if message_type == "note_off": + return False + if self.engine.blackout: + self.engine.release_blackout() + self._toggle_state[int(mapping["id"])] = False + else: + self.engine.trigger_blackout() + self._toggle_state[int(mapping["id"])] = True + return True + + if action == "set_master_dimmer": + self.engine.master = max(0, min(255, int(round(normalized * 255)))) + return True + + if action == "set_scene_intensity" and target_id: + layer_name = f"midi:intensity:{mapping['id']}:{target_id}" + if normalized <= 0: + self.engine.remove_layer(layer_name) + return True + layer = await self._build_scene_layer( + target_id, + layer_name=layer_name, + scale=normalized, + priority_override=80, + ) + self.engine.set_layer(layer) + return True + + if action == "start_effect" and target_id: + if mode == "hold": + if message_type == "note_on": + self.effects.trigger(target_id) + self._hold_state[int(mapping["id"])] = True + return True + if message_type == "note_off": + self.effects.stop(target_id) + self._hold_state[int(mapping["id"])] = False + return True + return False + if mode == "toggle": + if message_type == "note_off": + return False + if target_id in self.effects.active_effects: + self.effects.stop(target_id) + self._toggle_state[int(mapping["id"])] = False + else: + self.effects.trigger(target_id) + self._toggle_state[int(mapping["id"])] = True + return True + if message_type == "note_off": + return False + self.effects.trigger(target_id) + return True + + if action == "stop_effect" and target_id: + if message_type == "note_off" and mode != "continuous": + return False + self.effects.stop(target_id) + return True + + raise ValueError(f"Ukendt eller ikke-understøttet MIDI-action: {action}") + + async def _build_scene_layer( + self, + slug: str, + layer_name: str, + scale: float, + priority_override: int | None = None, + ) -> FrameLayer: + scene, values_by_universe, precedence_by_universe = await self._resolve_scene_layer_data(slug) + scaled_values: dict[int, dict[int, int]] = {} + for universe, values in values_by_universe.items(): + scaled_values[universe] = { + channel: max(0, min(255, int(round(value * scale)))) + for channel, value in values.items() + } + return FrameLayer( + name=layer_name, + priority=priority_override if priority_override is not None else int(scene.priority), + values_by_universe=scaled_values, + precedence_map_by_universe=precedence_by_universe, + ) + + async def _resolve_scene_layer_data( + self, + slug: str, + ) -> tuple[Scene, dict[int, dict[int, int]], dict[int, dict[int, str]]]: + async with self._session_factory() as session: + result = await session.execute(select(Scene).where(Scene.slug == slug).limit(1)) + scene = result.scalar_one_or_none() + if scene is None: + raise LookupError("Scene ikke fundet") + values_by_universe, precedence_by_universe = await self.scenes._resolve_layer_data(scene) + return scene, values_by_universe, precedence_by_universe + + async def _reload_mappings(self) -> None: + async with self._session_factory() as session: + result = await session.execute(select(MidiMapping).order_by(MidiMapping.created_at, MidiMapping.id)) + self._mappings = [self._serialize_mapping(record, None) for record in result.scalars().all()] + + async def _reload_tokens(self) -> None: + async with self._session_factory() as session: + result = await session.execute(select(MidiBridgeToken).order_by(MidiBridgeToken.created_at, MidiBridgeToken.id)) + self._tokens = [ + TokenCacheEntry( + id=record.id, + label=record.label, + token_hash=record.token_hash, + bridge_id=record.bridge_id, + scopes=list(record.scopes or MIDI_SCOPES), + created_at=record.created_at, + revoked_at=record.revoked_at, + last_used_at=record.last_used_at, + ) + for record in result.scalars().all() + ] + + async def _reload_bridges(self) -> None: + async with self._session_factory() as session: + result = await session.execute(select(MidiBridge).order_by(MidiBridge.bridge_id)) + self._bridges = {record.bridge_id: self._serialize_bridge(record) for record in result.scalars().all()} + + async def _mark_token_used(self, token_id: int) -> None: + now = utc_now() + for entry in self._tokens: + if entry.id == token_id: + entry.last_used_at = now + break + async with self._session_factory() as session: + record = await session.get(MidiBridgeToken, token_id) + if record is None: + return + record.last_used_at = now + await session.commit() + + def _mapping_matches(self, mapping: dict[str, object], bridge: dict[str, object], event: dict[str, object]) -> bool: + if not bool(mapping["enabled"]): + return False + mapping_message_type = str(mapping["message_type"]) + event_type = str(event["type"]) + if mapping_message_type != event_type: + if not ( + mapping_message_type == "note_on" + and event_type == "note_off" + and str(mapping["mode"]) in {"hold", "flash"} + ): + return False + if int(mapping["number"]) != int(event["number"]): + return False + channel = mapping.get("channel") + if channel is not None and int(channel) != int(event["channel"]): + return False + if not self._wildcard_match(mapping.get("bridge_id"), bridge.get("bridge_id")): + return False + if not self._wildcard_match(mapping.get("device_name"), bridge.get("device_name")): + return False + return True + + def _touch_bridge( + self, + bridge_id: str, + device_name: str | None, + remote_ip: str | None, + protocol_version: int, + is_event: bool, + event: dict[str, object] | None, + error: str | None, + ) -> dict[str, object]: + now = utc_now() + bridge = self._bridges.get(bridge_id) or { + "bridge_id": bridge_id, + "device_name": device_name or "", + "ip_address": remote_ip, + "protocol_version": protocol_version, + "online": True, + "last_heartbeat_at": None, + "last_event_at": None, + "last_error": None, + "last_event": None, + "updated_at": now.isoformat(), + "created_at": now.isoformat(), + } + bridge["device_name"] = device_name or bridge.get("device_name") or "" + bridge["ip_address"] = remote_ip or bridge.get("ip_address") + bridge["protocol_version"] = protocol_version + bridge["online"] = True + bridge["last_heartbeat_at"] = now.isoformat() + bridge["updated_at"] = now.isoformat() + if is_event: + bridge["last_event_at"] = now.isoformat() + bridge["last_event"] = event + if error is not None: + bridge["last_error"] = error + self._bridges[bridge_id] = bridge + return bridge + + async def _persist_bridge(self, bridge_id: str, force: bool = False) -> None: + now = monotonic() + previous = self._bridge_persist_deadline.get(bridge_id, 0.0) + if not force and now - previous < 2.0: + return + self._bridge_persist_deadline[bridge_id] = now + bridge = self._bridges.get(bridge_id) + if bridge is None: + return + async with self._session_factory() as session: + result = await session.execute(select(MidiBridge).where(MidiBridge.bridge_id == bridge_id).limit(1)) + record = result.scalar_one_or_none() + if record is None: + record = MidiBridge( + bridge_id=bridge_id, + device_name=self._normalize_optional_text(bridge.get("device_name")), + ip_address=self._normalize_optional_text(bridge.get("ip_address")), + protocol_version=int(bridge.get("protocol_version", MIDI_PROTOCOL_VERSION)), + online=bool(bridge.get("online", True)), + created_at=utc_now(), + updated_at=utc_now(), + ) + session.add(record) + record.device_name = self._normalize_optional_text(bridge.get("device_name")) + record.ip_address = self._normalize_optional_text(bridge.get("ip_address")) + record.protocol_version = int(bridge.get("protocol_version", MIDI_PROTOCOL_VERSION)) + record.online = bool(bridge.get("online", True)) + record.last_heartbeat_at = self._parse_dt(bridge.get("last_heartbeat_at")) + record.last_event_at = self._parse_dt(bridge.get("last_event_at")) + record.last_error = self._normalize_optional_text(bridge.get("last_error")) + record.last_event = dict(bridge.get("last_event") or {}) + record.updated_at = utc_now() + await session.commit() + + def _check_bridge_rate_limit(self, bridge_id: str) -> bool: + window = self._bridge_event_windows.setdefault(bridge_id, deque()) + now = monotonic() + while window and now - window[0] > 1.0: + window.popleft() + window.append(now) + return len(window) <= 200 + + def _expire_bridge_presence(self) -> None: + threshold = utc_now() - timedelta(seconds=15) + for bridge in self._bridges.values(): + last_heartbeat = self._parse_dt(bridge.get("last_heartbeat_at")) + bridge["online"] = bool(last_heartbeat and last_heartbeat >= threshold) + + def _expire_learn_state(self) -> None: + if not self._learn_state.active or self._learn_state.expires_at is None: + return + if self._learn_state.expires_at < utc_now(): + self._learn_state.active = False + + def _capture_learn_event(self, bridge: dict[str, object], event: dict[str, object]) -> None: + self._learn_state.captured_event = { + "bridge_id": bridge.get("bridge_id"), + "device": bridge.get("device_name"), + "timestamp": utc_now().isoformat(), + "message": dict(event), + } + self._learn_state.active = False + + def _serialize_learn_state(self) -> dict[str, object]: + return { + "active": self._learn_state.active, + "allow_passthrough": self._learn_state.allow_passthrough, + "expires_at": self._learn_state.expires_at.isoformat() if self._learn_state.expires_at else None, + "captured_event": self._learn_state.captured_event, + } + + def _serialize_mapping(self, record: MidiMapping, runtime: dict[str, object] | None) -> dict[str, object]: + return { + "id": record.id, + "name": record.name, + "enabled": record.enabled, + "bridge_id": record.bridge_id, + "device_name": record.device_name, + "message_type": record.message_type, + "channel": record.channel, + "number": record.number, + "action": record.action, + "target_type": record.target_type, + "target_id": record.target_id, + "mode": record.mode, + "minimum_value": record.minimum_value, + "maximum_value": record.maximum_value, + "created_at": record.created_at.isoformat(), + "updated_at": record.updated_at.isoformat(), + "active": bool(runtime.get("active")) if runtime else self._mapping_is_active(record), + } + + def _serialize_bridge(self, record: MidiBridge) -> dict[str, object]: + return { + "bridge_id": record.bridge_id, + "device_name": record.device_name or "", + "ip_address": record.ip_address, + "protocol_version": record.protocol_version, + "online": record.online, + "last_heartbeat_at": record.last_heartbeat_at.isoformat() if record.last_heartbeat_at else None, + "last_event_at": record.last_event_at.isoformat() if record.last_event_at else None, + "last_error": record.last_error, + "last_event": record.last_event or None, + "updated_at": record.updated_at.isoformat(), + "created_at": record.created_at.isoformat(), + } + + def _serialize_token(self, record: MidiBridgeToken) -> dict[str, object]: + return { + "id": record.id, + "label": record.label, + "bridge_id": record.bridge_id, + "scopes": list(record.scopes or MIDI_SCOPES), + "created_at": record.created_at.isoformat(), + "revoked_at": record.revoked_at.isoformat() if record.revoked_at else None, + "last_used_at": record.last_used_at.isoformat() if record.last_used_at else None, + "token_preview": self._token_preview(record.token_hash), + } + + def _serialize_token_entry(self, entry: TokenCacheEntry) -> dict[str, object]: + return { + "id": entry.id, + "label": entry.label, + "bridge_id": entry.bridge_id, + "scopes": list(entry.scopes), + "created_at": entry.created_at.isoformat(), + "revoked_at": entry.revoked_at.isoformat() if entry.revoked_at else None, + "last_used_at": entry.last_used_at.isoformat() if entry.last_used_at else None, + "token_preview": self._token_preview(entry.token_hash), + } + + def _normalize_event(self, payload: dict[str, object]) -> dict[str, object]: + message = payload.get("message") + if not isinstance(message, dict): + raise ValueError("MIDI payload mangler message") + return { + "type": str(message["type"]), + "channel": int(message["channel"]), + "number": int(message["number"]), + "value": int(message["value"]), + } + + def _mapping_is_active(self, record: MidiMapping) -> bool: + target_id = record.target_id + if record.action in SCENE_ACTIONS and target_id: + if record.action == "set_scene_intensity": + return self.engine.layers.get(f"midi:intensity:{record.id}:{target_id}") is not None + if record.action == "flash_scene": + return self.engine.layers.get(f"midi:flash:{record.id}:{target_id}") is not None + return self.engine.layers.get(f"scene:{target_id}") is not None + if record.action in EFFECT_ACTIONS and target_id: + return target_id in self.effects.active_effects + if record.action.startswith("blackout"): + return self.engine.blackout + if record.action == "set_master_dimmer": + return self.engine.master > 0 + return False + + def _mapping_by_id(self, mapping_id: int) -> dict[str, object] | None: + for mapping in self._mappings: + if int(mapping["id"]) == mapping_id: + return mapping + return None + + def _validate_mapping_record(self, record: MidiMapping) -> None: + if record.action not in MIDI_ACTIONS: + raise ValueError("Ukendt MIDI-action") + if record.mode not in MIDI_MODES: + raise ValueError("Ukendt MIDI-mode") + if record.minimum_value > record.maximum_value: + raise ValueError("minimum_value må ikke være større end maximum_value") + if record.action in SCENE_ACTIONS and not record.target_id: + raise ValueError("Scene-actions kræver target_id") + if record.action in EFFECT_ACTIONS and not record.target_id: + raise ValueError("Effect-actions kræver target_id") + if record.action == "set_scene_intensity" and record.mode != "continuous": + raise ValueError("set_scene_intensity kræver continuous-mode") + if record.action == "set_master_dimmer" and record.mode != "continuous": + raise ValueError("set_master_dimmer kræver continuous-mode") + if record.action == "flash_scene" and record.mode not in {"hold", "flash"}: + raise ValueError("flash_scene kræver hold eller flash-mode") + if record.message_type == "control_change" and record.mode in {"hold", "flash"}: + return + + def _normalize_value(self, raw: int, minimum: int, maximum: int) -> float: + clamped = max(minimum, min(maximum, raw)) + span = max(1, maximum - minimum) + return max(0.0, min(1.0, (clamped - minimum) / span)) + + def _wildcard_match(self, pattern: object, value: object) -> bool: + normalized_pattern = self._normalize_optional_text(pattern) + if not normalized_pattern or normalized_pattern == "*": + return True + normalized_value = self._normalize_optional_text(value) + if not normalized_value: + return False + return fnmatch(normalized_value.casefold(), normalized_pattern.casefold()) + + def _normalize_optional_text(self, value: object) -> str | None: + if value is None: + return None + normalized = str(value).strip() + return normalized or None + + def _optional_int(self, value: object) -> int | None: + if value is None or value == "": + return None + return int(value) + + def _normalize_scopes(self, payload: object) -> list[str]: + if not isinstance(payload, list): + return list(MIDI_SCOPES) + scopes = [str(scope).strip() for scope in payload if str(scope).strip()] + return scopes or list(MIDI_SCOPES) + + def _hash_token(self, token: str) -> str: + return hashlib.sha256(token.encode("utf-8")).hexdigest() + + def _token_preview(self, token_hash: str) -> str: + return f"********{token_hash[-4:]}" + + def _parse_dt(self, value: object) -> datetime | None: + if isinstance(value, datetime): + return value if value.tzinfo is not None else value.replace(tzinfo=UTC) + if isinstance(value, str) and value: + parsed = datetime.fromisoformat(value) + return parsed if parsed.tzinfo is not None else parsed.replace(tzinfo=UTC) + return None diff --git a/backend/app/mixitup/__init__.py b/backend/app/mixitup/__init__.py new file mode 100644 index 0000000..6383fd7 --- /dev/null +++ b/backend/app/mixitup/__init__.py @@ -0,0 +1,2 @@ +"""MixItUp integration services.""" + diff --git a/backend/app/mixitup/service.py b/backend/app/mixitup/service.py new file mode 100644 index 0000000..57c8a4a --- /dev/null +++ b/backend/app/mixitup/service.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +from collections import deque +from time import monotonic + +from app.dmx.engine import DmxEngine +from app.effects.service import EffectService +from app.models.schemas import TriggerRequest +from app.scenes.service import SceneService + + +class TriggerService: + def __init__( + self, + engine: DmxEngine, + effects: EffectService, + scenes: SceneService, + ) -> None: + self.engine = engine + self.effects = effects + self.scenes = scenes + self.queue: deque[dict[str, object]] = deque(maxlen=100) + self._recent_ids: dict[str, float] = {} + + def enqueue(self, slug: str, payload: TriggerRequest) -> dict[str, object]: + if payload.event_id: + previous = self._recent_ids.get(payload.event_id) + if previous and monotonic() - previous < 30: + return {"accepted": False, "reason": "duplicate-event"} + self._recent_ids[payload.event_id] = monotonic() + item: dict[str, object] = { + "slug": slug, + "payload": payload.model_dump(by_alias=True), + } + self.queue.append(item) + return {"accepted": True, "queue_depth": len(self.queue)} + + def snapshot(self) -> list[dict[str, object]]: + return list(self.queue) diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py new file mode 100644 index 0000000..1805077 --- /dev/null +++ b/backend/app/models/__init__.py @@ -0,0 +1,2 @@ +"""ORM and schema modules.""" + diff --git a/backend/app/models/base.py b/backend/app/models/base.py new file mode 100644 index 0000000..3a60ede --- /dev/null +++ b/backend/app/models/base.py @@ -0,0 +1,6 @@ +from sqlalchemy.orm import DeclarativeBase + + +class Base(DeclarativeBase): + pass + diff --git a/backend/app/models/entities.py b/backend/app/models/entities.py new file mode 100644 index 0000000..0627af2 --- /dev/null +++ b/backend/app/models/entities.py @@ -0,0 +1,225 @@ +from __future__ import annotations + +from datetime import UTC, datetime + +from sqlalchemy import JSON, Boolean, DateTime, Integer, String, Text +from sqlalchemy.orm import Mapped, mapped_column + +from app.models.base import Base + + +def utc_now() -> datetime: + return datetime.now(UTC) + + +class User(Base): + __tablename__ = "users" + + id: Mapped[int] = mapped_column(primary_key=True) + username: Mapped[str] = mapped_column(String(100), unique=True, index=True) + password_hash: Mapped[str] = mapped_column(String(255)) + role: Mapped[str] = mapped_column(String(30), default="administrator") + disabled: Mapped[bool] = mapped_column(Boolean, default=False) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class SessionRecord(Base): + __tablename__ = "sessions" + + id: Mapped[str] = mapped_column(String(64), primary_key=True) + user_id: Mapped[int] = mapped_column(Integer, index=True) + csrf_token: Mapped[str] = mapped_column(String(64)) + expires_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class ApiToken(Base): + __tablename__ = "api_tokens" + + id: Mapped[int] = mapped_column(primary_key=True) + label: Mapped[str] = mapped_column(String(120)) + token_hash: Mapped[str] = mapped_column(String(255)) + role: Mapped[str] = mapped_column(String(30), default="operator") + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + revoked_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + + +class Setting(Base): + __tablename__ = "settings" + + key: Mapped[str] = mapped_column(String(120), primary_key=True) + value: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class FixtureSource(Base): + __tablename__ = "fixture_sources" + + id: Mapped[int] = mapped_column(primary_key=True) + manufacturer_key: Mapped[str] = mapped_column(String(100)) + fixture_key: Mapped[str] = mapped_column(String(150)) + schema_ref: Mapped[str] = mapped_column(String(255)) + source_url: Mapped[str] = mapped_column(String(255)) + payload: Mapped[dict[str, object]] = mapped_column(JSON) + payload_hash: Mapped[str] = mapped_column(String(64)) + imported_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class FixtureDefinition(Base): + __tablename__ = "fixture_definitions" + + id: Mapped[int] = mapped_column(primary_key=True) + slug: Mapped[str] = mapped_column(String(160), unique=True, index=True) + manufacturer: Mapped[str] = mapped_column(String(120)) + model: Mapped[str] = mapped_column(String(160)) + short_name: Mapped[str | None] = mapped_column(String(120), nullable=True) + categories: Mapped[list[str]] = mapped_column(JSON, default=list) + normalized_data: Mapped[dict[str, object]] = mapped_column(JSON) + source_id: Mapped[int | None] = mapped_column(Integer, nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class FixtureInstance(Base): + __tablename__ = "fixture_instances" + + id: Mapped[int] = mapped_column(primary_key=True) + universe: Mapped[int] = mapped_column(Integer, default=1) + name: Mapped[str] = mapped_column(String(160)) + definition_id: Mapped[int] = mapped_column(Integer, index=True) + mode_key: Mapped[str] = mapped_column(String(120)) + start_address: Mapped[int] = mapped_column(Integer) + channel_count: Mapped[int] = mapped_column(Integer) + enabled: Mapped[bool] = mapped_column(Boolean, default=True) + group_names: Mapped[list[str]] = mapped_column(JSON, default=list) + position: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + tags: Mapped[list[str]] = mapped_column(JSON, default=list) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class Scene(Base): + __tablename__ = "scenes" + + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(String(160)) + slug: Mapped[str] = mapped_column(String(160), unique=True, index=True) + color: Mapped[str] = mapped_column(String(20), default="#00e5ff") + icon: Mapped[str | None] = mapped_column(String(40), nullable=True) + priority: Mapped[int] = mapped_column(Integer, default=10) + fade_in_ms: Mapped[int] = mapped_column(Integer, default=500) + fade_out_ms: Mapped[int] = mapped_column(Integer, default=500) + hold_ms: Mapped[int] = mapped_column(Integer, default=0) + master_limit: Mapped[int] = mapped_column(Integer, default=255) + values: Mapped[list[dict[str, object]]] = mapped_column(JSON, default=list) + targets: Mapped[list[dict[str, object]]] = mapped_column(JSON, default=list) + tags: Mapped[list[str]] = mapped_column(JSON, default=list) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class Effect(Base): + __tablename__ = "effects" + + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(String(160)) + slug: Mapped[str] = mapped_column(String(160), unique=True, index=True) + effect_type: Mapped[str] = mapped_column(String(80)) + parameters: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + priority: Mapped[int] = mapped_column(Integer, default=40) + cooldown_ms: Mapped[int] = mapped_column(Integer, default=0) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class TriggerMapping(Base): + __tablename__ = "trigger_mappings" + + id: Mapped[int] = mapped_column(primary_key=True) + slug: Mapped[str] = mapped_column(String(160), unique=True, index=True) + name: Mapped[str] = mapped_column(String(160)) + event_type: Mapped[str] = mapped_column(String(60)) + action_type: Mapped[str] = mapped_column(String(30)) + action_slug: Mapped[str] = mapped_column(String(160)) + config: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + active: Mapped[bool] = mapped_column(Boolean, default=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class TriggerEvent(Base): + __tablename__ = "trigger_events" + + id: Mapped[int] = mapped_column(primary_key=True) + slug: Mapped[str] = mapped_column(String(160), index=True) + event_id: Mapped[str | None] = mapped_column(String(160), nullable=True) + status: Mapped[str] = mapped_column(String(30), default="queued") + payload: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class SystemEvent(Base): + __tablename__ = "system_events" + + id: Mapped[int] = mapped_column(primary_key=True) + category: Mapped[str] = mapped_column(String(40)) + level: Mapped[str] = mapped_column(String(20)) + message: Mapped[str] = mapped_column(Text) + payload: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class BackupRecord(Base): + __tablename__ = "backups" + + id: Mapped[int] = mapped_column(primary_key=True) + label: Mapped[str] = mapped_column(String(160)) + path: Mapped[str] = mapped_column(String(255)) + manifest: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class MidiBridge(Base): + __tablename__ = "midi_bridges" + + id: Mapped[int] = mapped_column(primary_key=True) + bridge_id: Mapped[str] = mapped_column(String(160), unique=True, index=True) + device_name: Mapped[str | None] = mapped_column(String(255), nullable=True) + ip_address: Mapped[str | None] = mapped_column(String(64), nullable=True) + protocol_version: Mapped[int] = mapped_column(Integer, default=1) + online: Mapped[bool] = mapped_column(Boolean, default=False) + last_heartbeat_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + last_event_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + last_error: Mapped[str | None] = mapped_column(Text, nullable=True) + last_event: Mapped[dict[str, object]] = mapped_column(JSON, default=dict) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class MidiBridgeToken(Base): + __tablename__ = "midi_bridge_tokens" + + id: Mapped[int] = mapped_column(primary_key=True) + label: Mapped[str] = mapped_column(String(120)) + token_hash: Mapped[str] = mapped_column(String(64), unique=True, index=True) + bridge_id: Mapped[str | None] = mapped_column(String(160), nullable=True) + scopes: Mapped[list[str]] = mapped_column(JSON, default=list) + last_used_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + revoked_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + + +class MidiMapping(Base): + __tablename__ = "midi_mappings" + + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(String(160)) + enabled: Mapped[bool] = mapped_column(Boolean, default=True) + bridge_id: Mapped[str | None] = mapped_column(String(160), nullable=True) + device_name: Mapped[str | None] = mapped_column(String(255), nullable=True) + message_type: Mapped[str] = mapped_column(String(40)) + channel: Mapped[int | None] = mapped_column(Integer, nullable=True) + number: Mapped[int] = mapped_column(Integer) + action: Mapped[str] = mapped_column(String(60)) + target_type: Mapped[str] = mapped_column(String(40)) + target_id: Mapped[str | None] = mapped_column(String(160), nullable=True) + mode: Mapped[str] = mapped_column(String(40), default="trigger") + minimum_value: Mapped[int] = mapped_column(Integer, default=0) + maximum_value: Mapped[int] = mapped_column(Integer, default=127) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) + updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utc_now) diff --git a/backend/app/models/schemas.py b/backend/app/models/schemas.py new file mode 100644 index 0000000..02a0b23 --- /dev/null +++ b/backend/app/models/schemas.py @@ -0,0 +1,227 @@ +from __future__ import annotations + +from datetime import datetime +from typing import Literal + +from pydantic import BaseModel, ConfigDict, Field + + +class HealthResponse(BaseModel): + status: str + simulator_enabled: bool + version: str + + +class ChannelValue(BaseModel): + channel: int = Field(ge=1, le=512) + value: int = Field(ge=0, le=255) + precedence: str = "htp" + source: str = "scene" + + +class FixturePositionPayload(BaseModel): + x: float = Field(default=50.0, ge=0.0, le=100.0) + y: float = Field(default=50.0, ge=0.0, le=100.0) + z: float = Field(default=0.0, ge=0.0, le=100.0) + rotation: float = Field(default=0.0, ge=0.0, le=360.0) + + +class SceneAttributeValue(BaseModel): + attribute: str + value: int = Field(ge=0, le=255) + precedence: str | None = None + + +class SceneTargetPayload(BaseModel): + target_type: Literal["fixture", "group"] + patch_id: int | None = Field(default=None, ge=1) + group_name: str | None = None + values: list[SceneAttributeValue] = Field(default_factory=list) + + +class ScenePayload(BaseModel): + name: str + slug: str + color: str = "#00e5ff" + icon: str | None = None + priority: int = 10 + fade_in_ms: int = 500 + fade_out_ms: int = 500 + hold_ms: int = 0 + master_limit: int = 255 + values: list[ChannelValue] = Field(default_factory=list) + targets: list[SceneTargetPayload] = Field(default_factory=list) + tags: list[str] = Field(default_factory=list) + + +class EffectPayload(BaseModel): + name: str + slug: str + effect_type: str + parameters: dict[str, object] = Field(default_factory=dict) + priority: int = 40 + cooldown_ms: int = 0 + + +class TriggerRequest(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + event_type: str = Field(default="custom", alias="eventType") + username: str | None = None + display_name: str | None = Field(default=None, alias="displayName") + amount: int | None = None + event_id: str | None = Field(default=None, alias="eventId") + platform: str = "twitch" + metadata: dict[str, object] = Field(default_factory=dict) + + +class TelemetrySnapshot(BaseModel): + uptime_seconds: float + cpu_percent: float + ram_percent: float + temperature_c: float | None = None + queue_depth: int + reconnect_count: int + last_error: str | None = None + last_sent_at: datetime | None = None + + +class PatchPayload(BaseModel): + universe: int = Field(default=1, ge=1, le=63999) + name: str + definition_id: int = Field(ge=1) + mode_key: str + start_address: int = Field(ge=1, le=512) + enabled: bool = True + group_names: list[str] = Field(default_factory=list) + position: FixturePositionPayload = Field(default_factory=FixturePositionPayload) + + +class PatchValidationPayload(BaseModel): + universe: int = Field(default=1, ge=1, le=63999) + definition_id: int = Field(ge=1) + mode_key: str + start_address: int = Field(ge=1, le=512) + enabled: bool = True + exclude_patch_id: int | None = Field(default=None, ge=1) + + +class ManualPatchValuesPayload(BaseModel): + values: dict[int, int] = Field(default_factory=dict) + + +class BpmAudioStartPayload(BaseModel): + device: str = "alsa:auto" + + +class BpmAudioConfigPayload(BaseModel): + preferred_device: str = "alsa:auto" + + +class DmxOutputConfigPayload(BaseModel): + backend: Literal["simulator", "ola", "artnet"] = "simulator" + universe: int = Field(default=1, ge=1, le=63999) + output_port: str | None = None + target_host: str | None = None + + +class HomeAssistantConfigPayload(BaseModel): + enabled: bool = False + base_url: str = "" + token: str | None = None + default_universe: int = Field(default=10, ge=1, le=63999) + + +class HomeAssistantMappingPayload(BaseModel): + name: str + universe: int = Field(default=10, ge=1, le=63999) + start_address: int = Field(ge=1, le=512) + fixture_type: Literal["dimmer", "rgb", "rgbw", "cct", "switch", "scene", "automation"] = "dimmer" + entity_id: str + rate_limit_hz: float = Field(default=5.0, ge=0.1, le=30.0) + deadband: int = Field(default=2, ge=0, le=255) + fade_ms: int = Field(default=0, ge=0, le=10000) + invert_channel: bool = False + min_value: int = Field(default=0, ge=0, le=255) + max_value: int = Field(default=255, ge=0, le=255) + enabled: bool = True + master_dimmer: bool = True + + +class MidiBridgeTokenCreatePayload(BaseModel): + label: str + bridge_id: str | None = None + scopes: list[str] = Field(default_factory=lambda: ["midi:connect", "midi:events", "midi:heartbeat"]) + + +class MidiBridgeTokenResponse(BaseModel): + id: int + label: str + bridge_id: str | None + scopes: list[str] + created_at: datetime + revoked_at: datetime | None = None + last_used_at: datetime | None = None + token_preview: str + + +class MidiMessagePayload(BaseModel): + type: Literal["note_on", "note_off", "control_change", "program_change"] + channel: int = Field(ge=0, le=15) + number: int = Field(ge=0, le=127) + value: int = Field(ge=0, le=127) + + +class MidiBridgeEventPayload(BaseModel): + type: Literal["midi_event"] + protocol_version: int = Field(default=1, ge=1) + bridge_id: str + device: str + timestamp: datetime + message: MidiMessagePayload + + +class MidiBridgeHeartbeatPayload(BaseModel): + type: Literal["heartbeat"] + protocol_version: int = Field(default=1, ge=1) + bridge_id: str + device: str | None = None + timestamp: datetime | None = None + + +class MidiMappingPayload(BaseModel): + name: str + enabled: bool = True + bridge_id: str | None = None + device_name: str | None = None + message_type: Literal["note_on", "note_off", "control_change", "program_change"] + channel: int | None = Field(default=None, ge=0, le=15) + number: int = Field(ge=0, le=127) + action: Literal[ + "activate_scene", + "deactivate_scene", + "toggle_scene", + "flash_scene", + "blackout_on", + "blackout_off", + "blackout_toggle", + "set_master_dimmer", + "set_scene_intensity", + "start_effect", + "stop_effect", + ] + target_type: Literal["scene", "effect", "system", "global"] = "scene" + target_id: str | None = None + mode: Literal["trigger", "toggle", "hold", "flash", "continuous"] = "trigger" + minimum_value: int = Field(default=0, ge=0, le=127) + maximum_value: int = Field(default=127, ge=0, le=127) + + +class MidiLearnStartPayload(BaseModel): + timeout_seconds: int = Field(default=15, ge=3, le=120) + allow_passthrough: bool = False + + +class MidiTestMappingPayload(BaseModel): + value: int = Field(default=127, ge=0, le=127) + message_type: Literal["note_on", "note_off", "control_change", "program_change"] | None = None diff --git a/backend/app/patch/__init__.py b/backend/app/patch/__init__.py new file mode 100644 index 0000000..82499da --- /dev/null +++ b/backend/app/patch/__init__.py @@ -0,0 +1 @@ +"""Patch persistence and validation services.""" diff --git a/backend/app/patch/service.py b/backend/app/patch/service.py new file mode 100644 index 0000000..3b0e91f --- /dev/null +++ b/backend/app/patch/service.py @@ -0,0 +1,236 @@ +from __future__ import annotations + +from typing import Any + +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.models.entities import FixtureDefinition, FixtureInstance +from app.models.schemas import PatchPayload, PatchValidationPayload + + +class PatchService: + def __init__(self, session_factory: async_sessionmaker[AsyncSession] = SessionLocal) -> None: + self._session_factory = session_factory + + async def list_instances(self) -> list[dict[str, object]]: + async with self._session_factory() as session: + result = await session.execute(select(FixtureInstance).order_by(FixtureInstance.universe, FixtureInstance.start_address)) + instances = result.scalars().all() + fixtures = await self._definitions_by_ids(session, {instance.definition_id for instance in instances}) + return [self._serialize_instance(instance, fixtures.get(instance.definition_id)) for instance in instances] + + async def validate(self, payload: PatchValidationPayload) -> dict[str, object]: + async with self._session_factory() as session: + definition = await session.get(FixtureDefinition, payload.definition_id) + if definition is None: + raise LookupError("Fixture not found") + mode = self._resolve_mode(definition, payload.mode_key) + if mode is None: + raise LookupError("Fixture mode not found") + + channel_count = int(mode["channel_count"]) + end_address = payload.start_address + channel_count - 1 + conflicts: list[dict[str, object]] = [] + if end_address > 512: + conflicts.append( + { + "type": "range", + "message": f"Patch {payload.start_address}-{end_address} overskrider DMX kanal 512.", + } + ) + + result = await session.execute( + select(FixtureInstance).where(FixtureInstance.universe == payload.universe).order_by(FixtureInstance.start_address) + ) + instances = result.scalars().all() + fixtures = await self._definitions_by_ids(session, {instance.definition_id for instance in instances}) + for instance in instances: + if payload.exclude_patch_id is not None and instance.id == payload.exclude_patch_id: + continue + instance_end = instance.start_address + instance.channel_count - 1 + overlaps = not (instance_end < payload.start_address or instance.start_address > end_address) + if overlaps: + definition_for_instance = fixtures.get(instance.definition_id) + conflicts.append( + { + "type": "overlap", + "patch_id": instance.id, + "name": instance.name, + "range": f"{instance.start_address}-{instance_end}", + "fixture": self._definition_label(definition_for_instance), + "message": f"{instance.name} optager allerede {instance.start_address}-{instance_end}.", + } + ) + + occupied = sorted( + { + address + for instance in instances + if payload.exclude_patch_id is None or instance.id != payload.exclude_patch_id + for address in range(instance.start_address, instance.start_address + instance.channel_count) + } + ) + return { + "valid": not conflicts, + "range": f"{payload.start_address}-{end_address}", + "end_address": end_address, + "channel_count": channel_count, + "occupied_channels": occupied, + "conflicts": conflicts, + } + + async def create_instance(self, payload: PatchPayload) -> dict[str, object]: + validation = await self.validate( + PatchValidationPayload( + universe=payload.universe, + definition_id=payload.definition_id, + mode_key=payload.mode_key, + start_address=payload.start_address, + enabled=payload.enabled, + ) + ) + if not validation["valid"]: + raise ValueError("Patch overlapper eller overskrider kanalrangen") + + async with self._session_factory() as session: + definition = await session.get(FixtureDefinition, payload.definition_id) + if definition is None: + raise LookupError("Fixture not found") + mode = self._resolve_mode(definition, payload.mode_key) + if mode is None: + raise LookupError("Fixture mode not found") + + instance = FixtureInstance( + universe=payload.universe, + name=payload.name, + definition_id=payload.definition_id, + mode_key=payload.mode_key, + start_address=payload.start_address, + channel_count=int(mode["channel_count"]), + enabled=payload.enabled, + group_names=self._sanitize_groups(payload.group_names), + position=payload.position.model_dump(), + tags=[], + ) + session.add(instance) + await session.commit() + await session.refresh(instance) + return self._serialize_instance(instance, definition) + + async def update_instance(self, patch_id: int, payload: PatchPayload) -> dict[str, object]: + validation = await self.validate( + PatchValidationPayload( + universe=payload.universe, + definition_id=payload.definition_id, + mode_key=payload.mode_key, + start_address=payload.start_address, + enabled=payload.enabled, + exclude_patch_id=patch_id, + ) + ) + if not validation["valid"]: + raise ValueError("Patch overlapper eller overskrider kanalrangen") + + async with self._session_factory() as session: + instance = await session.get(FixtureInstance, patch_id) + if instance is None: + raise LookupError("Patch not found") + definition = await session.get(FixtureDefinition, payload.definition_id) + if definition is None: + raise LookupError("Fixture not found") + mode = self._resolve_mode(definition, payload.mode_key) + if mode is None: + raise LookupError("Fixture mode not found") + + instance.universe = payload.universe + instance.name = payload.name + instance.definition_id = payload.definition_id + instance.mode_key = payload.mode_key + instance.start_address = payload.start_address + instance.channel_count = int(mode["channel_count"]) + instance.enabled = payload.enabled + instance.group_names = self._sanitize_groups(payload.group_names) + instance.position = payload.position.model_dump() + await session.commit() + await session.refresh(instance) + return self._serialize_instance(instance, definition) + + async def delete_instance(self, patch_id: int) -> dict[str, object]: + async with self._session_factory() as session: + instance = await session.get(FixtureInstance, patch_id) + if instance is None: + raise LookupError("Patch not found") + deleted_name = instance.name + await session.delete(instance) + await session.commit() + return {"deleted": deleted_name, "id": patch_id} + + async def _definitions_by_ids(self, session: AsyncSession, ids: set[int]) -> dict[int, FixtureDefinition]: + if not ids: + return {} + result = await session.execute(select(FixtureDefinition).where(FixtureDefinition.id.in_(ids))) + definitions = result.scalars().all() + return {definition.id: definition for definition in definitions} + + def _resolve_mode(self, definition: FixtureDefinition, mode_key: str) -> dict[str, Any] | None: + modes = definition.normalized_data.get("modes", []) + if not isinstance(modes, list): + return None + for mode in modes: + if isinstance(mode, dict) and str(mode.get("key")) == mode_key: + return mode + return None + + def _serialize_instance( + self, + instance: FixtureInstance, + definition: FixtureDefinition | None, + ) -> dict[str, object]: + end_address = instance.start_address + instance.channel_count - 1 + mode = self._resolve_mode(definition, instance.mode_key) if definition is not None else None + return { + "id": instance.id, + "universe": instance.universe, + "name": instance.name, + "definition_id": instance.definition_id, + "fixture_slug": definition.slug if definition is not None else None, + "manufacturer": definition.manufacturer if definition is not None else None, + "model": definition.model if definition is not None else None, + "mode_key": instance.mode_key, + "start_address": instance.start_address, + "end_address": end_address, + "channel_count": instance.channel_count, + "enabled": instance.enabled, + "group_names": self._sanitize_groups(instance.group_names), + "position": self._serialize_position(instance.position), + "channels": mode.get("channels", []) if isinstance(mode, dict) else [], + } + + def _definition_label(self, definition: FixtureDefinition | None) -> str: + if definition is None: + return "Ukendt fixture" + return f"{definition.manufacturer} {definition.model}" + + def _sanitize_groups(self, groups: list[str]) -> list[str]: + unique: list[str] = [] + seen: set[str] = set() + for group in groups: + normalized = str(group).strip() + key = normalized.casefold() + if not normalized or key in seen: + continue + unique.append(normalized) + seen.add(key) + return unique + + def _serialize_position(self, payload: object) -> dict[str, float]: + if not isinstance(payload, dict): + payload = {} + return { + "x": float(payload.get("x", 50.0)), + "y": float(payload.get("y", 50.0)), + "z": float(payload.get("z", 0.0)), + "rotation": float(payload.get("rotation", 0.0)), + } diff --git a/backend/app/scenes/__init__.py b/backend/app/scenes/__init__.py new file mode 100644 index 0000000..38cc5c4 --- /dev/null +++ b/backend/app/scenes/__init__.py @@ -0,0 +1,2 @@ +"""Scene services.""" + diff --git a/backend/app/scenes/service.py b/backend/app/scenes/service.py new file mode 100644 index 0000000..1d5bf91 --- /dev/null +++ b/backend/app/scenes/service.py @@ -0,0 +1,229 @@ +from __future__ import annotations + +from typing import Any + +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker + +from app.core.database import SessionLocal +from app.dmx.engine import DmxEngine +from app.dmx.frame import FrameLayer +from app.models.entities import Scene +from app.models.schemas import ScenePayload +from app.patch.service import PatchService + + +class SceneService: + def __init__( + self, + engine: DmxEngine, + session_factory: async_sessionmaker[AsyncSession] = SessionLocal, + ) -> None: + self.engine = engine + self._session_factory = session_factory + self.patch = PatchService(session_factory) + self.active_slug: str | None = None + + async def save(self, payload: ScenePayload, scene_id: int | None = None) -> dict[str, object]: + async with self._session_factory() as session: + scene = await self._load_for_write(session, payload.slug, scene_id) + if scene is None: + scene = Scene( + name=payload.name, + slug=payload.slug, + color=payload.color, + icon=payload.icon, + priority=payload.priority, + fade_in_ms=payload.fade_in_ms, + fade_out_ms=payload.fade_out_ms, + hold_ms=payload.hold_ms, + master_limit=payload.master_limit, + values=[], + targets=[], + tags=payload.tags, + ) + session.add(scene) + + scene.name = payload.name + scene.slug = payload.slug + scene.color = payload.color + scene.icon = payload.icon + scene.priority = payload.priority + scene.fade_in_ms = payload.fade_in_ms + scene.fade_out_ms = payload.fade_out_ms + scene.hold_ms = payload.hold_ms + scene.master_limit = payload.master_limit + scene.values = [item.model_dump() for item in payload.values] + scene.targets = [item.model_dump() for item in payload.targets] + scene.tags = payload.tags + await session.commit() + await session.refresh(scene) + return self._serialize_scene(scene) + + async def list(self) -> list[dict[str, object]]: + async with self._session_factory() as session: + result = await session.execute(select(Scene).order_by(Scene.priority, Scene.created_at, Scene.id)) + return [self._serialize_scene(scene) for scene in result.scalars().all()] + + async def get(self, scene_id: int) -> dict[str, object]: + async with self._session_factory() as session: + scene = await session.get(Scene, scene_id) + if scene is None: + raise LookupError("Scene not found") + return self._serialize_scene(scene) + + async def activate(self, slug: str) -> dict[str, object]: + async with self._session_factory() as session: + result = await session.execute(select(Scene).where(Scene.slug == slug).limit(1)) + scene = result.scalar_one_or_none() + if scene is None: + raise LookupError("Scene not found") + + values_by_universe, precedence_map_by_universe = await self._resolve_layer_data(scene) + self.engine.set_layer( + FrameLayer( + name=f"scene:{scene.slug}", + priority=scene.priority, + values_by_universe=values_by_universe, + precedence_map_by_universe=precedence_map_by_universe, + ) + ) + self.active_slug = slug + return self._serialize_scene(scene) + + async def release(self, slug: str) -> None: + self.engine.remove_layer(f"scene:{slug}") + if self.active_slug == slug: + self.active_slug = None + + async def delete(self, scene_id: int) -> dict[str, object]: + async with self._session_factory() as session: + scene = await session.get(Scene, scene_id) + if scene is None: + raise LookupError("Scene not found") + slug = scene.slug + await self.release(slug) + await session.delete(scene) + await session.commit() + return {"deleted": slug} + + async def _load_for_write( + self, + session: AsyncSession, + slug: str, + scene_id: int | None, + ) -> Scene | None: + if scene_id is not None: + scene = await session.get(Scene, scene_id) + if scene is None: + raise LookupError("Scene not found") + result = await session.execute(select(Scene).where(Scene.slug == slug, Scene.id != scene_id).limit(1)) + if result.scalar_one_or_none() is not None: + raise ValueError("Scene slug findes allerede") + return scene + + result = await session.execute(select(Scene).where(Scene.slug == slug).limit(1)) + return result.scalar_one_or_none() + + async def _resolve_layer_data(self, scene: Scene) -> tuple[dict[int, dict[int, int]], dict[int, dict[int, str]]]: + values_by_universe: dict[int, dict[int, int]] = {1: {}} + precedence_map_by_universe: dict[int, dict[int, str]] = {1: {}} + + for entry in scene.values: + if not isinstance(entry, dict): + continue + if "channel" not in entry: + continue + channel = int(entry["channel"]) + if not 1 <= channel <= 512: + continue + values_by_universe.setdefault(1, {})[channel] = max(0, min(255, int(entry.get("value", 0)))) + precedence_map_by_universe.setdefault(1, {})[channel] = str(entry.get("precedence", "ltp")).lower() + + if not scene.targets: + return values_by_universe, precedence_map_by_universe + + patches = await self.patch.list_instances() + for target in scene.targets: + if not isinstance(target, dict): + continue + matches = self._resolve_target_matches(target, patches) + attribute_values = target.get("values", []) + if not isinstance(attribute_values, list): + continue + for patch in matches: + for attribute in attribute_values: + if not isinstance(attribute, dict): + continue + channel = self._match_patch_channel(patch, str(attribute.get("attribute", ""))) + if channel is None: + continue + absolute_channel = int(patch["start_address"]) + int(channel["index"]) - 1 + universe = int(patch.get("universe", 1)) + values_by_universe.setdefault(universe, {})[absolute_channel] = max( + 0, min(255, int(attribute.get("value", 0))) + ) + precedence_map_by_universe.setdefault(universe, {})[absolute_channel] = str( + attribute.get("precedence") or channel.get("precedence", "ltp") + ).lower() + return values_by_universe, precedence_map_by_universe + + def _resolve_target_matches( + self, + target: dict[str, object], + patches: list[dict[str, object]], + ) -> list[dict[str, object]]: + target_type = str(target.get("target_type", "fixture")) + if target_type == "group": + group_name = str(target.get("group_name", "")).strip() + if not group_name: + return [] + group_key = group_name.casefold() + return [ + patch + for patch in patches + if any(str(name).casefold() == group_key for name in patch.get("group_names", [])) + ] + + patch_id = target.get("patch_id") + if patch_id is None: + return [] + return [patch for patch in patches if int(patch["id"]) == int(patch_id)] + + def _match_patch_channel( + self, + patch: dict[str, object], + attribute_name: str, + ) -> dict[str, object] | None: + normalized = self._normalize_attribute(attribute_name) + for channel in patch.get("channels", []): + if not isinstance(channel, dict): + continue + candidates = { + self._normalize_attribute(str(channel.get("key", ""))), + self._normalize_attribute(str(channel.get("display_name", ""))), + } + if normalized in candidates: + return channel + return None + + def _normalize_attribute(self, value: str) -> str: + return "".join(character for character in value.casefold() if character.isalnum()) + + def _serialize_scene(self, scene: Scene) -> dict[str, object]: + return { + "id": scene.id, + "name": scene.name, + "slug": scene.slug, + "color": scene.color, + "icon": scene.icon, + "priority": scene.priority, + "fade_in_ms": scene.fade_in_ms, + "fade_out_ms": scene.fade_out_ms, + "hold_ms": scene.hold_ms, + "master_limit": scene.master_limit, + "values": scene.values, + "targets": scene.targets, + "tags": scene.tags, + "is_active": scene.slug == self.active_slug, + } diff --git a/backend/app/system/__init__.py b/backend/app/system/__init__.py new file mode 100644 index 0000000..545bc87 --- /dev/null +++ b/backend/app/system/__init__.py @@ -0,0 +1,3 @@ +from app.system.service import SystemControlService + +__all__ = ["SystemControlService"] diff --git a/backend/app/system/service.py b/backend/app/system/service.py new file mode 100644 index 0000000..0fa96de --- /dev/null +++ b/backend/app/system/service.py @@ -0,0 +1,96 @@ +from __future__ import annotations + +import asyncio +import os +from dataclasses import dataclass + +from app.core.config import get_settings + + +@dataclass(slots=True) +class SystemCommandResult: + accepted: bool + action: str + status: str + detail: str + + def as_dict(self) -> dict[str, object]: + return { + "accepted": self.accepted, + "action": self.action, + "status": self.status, + "detail": self.detail, + } + + +class SystemControlService: + def __init__(self) -> None: + settings = get_settings() + self._enabled = settings.system_control_enabled + self._platform = os.name + self._helper = settings.system_control_helper + + async def restart_service(self) -> dict[str, object]: + return (await self._run_helper( + action="restart-service", + helper_action="restart-service", + )).as_dict() + + async def reboot_host(self) -> dict[str, object]: + return (await self._run_helper( + action="reboot-host", + helper_action="reboot-host", + )).as_dict() + + async def _run_helper( + self, + *, + action: str, + helper_action: str, + ) -> SystemCommandResult: + if not self._enabled: + return SystemCommandResult( + accepted=False, + action=action, + status="disabled", + detail="Systemkontrol er deaktiveret i serverkonfigurationen.", + ) + if self._platform != "posix": + return SystemCommandResult( + accepted=False, + action=action, + status="unsupported-platform", + detail="Systemkontrol understoettes kun paa Linux/systemd-installationer.", + ) + if not os.path.exists(self._helper): + return SystemCommandResult( + accepted=False, + action=action, + status="helper-missing", + detail="Systemkontrol-helperen findes ikke paa maskinen.", + ) + + process = await asyncio.create_subprocess_exec( + "sudo", + "-n", + self._helper, + helper_action, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + stdout, stderr = await process.communicate() + if process.returncode != 0: + error_output = (stderr or stdout).decode("utf-8", errors="ignore").strip() or "Ukendt fejl" + return SystemCommandResult( + accepted=False, + action=action, + status="command-failed", + detail=f"Kunne ikke planlaegge handlingen: {error_output}", + ) + + return SystemCommandResult( + accepted=True, + action=action, + status="scheduled", + detail="Handling planlagt. Serveren kan blive utilgaengelig et kort oeje.", + ) diff --git a/backend/app/telemetry/__init__.py b/backend/app/telemetry/__init__.py new file mode 100644 index 0000000..e09ed82 --- /dev/null +++ b/backend/app/telemetry/__init__.py @@ -0,0 +1,2 @@ +"""Telemetry services.""" + diff --git a/backend/app/telemetry/service.py b/backend/app/telemetry/service.py new file mode 100644 index 0000000..f983640 --- /dev/null +++ b/backend/app/telemetry/service.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +from collections import deque +from dataclasses import dataclass +from datetime import UTC, datetime +from time import monotonic + +import psutil + +from app.dmx.backends import BackendStatus + + +@dataclass(slots=True) +class TelemetryEvent: + created_at: datetime + category: str + level: str + message: str + + +class TelemetryService: + def __init__(self) -> None: + self.started_at = monotonic() + self.events: deque[TelemetryEvent] = deque(maxlen=1000) + self.last_sent_at: datetime | None = None + self.last_error: str | None = None + self.reconnect_count = 0 + self.frames_sent = 0 + self.send_errors = 0 + + def record_send_success(self, status: BackendStatus) -> None: + self.last_sent_at = datetime.now(UTC) + self.last_error = None + self.reconnect_count = status.reconnect_count + self.frames_sent = status.frames_sent + self.send_errors = status.send_errors + + def record_send_failure(self, error: str, status: BackendStatus) -> None: + self.last_error = error + self.reconnect_count = status.reconnect_count + self.frames_sent = status.frames_sent + self.send_errors = status.send_errors + self.events.append( + TelemetryEvent(datetime.now(UTC), "DMX", "ERROR", error) + ) + + def snapshot(self, queue_depth: int = 0) -> dict[str, object]: + temperature = None + try: + readings = psutil.sensors_temperatures() + if readings: + first = next(iter(readings.values())) + if first: + temperature = float(first[0].current) + except Exception: + temperature = None + + return { + "uptime_seconds": round(monotonic() - self.started_at, 2), + "cpu_percent": psutil.cpu_percent(interval=None), + "ram_percent": psutil.virtual_memory().percent, + "temperature_c": temperature, + "queue_depth": queue_depth, + "reconnect_count": self.reconnect_count, + "last_error": self.last_error, + "last_sent_at": self.last_sent_at, + "frames_sent": self.frames_sent, + "send_errors": self.send_errors, + "events": [ + { + "created_at": event.created_at.isoformat(), + "category": event.category, + "level": event.level, + "message": event.message, + } + for event in list(self.events)[-50:] + ], + } diff --git a/backend/app/websocket/__init__.py b/backend/app/websocket/__init__.py new file mode 100644 index 0000000..285e20e --- /dev/null +++ b/backend/app/websocket/__init__.py @@ -0,0 +1,2 @@ +"""WebSocket helpers.""" + diff --git a/backend/app/websocket/router.py b/backend/app/websocket/router.py new file mode 100644 index 0000000..edd3f3f --- /dev/null +++ b/backend/app/websocket/router.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +import asyncio + +from fastapi import APIRouter, WebSocket, WebSocketDisconnect + +from app.core.dependencies import app_state + +websocket_router = APIRouter() + + +@websocket_router.websocket("/ws/live") +async def live_socket(websocket: WebSocket) -> None: + await websocket.accept() + try: + while True: + await websocket.send_json( + { + "engine": app_state.engine.snapshot(), + "telemetry": app_state.telemetry.snapshot(len(app_state.triggers.queue)), + "bpm": app_state.bpm.snapshot(), + "queue": app_state.triggers.snapshot(), + } + ) + await asyncio.sleep(0.1) + except WebSocketDisconnect: + return diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py new file mode 100644 index 0000000..5801bea --- /dev/null +++ b/backend/tests/conftest.py @@ -0,0 +1,4 @@ +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) diff --git a/backend/tests/test_api.py b/backend/tests/test_api.py new file mode 100644 index 0000000..761cdae --- /dev/null +++ b/backend/tests/test_api.py @@ -0,0 +1,593 @@ +from uuid import uuid4 + +from app.core.dependencies import app_state +from app.main import app +from fastapi.testclient import TestClient + + +def test_health_endpoint() -> None: + with TestClient(app) as client: + response = client.get("/api/v1/health") + assert response.status_code == 200 + payload = response.json() + assert payload["status"] == "ok" + assert payload["simulator_enabled"] is True + + +def test_trigger_endpoint_returns_202() -> None: + with TestClient(app) as client: + response = client.post( + "/api/v1/triggers/raid", + json={"eventType": "raid", "displayName": "Tester", "eventId": "evt-1"}, + ) + assert response.status_code == 202 + assert response.json()["accepted"] is True + + +def test_dmx_status_exposes_backend_counters() -> None: + with TestClient(app) as client: + response = client.get("/api/v1/dmx/status") + assert response.status_code == 200 + payload = response.json() + assert payload["backend"] in {"simulator", "ola", "artnet"} + assert payload["selected_universe"] == 1 + assert "selected_output_port" in payload + assert payload["frames_sent"] >= 0 + assert payload["send_errors"] >= 0 + assert "last_successful_frame" in payload + + +def test_dmx_output_config_can_be_saved_and_read_back() -> None: + with TestClient(app) as client: + original = client.get("/api/v1/dmx/config").json() + + response = client.put( + "/api/v1/dmx/config", + json={ + "backend": "artnet", + "universe": 7, + "output_port": "WLED stue", + "target_host": "192.168.2.50", + }, + ) + assert response.status_code == 200 + payload = response.json() + assert payload["backend"] == "artnet" + assert payload["universe"] == 7 + assert payload["output_port"] == "WLED stue" + assert payload["target_host"] == "192.168.2.50" + + read_back = client.get("/api/v1/dmx/config") + assert read_back.status_code == 200 + assert read_back.json()["backend"] == "artnet" + assert read_back.json()["universe"] == 7 + + restore_response = client.put("/api/v1/dmx/config", json=original) + assert restore_response.status_code == 200 + + +def test_dmx_artnet_discover_endpoint_returns_nodes(monkeypatch) -> None: + async def fake_discover(timeout_s: float) -> dict[str, object]: + assert timeout_s == 0.25 + return { + "count": 1, + "items": [ + { + "ip": "192.168.2.60", + "short_name": "WLED", + "long_name": "WLED Node", + "label": "WLED Node (192.168.2.60)", + "net": 0, + "sub_switch": 0, + "port_count": 1, + "raw_port_address": 0, + } + ], + } + + monkeypatch.setattr(app_state.dmx, "discover_artnet", fake_discover) + + with TestClient(app) as client: + response = client.post("/api/v1/dmx/artnet/discover?timeout_s=0.25") + assert response.status_code == 200 + payload = response.json() + assert payload["count"] == 1 + assert payload["items"][0]["ip"] == "192.168.2.60" + + +def test_home_assistant_config_can_be_saved_and_mapping_created(monkeypatch) -> None: + with TestClient(app) as client: + config_response = client.put( + "/api/v1/integrations/home-assistant/config", + json={ + "enabled": True, + "base_url": "http://ha.local:8123", + "token": "secret-token", + "default_universe": 10, + }, + ) + assert config_response.status_code == 200 + assert config_response.json()["enabled"] is True + assert config_response.json()["base_url"] == "http://ha.local:8123" + assert config_response.json()["has_token"] is True + assert "token" not in config_response.json() + assert config_response.json()["token_mask"] == "********" + + create_response = client.post( + "/api/v1/integrations/home-assistant/mappings", + json={ + "name": "HA RGB", + "universe": 10, + "start_address": 1, + "fixture_type": "rgb", + "entity_id": "light.bar_rgb", + "rate_limit_hz": 5, + "deadband": 2, + "fade_ms": 150, + "invert_channel": False, + "min_value": 0, + "max_value": 255, + "enabled": True, + "master_dimmer": True, + }, + ) + assert create_response.status_code == 200 + mapping = create_response.json() + assert mapping["universe"] == 10 + assert mapping["channel_span"] == 4 + + async def fake_test_mapping(mapping_id: int) -> dict[str, object]: + return {"status": "sent", "mapping_id": mapping_id} + + monkeypatch.setattr(app_state.home_assistant, "test_mapping", fake_test_mapping) + test_response = client.post(f"/api/v1/integrations/home-assistant/mappings/{mapping['id']}/test") + assert test_response.status_code == 200 + assert test_response.json()["status"] == "sent" + + delete_response = client.delete(f"/api/v1/integrations/home-assistant/mappings/{mapping['id']}") + assert delete_response.status_code == 200 + + +def test_home_assistant_connection_endpoint_returns_status(monkeypatch) -> None: + async def fake_test_connection() -> dict[str, object]: + return { + "reachable": True, + "auth_ok": True, + "ha_version": "2026.7.0", + "last_error": None, + "last_successful_call_at": "2026-07-23T12:45:00+02:00", + "last_connection_success_at": "2026-07-23T12:45:00+02:00", + } + + monkeypatch.setattr(app_state.home_assistant, "test_connection", fake_test_connection) + + with TestClient(app) as client: + response = client.post("/api/v1/integrations/home-assistant/test-connection") + assert response.status_code == 200 + payload = response.json() + assert payload["reachable"] is True + assert payload["auth_ok"] is True + assert payload["ha_version"] == "2026.7.0" + + +def test_bpm_config_can_be_saved_and_read_back() -> None: + with TestClient(app) as client: + original = client.get("/api/v1/bpm/config").json()["preferred_device"] + response = client.put( + "/api/v1/bpm/config", + json={"preferred_device": "alsa:plughw:CARD=SB,DEV=0"}, + ) + assert response.status_code == 200 + assert response.json()["preferred_device"] == "alsa:plughw:CARD=SB,DEV=0" + + status_response = client.get("/api/v1/bpm/status") + assert status_response.status_code == 200 + assert status_response.json()["selected_device"] == "alsa:plughw:CARD=SB,DEV=0" + + restore_response = client.put( + "/api/v1/bpm/config", + json={"preferred_device": original}, + ) + assert restore_response.status_code == 200 + + +def test_restart_service_endpoint_returns_scheduler_result(monkeypatch) -> None: + async def fake_restart_service() -> dict[str, object]: + return { + "accepted": True, + "action": "restart-service", + "status": "scheduled", + "detail": "Servicegenstart planlagt.", + } + + monkeypatch.setattr(app_state.system, "restart_service", fake_restart_service) + + with TestClient(app) as client: + response = client.post("/api/v1/system/restart-service") + assert response.status_code == 200 + assert response.json()["accepted"] is True + assert response.json()["action"] == "restart-service" + + +def test_reboot_host_endpoint_returns_scheduler_result(monkeypatch) -> None: + async def fake_reboot_host() -> dict[str, object]: + return { + "accepted": True, + "action": "reboot-host", + "status": "scheduled", + "detail": "Hostgenstart planlagt.", + } + + monkeypatch.setattr(app_state.system, "reboot_host", fake_reboot_host) + + with TestClient(app) as client: + response = client.post("/api/v1/system/reboot-host") + assert response.status_code == 200 + assert response.json()["accepted"] is True + assert response.json()["action"] == "reboot-host" + + +def test_delete_scene_releases_active_layer() -> None: + with TestClient(app) as client: + app_state.scenes.active_slug = None + app_state.engine.layers.clear() + + existing_scenes = client.get("/api/v1/scenes").json()["items"] + for scene in existing_scenes: + if scene["slug"] == "brr3-test": + client.delete(f"/api/v1/scenes/{scene['id']}") + + create_response = client.post( + "/api/v1/scenes", + json={ + "name": "BRR-3 test", + "slug": "brr3-test", + "priority": 10, + "values": [{"channel": 10, "value": 255, "precedence": "htp", "source": "scene"}], + }, + ) + assert create_response.status_code == 200 + + activate_response = client.post("/api/v1/scenes/brr3-test/activate") + assert activate_response.status_code == 200 + assert "scene:brr3-test" in app_state.engine.layers + + scene_id = create_response.json()["id"] + delete_response = client.delete(f"/api/v1/scenes/{scene_id}") + assert delete_response.status_code == 200 + assert delete_response.json() == {"deleted": "brr3-test"} + assert "scene:brr3-test" not in app_state.engine.layers + assert app_state.scenes.active_slug is None + + +def test_imported_fixture_persists_and_can_be_patched() -> None: + universe = 101 + unique_key = f"brr3-{uuid4().hex[:8]}" + payload = { + "manufacturer": "Eurolite", + "model": "BRR-3 Test", + "categories": ["Color Changer"], + "source": {"manufacturer_key": "eurolite", "fixture_key": unique_key}, + "modes": [ + { + "key": "6ch", + "channels": [ + {"key": "Red", "display_name": "Red", "precedence": "ltp", "resolution": 8}, + {"key": "Green", "display_name": "Green", "precedence": "ltp", "resolution": 8}, + {"key": "Blue", "display_name": "Blue", "precedence": "ltp", "resolution": 8}, + {"key": "White", "display_name": "White", "precedence": "ltp", "resolution": 8}, + {"key": "Amber", "display_name": "Amber", "precedence": "ltp", "resolution": 8}, + {"key": "UV", "display_name": "UV", "precedence": "ltp", "resolution": 8}, + ], + } + ], + } + + with TestClient(app) as client: + import_response = client.post("/api/v1/fixtures/import-file", json=payload) + assert import_response.status_code == 200 + fixture = import_response.json() + fixture_id = fixture["id"] + assert fixture["manufacturer"] == "Eurolite" + assert fixture["modes"][0]["channel_count"] == 6 + + list_response = client.get("/api/v1/fixtures") + assert list_response.status_code == 200 + assert any(item["id"] == fixture_id for item in list_response.json()["items"]) + + validate_response = client.post( + "/api/v1/patch/validate", + json={ + "universe": universe, + "definition_id": fixture_id, + "mode_key": "6ch", + "start_address": 10, + }, + ) + assert validate_response.status_code == 200 + assert validate_response.json()["valid"] is True + assert validate_response.json()["range"] == "10-15" + + create_patch_response = client.post( + "/api/v1/patch", + json={ + "universe": universe, + "name": "Eurolite venstre", + "definition_id": fixture_id, + "mode_key": "6ch", + "start_address": 10, + "enabled": True, + "group_names": ["front", "wash"], + "position": {"x": 20, "y": 35, "z": 8, "rotation": 15}, + }, + ) + assert create_patch_response.status_code == 201 + patch = create_patch_response.json() + assert patch["start_address"] == 10 + assert patch["end_address"] == 15 + assert patch["group_names"] == ["front", "wash"] + assert patch["position"]["x"] == 20 + + conflict_response = client.post( + "/api/v1/patch", + json={ + "universe": universe, + "name": "Eurolite højre", + "definition_id": fixture_id, + "mode_key": "6ch", + "start_address": 12, + "enabled": True, + "group_names": [], + "position": {"x": 70, "y": 35, "z": 8, "rotation": 345}, + }, + ) + assert conflict_response.status_code == 409 + + delete_patch_response = client.delete(f"/api/v1/patch/{patch['id']}") + assert delete_patch_response.status_code == 200 + + delete_fixture_response = client.delete(f"/api/v1/fixtures/{fixture_id}") + assert delete_fixture_response.status_code == 204 + + +def test_import_ofl_style_fixture_file_supports_mode_channels() -> None: + payload = { + "$schema": "https://raw.githubusercontent.com/OpenLightingProject/open-fixture-library/master/schemas/fixture.json", + "manufacturer": "Eurolite", + "name": "LED Bar-3 HCL Bar", + "categories": ["Color Changer"], + "source": { + "manufacturer_key": "eurolite", + "fixture_key": f"led-bar-3-hcl-bar-{uuid4().hex[:8]}", + }, + "availableChannels": { + "Dimmer": {"capability": {"type": "Intensity"}}, + "Strobe": { + "capabilities": [ + {"dmxRange": [0, 9], "type": "NoFunction"}, + {"dmxRange": [10, 255], "type": "ShutterStrobe"}, + ] + }, + "Red": {"capability": {"type": "ColorIntensity", "color": "Red"}}, + "Green": {"capability": {"type": "ColorIntensity", "color": "Green"}}, + "Blue": {"capability": {"type": "ColorIntensity", "color": "Blue"}}, + "White": {"capability": {"type": "ColorIntensity", "color": "White"}}, + "Amber": {"capability": {"type": "ColorIntensity", "color": "Amber"}}, + "UV": {"capability": {"type": "ColorIntensity", "color": "UV"}}, + }, + "modes": [ + {"name": "6ch", "channels": ["Red", "Green", "Blue", "White", "Amber", "UV"]}, + {"name": "10ch", "channels": ["Dimmer", "Strobe", "Red", "Green", "Blue", "White", "Amber", "UV"]}, + ], + } + + with TestClient(app) as client: + response = client.post("/api/v1/fixtures/import-file", json=payload) + assert response.status_code == 200 + fixture = response.json() + assert fixture["manufacturer"] == "Eurolite" + assert fixture["model"] == "LED Bar-3 HCL Bar" + assert fixture["source"]["manufacturer_key"] == "eurolite" + assert fixture["modes"][0]["channels"][0]["key"] == "Red" + assert fixture["modes"][1]["channels"][0]["precedence"] == "htp" + assert fixture["modes"][1]["channels"][1]["capabilities"][1]["type"] == "ShutterStrobe" + + delete_fixture_response = client.delete(f"/api/v1/fixtures/{fixture['id']}") + assert delete_fixture_response.status_code == 204 + + +def test_live_mixer_returns_and_updates_patched_fixture() -> None: + universe = 102 + unique_key = f"live-mixer-{uuid4().hex[:8]}" + payload = { + "manufacturer": "Eurolite", + "model": "LED Bar-3 HCL Bar", + "categories": ["Color Changer"], + "source": {"manufacturer_key": "eurolite", "fixture_key": unique_key}, + "modes": [ + { + "key": "10-channel", + "channels": [ + {"key": "Dimmer", "display_name": "Dimmer", "precedence": "htp", "resolution": 8}, + {"key": "Strobe", "display_name": "Strobe", "precedence": "ltp", "resolution": 8}, + {"key": "Red", "display_name": "Red", "precedence": "ltp", "resolution": 8}, + ], + } + ], + } + + with TestClient(app) as client: + fixture = client.post("/api/v1/fixtures/import-file", json=payload).json() + patch = client.post( + "/api/v1/patch", + json={ + "universe": universe, + "name": "Eurolite live", + "definition_id": fixture["id"], + "mode_key": "10-channel", + "start_address": 10, + "enabled": True, + "group_names": [], + "position": {"x": 40, "y": 50, "z": 5, "rotation": 0}, + }, + ).json() + + mixer_response = client.get("/api/v1/live/mixer") + assert mixer_response.status_code == 200 + assert any(item["patch_id"] == patch["id"] for item in mixer_response.json()["items"]) + + update_response = client.put( + f"/api/v1/live/mixer/{patch['id']}", + json={"values": {"1": 200, "3": 128}}, + ) + assert update_response.status_code == 200 + mixer_item = next(item for item in update_response.json()["items"] if item["patch_id"] == patch["id"]) + dimmer = next(channel for channel in mixer_item["channels"] if channel["index"] == 1) + red = next(channel for channel in mixer_item["channels"] if channel["index"] == 3) + assert dimmer["value"] == 200 + assert red["absolute_channel"] == 12 + + clear_response = client.delete(f"/api/v1/live/mixer/{patch['id']}") + assert clear_response.status_code == 200 + + assert client.delete(f"/api/v1/patch/{patch['id']}").status_code == 200 + assert client.delete(f"/api/v1/fixtures/{fixture['id']}").status_code == 204 + + +def test_live_mixer_returns_and_updates_home_assistant_mapping() -> None: + with TestClient(app) as client: + create_response = client.post( + "/api/v1/integrations/home-assistant/mappings", + json={ + "name": "Loft bunker", + "universe": 10, + "start_address": 1, + "fixture_type": "switch", + "entity_id": "light.loft_bunker", + "rate_limit_hz": 5, + "deadband": 2, + "fade_ms": 0, + "invert_channel": False, + "min_value": 0, + "max_value": 255, + "enabled": True, + "master_dimmer": False, + }, + ) + assert create_response.status_code == 200 + mapping = create_response.json() + + mixer_response = client.get("/api/v1/live/mixer") + assert mixer_response.status_code == 200 + mixer_item = next( + item + for item in mixer_response.json()["items"] + if item["source_type"] == "home_assistant" and item["source_id"] == mapping["id"] + ) + assert mixer_item["entity_id"] == "light.loft_bunker" + assert mixer_item["universe"] == 10 + assert mixer_item["channel_count"] == 1 + + update_response = client.put( + f"/api/v1/live/mixer/home-assistant/{mapping['id']}", + json={"values": {"1": 255}}, + ) + assert update_response.status_code == 200 + updated_item = next( + item + for item in update_response.json()["items"] + if item["source_type"] == "home_assistant" and item["source_id"] == mapping["id"] + ) + assert updated_item["channels"][0]["value"] == 255 + assert updated_item["channels"][0]["absolute_channel"] == 1 + + clear_response = client.delete(f"/api/v1/live/mixer/home-assistant/{mapping['id']}") + assert clear_response.status_code == 200 + + delete_response = client.delete(f"/api/v1/integrations/home-assistant/mappings/{mapping['id']}") + assert delete_response.status_code == 200 + + +def test_scene_group_target_resolves_fixture_channels() -> None: + universe = 103 + unique_key = f"scene-group-{uuid4().hex[:8]}" + payload = { + "manufacturer": "Eurolite", + "model": "LED Bar-3 HCL Bar", + "categories": ["Color Changer"], + "source": {"manufacturer_key": "eurolite", "fixture_key": unique_key}, + "modes": [ + { + "key": "10-channel", + "channels": [ + {"key": "Dimmer", "display_name": "Dimmer", "precedence": "htp", "resolution": 8}, + {"key": "Strobe", "display_name": "Strobe", "precedence": "ltp", "resolution": 8}, + {"key": "Blue", "display_name": "Blue", "precedence": "ltp", "resolution": 8}, + ], + } + ], + } + + with TestClient(app) as client: + fixture = client.post("/api/v1/fixtures/import-file", json=payload).json() + patch_left = client.post( + "/api/v1/patch", + json={ + "universe": universe, + "name": "Bar venstre", + "definition_id": fixture["id"], + "mode_key": "10-channel", + "start_address": 1, + "enabled": True, + "group_names": ["synk-a", "front"], + "position": {"x": 20, "y": 30, "z": 5, "rotation": 10}, + }, + ).json() + patch_right = client.post( + "/api/v1/patch", + json={ + "universe": universe, + "name": "Bar højre", + "definition_id": fixture["id"], + "mode_key": "10-channel", + "start_address": 11, + "enabled": True, + "group_names": ["synk-a", "front"], + "position": {"x": 80, "y": 30, "z": 5, "rotation": 350}, + }, + ).json() + + scene_response = client.post( + "/api/v1/scenes", + json={ + "name": "Front blue", + "slug": "front-blue", + "priority": 20, + "values": [], + "targets": [ + { + "target_type": "group", + "group_name": "synk-a", + "values": [ + {"attribute": "Dimmer", "value": 200}, + {"attribute": "Blue", "value": 128}, + ], + } + ], + }, + ) + assert scene_response.status_code == 200 + + activate_response = client.post("/api/v1/scenes/front-blue/activate") + assert activate_response.status_code == 200 + layer = app_state.engine.layers["scene:front-blue"] + assert layer.values_by_universe[universe][1] == 200 + assert layer.values_by_universe[universe][3] == 128 + assert layer.values_by_universe[universe][11] == 200 + assert layer.values_by_universe[universe][13] == 128 + + scene_id = scene_response.json()["id"] + assert client.delete(f"/api/v1/scenes/{scene_id}").status_code == 200 + assert client.delete(f"/api/v1/patch/{patch_left['id']}").status_code == 200 + assert client.delete(f"/api/v1/patch/{patch_right['id']}").status_code == 200 + assert client.delete(f"/api/v1/fixtures/{fixture['id']}").status_code == 204 diff --git a/backend/tests/test_artnet_backend.py b/backend/tests/test_artnet_backend.py new file mode 100644 index 0000000..17370ef --- /dev/null +++ b/backend/tests/test_artnet_backend.py @@ -0,0 +1,118 @@ +import struct + +import pytest +from app.dmx.backends import ( + ARTNET_HEADER, + ARTNET_OPCODE_DMX, + ARTNET_OPCODE_POLL_REPLY, + ARTNET_PORT, + ArtNetDmxBackend, + build_artnet_dmx_packet, + parse_artnet_poll_reply, +) +from app.dmx.frame import DmxFrame + + +def test_build_artnet_packet_sends_full_512_frame_to_expected_universe() -> None: + values = [0] * 512 + values[0] = 255 + values[9] = 64 + packet = build_artnet_dmx_packet(2, values, sequence=9) + + assert packet.startswith(ARTNET_HEADER) + assert struct.unpack_from("H", packet, 16)[0] == 512 + assert len(packet) == 530 + assert packet[18] == 255 + assert packet[27] == 64 + + +def test_parse_artnet_poll_reply_extracts_node_identity() -> None: + packet = bytearray(239) + packet[0:8] = ARTNET_HEADER + struct.pack_into("H", packet, 172, 4) + packet[190] = 3 + + node = parse_artnet_poll_reply(bytes(packet)) + + assert node is not None + assert node.ip == "192.168.2.55" + assert node.short_name == "WLED Node" + assert node.long_name == "Paravega Test Node" + assert node.port_count == 4 + assert node.raw_port_address == 3 + assert node.label == "Paravega Test Node (192.168.2.55)" + + +@pytest.mark.asyncio +async def test_artnet_backend_sends_udp_packet_and_updates_status(monkeypatch) -> None: + sent_packets: list[tuple[bytes, tuple[str, int]]] = [] + + class FakeSocket: + def setsockopt(self, *_args: object) -> None: + return + + def sendto(self, packet: bytes, address: tuple[str, int]) -> None: + sent_packets.append((packet, address)) + + def close(self) -> None: + return + + backend = ArtNetDmxBackend( + universe=4, + target_host="192.168.2.77", + output_port="Paravega stue", + ) + monkeypatch.setattr(backend, "_socket", FakeSocket()) + frame = DmxFrame(universe=4) + frame.set_channel(1, 200, "scene") + frame.set_channel(4, 99, "scene") + + await backend.send_frame(frame) + + status = backend.get_status() + assert status.connected is True + assert status.degraded is False + assert status.frames_sent == 1 + assert status.send_errors == 0 + assert status.selected_universe == 4 + assert status.selected_output_port == "Paravega stue" + assert sent_packets[0][1] == ("192.168.2.77", ARTNET_PORT) + assert sent_packets[0][0][18] == 200 + assert sent_packets[0][0][21] == 99 + + +@pytest.mark.asyncio +async def test_artnet_backend_marks_degraded_on_socket_error(monkeypatch) -> None: + class FakeSocket: + def setsockopt(self, *_args: object) -> None: + return + + def sendto(self, _packet: bytes, _address: tuple[str, int]) -> None: + raise OSError("Network unreachable") + + def close(self) -> None: + return + + backend = ArtNetDmxBackend(universe=1, target_host="192.168.2.90") + monkeypatch.setattr(backend, "_socket", FakeSocket()) + frame = DmxFrame() + frame.set_channel(1, 255, "scene") + + with pytest.raises(RuntimeError, match="Network unreachable"): + await backend.send_frame(frame) + + status = backend.get_status() + assert status.connected is False + assert status.degraded is True + assert status.send_errors == 1 + assert status.last_error == "Network unreachable" diff --git a/backend/tests/test_backup_restore.py b/backend/tests/test_backup_restore.py new file mode 100644 index 0000000..35ec904 --- /dev/null +++ b/backend/tests/test_backup_restore.py @@ -0,0 +1,35 @@ +from pathlib import Path + +from app.backup.service import BackupService + + +def test_backup_and_restore_roundtrip(tmp_path: Path) -> None: + data_dir = tmp_path / "data" + backup_dir = data_dir / "backups" + data_dir.mkdir(parents=True) + sample_file = data_dir / "settings.json" + sample_file.write_text('{"scene":"base"}', encoding="utf-8") + + service = BackupService(data_dir=data_dir, backup_dir=backup_dir) + created = service.create_backup("audit-backup") + + sample_file.write_text('{"scene":"modified"}', encoding="utf-8") + service.restore_backup(created.id) + + assert sample_file.read_text(encoding="utf-8") == '{"scene":"base"}' + assert any(item.label == "audit-backup" for item in service.list_backups()) + + +def test_restore_empty_backup_clears_runtime_files(tmp_path: Path) -> None: + data_dir = tmp_path / "data" + backup_dir = data_dir / "backups" + data_dir.mkdir(parents=True) + + service = BackupService(data_dir=data_dir, backup_dir=backup_dir) + empty_backup = service.create_backup("empty-runtime") + + sample_file = data_dir / "settings.json" + sample_file.write_text('{"scene":"modified"}', encoding="utf-8") + service.restore_backup(empty_backup.id) + + assert not sample_file.exists() diff --git a/backend/tests/test_bpm_service.py b/backend/tests/test_bpm_service.py new file mode 100644 index 0000000..2f8bc0b --- /dev/null +++ b/backend/tests/test_bpm_service.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import asyncio + +from app.bpm.service import BeatAnalyzer, BpmService + + +def test_beat_analyzer_estimates_click_track_bpm() -> None: + analyzer = BeatAnalyzer(sample_rate=44_100, window_size=1024) + click = (b"\x00\x40" * 2048) + (b"\x00\x00" * (44_100 // 2 - 2048)) + + result = None + for _ in range(6): + result = analyzer.feed_pcm16(click) + + assert result is not None + bpm, confidence = result + assert 117 <= bpm <= 124 + assert confidence > 0.5 + + +def test_bpm_service_synthetic_audio_updates_snapshot() -> None: + async def run_test() -> None: + service = BpmService() + await service.start_audio("synthetic-click-track") + await asyncio.sleep(1.2) + snapshot = service.snapshot() + await service.stop_audio() + + assert snapshot["mode"] == "audio:synthetic-click-track" + assert snapshot["audio_connected"] is True + assert 117 <= float(snapshot["bpm"]) <= 123 + assert float(snapshot["confidence"]) > 0.3 + assert float(snapshot["input_level"]) > 0.0 + assert float(snapshot["peak_level"]) >= float(snapshot["input_level"]) + assert snapshot["clipping"] is False + + asyncio.run(run_test()) + + +def test_parse_alsa_card_line_supports_named_aliases() -> None: + service = BpmService() + + card = service._parse_card_line("card 1: SB [HDA ATI SB], device 0: ALC883 Analog [ALC883 Analog]") + device = service._parse_device_from_card_line( + "card 1: SB [HDA ATI SB], device 0: ALC883 Analog [ALC883 Analog]" + ) + + assert card == ("1", "SB", "HDA ATI SB") + assert device == ("0", "ALC883 Analog", "ALC883 Analog") + + +def test_busy_alsa_error_is_humanized() -> None: + service = BpmService() + + message = service._humanize_alsa_error( + "alsa:plughw:CARD=SB,DEV=0", + "arecord: main:831: audio open error: Device or resource busy", + ) + + assert "Mikrofonen er optaget" in message diff --git a/backend/tests/test_dmx_frame.py b/backend/tests/test_dmx_frame.py new file mode 100644 index 0000000..0939a6d --- /dev/null +++ b/backend/tests/test_dmx_frame.py @@ -0,0 +1,39 @@ +from app.dmx.frame import DmxFrame, FrameLayer, merge_layers + + +def test_frame_has_512_channels() -> None: + frame = DmxFrame() + assert len(frame.values) == 512 + assert all(value == 0 for value in frame.values) + + +def test_htp_chooses_highest_value() -> None: + base = FrameLayer.from_channel_values("base", priority=10, values={1: 80}, precedence_map={1: "htp"}) + overlay = FrameLayer.from_channel_values("overlay", priority=20, values={1: 200}, precedence_map={1: "htp"}) + frames = merge_layers([base, overlay]) + assert frames[1].values[0] == 200 + assert frames[1].source_map[0] == "overlay" + + +def test_ltp_chooses_latest_priority_layer() -> None: + base = FrameLayer.from_channel_values("base", priority=10, values={2: 200}, precedence_map={2: "ltp"}) + overlay = FrameLayer.from_channel_values("overlay", priority=20, values={2: 15}, precedence_map={2: "ltp"}) + frames = merge_layers([base, overlay]) + assert frames[1].values[1] == 15 + assert frames[1].source_map[1] == "overlay" + + +def test_blackout_overrides_layers() -> None: + layer = FrameLayer.from_channel_values("scene", priority=10, values={1: 255, 2: 128}, precedence_map={1: "htp"}) + frames = merge_layers([layer], blackout=True) + assert frames[1].values[0] == 0 + assert frames[1].values[1] == 0 + + +def test_layers_are_merged_per_universe() -> None: + front = FrameLayer.from_channel_values("front", priority=10, values={1: 255}, universe=1) + home_assistant = FrameLayer.from_channel_values("ha", priority=10, values={1: 180, 2: 90}, universe=10) + frames = merge_layers([front, home_assistant]) + assert frames[1].values[0] == 255 + assert frames[10].values[0] == 180 + assert frames[10].values[1] == 90 diff --git a/backend/tests/test_effect_service.py b/backend/tests/test_effect_service.py new file mode 100644 index 0000000..f412691 --- /dev/null +++ b/backend/tests/test_effect_service.py @@ -0,0 +1,55 @@ +from __future__ import annotations + +import asyncio + +from app.effects.service import EffectService +from app.models.schemas import EffectPayload + + +class FakeEngine: + def __init__(self) -> None: + self.layers: dict[str, object] = {} + + def set_layer(self, layer) -> None: # type: ignore[no-untyped-def] + self.layers[layer.name] = layer + + def remove_layer(self, name: str) -> None: + self.layers.pop(name, None) + + +class FakeBpm: + def __init__(self) -> None: + self.current_bpm = 180.0 + self.audio_connected = False + self.beat_counter = 0 + + +def test_beat_flash_effect_pulses_layer_from_bpm_clock() -> None: + async def run_test() -> None: + engine = FakeEngine() + bpm = FakeBpm() + service = EffectService(engine, bpm) # type: ignore[arg-type] + payload = EffectPayload( + name="Beat dimmer", + slug="beat-dimmer", + effect_type="beat-flash", + priority=60, + parameters={ + "duration_ms": 90, + "channels": {"1": 255}, + "precedence": {"1": "htp"}, + }, + ) + + service.save(payload) + service.trigger(payload.slug) + await asyncio.sleep(0.03) + assert "effect:beat-dimmer" in engine.layers + + await asyncio.sleep(0.16) + assert "effect:beat-dimmer" not in engine.layers + + service.stop(payload.slug) + await service.shutdown() + + asyncio.run(run_test()) diff --git a/backend/tests/test_home_assistant_service.py b/backend/tests/test_home_assistant_service.py new file mode 100644 index 0000000..2a93255 --- /dev/null +++ b/backend/tests/test_home_assistant_service.py @@ -0,0 +1,682 @@ +from __future__ import annotations + +import asyncio + +import httpx +import pytest + +from app.dmx.engine import DmxEngine +from app.dmx.frame import DmxFrame +from app.homeassistant.service import HomeAssistantService +from app.telemetry.service import TelemetryService + + +class FakeHomeAssistantAdapter: + def __init__(self) -> None: + self.calls: list[tuple[str, str, str, dict[str, object]]] = [] + self.list_payload: list[dict[str, object]] = [ + { + "entity_id": "light.bar_rgb", + "state": "on", + "attributes": { + "friendly_name": "Bar RGB", + "supported_color_modes": ["rgb", "brightness"], + }, + }, + { + "entity_id": "light.bar_rgbw", + "state": "on", + "attributes": { + "friendly_name": "Bar RGBW", + "supported_color_modes": ["rgbw", "brightness"], + }, + }, + { + "entity_id": "light.bar_cct", + "state": "on", + "attributes": { + "friendly_name": "Bar CCT", + "supported_color_modes": ["color_temp", "brightness"], + }, + }, + { + "entity_id": "light.test", + "state": "off", + "attributes": { + "friendly_name": "Test light", + "supported_color_modes": ["brightness"], + }, + }, + { + "entity_id": "switch.test", + "state": "off", + "attributes": { + "friendly_name": "Test switch", + }, + }, + { + "entity_id": "input_boolean.test", + "state": "off", + "attributes": { + "friendly_name": "Test bool", + }, + }, + { + "entity_id": "scene.test", + "state": "scening", + "attributes": { + "friendly_name": "Test scene", + }, + }, + { + "entity_id": "automation.test", + "state": "on", + "attributes": { + "friendly_name": "Test automation", + }, + }, + ] + self.connection_error: Exception | None = None + self.dispatch_error: Exception | None = None + + async def get_api_root(self, base_url: str, token: str) -> dict[str, object]: + if self.connection_error is not None: + raise self.connection_error + return {"message": "API running."} + + async def get_config(self, base_url: str, token: str) -> dict[str, object]: + if self.connection_error is not None: + raise self.connection_error + return {"version": "2026.7.0"} + + async def list_entities(self, base_url: str, token: str) -> list[dict[str, object]]: + if self.connection_error is not None: + raise self.connection_error + return self.list_payload + + async def call_service( + self, + base_url: str, + token: str, + domain: str, + service: str, + data: dict[str, object], + ) -> dict[str, object]: + if self.dispatch_error is not None: + raise self.dispatch_error + self.calls.append((base_url, token, f"{domain}.{service}", data)) + return {"ok": True} + + +def build_service(adapter: FakeHomeAssistantAdapter) -> HomeAssistantService: + engine = DmxEngine(TelemetryService()) + service = HomeAssistantService(engine, adapter=adapter) + service._config = { + "enabled": True, + "base_url": "http://ha.local:8123", + "default_universe": 10, + } + service._token = "test-token" + return service + + +@pytest.mark.asyncio +async def test_home_assistant_connection_reports_version_and_auth() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + + result = await service.test_connection() + + assert result["reachable"] is True + assert result["auth_ok"] is True + assert result["ha_version"] == "2026.7.0" + config = await service.get_config() + assert config["has_token"] is True + assert config["token_mask"] == "********" + + +@pytest.mark.asyncio +async def test_home_assistant_rgb_mapping_reads_virtual_universe_10() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(1, 255, "scene") + frame.set_channel(2, 200, "scene") + frame.set_channel(3, 100, "scene") + frame.set_channel(4, 50, "scene") + service.engine.current_frames = {1: DmxFrame(universe=1), 10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 1, + "name": "Bar RGB", + "universe": 10, + "start_address": 1, + "fixture_type": "rgb", + "entity_id": "light.bar_rgb", + "rate_limit_hz": 5, + "deadband": 1, + "fade_ms": 150, + "enabled": True, + "master_dimmer": True, + } + ) + ] + + await service.dispatch_once() + + assert len(adapter.calls) == 1 + _base_url, _token, service_name, data = adapter.calls[0] + assert service_name == "light.turn_on" + assert data["entity_id"] == "light.bar_rgb" + assert data["brightness"] == 255 + assert data["rgb_color"] == [200, 100, 50] + + +@pytest.mark.asyncio +async def test_home_assistant_rgbw_mapping_at_channel_512_uses_last_channel() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(508, 255, "scene") + frame.set_channel(509, 10, "scene") + frame.set_channel(510, 20, "scene") + frame.set_channel(511, 30, "scene") + frame.set_channel(512, 40, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 2, + "name": "Bar RGBW", + "universe": 10, + "start_address": 508, + "fixture_type": "rgbw", + "entity_id": "light.bar_rgbw", + "rate_limit_hz": 5, + "deadband": 1, + "fade_ms": 100, + "enabled": True, + "master_dimmer": True, + } + ) + ] + + await service.dispatch_once() + + assert adapter.calls[0][2] == "light.turn_on" + assert adapter.calls[0][3]["rgbw_color"] == [10, 20, 30, 40] + + +@pytest.mark.asyncio +async def test_home_assistant_rate_limit_prevents_duplicate_spam() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(1, 180, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 3, + "name": "Dimmer", + "universe": 10, + "start_address": 1, + "fixture_type": "dimmer", + "entity_id": "light.bar_rgb", + "rate_limit_hz": 5, + "deadband": 2, + "fade_ms": 0, + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.dispatch_once() + await service.dispatch_once() + + assert len(adapter.calls) == 1 + + +@pytest.mark.asyncio +async def test_scene_mapping_uses_rising_edge_only() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + service.engine.current_frames = {10: frame} + service._mappings = [ + service._normalize_mapping( + { + "id": 4, + "name": "Party scene", + "universe": 10, + "start_address": 6, + "fixture_type": "scene", + "entity_id": "scene.party_mode", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.dispatch_once() + frame.set_channel(6, 140, "scene") + await service.dispatch_once() + await service.dispatch_once() + + assert len(adapter.calls) == 1 + assert adapter.calls[0][2] == "scene.turn_on" + + +@pytest.mark.asyncio +async def test_switch_mapping_uses_hysteresis() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + service.engine.current_frames = {10: frame} + service._mappings = [ + service._normalize_mapping( + { + "id": 5, + "name": "Switch", + "universe": 10, + "start_address": 50, + "fixture_type": "switch", + "entity_id": "switch.party_relay", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + frame.set_channel(50, 150, "scene") + await service.dispatch_once() + frame.set_channel(50, 130, "scene") + await service.dispatch_once() + frame.set_channel(50, 110, "scene") + await service.dispatch_once() + + assert [call[2] for call in adapter.calls] == ["switch.turn_on", "switch.turn_off"] + + +@pytest.mark.asyncio +async def test_switch_fixture_routes_light_entity_by_entity_domain() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + service.engine.current_frames = {10: frame} + service._mappings = [ + service._normalize_mapping( + { + "id": 10, + "name": "Light as switch", + "universe": 10, + "start_address": 20, + "fixture_type": "switch", + "entity_id": "light.test", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + frame.set_channel(20, 150, "scene") + await service.dispatch_once() + frame.set_channel(20, 110, "scene") + await service.dispatch_once() + + mapping = (await service.list_mappings())["items"][0] + assert [call[2] for call in adapter.calls] == ["light.turn_on", "light.turn_off"] + assert mapping["last_sent_summary"] == "light.turn_off light.test" + + +@pytest.mark.asyncio +async def test_switch_fixture_routes_switch_entity_by_entity_domain() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + service.engine.current_frames = {10: frame} + service._mappings = [ + service._normalize_mapping( + { + "id": 11, + "name": "Switch domain", + "universe": 10, + "start_address": 21, + "fixture_type": "switch", + "entity_id": "switch.test", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + frame.set_channel(21, 150, "scene") + await service.dispatch_once() + frame.set_channel(21, 110, "scene") + await service.dispatch_once() + + assert [call[2] for call in adapter.calls] == ["switch.turn_on", "switch.turn_off"] + + +@pytest.mark.asyncio +async def test_dimmer_fixture_routes_light_entity_with_brightness() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(22, 180, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 12, + "name": "Dimmer light", + "universe": 10, + "start_address": 22, + "fixture_type": "dimmer", + "entity_id": "light.test", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.dispatch_once() + + assert adapter.calls[0][2] == "light.turn_on" + assert adapter.calls[0][3]["brightness"] == 180 + + +@pytest.mark.asyncio +async def test_scene_fixture_routes_scene_entity() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + service.engine.current_frames = {10: frame} + service._mappings = [ + service._normalize_mapping( + { + "id": 13, + "name": "Scene test", + "universe": 10, + "start_address": 23, + "fixture_type": "scene", + "entity_id": "scene.test", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + frame.set_channel(23, 200, "scene") + await service.dispatch_once() + + assert adapter.calls[0][2] == "scene.turn_on" + + +@pytest.mark.asyncio +async def test_automation_fixture_routes_automation_entity() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + service.engine.current_frames = {10: frame} + service._mappings = [ + service._normalize_mapping( + { + "id": 14, + "name": "Automation test", + "universe": 10, + "start_address": 24, + "fixture_type": "automation", + "entity_id": "automation.test", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + frame.set_channel(24, 200, "scene") + await service.dispatch_once() + + assert adapter.calls[0][2] == "automation.trigger" + + +@pytest.mark.asyncio +async def test_test_mapping_uses_same_entity_domain_routing() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 15, + "name": "Test mapping light switch", + "universe": 10, + "start_address": 25, + "fixture_type": "switch", + "entity_id": "light.test", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.test_mapping(15) + + assert adapter.calls[0][2] == "light.turn_on" + + +@pytest.mark.asyncio +async def test_test_mapping_resyncs_back_to_live_dmx() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(1, 120, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 6, + "name": "Dimmer", + "universe": 10, + "start_address": 1, + "fixture_type": "dimmer", + "entity_id": "light.bar_rgb", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.test_mapping(6) + await service.dispatch_once() + + assert adapter.calls[0][3]["brightness"] == 255 + assert adapter.calls[-1][3]["brightness"] == 120 + + +@pytest.mark.asyncio +async def test_timeout_error_is_tracked_without_blocking() -> None: + adapter = FakeHomeAssistantAdapter() + adapter.dispatch_error = httpx.ReadTimeout("timeout") + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(1, 180, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 7, + "name": "Dimmer", + "universe": 10, + "start_address": 1, + "fixture_type": "dimmer", + "entity_id": "light.bar_rgb", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.dispatch_once() + + mapping = (await service.list_mappings())["items"][0] + assert mapping["last_error"] == "Timeout ved kald til Home Assistant" + + +@pytest.mark.asyncio +async def test_401_is_reported_from_connection_test() -> None: + adapter = FakeHomeAssistantAdapter() + request = httpx.Request("GET", "http://ha.local:8123/api/") + response = httpx.Response(401, request=request) + adapter.connection_error = httpx.HTTPStatusError("401", request=request, response=response) + service = build_service(adapter) + + result = await service.test_connection() + + assert result["reachable"] is True + assert result["auth_ok"] is False + assert result["last_error"] == "HTTP 401 fra Home Assistant" + + +@pytest.mark.asyncio +async def test_404_entity_not_found_is_tracked() -> None: + adapter = FakeHomeAssistantAdapter() + request = httpx.Request("POST", "http://ha.local:8123/api/services/light/turn_on") + response = httpx.Response(404, request=request) + adapter.dispatch_error = httpx.HTTPStatusError("404", request=request, response=response) + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(1, 180, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 8, + "name": "Dimmer", + "universe": 10, + "start_address": 1, + "fixture_type": "dimmer", + "entity_id": "light.bar_rgb", + "enabled": True, + "master_dimmer": False, + } + ) + ] + + await service.dispatch_once() + + mapping = (await service.list_mappings())["items"][0] + assert mapping["last_error"] == "HTTP 404 fra Home Assistant" + + +@pytest.mark.asyncio +async def test_home_assistant_unavailable_is_reported() -> None: + adapter = FakeHomeAssistantAdapter() + adapter.connection_error = httpx.ConnectError("offline") + service = build_service(adapter) + + result = await service.test_connection() + + assert result["reachable"] is False + assert result["auth_ok"] is False + assert result["last_error"] == "Home Assistant kunne ikke kontaktes" + + +@pytest.mark.asyncio +async def test_persistence_survives_service_reload() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + await service.save_config( + { + "enabled": True, + "base_url": "http://ha.local:8123", + "token": "persistent-token", + "default_universe": 10, + } + ) + await service.create_mapping( + { + "name": "Persisted RGB", + "universe": 10, + "start_address": 1, + "fixture_type": "rgb", + "entity_id": "light.bar_rgb", + "enabled": True, + "master_dimmer": True, + } + ) + + reloaded = HomeAssistantService(service.engine, adapter=adapter) + await reloaded._load() + + config = await reloaded.get_config() + mappings = await reloaded.list_mappings() + assert config["base_url"] == "http://ha.local:8123" + assert config["has_token"] is True + assert mappings["items"][0]["entity_id"] == "light.bar_rgb" + + +@pytest.mark.asyncio +async def test_slow_dispatch_drops_intermediate_frames_and_keeps_latest() -> None: + adapter = FakeHomeAssistantAdapter() + service = build_service(adapter) + frame = DmxFrame(universe=10) + frame.set_channel(1, 50, "scene") + service.engine.current_frames = {10: frame} + await service.list_entities() + service._mappings = [ + service._normalize_mapping( + { + "id": 9, + "name": "Dimmer", + "universe": 10, + "start_address": 1, + "fixture_type": "dimmer", + "entity_id": "light.bar_rgb", + "enabled": True, + "master_dimmer": False, + "deadband": 1, + "rate_limit_hz": 30, + } + ) + ] + + first_call = asyncio.Event() + release_call = asyncio.Event() + + async def slow_call( + base_url: str, + token: str, + domain: str, + service_name: str, + data: dict[str, object], + ) -> dict[str, object]: + adapter.calls.append((base_url, token, f"{domain}.{service_name}", data)) + first_call.set() + await release_call.wait() + return {"ok": True} + + adapter.call_service = slow_call # type: ignore[method-assign] + + dispatch_task = asyncio.create_task(service._dispatch_enabled_mappings()) + await first_call.wait() + frame.set_channel(1, 120, "scene") + await service._dispatch_enabled_mappings() + frame.set_channel(1, 220, "scene") + await service._dispatch_enabled_mappings() + release_call.set() + await dispatch_task + await service._drain_mapping_tasks() + + assert adapter.calls[0][3]["brightness"] == 50 + assert adapter.calls[-1][3]["brightness"] == 220 + assert len(adapter.calls) == 2 diff --git a/backend/tests/test_install_scripts.py b/backend/tests/test_install_scripts.py new file mode 100644 index 0000000..da14b5f --- /dev/null +++ b/backend/tests/test_install_scripts.py @@ -0,0 +1,156 @@ +from __future__ import annotations + +import json +import shutil +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +SCRIPTS_DIR = ROOT / "scripts" + + +def read_script(name: str) -> str: + return (SCRIPTS_DIR / name).read_text(encoding="utf-8") + + +def test_install_linux_script_exists_and_supports_required_flags() -> None: + script = read_script("install-linux.sh") + assert 'parse_common_args "$@"' in script + assert "verify_debian_13_amd64" in script + assert 'run_install_flow "Debian 13 amd64"' in script + + +def test_update_linux_script_exists_and_uses_common_arg_parser() -> None: + script = read_script("update-linux.sh") + assert 'parse_common_args "$@"' in script + assert "verify_debian_13_amd64" in script + assert 'run_update_flow "Debian 13 amd64"' in script + + +def test_common_install_library_contains_required_linux_behaviour() -> None: + script = read_script("lib/install-common.sh") + assert "python3-venv" in script + assert "sqlite3" in script + assert "sudo" in script + assert "nodejs" in script + assert "npm" in script + assert "python3-ola" in script + assert "ola-python" in script + assert "olad" in script + assert 'PNPM_REQUIRED_VERSION="10.28.2"' in script + assert "--system-site-packages" in script + assert "/opt/tuxdmx.new" in script + assert "/opt/tuxdmx" in script + assert "/var/lib/tuxdmx" in script + assert "/var/log/tuxdmx" in script + assert "/etc/tuxdmx" in script + assert "dialout,plugdev,audio" in script + assert "frontend/dist/index.html" in script + assert "pip\" check" in script + assert "apt-listchanges" in script + assert "debconf" in script + assert "Ignorerer kendt Debian pip check-advarsel" in script + assert "import greenlet" in script + assert "import sqlalchemy" in script + assert "import ola" in script + assert "backend/app/main.py" in script + assert "systemctl status \"$SYSTEMD_UNIT_NAME\" --no-pager --full" in script + assert "journalctl -u \"$SYSTEMD_UNIT_NAME\" -n 200 --no-pager" in script + assert "update-rc.d" in script + assert "systemctl is-enabled \"$OLA_SYSTEMD_UNIT\"" in script + assert "service \"$OLA_SERVICE_NAME\" restart" in script + assert "--warning=no-file-changed" in script + assert "--exclude=\"./tuxdmx.json.log\"" in script + assert "Kunne ikke oprette backup af datamappe." in script + assert "http://127.0.0.1:8000/api/v1/health" in script + assert "/etc/sudoers.d/tuxdmx-control" in script + assert "control-system.sh restart-service" in script + assert "control-system.sh reboot-host" in script + assert "restore_rollbacks" in script + + +def test_pi_and_linux_installers_share_common_library() -> None: + for name in ( + "install-pi.sh", + "install-linux.sh", + "update-pi.sh", + "update-linux.sh", + ): + script = read_script(name) + assert 'source "$SCRIPT_DIR/lib/install-common.sh"' in script + + +def test_systemd_unit_contains_required_production_fields() -> None: + unit = (ROOT / "systemd" / "tuxdmx.service").read_text(encoding="utf-8") + assert "WorkingDirectory=/opt/tuxdmx" in unit + assert "After=network-online.target olad.service" in unit + assert "Wants=network-online.target olad.service" in unit + assert "Restart=on-failure" in unit + assert "UMask=0027" in unit + + +def test_alembic_ini_uses_path_relative_to_config_file() -> None: + alembic_ini = (ROOT / "backend" / "alembic.ini").read_text(encoding="utf-8") + assert "script_location = %(here)s/alembic" in alembic_ini + + +def test_package_manager_and_requirements_are_locked() -> None: + package_json = json.loads((ROOT / "package.json").read_text(encoding="utf-8")) + assert package_json["packageManager"] == "pnpm@10.28.2" + assert package_json["engines"]["node"] == "20.x" + assert package_json["engines"]["pnpm"] == "10.28.2" + + requirements = (ROOT / "requirements.lock").read_text(encoding="utf-8") + assert "greenlet==" in requirements + assert "sqlalchemy==" in requirements + + +def test_shell_scripts_parse_with_bash_when_available() -> None: + bash = shutil.which("bash") + if bash is None: + return + if "system32\\bash.exe" in bash.lower(): + return + + for script_name in ( + "scripts/install-pi.sh", + "scripts/update-pi.sh", + "scripts/install-linux.sh", + "scripts/update-linux.sh", + "scripts/uninstall-linux.sh", + "scripts/lib/install-common.sh", + ): + subprocess.run( + [bash, "-n", str(ROOT / script_name)], + check=True, + cwd=ROOT, + ) + + +def test_shellcheck_when_available() -> None: + shellcheck = shutil.which("shellcheck") + if shellcheck is None: + return + + subprocess.run( + [ + shellcheck, + str(ROOT / "scripts/install-pi.sh"), + str(ROOT / "scripts/update-pi.sh"), + str(ROOT / "scripts/install-linux.sh"), + str(ROOT / "scripts/update-linux.sh"), + str(ROOT / "scripts/lib/install-common.sh"), + ], + check=True, + cwd=ROOT, + ) + + +def test_pip_check_and_greenlet_import() -> None: + subprocess.run([sys.executable, "-m", "pip", "check"], check=True, cwd=ROOT) + subprocess.run( + [sys.executable, "-c", "import greenlet; print(greenlet.__version__)"], + check=True, + cwd=ROOT, + ) diff --git a/backend/tests/test_midi_api.py b/backend/tests/test_midi_api.py new file mode 100644 index 0000000..45dbed9 --- /dev/null +++ b/backend/tests/test_midi_api.py @@ -0,0 +1,322 @@ +from __future__ import annotations + +from uuid import uuid4 + +from fastapi.testclient import TestClient + +from app.core.dependencies import app_state +from app.main import app + + +def _create_token(client: TestClient, bridge_id: str | None = None) -> str: + response = client.post( + "/api/v1/integrations/midi/tokens", + json={ + "label": f"pytest-{uuid4().hex[:8]}", + "bridge_id": bridge_id, + "scopes": ["midi:connect", "midi:events", "midi:heartbeat"], + }, + ) + assert response.status_code == 200 + return response.json()["token"] + + +def _create_scene(client: TestClient, slug: str) -> int: + response = client.post( + "/api/v1/scenes", + json={ + "name": slug, + "slug": slug, + "priority": 25, + "values": [{"channel": 10, "value": 255, "precedence": "htp", "source": "scene"}], + "targets": [], + }, + ) + assert response.status_code == 200 + return int(response.json()["id"]) + + +def test_midi_heartbeat_updates_bridge_status() -> None: + with TestClient(app) as client: + token = _create_token(client, bridge_id="bridge-heartbeat") + heartbeat = client.post( + "/api/v1/integrations/midi/bridge/heartbeat", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "heartbeat", + "protocol_version": 1, + "bridge_id": "bridge-heartbeat", + "device": "USB MIDI Test", + "timestamp": "2026-07-24T20:30:00+00:00", + }, + ) + assert heartbeat.status_code == 200 + bridges = client.get("/api/v1/integrations/midi/bridges") + assert bridges.status_code == 200 + item = next(entry for entry in bridges.json()["items"] if entry["bridge_id"] == "bridge-heartbeat") + assert item["device_name"] == "USB MIDI Test" + assert item["online"] is True + assert item["last_heartbeat_at"] is not None + + +def test_midi_event_can_activate_scene_through_mapping() -> None: + slug = f"midi-scene-{uuid4().hex[:8]}" + with TestClient(app) as client: + scene_id = _create_scene(client, slug) + token = _create_token(client, bridge_id="bridge-scenes") + mapping = client.post( + "/api/v1/integrations/midi/mappings", + json={ + "name": "Scene trigger", + "enabled": True, + "bridge_id": "bridge-scenes", + "device_name": "USB*", + "message_type": "note_on", + "channel": 0, + "number": 36, + "action": "activate_scene", + "target_type": "scene", + "target_id": slug, + "mode": "trigger", + "minimum_value": 1, + "maximum_value": 127, + }, + ) + assert mapping.status_code == 200 + + event = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "bridge-scenes", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:30:00+00:00", + "message": {"type": "note_on", "channel": 0, "number": 36, "value": 127}, + }, + ) + assert event.status_code == 200 + assert event.json()["executed"] == 1 + assert f"scene:{slug}" in app_state.engine.layers + + client.delete(f"/api/v1/integrations/midi/mappings/{mapping.json()['id']}") + client.delete(f"/api/v1/scenes/{scene_id}") + + +def test_midi_flash_hold_applies_and_releases_scene_layer() -> None: + slug = f"midi-flash-{uuid4().hex[:8]}" + with TestClient(app) as client: + scene_id = _create_scene(client, slug) + token = _create_token(client, bridge_id="bridge-flash") + mapping_response = client.post( + "/api/v1/integrations/midi/mappings", + json={ + "name": "Flash scene", + "enabled": True, + "bridge_id": "bridge-flash", + "device_name": "*", + "message_type": "note_on", + "channel": 0, + "number": 40, + "action": "flash_scene", + "target_type": "scene", + "target_id": slug, + "mode": "hold", + "minimum_value": 1, + "maximum_value": 127, + }, + ) + assert mapping_response.status_code == 200 + mapping_id = mapping_response.json()["id"] + layer_name = f"midi:flash:{mapping_id}:{slug}" + + note_on = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "bridge-flash", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:30:01+00:00", + "message": {"type": "note_on", "channel": 0, "number": 40, "value": 127}, + }, + ) + assert note_on.status_code == 200 + assert layer_name in app_state.engine.layers + + note_off = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "bridge-flash", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:30:02+00:00", + "message": {"type": "note_off", "channel": 0, "number": 40, "value": 0}, + }, + ) + assert note_off.status_code == 200 + assert layer_name not in app_state.engine.layers + + client.delete(f"/api/v1/integrations/midi/mappings/{mapping_id}") + client.delete(f"/api/v1/scenes/{scene_id}") + + +def test_midi_continuous_master_and_scene_intensity_are_scaled() -> None: + slug = f"midi-intensity-{uuid4().hex[:8]}" + with TestClient(app) as client: + scene_id = _create_scene(client, slug) + token = _create_token(client, bridge_id="bridge-cc") + master_mapping = client.post( + "/api/v1/integrations/midi/mappings", + json={ + "name": "Master dimmer", + "enabled": True, + "bridge_id": "bridge-cc", + "device_name": "*", + "message_type": "control_change", + "channel": 0, + "number": 14, + "action": "set_master_dimmer", + "target_type": "global", + "target_id": None, + "mode": "continuous", + "minimum_value": 0, + "maximum_value": 127, + }, + ) + assert master_mapping.status_code == 200 + + intensity_mapping = client.post( + "/api/v1/integrations/midi/mappings", + json={ + "name": "Scene intensity", + "enabled": True, + "bridge_id": "bridge-cc", + "device_name": "*", + "message_type": "control_change", + "channel": 0, + "number": 15, + "action": "set_scene_intensity", + "target_type": "scene", + "target_id": slug, + "mode": "continuous", + "minimum_value": 0, + "maximum_value": 127, + }, + ) + assert intensity_mapping.status_code == 200 + + master_event = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "bridge-cc", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:31:00+00:00", + "message": {"type": "control_change", "channel": 0, "number": 14, "value": 64}, + }, + ) + assert master_event.status_code == 200 + assert 120 <= app_state.engine.master <= 132 + + intensity_event = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "bridge-cc", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:31:01+00:00", + "message": {"type": "control_change", "channel": 0, "number": 15, "value": 64}, + }, + ) + assert intensity_event.status_code == 200 + layer_name = f"midi:intensity:{intensity_mapping.json()['id']}:{slug}" + layer = app_state.engine.layers[layer_name] + assert 120 <= layer.values_by_universe[1][10] <= 132 + + client.delete(f"/api/v1/integrations/midi/mappings/{master_mapping.json()['id']}") + client.delete(f"/api/v1/integrations/midi/mappings/{intensity_mapping.json()['id']}") + client.delete(f"/api/v1/scenes/{scene_id}") + + +def test_midi_learn_captures_next_event_without_triggering_existing_mapping() -> None: + slug = f"midi-learn-{uuid4().hex[:8]}" + with TestClient(app) as client: + scene_id = _create_scene(client, slug) + token = _create_token(client, bridge_id="bridge-learn") + mapping = client.post( + "/api/v1/integrations/midi/mappings", + json={ + "name": "Learn target", + "enabled": True, + "bridge_id": "bridge-learn", + "device_name": "*", + "message_type": "note_on", + "channel": 0, + "number": 41, + "action": "activate_scene", + "target_type": "scene", + "target_id": slug, + "mode": "trigger", + "minimum_value": 1, + "maximum_value": 127, + }, + ) + assert mapping.status_code == 200 + + start = client.post( + "/api/v1/integrations/midi/learn/start", + json={"timeout_seconds": 15, "allow_passthrough": False}, + ) + assert start.status_code == 200 + assert start.json()["active"] is True + + event = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "bridge-learn", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:32:00+00:00", + "message": {"type": "note_on", "channel": 0, "number": 41, "value": 127}, + }, + ) + assert event.status_code == 200 + assert event.json()["captured_for_learning"] is True + assert f"scene:{slug}" not in app_state.engine.layers + + state = client.get("/api/v1/integrations/midi/learn") + assert state.status_code == 200 + assert state.json()["active"] is False + assert state.json()["captured_event"]["message"]["number"] == 41 + + client.delete(f"/api/v1/integrations/midi/mappings/{mapping.json()['id']}") + client.delete(f"/api/v1/scenes/{scene_id}") + + +def test_midi_bridge_token_can_be_restricted_to_bridge_id() -> None: + with TestClient(app) as client: + token = _create_token(client, bridge_id="bridge-locked") + response = client.post( + "/api/v1/integrations/midi/bridge/events", + headers={"Authorization": f"Bearer {token}"}, + json={ + "type": "midi_event", + "protocol_version": 1, + "bridge_id": "wrong-bridge", + "device": "USB MIDI Controller", + "timestamp": "2026-07-24T20:33:00+00:00", + "message": {"type": "note_on", "channel": 0, "number": 50, "value": 127}, + }, + ) + assert response.status_code == 401 diff --git a/backend/tests/test_migrations.py b/backend/tests/test_migrations.py new file mode 100644 index 0000000..bf6b95e --- /dev/null +++ b/backend/tests/test_migrations.py @@ -0,0 +1,45 @@ +import os +import sqlite3 +import subprocess +import sys +from pathlib import Path + + +def test_alembic_upgrade_from_empty_database(tmp_path: Path) -> None: + database_path = tmp_path / "audit-migrations.db" + env = os.environ.copy() + env["TUXDMX_DATABASE_URL"] = f"sqlite:///{database_path.as_posix()}" + + result = subprocess.run( + [ + sys.executable, + "-m", + "alembic", + "-c", + "backend/alembic.ini", + "upgrade", + "head", + ], + cwd=Path(__file__).resolve().parents[2], + env=env, + capture_output=True, + text=True, + check=False, + ) + + assert result.returncode == 0, result.stderr + with sqlite3.connect(database_path) as connection: + tables = { + row[0] + for row in connection.execute( + "SELECT name FROM sqlite_master WHERE type='table'" + ).fetchall() + } + assert "alembic_version" in tables + assert "users" in tables + assert "fixture_sources" in tables + assert "fixture_definitions" in tables + assert "fixture_instances" in tables + assert "midi_bridges" in tables + assert "midi_bridge_tokens" in tables + assert "midi_mappings" in tables diff --git a/backend/tests/test_ofl_client.py b/backend/tests/test_ofl_client.py new file mode 100644 index 0000000..9527e30 --- /dev/null +++ b/backend/tests/test_ofl_client.py @@ -0,0 +1,37 @@ +import asyncio + +import httpx + +from app.fixtures.ofl import OflClient + + +def test_fetch_fixture_uses_json_endpoint(monkeypatch) -> None: + requested_urls: list[str] = [] + + class FakeResponse: + def raise_for_status(self) -> None: + return None + + def json(self) -> dict[str, object]: + return {"name": "LED Bar-3 HCL Bar", "modes": []} + + class FakeAsyncClient: + def __init__(self, *args, **kwargs) -> None: + pass + + async def __aenter__(self) -> "FakeAsyncClient": + return self + + async def __aexit__(self, exc_type, exc, tb) -> None: + return None + + async def get(self, url: str) -> FakeResponse: + requested_urls.append(url) + return FakeResponse() + + monkeypatch.setattr(httpx, "AsyncClient", FakeAsyncClient) + + payload = asyncio.run(OflClient().fetch_fixture("eurolite", "led-bar-3-hcl-bar")) + + assert payload["name"] == "LED Bar-3 HCL Bar" + assert requested_urls == ["https://open-fixture-library.org/eurolite/led-bar-3-hcl-bar.json"] diff --git a/backend/tests/test_ola_backend.py b/backend/tests/test_ola_backend.py new file mode 100644 index 0000000..f30d352 --- /dev/null +++ b/backend/tests/test_ola_backend.py @@ -0,0 +1,141 @@ +import pytest +from app.dmx.backends import FakeOlaClientAdapter, OlaDmxBackend, PythonOlaClientAdapter +from app.dmx.frame import DmxFrame + + +@pytest.mark.asyncio +async def test_ola_backend_sends_full_frame_and_updates_status() -> None: + adapter = FakeOlaClientAdapter() + backend = OlaDmxBackend( + universe=7, + output_port="usb-dmx-1", + adapter_factory=lambda: adapter, + ) + frame = DmxFrame(universe=7) + frame.set_channel(1, 255, "scene") + frame.set_channel(512, 64, "scene") + + await backend.send_frame(frame) + + status = backend.get_status() + assert status.connected is True + assert status.degraded is False + assert status.frames_sent == 1 + assert status.send_errors == 0 + assert status.last_successful_frame is not None + assert status.selected_universe == 7 + assert status.selected_output_port == "usb-dmx-1" + assert adapter.open_calls == 1 + assert len(adapter.sent_frames) == 1 + sent_universe, values = adapter.sent_frames[0] + assert sent_universe == 7 + assert len(values) == 512 + assert values[0] == 255 + assert values[511] == 64 + + +@pytest.mark.asyncio +async def test_ola_backend_reconnects_after_send_failure() -> None: + created_adapters: list[FakeOlaClientAdapter] = [] + + def factory() -> FakeOlaClientAdapter: + adapter = FakeOlaClientAdapter( + send_results=[RuntimeError("olad unavailable")] if not created_adapters else [], + ) + created_adapters.append(adapter) + return adapter + + backend = OlaDmxBackend( + universe=1, + output_port="usb-dmx-1", + adapter_factory=factory, + ) + frame = DmxFrame() + frame.set_channel(1, 128, "scene") + + with pytest.raises(RuntimeError, match="olad unavailable"): + await backend.send_frame(frame) + + failed_status = backend.get_status() + assert failed_status.connected is False + assert failed_status.degraded is True + assert failed_status.send_errors == 1 + assert failed_status.frames_sent == 0 + + await backend.send_frame(frame) + + recovered_status = backend.get_status() + assert recovered_status.connected is True + assert recovered_status.degraded is False + assert recovered_status.reconnect_count == 1 + assert recovered_status.frames_sent == 1 + assert recovered_status.send_errors == 1 + assert len(created_adapters) == 2 + assert created_adapters[0].close_calls == 1 + assert created_adapters[1].sent_frames[0][1][0] == 128 + + +@pytest.mark.asyncio +async def test_ola_backend_does_not_send_random_black_frame_on_reconnect() -> None: + created_adapters: list[FakeOlaClientAdapter] = [] + + def factory() -> FakeOlaClientAdapter: + adapter = FakeOlaClientAdapter( + send_results=[RuntimeError("send failed")] if not created_adapters else [], + ) + created_adapters.append(adapter) + return adapter + + backend = OlaDmxBackend( + universe=3, + output_port="usb-dmx-2", + adapter_factory=factory, + ) + failed_frame = DmxFrame(universe=3) + failed_frame.set_channel(1, 10, "effect") + recovered_frame = DmxFrame(universe=3) + recovered_frame.set_channel(1, 200, "effect") + recovered_frame.set_channel(2, 150, "effect") + + with pytest.raises(RuntimeError, match="send failed"): + await backend.send_frame(failed_frame) + + await backend.send_frame(recovered_frame) + + assert created_adapters[0].sent_frames[0][1][0] == 10 + assert created_adapters[1].sent_frames[0][0] == 3 + assert created_adapters[1].sent_frames[0][1] == recovered_frame.values + assert any(value != 0 for value in created_adapters[1].sent_frames[0][1]) + + +def test_python_ola_adapter_uses_buffer_with_tobytes() -> None: + captured: dict[str, object] = {} + + class FakeClient: + def SendDmx(self, universe: int, payload: object, callback: object) -> None: + captured["universe"] = universe + captured["payload_type"] = type(payload).__name__ + captured["has_tobytes"] = hasattr(payload, "tobytes") + callback(True) + + class FakeWrapper: + def __init__(self) -> None: + self._client = FakeClient() + + def Client(self) -> FakeClient: + return self._client + + def Run(self) -> None: + return + + def Stop(self) -> None: + return + + adapter = PythonOlaClientAdapter(timeout_s=0.1) + adapter._wrapper_class = FakeWrapper + + adapter.send_frame(1, [0, 255] + [0] * 510) + + assert captured["universe"] == 1 + assert captured["payload_type"] == "array" + assert captured["has_tobytes"] is True diff --git a/backend/tests/test_production_runtime.py b/backend/tests/test_production_runtime.py new file mode 100644 index 0000000..6a2328c --- /dev/null +++ b/backend/tests/test_production_runtime.py @@ -0,0 +1,66 @@ +from __future__ import annotations + +import os +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] + + +def test_app_imports_with_production_like_absolute_paths(tmp_path: Path) -> None: + frontend_dist = tmp_path / "frontend-dist" + data_dir = tmp_path / "data" + backup_dir = data_dir / "backups" + fixture_dir = data_dir / "fixtures" + diagnostics_dir = data_dir / "diagnostics" + uploads_dir = data_dir / "uploads" + log_dir = tmp_path / "logs" + frontend_dist.mkdir(parents=True) + data_dir.mkdir(parents=True) + backup_dir.mkdir() + fixture_dir.mkdir() + diagnostics_dir.mkdir() + uploads_dir.mkdir() + log_dir.mkdir() + (frontend_dist / "index.html").write_text( + "TuxDMX", + encoding="utf-8", + ) + + env = os.environ.copy() + env.update( + { + "PYTHONPATH": str(ROOT / "backend"), + "TUXDMX_FRONTEND_DIST": str(frontend_dist), + "TUXDMX_DATA_DIR": str(data_dir), + "TUXDMX_BACKUP_DIR": str(backup_dir), + "TUXDMX_FIXTURE_CACHE_DIR": str(fixture_dir), + "TUXDMX_DIAGNOSTICS_DIR": str(diagnostics_dir), + "TUXDMX_UPLOADS_DIR": str(uploads_dir), + "TUXDMX_LOG_DIR": str(log_dir), + "TUXDMX_DATABASE_URL": f"sqlite+aiosqlite:///{(data_dir / 'tuxdmx.db').as_posix()}", + } + ) + + subprocess.run( + [ + sys.executable, + "-c", + ( + "from app.core.config import get_settings; " + "get_settings.cache_clear(); " + "import app.main; " + "settings = get_settings(); " + "assert settings.frontend_dist.is_absolute(); " + "assert settings.data_dir.is_absolute(); " + "assert settings.backup_dir.is_absolute(); " + "assert settings.diagnostics_dir.is_absolute(); " + "assert settings.uploads_dir.is_absolute(); " + "print('ok')" + ), + ], + check=True, + cwd=ROOT, + env=env, + ) diff --git a/docs/MIDI_BRIDGE.md b/docs/MIDI_BRIDGE.md new file mode 100644 index 0000000..411d867 --- /dev/null +++ b/docs/MIDI_BRIDGE.md @@ -0,0 +1,124 @@ +# MIDI Bridge + +## Formål + +TuxDMX kan modtage normaliserede MIDI-events fra en ekstern Windows- eller Linux-maskine via en separat Python-bro i `tools/tuxdmx-midi-bridge/`. + +Bridgen læser kun MIDI og sender events videre til TuxDMX. Den genererer aldrig DMX direkte. + +## Eksisterende arkitektur før ændringen + +- Sceneaktivering fandtes allerede via `POST /api/v1/scenes/{scene_slug}/activate` +- Scenerelease fandtes allerede via `POST /api/v1/scenes/{scene_slug}/release` +- Blackout fandtes allerede via `POST /api/v1/dmx/blackout` og `POST /api/v1/dmx/release-blackout` +- Effektstart/-stop fandtes allerede via `POST /api/v1/effects/{effect_slug}/trigger` og `POST /api/v1/effects/{effect_slug}/stop` +- Live status blev sendt ud via WebSocket på `/ws/live` +- Session/CSRF og API-tokenmodeller fandtes i backend, men MIDI-broen havde ingen eksisterende transport eller mappingmodel + +## Nye backend-endpoints + +### Admin / WebUI + +- `GET /api/v1/integrations/midi/bridges` +- `GET /api/v1/integrations/midi/mappings` +- `POST /api/v1/integrations/midi/mappings` +- `PUT /api/v1/integrations/midi/mappings/{mapping_id}` +- `DELETE /api/v1/integrations/midi/mappings/{mapping_id}` +- `POST /api/v1/integrations/midi/mappings/{mapping_id}/test` +- `GET /api/v1/integrations/midi/tokens` +- `POST /api/v1/integrations/midi/tokens` +- `DELETE /api/v1/integrations/midi/tokens/{token_id}` +- `GET /api/v1/integrations/midi/learn` +- `POST /api/v1/integrations/midi/learn/start` +- `POST /api/v1/integrations/midi/learn/cancel` + +### Bridge transport + +- `POST /api/v1/integrations/midi/bridge/heartbeat` +- `POST /api/v1/integrations/midi/bridge/events` + +Bridge-endpoints kræver `Authorization: Bearer `. + +## Datamodel + +### `midi_bridges` + +- `bridge_id` +- `device_name` +- `ip_address` +- `protocol_version` +- `online` +- `last_heartbeat_at` +- `last_event_at` +- `last_error` +- `last_event` + +### `midi_bridge_tokens` + +- `label` +- `token_hash` +- `bridge_id` valgfri låsning til ét bridge-id +- `scopes` +- `last_used_at` +- `revoked_at` + +### `midi_mappings` + +- `name` +- `enabled` +- `bridge_id` +- `device_name` +- `message_type` +- `channel` +- `number` +- `action` +- `target_type` +- `target_id` +- `mode` +- `minimum_value` +- `maximum_value` + +## Understøttede actions + +- `activate_scene` +- `deactivate_scene` +- `toggle_scene` +- `flash_scene` +- `blackout_on` +- `blackout_off` +- `blackout_toggle` +- `set_master_dimmer` +- `set_scene_intensity` +- `start_effect` +- `stop_effect` + +## Modes + +- `trigger` +- `toggle` +- `hold` +- `flash` +- `continuous` + +## Sikkerhed + +- Tokens returneres kun i klartekst ved oprettelse +- Efter lagring vises kun `token_preview` +- Bridge-token logges ikke +- Protokolversion skal være `1` +- Bridge kan låses til specifikt `bridge_id` +- Ugyldige eller tilbagekaldte tokens afvises med `401` + +## Bridge-installation + +Se den fulde bridgepakke i: + +- `tools/tuxdmx-midi-bridge/README.md` +- `tools/tuxdmx-midi-bridge/config.example.yaml` +- `tools/tuxdmx-midi-bridge/tuxdmx-midi-bridge.service.example` + +## Kendte begrænsninger + +- Fysisk MIDI-hardware er ikke testet i denne workspace-session +- Bridge bruger HTTP, ikke indgående WebSocket, selv om UI stadig bruger WebSocket til live status +- `set_effect_speed` er ikke implementeret, fordi effektmotoren endnu ikke har et stabilt genanvendeligt speed-interface diff --git a/docs/system-manual/MANUAL.md b/docs/system-manual/MANUAL.md index 4057ff6..37153ef 100644 --- a/docs/system-manual/MANUAL.md +++ b/docs/system-manual/MANUAL.md @@ -13,10 +13,29 @@ Denne manual beskriver den nuvaerende WebUI og de vigtigste arbejdsgange. ## Vigtigt -- Screenshots i denne mappe er genereret lokalt i `mock`-tilstand den 23. juli 2026. +- Screenshots i denne mappe er genereret lokalt i `mock`-tilstand den 25. juli 2026. - De afspejler UI og flows, men er ikke bevis for fysisk hardwareafvikling. - Fysisk hardwaretest skal stadig vurderes separat paa target-maskinen. +## Navigation + +WebUI bruger nu en kompakt sidebar med grupperede undermenuer: + +- `Overblik` + Dashboard og Live Desk +- `Live-kontrol` + Scener, Effekter og BPM +- `Lysopsaetning` + Fixtures, DMX Patch og Placering +- `Integrationer` + MixItUp og MIDI +- `Overvaagning` + DMX monitor og Telemetry +- `System` + Backup og Indstillinger + +Kun den aktive sektion staar aaben ad gangen, saa UI ikke fylder unodigt meget i venstre side. + ## Arkitektur kort fortalt - `Universe 1` @@ -186,6 +205,19 @@ ALSA-input skal vaelges i `Settings`, og derefter bruges BPM-siden til selve dri Herfra kan du teste triggerflow og senere knytte stream-events til scener eller effekter. +## MIDI + +`MIDI` samler den separate MIDI-bridge og dens mappings. + +Herfra kan du: + +- se aktive bridges +- oprette og tilbagekalde bridge-tokens +- bruge `MIDI Learn` +- mappe knapper og faders til scener, effekter, blackout og master + +MIDI sender ikke DMX direkte. Den kalder backendens eksisterende scene-, effekt- og systemhandlinger. + ## DMX monitor `DMX monitor` viser DMX-aktivitet. @@ -269,6 +301,12 @@ Fra denne workspace: powershell -ExecutionPolicy Bypass -File .\scripts\sync-windows-deploy.ps1 ``` +Hvis du vil pushe dokumentation, screenshots og kode videre til TuxiNet Git: + +```powershell +powershell -ExecutionPolicy Bypass -File .\scripts\push-git-tuxinet.ps1 -InitIfNeeded -SetOrigin -StageAll -Commit -CommitMessage "Update docs and screenshots" -Push +``` + ### Linux target-host ```bash diff --git a/docs/system-manual/README.md b/docs/system-manual/README.md index 7df662e..171759a 100644 --- a/docs/system-manual/README.md +++ b/docs/system-manual/README.md @@ -13,8 +13,9 @@ Indhold: Vigtigt: -- Screenshots i denne mappe er genereret den 23. juli 2026 fra den lokale WebUI i `mock=1` mode. +- Screenshots i denne mappe er genereret den 25. juli 2026 fra den lokale WebUI i `mock=1` mode. - De viser den aktuelle UI-struktur og sideopbygning. +- De afspejler den kompakte, grupperede navigation med undermenuer. - De er ikke dokumentation for fysisk Raspberry Pi-, OLA-, USB-DMX- eller lys-hardwaretest. - Hardwareafgraensninger og manuel hardwarevalidering hoerer stadig hjemme i [HARDWARE-VALIDATION.md](../HARDWARE-VALIDATION.md). diff --git a/docs/system-manual/SCREENSHOTS.md b/docs/system-manual/SCREENSHOTS.md index 90388d9..c4607db 100644 --- a/docs/system-manual/SCREENSHOTS.md +++ b/docs/system-manual/SCREENSHOTS.md @@ -1,6 +1,6 @@ # Screenshots -Dette er et samlet screenshotsaet af TuxDMX WebUI genereret den 23. juli 2026. +Dette er et samlet screenshotsaet af TuxDMX WebUI genereret den 25. juli 2026. Kilde: @@ -10,6 +10,7 @@ Kilde: Formaal: - vise sideopbygning +- vise den kompakte navigation med grupperede undermenuer - understoette manualen - give et hurtigt visuelt overblik over systemet @@ -51,6 +52,10 @@ Formaal: ![MixItUp](./screenshots/mixitup.png) +### MIDI + +![MIDI](./screenshots/midi.png) + ### DMX monitor ![DMX monitor](./screenshots/dmx-monitor.png) diff --git a/docs/system-manual/screenshots/backup.png b/docs/system-manual/screenshots/backup.png index 04bd9dc1bed2b262f973dad618012f870e39c7d1..772a1263640622f776ba53da9c16679f9df51cbb 100644 GIT binary patch literal 61900 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 M=-f%ro^Rd%3!!}r>Hq)$ literal 53482 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 eOT5vs1gL#SH}U$7|50SZUl@h|^;Wpk6Nk literal 69169 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�Kt_YnL3Ispxk~kGWL|$z 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 diff --git a/docs/system-manual/screenshots/dashboard.png b/docs/system-manual/screenshots/dashboard.png index 15f809899478d9b3daf18cc81827b4354de74cfb..e1f765a010cc7ca88a77c22386f7ccb8da722914 100644 GIT binary patch literal 81215 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

nxP`j>>l04v1LbKcfZ^Q z!N&a#ZX#@FO*S>_UfcThvk%0*|w;tJ%w<_E>>>zp)g;E^nw zCvmz?E%=g>w78kC47WOKj4ue^^lVy7bZ*m~M%zF=F!itGhA>8;Os>5o5DEs4HkRP69sepU7X)Q&F+iqa{-k{Xpw>{Hh!B7GT;!9z)cDNdvHI9FTaRj{u2BH4?+Pp>K(1KnmPtRZNESIb8f`G7q|gHVR^@J!)zEL8FoiFl{9Jf+70YILvX_QX-mc z3^fSm2vCDy`o=3YweX!%gzc|ebJ$YV!?6JetL}psIbSIPGA|J5uN{;Jkf@@^L1F^a zo`aDiKfI`L*w)Pfxt3jmav=`7$gn;0fRsz(INtd00OAdGV5au_X{Kgm z1arqLehGnJWr()~0^X_?F$BK19T4>PEwgO{#4_mMmQHo*qLM!=I#58T`;R5RI_}iW zegN#^_zBpY{ts98H#&0*Jp_tQ-Dm+AtBITOc<=w|!2Cr^Ia%YLVXU#p=B!YO<_{%= zke}$yEgZt#a!7FIfgn3?M0q_+@-#ZgD07k-OeR)D2Qlb$|GDJx=+ZH$@OM$Z>Td2D zJ(^tzPpiqsHb~MCG}E+?n3EwAENd8-8&%P>+->h0@&C9&NM|rBGH_}I1_T? zNCum+#`pg{`u;~q!dz+)4{IaM$91c(DGY!-OnJCE@y|I#%8vl~f5@qjTg;1?MWDQ9L1ecGNm>J7Jk}XsADfzlnYSJ;4!WNnrMk8)sw_-yirNjP_F` diff --git a/docs/system-manual/screenshots/dmx-monitor.png b/docs/system-manual/screenshots/dmx-monitor.png index 68e66ebaeb8120e917a2e7e82a3e39a46ff8b346..c28f795eb33fbeb8e06cb1559bd293391787537b 100644 GIT binary patch delta 110251 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 literal 55659 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 VIz2dR+x66Di+^ty2=sa2zW}H2u@C?N diff --git a/docs/system-manual/screenshots/placement.png b/docs/system-manual/screenshots/placement.png index 70c47016a8bd20d4832190a7fdfb2a0800c5f99d..f6889e7aa671835fe5aaec5d4290e923edc55a99 100644 GIT binary patch literal 66998 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%0D|GZrgy{rj>HA2zsEN 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 diff --git a/docs/system-manual/screenshots/scenes.png b/docs/system-manual/screenshots/scenes.png index 6112cdb72113040c6c2d7c223d99b8bfdcfb7aa8..fb3e7102048f5ee4357efc8e1b23a8f861bf207b 100644 GIT binary patch literal 59166 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
Icn-K{PVwbo%ZH~VHcjfphGt5N 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 Tx=n&zkIRZTs*54WzxMtQcqA8N diff --git a/docs/system-manual/screenshots/settings.png b/docs/system-manual/screenshots/settings.png index fa5f1f37caedaa0405aadeb02ffbcf9e80f83314..23f7197514811daf042514963e2b01d8ffe0b375 100644 GIT binary patch literal 67248 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≠WaGFx~3%6fBjeUtjC1c*;4ec3(tY6B?e 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

oNS_-2IjRX}9}ddP)t1+%$MNGMzl>3Rr}dXhmy< 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 aEu%p{z@szYKbw(4HvncwGHBQLzW)UW+0~N( diff --git a/docs/system-manual/screenshots/telemetry.png b/docs/system-manual/screenshots/telemetry.png index a90a2df0d635eaea8aaf63eda3406a197798310a..ed0c26be4a031d2dae89ebafc8dc8ea8d8cf9c92 100644 GIT binary patch literal 60426 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 literal 53013 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 + + + + + TuxDMX + + + +
+ + + + diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..f25b858 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,1280 @@ +import { useCallback, useEffect, useState } from "react"; + +import { AppShell } from "./components/AppShell"; +import { + api, + ArtNetNode, + BpmDevice, + DmxDevice, + DmxOutputConfig, + FixtureSummary, + HomeAssistantConfig, + HomeAssistantEntity, + HomeAssistantMapping, + LiveMixerItem, + MidiBridgeStatus, + MidiBridgeToken, + MidiLearnState, + MidiMapping, + PatchItem, + SceneItem, + SystemStatus, +} from "./lib/api"; +import { BackupPage } from "./pages/BackupPage"; +import { BpmPage } from "./pages/BpmPage"; +import { DashboardPage } from "./pages/DashboardPage"; +import { EffectsPage } from "./pages/EffectsPage"; +import { FixturesPage } from "./pages/FixturesPage"; +import { LiveDeskPage } from "./pages/LiveDeskPage"; +import { MixitupPage } from "./pages/MixitupPage"; +import { MidiPage } from "./pages/MidiPage"; +import { MonitorPage } from "./pages/MonitorPage"; +import { PatchPage } from "./pages/PatchPage"; +import { PlacementPage } from "./pages/PlacementPage"; +import { ScenesPage } from "./pages/ScenesPage"; +import { SettingsPage } from "./pages/SettingsPage"; +import { TelemetryPage } from "./pages/TelemetryPage"; + +const navigationSections = [ + { + id: "overview", + label: "Overblik", + icon: "overview" as const, + tone: "accent" as const, + items: [ + { id: "dashboard", label: "Dashboard", icon: "dashboard" as const }, + { id: "live", label: "Live Desk", icon: "live" as const } + ] + }, + { + id: "live-control", + label: "Live-kontrol", + icon: "live-control" as const, + items: [ + { id: "scenes", label: "Scener", icon: "scenes" as const }, + { id: "effects", label: "Effekter", icon: "effects" as const }, + { id: "bpm", label: "BPM", icon: "bpm" as const } + ] + }, + { + id: "lighting-setup", + label: "Lysopsætning", + icon: "lighting-setup" as const, + items: [ + { id: "fixtures", label: "Fixtures", icon: "fixtures" as const }, + { id: "patch", label: "DMX Patch", icon: "patch" as const }, + { id: "placement", label: "Placering", icon: "placement" as const } + ] + }, + { + id: "integrations", + label: "Integrationer", + icon: "integrations" as const, + items: [ + { id: "mixitup", label: "MixItUp", icon: "mixitup" as const }, + { id: "midi", label: "MIDI", icon: "midi" as const } + ] + }, + { + id: "monitoring", + label: "Overvågning", + icon: "monitoring" as const, + items: [ + { id: "monitor", label: "DMX Monitor", icon: "monitor" as const }, + { id: "telemetry", label: "Telemetri", icon: "telemetry" as const } + ] + }, + { + id: "system", + label: "System", + icon: "system" as const, + items: [ + { id: "backup", label: "Backup", icon: "backup" as const }, + { id: "settings", label: "Indstillinger", icon: "settings" as const } + ] + } +]; + +const mockStatus: SystemStatus = { + app: "TuxDMX", + setup_required: false, + engine: { + backend: "simulator", + connected: true, + degraded: false, + last_error: null, + blackout: false, + fps: 30, + master: 255, + frame: Array.from({ length: 512 }, (_, index) => (index % 16) * 16), + source_map: Array.from({ length: 512 }, (_, index) => + index < 12 ? "scene:stream-base" : index < 20 ? "effect:raid-flash" : "idle" + ), + updated_at: "2026-07-12T15:00:05+02:00" + }, + telemetry: { + uptime_seconds: 7242, + cpu_percent: 18, + ram_percent: 41, + temperature_c: 52, + queue_depth: 1, + reconnect_count: 0, + last_error: null, + events: [ + { + created_at: "2026-07-12T15:00:00+02:00", + category: "DMX", + level: "INFO", + message: "Simulatorframe afleveret til backend" + }, + { + created_at: "2026-07-12T15:00:05+02:00", + category: "MIXITUP", + level: "INFO", + message: "Raid-trigger lagt i kø" + } + ] + }, + bpm: { + mode: "audio:alsa:plughw:CARD=SB,DEV=0", + bpm: 128, + confidence: 0.92, + devices: ["alsa:auto", "alsa:plughw:CARD=SB,DEV=0", "alsa:plughw:1,0", "synthetic-click-track"], + device_details: [ + { + id: "alsa:auto", + name: "Auto (SB -> plughw:CARD=SB,DEV=0 -> plughw:1,0 -> default)", + backend: "alsa", + is_default: true + }, + { + id: "alsa:plughw:CARD=SB,DEV=0", + name: "HDA ATI SB / ALC883 Analog (stabil alias)", + backend: "alsa", + is_default: false, + recommended: true + }, + { id: "alsa:plughw:1,0", name: "HDA ATI SB / ALC883 Analog (plughw)", backend: "alsa", is_default: false }, + { id: "synthetic-click-track", name: "Syntetisk click track", backend: "synthetic", is_default: false } + ], + current_device: "alsa:plughw:CARD=SB,DEV=0", + selected_device: "alsa:auto", + recommended_device: "alsa:plughw:CARD=SB,DEV=0", + audio_connected: true, + last_error: null, + last_beat_at: 12.5, + input_level: 0.42, + peak_level: 0.68, + clipping: false, + sample_rate: 44100, + channels: 1, + format: "S16_LE" + } +}; + +const mockFixtures: FixtureSummary[] = [ + { + id: 1, + slug: "eurolite/led-bar-3-hcl-bar", + manufacturer: "Eurolite", + model: "LED Bar-3 HCL Bar", + short_name: "BRR-3", + categories: ["Color Changer"], + schema_version: "custom", + source: { manufacturer_key: "eurolite", fixture_key: "led-bar-3-hcl-bar" }, + warnings: [], + modes: [ + { + key: "10-channel", + channel_count: 10, + channels: [ + { index: 1, key: "Dimmer", display_name: "Dimmer", precedence: "htp", resolution: 8 }, + { index: 2, key: "Strobe", display_name: "Strobe", precedence: "ltp", resolution: 8 }, + { index: 3, key: "Red", display_name: "Red", precedence: "ltp", resolution: 8 }, + { index: 4, key: "Green", display_name: "Green", precedence: "ltp", resolution: 8 }, + { index: 5, key: "Blue", display_name: "Blue", precedence: "ltp", resolution: 8 }, + { index: 6, key: "White", display_name: "White", precedence: "ltp", resolution: 8 }, + { index: 7, key: "Amber", display_name: "Amber", precedence: "ltp", resolution: 8 }, + { index: 8, key: "UV", display_name: "UV", precedence: "ltp", resolution: 8 }, + { index: 9, key: "Program", display_name: "Program", precedence: "ltp", resolution: 8 }, + { index: 10, key: "Speed", display_name: "Speed", precedence: "ltp", resolution: 8 } + ] + } + ] + } +]; + +const mockPatches: PatchItem[] = [ + { + id: 1, + universe: 1, + name: "Bar venstre", + definition_id: 1, + fixture_slug: "eurolite/led-bar-3-hcl-bar", + manufacturer: "Eurolite", + model: "LED Bar-3 HCL Bar", + mode_key: "10-channel", + start_address: 1, + end_address: 10, + channel_count: 10, + enabled: true, + group_names: ["front", "wash", "synk-a"], + position: { x: 18, y: 32, z: 12, rotation: 8 }, + channels: mockFixtures[0].modes[0].channels + }, + { + id: 2, + universe: 1, + name: "Bar højre", + definition_id: 1, + fixture_slug: "eurolite/led-bar-3-hcl-bar", + manufacturer: "Eurolite", + model: "LED Bar-3 HCL Bar", + mode_key: "10-channel", + start_address: 11, + end_address: 20, + channel_count: 10, + enabled: true, + group_names: ["front", "wash", "synk-a"], + position: { x: 78, y: 34, z: 12, rotation: 352 }, + channels: mockFixtures[0].modes[0].channels + } +]; + +const mockScenes: SceneItem[] = [ + { + id: 1, + name: "Stream base", + slug: "stream-base", + color: "#00e5ff", + icon: null, + priority: 10, + fade_in_ms: 500, + fade_out_ms: 500, + hold_ms: 0, + master_limit: 255, + values: [], + targets: [ + { + target_type: "group", + group_name: "synk-a", + values: [ + { attribute: "Dimmer", value: 200, precedence: "htp" }, + { attribute: "Blue", value: 180, precedence: "ltp" } + ] + } + ], + tags: ["stream"], + is_active: true + } +]; + +const mockEffects = [ + { name: "Raid flash", slug: "raid-flash", effect_type: "beat-flash" }, + { name: "Rainbow", slug: "rainbow", effect_type: "color-chase" } +]; + +const mockBackups = [ + { id: "20260712150000", label: "backup-20260712150000", created_at: "2026-07-12T15:00:00+02:00" } +]; + +const mockMixerItems: LiveMixerItem[] = mockPatches.map((patch) => ({ + id: `patch:${patch.id}`, + source_type: "patch", + source_id: patch.id, + patch_id: patch.id, + name: patch.name, + manufacturer: patch.manufacturer, + model: patch.model, + mode_key: patch.mode_key, + universe: patch.universe, + start_address: patch.start_address, + end_address: patch.end_address, + channel_count: patch.channel_count, + entity_id: null, + status: "active", + last_sent_summary: null, + channels: patch.channels.slice(0, 6).map((channel) => ({ + index: channel.index, + absolute_channel: patch.start_address + channel.index - 1, + key: channel.key, + display_name: channel.display_name, + precedence: channel.precedence, + resolution: channel.resolution, + value: channel.index === 1 ? 220 : 0 + })) +})); + +mockMixerItems.push({ + id: "home_assistant:1", + source_type: "home_assistant", + source_id: 1, + patch_id: null, + name: "Loft bunker", + manufacturer: "Home Assistant", + model: "switch", + mode_key: "HA switch", + universe: 10, + start_address: 1, + end_address: 1, + channel_count: 1, + entity_id: "light.loft_bunker", + status: "active", + last_sent_summary: "light.turn_on light.loft_bunker", + channels: [ + { + index: 1, + absolute_channel: 1, + key: "Switch", + display_name: "State", + precedence: "ltp", + resolution: 8, + value: 0 + } + ] +}); + +const mockFixturePreview = { + manufacturer: "Eurolite", + model: "LED Bar-3 HCL Bar", + categories: ["Color Changer"], + schema_version: "https://example.test/ofl-schema-v1", + modes: mockFixtures[0].modes +}; + +const mockArtNetNodes: ArtNetNode[] = [ + { + ip: "192.168.2.60", + short_name: "WLED Matrix", + long_name: "WLED Matrix Loft", + label: "WLED Matrix Loft (192.168.2.60)", + net: 0, + sub_switch: 0, + port_count: 1, + raw_port_address: 0 + }, + { + ip: "192.168.2.61", + short_name: "Paravega Node", + long_name: "Paravega Front Rig", + label: "Paravega Front Rig (192.168.2.61)", + net: 0, + sub_switch: 0, + port_count: 4, + raw_port_address: 1 + } +]; + +const mockDmxConfig: DmxOutputConfig = { + backend: "artnet", + universe: 1, + output_port: "WLED Matrix Loft", + target_host: "192.168.2.60", + artnet_nodes: mockArtNetNodes +}; + +const mockDmxDevices: DmxDevice[] = [ + { + name: "Art-Net output 192.168.2.60", + backend: "artnet", + connected: true, + output_port: "WLED Matrix Loft", + universe: 1 + } +]; + +const mockHomeAssistantConfig: HomeAssistantConfig = { + enabled: true, + base_url: "http://homeassistant.local:8123", + default_universe: 10, + has_token: true, + token_mask: "********", + mapping_count: 1, + dispatch_count: 12, + error_count: 0, + last_error: null, + last_successful_call_at: "2026-07-23T12:40:00+02:00", + last_connection_success_at: "2026-07-23T12:39:55+02:00", + last_connection_error: null, + ha_version: "2026.7.0", + auth_ok: true, + reachable: true +}; + +const mockHomeAssistantEntities: HomeAssistantEntity[] = [ + { + entity_id: "light.bar_rgb", + domain: "light", + friendly_name: "Bar RGB", + state: "on" + } +]; + +const mockHomeAssistantMappings: HomeAssistantMapping[] = [ + { + id: 1, + name: "Bar RGB via HA", + universe: 10, + start_address: 1, + fixture_type: "rgb", + entity_id: "light.bar_rgb", + rate_limit_hz: 5, + deadband: 2, + fade_ms: 150, + invert_channel: false, + min_value: 0, + max_value: 255, + enabled: true, + master_dimmer: true, + channel_span: 4, + status: "active", + last_dmx_values: [255, 255, 80, 80], + last_sent_summary: "light.turn_on light.bar_rgb rgb=[255,80,80] brightness=255", + last_service: "light.turn_on", + last_success_at: "2026-07-23T12:40:00+02:00", + last_error: null, + last_error_at: null, + in_flight: false + } +]; + +const mockMidiBridges: MidiBridgeStatus[] = [ + { + bridge_id: "bar-laptop", + device_name: "USB MIDI Controller", + ip_address: "192.168.2.44", + protocol_version: 1, + online: true, + last_heartbeat_at: "2026-07-24T20:30:10+02:00", + last_event_at: "2026-07-24T20:30:12+02:00", + last_error: null, + last_event: { type: "note_on", channel: 0, number: 36, value: 127 }, + updated_at: "2026-07-24T20:30:12+02:00", + created_at: "2026-07-24T20:20:00+02:00" + } +]; + +const mockMidiMappings: MidiMapping[] = [ + { + id: 1, + name: "Scene A", + enabled: true, + bridge_id: "bar-laptop", + device_name: "USB*", + message_type: "note_on", + channel: 0, + number: 36, + action: "activate_scene", + target_type: "scene", + target_id: "stream-base", + mode: "trigger", + minimum_value: 1, + maximum_value: 127, + created_at: "2026-07-24T20:20:00+02:00", + updated_at: "2026-07-24T20:20:00+02:00", + active: true + } +]; + +const mockMidiTokens: MidiBridgeToken[] = [ + { + id: 1, + label: "Bar laptop", + bridge_id: "bar-laptop", + scopes: ["midi:connect", "midi:events", "midi:heartbeat"], + created_at: "2026-07-24T20:10:00+02:00", + revoked_at: null, + last_used_at: "2026-07-24T20:30:12+02:00", + token_preview: "********9f2a" + } +]; + +const mockMidiLearnState: MidiLearnState = { + active: false, + allow_passthrough: false, + expires_at: null, + captured_event: { + bridge_id: "bar-laptop", + device: "USB MIDI Controller", + timestamp: "2026-07-24T20:28:00+02:00", + message: { type: "control_change", channel: 0, number: 14, value: 64 } + } +}; + +export default function App() { + const searchParams = new URLSearchParams(window.location.search); + const isMock = searchParams.get("mock") === "1"; + const initialPage = searchParams.get("page") ?? "dashboard"; + + const [currentPage, setCurrentPage] = useState(initialPage); + const [status, setStatus] = useState(isMock ? mockStatus : null); + const [fixtures, setFixtures] = useState(isMock ? mockFixtures : []); + const [fixtureResults, setFixtureResults] = useState>( + isMock ? [{ fixture_key: "eurolite/led-bar-3-hcl-bar", cached: true }] : [] + ); + const [scenes, setScenes] = useState(isMock ? mockScenes : []); + const [effects, setEffects] = useState>>(isMock ? mockEffects : []); + const [backups, setBackups] = useState>>(isMock ? mockBackups : []); + const [patches, setPatches] = useState(isMock ? mockPatches : []); + const [liveMixer, setLiveMixer] = useState(isMock ? mockMixerItems : []); + const [bpmDevices, setBpmDevices] = useState( + isMock ? mockStatus.bpm.device_details ?? [] : [] + ); + const [dmxConfig, setDmxConfig] = useState(isMock ? mockDmxConfig : null); + const [dmxDevices, setDmxDevices] = useState(isMock ? mockDmxDevices : []); + const [haConfig, setHaConfig] = useState(isMock ? mockHomeAssistantConfig : null); + const [haEntities, setHaEntities] = useState(isMock ? mockHomeAssistantEntities : []); + const [haMappings, setHaMappings] = useState(isMock ? mockHomeAssistantMappings : []); + const [midiBridges, setMidiBridges] = useState(isMock ? mockMidiBridges : []); + const [midiMappings, setMidiMappings] = useState(isMock ? mockMidiMappings : []); + const [midiTokens, setMidiTokens] = useState(isMock ? mockMidiTokens : []); + const [midiLearnState, setMidiLearnState] = useState(isMock ? mockMidiLearnState : null); + const [preferredPatchFixtureId, setPreferredPatchFixtureId] = useState(null); + + const refresh = useCallback(async () => { + if (isMock) { + return; + } + const [ + statusData, + fixtureData, + sceneData, + effectData, + backupData, + patchData, + liveMixerData, + bpmDeviceData, + dmxConfigData, + dmxDeviceData, + haConfigData, + haMappingData, + midiBridgeData, + midiMappingData, + midiTokenData, + midiLearnData + ] = await Promise.all([ + api.getStatus(), + api.getFixtures(), + api.listScenes(), + api.listEffects(), + api.listBackups(), + api.listPatches(), + api.getLiveMixer(), + api.listBpmDevices(), + api.getDmxConfig(), + api.listDmxDevices(), + api.getHomeAssistantConfig(), + api.listHomeAssistantMappings(), + api.listMidiBridges(), + api.listMidiMappings(), + api.listMidiTokens(), + api.getMidiLearnState() + ]); + setStatus(statusData); + setFixtures(fixtureData.items); + setScenes(sceneData.items); + setEffects(effectData.items); + setBackups(backupData.items); + setPatches(patchData.items); + setLiveMixer(liveMixerData.items); + setBpmDevices(bpmDeviceData.devices); + setDmxConfig(dmxConfigData); + setDmxDevices(dmxDeviceData.devices); + setHaConfig(haConfigData); + setHaMappings(haMappingData.items); + setMidiBridges(midiBridgeData.items); + setMidiMappings(midiMappingData.items); + setMidiTokens(midiTokenData.items); + setMidiLearnState(midiLearnData); + }, [isMock]); + + useEffect(() => { + if (isMock) { + return; + } + void refresh(); + const refreshTimer = window.setInterval(() => { + void refresh(); + }, 5000); + + let socket: WebSocket | null = null; + let reconnectTimer: number | null = null; + let stopped = false; + + const connectSocket = () => { + if (stopped) { + return; + } + socket = new WebSocket(`${window.location.origin.replace(/^http/, "ws")}/ws/live`); + socket.onopen = () => { + void refresh(); + }; + socket.onmessage = (event) => { + const payload = JSON.parse(event.data) as { + engine: SystemStatus["engine"]; + telemetry: SystemStatus["telemetry"]; + bpm: SystemStatus["bpm"]; + }; + setStatus((previous) => + previous + ? { ...previous, engine: payload.engine, telemetry: payload.telemetry, bpm: payload.bpm } + : { + app: "TuxDMX", + setup_required: false, + engine: payload.engine, + telemetry: payload.telemetry, + bpm: payload.bpm + } + ); + }; + socket.onerror = () => { + socket?.close(); + }; + socket.onclose = () => { + if (stopped) { + return; + } + void refresh(); + reconnectTimer = window.setTimeout(() => { + connectSocket(); + }, 1500); + }; + }; + + connectSocket(); + + return () => { + stopped = true; + window.clearInterval(refreshTimer); + if (reconnectTimer !== null) { + window.clearTimeout(reconnectTimer); + } + socket?.close(); + }; + }, [isMock, refresh]); + + const page = (() => { + switch (currentPage) { + case "fixtures": + return ( + { + if (isMock) { + setFixtureResults([{ fixture_key: "eurolite/led-bar-3-hcl-bar", cached: true }]); + return; + } + const data = await api.searchFixtures(query); + setFixtureResults(data.results); + }} + onPreview={(manufacturerKey, fixtureKey) => + isMock ? Promise.resolve(mockFixturePreview) : api.previewFixture(manufacturerKey, fixtureKey) + } + onImport={async (manufacturerKey, fixtureKey) => { + if (isMock) { + void manufacturerKey; + void fixtureKey; + const fixture = mockFixtures[0]; + setPreferredPatchFixtureId(fixture.id); + setCurrentPage("patch"); + return fixture; + } + const fixture = await api.importFixture(manufacturerKey, fixtureKey); + await refresh(); + setPreferredPatchFixtureId(fixture.id); + setCurrentPage("patch"); + return fixture; + }} + onImportFile={async (payload) => { + if (isMock) { + const fixture = mockFixtures[0]; + void payload; + setPreferredPatchFixtureId(fixture.id); + setCurrentPage("patch"); + return fixture; + } + const fixture = await api.importFixtureFile(payload); + await refresh(); + setPreferredPatchFixtureId(fixture.id); + setCurrentPage("patch"); + return fixture; + }} + onConfigureFixture={(fixtureId) => { + setPreferredPatchFixtureId(fixtureId); + setCurrentPage("patch"); + }} + /> + ); + case "live": + return ( + { + await api.blackout(); + await refresh(); + }} + onReleaseBlackout={async () => { + await api.releaseBlackout(); + await refresh(); + }} + onSetChannel={async (item, channelIndex, value) => { + if (isMock) { + return; + } + const current = liveMixer.find((entry) => entry.id === item.id); + const nextValues = Object.fromEntries( + (current?.channels ?? []).map((channel) => [ + channel.index, + channel.index === channelIndex ? value : channel.value + ]) + ) as Record; + const response = + item.source_type === "home_assistant" + ? await api.setLiveMixerHomeAssistantValues(item.source_id, nextValues) + : await api.setLiveMixerPatchValues(item.source_id, nextValues); + setLiveMixer(response.items); + }} + onClearFixture={async (item) => { + if (isMock) { + return; + } + const response = + item.source_type === "home_assistant" + ? await api.clearLiveMixerHomeAssistantValues(item.source_id) + : await api.clearLiveMixerPatchValues(item.source_id); + setLiveMixer(response.items); + }} + /> + ); + case "patch": + return ( + ( + isMock + ? Promise.resolve({ + valid: true, + range: "1-10", + end_address: 10, + channel_count: 10, + occupied_channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], + conflicts: [] + }) + : api.validatePatch(payload) + )} + onSave={async (payload, patchId) => { + if (isMock) { + return; + } + if (patchId === null) { + await api.createPatch(payload); + } else { + await api.updatePatch(patchId, payload); + } + await refresh(); + }} + onDelete={async (patchId) => { + if (isMock) { + return; + } + await api.deletePatch(patchId); + await refresh(); + }} + /> + ); + case "placement": + return ( + { + if (isMock) { + return; + } + const patch = patches.find((item) => item.id === patchId); + if (!patch) { + return; + } + await api.updatePatch(patchId, { + universe: patch.universe, + name: patch.name, + definition_id: patch.definition_id, + mode_key: patch.mode_key, + start_address: patch.start_address, + enabled: patch.enabled, + group_names: patch.group_names, + position + }); + await refresh(); + }} + /> + ); + case "scenes": + return ( + { + await api.createScene(payload); + await refresh(); + }} + onActivate={async (slug) => { + await api.activateScene(slug); + await refresh(); + }} + onRelease={async (slug) => { + await api.releaseScene(slug); + await refresh(); + }} + onDelete={async (sceneId) => { + await api.deleteScene(sceneId); + await refresh(); + }} + /> + ); + case "effects": + return ( + { + await api.createEffect(payload); + await refresh(); + }} + onTrigger={async (slug) => { + await api.triggerEffect(slug); + await refresh(); + }} + onStop={async (slug) => { + await api.stopEffect(slug); + await refresh(); + }} + /> + ); + case "bpm": + return ( + { + await api.tapBpm(); + await refresh(); + }} + onSetManual={async (bpm) => { + await api.setManualBpm(bpm); + await refresh(); + }} + onStartAudio={async (device) => { + await api.startAudioBpm(device); + await refresh(); + }} + onStopAudio={async () => { + await api.stopAudioBpm(); + await refresh(); + }} + onCreateEffect={async (payload) => { + await api.createEffect(payload); + await refresh(); + }} + onTriggerEffect={async (slug) => { + await api.triggerEffect(slug); + await refresh(); + }} + onStopEffect={async (slug) => { + await api.stopEffect(slug); + await refresh(); + }} + /> + ); + case "mixitup": + return ( + { + await api.triggerMixitup("raid", { + eventType: "raid", + displayName: "TestRaid", + amount: 42, + eventId: "local-test" + }); + await refresh(); + }} + /> + ); + case "midi": + return ( + { + if (isMock) { + const next: MidiMapping = { + id: mappingId ?? Date.now(), + name: String(payload.name), + enabled: Boolean(payload.enabled), + bridge_id: (payload.bridge_id as string | null) ?? null, + device_name: (payload.device_name as string | null) ?? null, + message_type: payload.message_type as MidiMapping["message_type"], + channel: (payload.channel as number | null) ?? null, + number: Number(payload.number), + action: payload.action as MidiMapping["action"], + target_type: payload.target_type as MidiMapping["target_type"], + target_id: (payload.target_id as string | null) ?? null, + mode: payload.mode as MidiMapping["mode"], + minimum_value: Number(payload.minimum_value), + maximum_value: Number(payload.maximum_value), + created_at: new Date().toISOString(), + updated_at: new Date().toISOString(), + active: false + }; + setMidiMappings((previous) => + mappingId === null ? [...previous, next] : previous.map((item) => (item.id === mappingId ? next : item)) + ); + return "Mock: MIDI-mapping gemt."; + } + if (mappingId === null) { + await api.createMidiMapping(payload); + } else { + await api.updateMidiMapping(mappingId, payload); + } + await refresh(); + return "MIDI-mapping gemt."; + }} + onDeleteMapping={async (mappingId) => { + if (isMock) { + setMidiMappings((previous) => previous.filter((mapping) => mapping.id !== mappingId)); + return; + } + await api.deleteMidiMapping(mappingId); + await refresh(); + }} + onTestMapping={async (mappingId) => { + if (isMock) { + return "Mock: MIDI-test sendt."; + } + await api.testMidiMapping(mappingId); + await refresh(); + return "MIDI-test sendt."; + }} + onCreateToken={async (payload) => { + if (isMock) { + const created: MidiBridgeToken = { + id: Date.now(), + label: payload.label, + bridge_id: payload.bridge_id, + scopes: payload.scopes, + created_at: new Date().toISOString(), + revoked_at: null, + last_used_at: null, + token_preview: "********mock", + token: "tuxmidi_mock_token" + }; + setMidiTokens((previous) => [...previous, created]); + return created; + } + const created = await api.createMidiToken(payload); + await refresh(); + return created; + }} + onRevokeToken={async (tokenId) => { + if (isMock) { + setMidiTokens((previous) => + previous.map((token) => + token.id === tokenId ? { ...token, revoked_at: new Date().toISOString() } : token + ) + ); + return; + } + await api.revokeMidiToken(tokenId); + await refresh(); + }} + onStartLearn={async (timeoutSeconds, allowPassthrough) => { + if (isMock) { + setMidiLearnState({ + active: true, + allow_passthrough: allowPassthrough, + expires_at: new Date(Date.now() + timeoutSeconds * 1000).toISOString(), + captured_event: null + }); + return "Mock: MIDI Learn armeret."; + } + await api.startMidiLearn(timeoutSeconds, allowPassthrough); + await refresh(); + return "MIDI Learn armeret."; + }} + onCancelLearn={async () => { + if (isMock) { + setMidiLearnState((previous) => (previous ? { ...previous, active: false } : previous)); + return "Mock: MIDI Learn annulleret."; + } + await api.cancelMidiLearn(); + await refresh(); + return "MIDI Learn annulleret."; + }} + /> + ); + case "monitor": + return ( + 0)} + sources={status?.engine.source_map ?? Array.from({ length: 512 }, () => "idle")} + events={status?.telemetry.events ?? []} + updatedAt={status?.engine.updated_at ?? null} + /> + ); + case "telemetry": + return ; + case "backup": + return ( + { + await api.createBackup(); + await refresh(); + }} + onRestore={async (backupId) => { + await api.restoreBackup(backupId); + await refresh(); + }} + /> + ); + case "settings": + return ( + { + if (isMock) { + return `Mock: Standardinput gemt som ${device}.`; + } + const result = await api.saveBpmConfig(device); + await refresh(); + return `Standardinput gemt som ${String(result.preferred_device).replace(/^alsa:/, "")}.`; + }} + onRefreshAudioDevices={async () => { + await refresh(); + }} + onSaveHomeAssistantConfig={async (payload) => { + if (isMock) { + setHaConfig({ + ...mockHomeAssistantConfig, + enabled: payload.enabled, + base_url: payload.base_url, + default_universe: payload.default_universe, + has_token: Boolean(payload.token) || mockHomeAssistantConfig.has_token, + token_mask: Boolean(payload.token) || mockHomeAssistantConfig.has_token ? "********" : "", + mapping_count: haMappings.length + }); + return "Mock: Home Assistant-konfiguration gemt."; + } + await api.saveHomeAssistantConfig(payload); + await refresh(); + return "Home Assistant-konfiguration gemt."; + }} + onTestHomeAssistantConnection={async () => { + if (isMock) { + setHaConfig((previous) => + previous + ? { + ...previous, + reachable: true, + auth_ok: true, + ha_version: "2026.7.0", + last_connection_success_at: "2026-07-23T12:41:00+02:00", + last_connection_error: null + } + : previous + ); + return "Forbindelse OK · Home Assistant 2026.7.0 · login godkendt."; + } + const result = await api.testHomeAssistantConnection(); + await refresh(); + return result.reachable + ? `Forbindelse OK · Home Assistant ${result.ha_version ?? "ukendt"} · ${result.auth_ok ? "login godkendt" : "loginfejl"}.` + : `Forbindelsesfejl: ${result.last_error ?? "ukendt fejl"}`; + }} + onRefreshHomeAssistantEntities={async () => { + if (isMock) { + setHaEntities(mockHomeAssistantEntities); + return "Mock: Home Assistant-enheder opdateret."; + } + const result = await api.listHomeAssistantEntities(); + setHaEntities(result.items); + return `Hentede ${result.items.length} Home Assistant-enheder.`; + }} + onSaveHomeAssistantMapping={async (payload, mappingId) => { + if (isMock) { + if (mappingId === null) { + const created: HomeAssistantMapping = { + id: Date.now(), + ...payload, + channel_span: + payload.fixture_type === "rgb" + ? (payload.master_dimmer ? 4 : 3) + : payload.fixture_type === "rgbw" + ? (payload.master_dimmer ? 5 : 4) + : payload.fixture_type === "cct" + ? (payload.master_dimmer ? 3 : 2) + : 1, + status: payload.enabled ? "active" : "disabled", + last_dmx_values: [], + last_sent_summary: null, + last_service: null, + last_success_at: null, + last_error: null, + last_error_at: null, + in_flight: false + }; + setHaMappings((previous) => [...previous, created]); + } else { + setHaMappings((previous) => + previous.map((item) => (item.id === mappingId ? { ...item, ...payload } : item)) + ); + } + return "Mock: HA-mapping gemt."; + } + if (mappingId === null) { + await api.createHomeAssistantMapping(payload); + } else { + await api.updateHomeAssistantMapping(mappingId, payload); + } + await refresh(); + return "HA-mapping gemt."; + }} + onDeleteHomeAssistantMapping={async (mappingId) => { + if (isMock) { + setHaMappings((previous) => previous.filter((item) => item.id !== mappingId)); + return; + } + await api.deleteHomeAssistantMapping(mappingId); + await refresh(); + }} + onTestHomeAssistantMapping={async (mappingId) => { + if (isMock) { + return "Mock: Testsignal sendt til Home Assistant."; + } + await api.testHomeAssistantMapping(mappingId); + return "Testsignal sendt til Home Assistant."; + }} + onSaveDmxConfig={async (payload) => { + if (isMock) { + const nextConfig: DmxOutputConfig = { + ...mockDmxConfig, + ...payload, + artnet_nodes: dmxConfig?.artnet_nodes ?? mockArtNetNodes + }; + setDmxConfig(nextConfig); + setDmxDevices([ + { + name: + payload.backend === "simulator" + ? "Simulator universe 1" + : payload.backend === "ola" + ? "OLA DMX output" + : `Art-Net output ${payload.target_host || "255.255.255.255"}`, + backend: payload.backend, + connected: true, + output_port: + payload.backend === "simulator" + ? "simulator" + : payload.output_port || payload.target_host || null, + universe: payload.universe + } + ]); + setStatus((previous) => + previous + ? { + ...previous, + engine: { + ...previous.engine, + backend: payload.backend, + connected: true + } + } + : previous + ); + return `Mock: DMX-output gemt som ${payload.backend.toUpperCase()} på universe ${payload.universe}.`; + } + const result = await api.saveDmxConfig(payload); + await refresh(); + return `DMX-output gemt som ${String(result.backend).toUpperCase()} på universe ${result.universe}.`; + }} + onDiscoverArtNet={async () => { + if (isMock) { + setDmxConfig((previous) => + previous + ? { ...previous, artnet_nodes: mockArtNetNodes } + : { ...mockDmxConfig, artnet_nodes: mockArtNetNodes } + ); + return `Mock: Fandt ${mockArtNetNodes.length} Art-Net enheder.`; + } + const result = await api.discoverArtNet(1); + await refresh(); + return `Fandt ${result.count} Art-Net enheder.`; + }} + onRestartService={async () => { + if (isMock) { + return "Mock: TuxDMX service er planlagt til genstart."; + } + const result = await api.restartService(); + return result.detail; + }} + onRebootHost={async () => { + if (isMock) { + return "Mock: Hostmaskinen er planlagt til genstart."; + } + const result = await api.rebootHost(); + return result.detail; + }} + /> + ); + default: + return ( + { + await api.blackout(); + await refresh(); + }} + onReleaseBlackout={async () => { + await api.releaseBlackout(); + await refresh(); + }} + onRestartService={async () => { + if (isMock) { + return "Mock: TuxDMX service er planlagt til genstart."; + } + const result = await api.restartService(); + return result.detail; + }} + onRebootHost={async () => { + if (isMock) { + return "Mock: Hostmaskinen er planlagt til genstart."; + } + const result = await api.rebootHost(); + return result.detail; + }} + /> + ); + } + })(); + + return ( + + {page} + + ); +} diff --git a/frontend/src/components/AppShell.tsx b/frontend/src/components/AppShell.tsx new file mode 100644 index 0000000..7a58f28 --- /dev/null +++ b/frontend/src/components/AppShell.tsx @@ -0,0 +1,269 @@ +import { ReactNode, useEffect, useMemo, useState } from "react"; + +type AppShellProps = { + currentPage: string; + sections: Array<{ + id: string; + label: string; + icon: SectionIconName; + tone?: "accent" | "muted"; + items: Array<{ id: string; label: string; icon: IconName }>; + }>; + onNavigate: (page: string) => void; + children: ReactNode; +}; + +type IconName = + | "dashboard" + | "live" + | "scenes" + | "effects" + | "bpm" + | "fixtures" + | "patch" + | "placement" + | "mixitup" + | "midi" + | "monitor" + | "telemetry" + | "backup" + | "settings"; + +type SectionIconName = "overview" | "live-control" | "lighting-setup" | "integrations" | "monitoring" | "system"; + +function NavIcon({ name }: { name: IconName }) { + const commonProps = { + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + strokeWidth: 1.8, + strokeLinecap: "round" as const, + strokeLinejoin: "round" as const, + "aria-hidden": true, + }; + + switch (name) { + case "dashboard": + return ( + + + + ); + case "live": + return ( + + + + + + + ); + case "scenes": + return ( + + + + + ); + case "effects": + return ( + + + + ); + case "bpm": + return ( + + + + ); + case "fixtures": + return ( + + + + ); + case "patch": + return ( + + + + + ); + case "placement": + return ( + + + + + ); + case "mixitup": + return ( + + + + + + ); + case "midi": + return ( + + + + + ); + case "monitor": + return ( + + + + + ); + case "telemetry": + return ( + + + + ); + case "backup": + return ( + + + + + ); + case "settings": + return ( + + + + + ); + } +} + +function SectionIcon({ name }: { name: SectionIconName }) { + const commonProps = { + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + strokeWidth: 1.8, + strokeLinecap: "round" as const, + strokeLinejoin: "round" as const, + "aria-hidden": true, + }; + + switch (name) { + case "overview": + return ( + + + + ); + case "live-control": + return ( + + + + + + + ); + case "lighting-setup": + return ( + + + + ); + case "integrations": + return ( + + + + + ); + case "monitoring": + return ( + + + + ); + case "system": + return ( + + + + + ); + } +} + +export function AppShell({ currentPage, sections, onNavigate, children }: AppShellProps) { + const activeSectionId = useMemo( + () => sections.find((section) => section.items.some((item) => item.id === currentPage))?.id ?? sections[0]?.id ?? "", + [currentPage, sections] + ); + const [openSectionId, setOpenSectionId] = useState(activeSectionId); + + useEffect(() => { + setOpenSectionId(activeSectionId); + }, [activeSectionId]); + + return ( +
+ +
{children}
+
+ ); +} diff --git a/frontend/src/components/ChannelGrid.tsx b/frontend/src/components/ChannelGrid.tsx new file mode 100644 index 0000000..e92fc3d --- /dev/null +++ b/frontend/src/components/ChannelGrid.tsx @@ -0,0 +1,45 @@ +type ChannelGridProps = { + values: number[]; + sources: string[]; +}; + +export function ChannelGrid({ values, sources }: ChannelGridProps) { + const activeChannels = values + .map((value, index) => ({ + channel: index + 1, + value, + source: sources[index] ?? "idle" + })) + .filter((entry) => entry.value > 0 || entry.source !== "idle"); + + if (activeChannels.length === 0) { + return ( +
+ Ingen aktive DMX-kanaler +
Monitoren viser kun kanaler med værdi over 0 eller aktiv kilde.
+
+ ); + } + + return ( +
+ {activeChannels.map((entry) => ( +
+ {entry.channel} + {entry.value} + {entry.source.replace(/^.*:/, "")} +
+ ))} +
+ ); +} diff --git a/frontend/src/components/StatusPill.tsx b/frontend/src/components/StatusPill.tsx new file mode 100644 index 0000000..e223361 --- /dev/null +++ b/frontend/src/components/StatusPill.tsx @@ -0,0 +1,9 @@ +type StatusPillProps = { + label: string; + tone: "success" | "warning" | "danger" | "info"; +}; + +export function StatusPill({ label, tone }: StatusPillProps) { + return {label}; +} + diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts new file mode 100644 index 0000000..f8c4021 --- /dev/null +++ b/frontend/src/lib/api.ts @@ -0,0 +1,604 @@ +export type SystemStatus = { + app: string; + setup_required: boolean; + engine: { + backend: string; + connected: boolean; + degraded: boolean; + last_error: string | null; + blackout: boolean; + fps: number; + master: number; + frame: number[]; + source_map: string[]; + updated_at?: string | null; + }; + telemetry: { + uptime_seconds: number; + cpu_percent: number; + ram_percent: number; + temperature_c: number | null; + queue_depth: number; + reconnect_count: number; + last_error: string | null; + events: Array<{ created_at: string; category: string; level: string; message: string }>; + }; + bpm: BpmStatus; +}; + +export type DmxOutputConfig = { + backend: "simulator" | "ola" | "artnet"; + universe: number; + output_port: string; + target_host: string; + artnet_nodes: ArtNetNode[]; +}; + +export type DmxDevice = { + name: string; + backend: string; + connected: boolean; + output_port: string | null; + universe: number; +}; + +export type HomeAssistantConfig = { + enabled: boolean; + base_url: string; + default_universe: number; + has_token: boolean; + token_mask: string; + mapping_count: number; + dispatch_count: number; + error_count: number; + last_error: string | null; + last_successful_call_at: string | null; + last_connection_success_at: string | null; + last_connection_error: string | null; + ha_version: string | null; + auth_ok: boolean; + reachable: boolean; +}; + +export type HomeAssistantConnectionResult = { + reachable: boolean; + auth_ok: boolean; + ha_version: string | null; + last_error: string | null; + last_successful_call_at: string | null; + last_connection_success_at: string | null; +}; + +export type HomeAssistantEntity = { + entity_id: string; + domain: string; + friendly_name: string; + state: string; +}; + +export type HomeAssistantMapping = { + id: number; + name: string; + universe: number; + start_address: number; + fixture_type: "dimmer" | "rgb" | "rgbw" | "cct" | "switch" | "scene" | "automation"; + entity_id: string; + rate_limit_hz: number; + deadband: number; + fade_ms: number; + invert_channel: boolean; + min_value: number; + max_value: number; + enabled: boolean; + master_dimmer: boolean; + channel_span: number; + status: string; + last_dmx_values: number[]; + last_sent_summary: string | null; + last_service: string | null; + last_success_at: string | null; + last_error: string | null; + last_error_at: string | null; + in_flight: boolean; +}; + +export type MidiBridgeStatus = { + bridge_id: string; + device_name: string; + ip_address: string | null; + protocol_version: number; + online: boolean; + last_heartbeat_at: string | null; + last_event_at: string | null; + last_error: string | null; + last_event: { + type: string; + channel: number; + number: number; + value: number; + } | null; + updated_at: string; + created_at: string; +}; + +export type MidiMapping = { + id: number; + name: string; + enabled: boolean; + bridge_id: string | null; + device_name: string | null; + message_type: "note_on" | "note_off" | "control_change" | "program_change"; + channel: number | null; + number: number; + action: + | "activate_scene" + | "deactivate_scene" + | "toggle_scene" + | "flash_scene" + | "blackout_on" + | "blackout_off" + | "blackout_toggle" + | "set_master_dimmer" + | "set_scene_intensity" + | "start_effect" + | "stop_effect"; + target_type: "scene" | "effect" | "system" | "global"; + target_id: string | null; + mode: "trigger" | "toggle" | "hold" | "flash" | "continuous"; + minimum_value: number; + maximum_value: number; + created_at: string; + updated_at: string; + active: boolean; +}; + +export type MidiBridgeToken = { + id: number; + label: string; + bridge_id: string | null; + scopes: string[]; + created_at: string; + revoked_at: string | null; + last_used_at: string | null; + token_preview: string; + token?: string; +}; + +export type MidiLearnState = { + active: boolean; + allow_passthrough: boolean; + expires_at: string | null; + captured_event: { + bridge_id: string; + device: string; + timestamp: string; + message: { + type: string; + channel: number; + number: number; + value: number; + }; + } | null; +}; + +export type ArtNetNode = { + ip: string; + short_name: string; + long_name: string; + label: string; + net: number; + sub_switch: number; + port_count: number; + raw_port_address: number; +}; + +export type BpmDevice = { + id: string; + name: string; + backend: string; + is_default: boolean; + recommended?: boolean; +}; + +export type BpmStatus = { + mode: string; + bpm: number; + confidence: number; + devices: string[]; + device_details?: BpmDevice[]; + current_device: string; + selected_device: string; + recommended_device: string; + audio_connected: boolean; + last_error: string | null; + last_beat_at?: number | null; + input_level: number; + peak_level: number; + clipping: boolean; + sample_rate: number; + channels: number; + format: string; +}; + +export type BpmConfig = { + preferred_device: string; + recommended_device: string; + sample_rate: number; + channels: number; + format: string; +}; + +export type FixturePreview = { + manufacturer: string; + model: string; + categories: string[]; + schema_version: string; + modes: Array<{ + key: string; + channel_count: number; + channels: Array<{ + index: number; + key: string; + display_name: string; + precedence: string; + resolution: number; + }>; + }>; +}; + +export type FixtureSummary = { + id: number; + slug: string; + manufacturer: string; + model: string; + short_name: string | null; + categories: string[]; + schema_version: string; + source: { + manufacturer_key?: string; + fixture_key?: string; + }; + warnings: string[]; + modes: Array<{ + key: string; + channel_count: number; + channels: Array<{ + index: number; + key: string; + display_name: string; + precedence: string; + resolution: number; + capabilities?: unknown[]; + }>; + }>; +}; + +export type PatchItem = { + id: number; + universe: number; + name: string; + definition_id: number; + fixture_slug: string | null; + manufacturer: string | null; + model: string | null; + mode_key: string; + start_address: number; + end_address: number; + channel_count: number; + enabled: boolean; + group_names: string[]; + position: { + x: number; + y: number; + z: number; + rotation: number; + }; + channels: Array<{ + index: number; + key: string; + display_name: string; + precedence: string; + resolution: number; + }>; +}; + +export type SceneItem = { + id: number; + name: string; + slug: string; + color: string; + icon: string | null; + priority: number; + fade_in_ms: number; + fade_out_ms: number; + hold_ms: number; + master_limit: number; + values: Array<{ + channel: number; + value: number; + precedence: string; + source?: string; + }>; + targets: Array<{ + target_type: "fixture" | "group"; + patch_id?: number | null; + group_name?: string | null; + values: Array<{ + attribute: string; + value: number; + precedence?: string | null; + }>; + }>; + tags: string[]; + is_active: boolean; +}; + +export type PatchValidation = { + valid: boolean; + range: string; + end_address: number; + channel_count: number; + occupied_channels: number[]; + conflicts: Array<{ + type: string; + patch_id?: number; + name?: string; + range?: string; + fixture?: string; + message: string; + }>; +}; + +export type SystemCommandResult = { + accepted: boolean; + action: string; + status: string; + detail: string; +}; + +export type LiveMixerItem = { + id: string; + source_type: "patch" | "home_assistant"; + source_id: number; + patch_id: number | null; + name: string; + manufacturer: string | null; + model: string | null; + mode_key: string; + universe: number; + start_address: number; + end_address: number; + channel_count: number; + entity_id?: string | null; + status?: string | null; + last_sent_summary?: string | null; + channels: Array<{ + index: number; + absolute_channel: number; + key: string; + display_name: string; + precedence: string; + resolution: number; + value: number; + }>; +}; + +const jsonHeaders = { "Content-Type": "application/json" }; + +async function request(path: string, init?: RequestInit): Promise { + const response = await fetch(`/api/v1${path}`, init); + if (!response.ok) { + throw new Error(`API-fejl ${response.status}`); + } + return (await response.json()) as T; +} + +export const api = { + getStatus: () => request("/system/status"), + restartService: () => request("/system/restart-service", { method: "POST" }), + rebootHost: () => request("/system/reboot-host", { method: "POST" }), + getDmxConfig: () => request("/dmx/config"), + saveDmxConfig: (payload: Record) => + request("/dmx/config", { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + discoverArtNet: (timeoutS = 1) => + request<{ items: ArtNetNode[]; count: number }>(`/dmx/artnet/discover?timeout_s=${timeoutS}`, { + method: "POST" + }), + listDmxDevices: () => request<{ devices: DmxDevice[] }>("/dmx/devices"), + getHomeAssistantConfig: () => request("/integrations/home-assistant/config"), + saveHomeAssistantConfig: (payload: Record) => + request("/integrations/home-assistant/config", { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + testHomeAssistantConnection: () => + request("/integrations/home-assistant/test-connection", { + method: "POST" + }), + listHomeAssistantEntities: () => + request<{ items: HomeAssistantEntity[] }>("/integrations/home-assistant/entities"), + listHomeAssistantMappings: () => + request<{ items: HomeAssistantMapping[] }>("/integrations/home-assistant/mappings"), + createHomeAssistantMapping: (payload: Record) => + request("/integrations/home-assistant/mappings", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + updateHomeAssistantMapping: (mappingId: number, payload: Record) => + request(`/integrations/home-assistant/mappings/${mappingId}`, { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + deleteHomeAssistantMapping: (mappingId: number) => + request>(`/integrations/home-assistant/mappings/${mappingId}`, { method: "DELETE" }), + testHomeAssistantMapping: (mappingId: number) => + request>(`/integrations/home-assistant/mappings/${mappingId}/test`, { + method: "POST" + }), + listMidiBridges: () => request<{ items: MidiBridgeStatus[] }>("/integrations/midi/bridges"), + listMidiMappings: () => request<{ items: MidiMapping[] }>("/integrations/midi/mappings"), + createMidiMapping: (payload: Record) => + request("/integrations/midi/mappings", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + updateMidiMapping: (mappingId: number, payload: Record) => + request(`/integrations/midi/mappings/${mappingId}`, { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + deleteMidiMapping: (mappingId: number) => + request>(`/integrations/midi/mappings/${mappingId}`, { method: "DELETE" }), + testMidiMapping: (mappingId: number, value = 127) => + request>(`/integrations/midi/mappings/${mappingId}/test`, { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify({ value }) + }), + listMidiTokens: () => request<{ items: MidiBridgeToken[] }>("/integrations/midi/tokens"), + createMidiToken: (payload: Record) => + request("/integrations/midi/tokens", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + revokeMidiToken: (tokenId: number) => + request>(`/integrations/midi/tokens/${tokenId}`, { method: "DELETE" }), + getMidiLearnState: () => request("/integrations/midi/learn"), + startMidiLearn: (timeoutSeconds = 15, allowPassthrough = false) => + request("/integrations/midi/learn/start", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify({ timeout_seconds: timeoutSeconds, allow_passthrough: allowPassthrough }) + }), + cancelMidiLearn: () => + request("/integrations/midi/learn/cancel", { + method: "POST" + }), + getFrame: () => request<{ universe: number; values: number[]; sources: string[] }>("/dmx/frame"), + getFixtures: () => request<{ items: FixtureSummary[] }>("/fixtures"), + searchFixtures: (query: string) => + request<{ results: Array<{ fixture_key: string; cached: boolean }> }>( + `/fixtures/search-ofl?query=${encodeURIComponent(query)}`, + { method: "POST" } + ), + previewFixture: (manufacturerKey: string, fixtureKey: string) => + request( + `/fixtures/preview-ofl?manufacturer_key=${encodeURIComponent(manufacturerKey)}&fixture_key=${encodeURIComponent(fixtureKey)}`, + { method: "POST" } + ), + importFixture: (manufacturerKey: string, fixtureKey: string) => + request( + `/fixtures/import-ofl?manufacturer_key=${encodeURIComponent(manufacturerKey)}&fixture_key=${encodeURIComponent(fixtureKey)}`, + { method: "POST" } + ), + importFixtureFile: (payload: Record) => + request("/fixtures/import-file", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + getLiveMixer: () => request<{ items: LiveMixerItem[] }>("/live/mixer"), + setLiveMixerPatchValues: (patchId: number, values: Record) => + request<{ items: LiveMixerItem[] }>(`/live/mixer/${patchId}`, { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify({ values }) + }), + setLiveMixerHomeAssistantValues: (mappingId: number, values: Record) => + request<{ items: LiveMixerItem[] }>(`/live/mixer/home-assistant/${mappingId}`, { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify({ values }) + }), + clearLiveMixerPatchValues: (patchId: number) => + request<{ items: LiveMixerItem[] }>(`/live/mixer/${patchId}`, { method: "DELETE" }), + clearLiveMixerHomeAssistantValues: (mappingId: number) => + request<{ items: LiveMixerItem[] }>(`/live/mixer/home-assistant/${mappingId}`, { method: "DELETE" }), + listPatches: () => request<{ items: PatchItem[] }>("/patch"), + validatePatch: (payload: Record) => + request("/patch/validate", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + createPatch: (payload: Record) => + request("/patch", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + updatePatch: (patchId: number, payload: Record) => + request(`/patch/${patchId}`, { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + deletePatch: (patchId: number) => request>(`/patch/${patchId}`, { method: "DELETE" }), + listScenes: () => request<{ items: SceneItem[] }>("/scenes"), + createScene: (payload: Record) => + request("/scenes", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + activateScene: (slug: string) => + request(`/scenes/${encodeURIComponent(slug)}/activate`, { method: "POST" }), + releaseScene: (slug: string) => + request>(`/scenes/${encodeURIComponent(slug)}/release`, { method: "POST" }), + deleteScene: (sceneId: number) => + request>(`/scenes/${sceneId}`, { method: "DELETE" }), + listEffects: () => request<{ items: Array> }>("/effects"), + createEffect: (payload: Record) => + request>("/effects", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }), + triggerEffect: (slug: string) => + request>(`/effects/${encodeURIComponent(slug)}/trigger`, { method: "POST" }), + stopEffect: (slug: string) => + request>(`/effects/${encodeURIComponent(slug)}/stop`, { method: "POST" }), + tapBpm: () => request>("/bpm/tap", { method: "POST" }), + setManualBpm: (bpm: number) => + request>(`/bpm/manual?bpm=${bpm}`, { method: "POST" }), + startAudioBpm: (device: string) => + request("/bpm/audio/start", { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify({ device }) + }), + stopAudioBpm: () => + request>("/bpm/audio/stop", { method: "POST" }), + listBpmDevices: () => request<{ devices: BpmDevice[] }>("/bpm/devices"), + getBpmConfig: () => request("/bpm/config"), + saveBpmConfig: (preferredDevice: string) => + request("/bpm/config", { + method: "PUT", + headers: jsonHeaders, + body: JSON.stringify({ preferred_device: preferredDevice }) + }), + blackout: () => request>("/dmx/blackout", { method: "POST" }), + releaseBlackout: () => request>("/dmx/release-blackout", { method: "POST" }), + listBackups: () => request<{ items: Array> }>("/backups"), + createBackup: () => request>("/backups", { method: "POST" }), + restoreBackup: (backupId: string) => + request>(`/backups/${encodeURIComponent(backupId)}/restore`, { + method: "POST" + }), + triggerMixitup: (slug: string, payload: Record) => + request>(`/triggers/${encodeURIComponent(slug)}`, { + method: "POST", + headers: jsonHeaders, + body: JSON.stringify(payload) + }) +}; diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx new file mode 100644 index 0000000..ca3d5f9 --- /dev/null +++ b/frontend/src/main.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App"; +import "./styles.css"; + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + +); + diff --git a/frontend/src/pages/BackupPage.tsx b/frontend/src/pages/BackupPage.tsx new file mode 100644 index 0000000..9eecae7 --- /dev/null +++ b/frontend/src/pages/BackupPage.tsx @@ -0,0 +1,40 @@ +type BackupPageProps = { + backups: Array>; + onCreate: () => Promise; + onRestore: (backupId: string) => Promise; +}; + +export function BackupPage({ backups, onCreate, onRestore }: BackupPageProps) { + return ( +
+
+

Backup og restore

+

+ Release 1.0 inkluderer backup-endpoints, Linux-opdateringsflow og dokumenteret pre-restore + backup. +

+
+
+ Bemærk +
+ Restore og download skal altid verificeres mod den rigtige Debian-installation. Denne + session påstår ikke direkte fysisk hardwaremåling. +
+
+
+ +
+
+ {backups.map((backup) => ( +
+ {String(backup.label)} +
{String(backup.created_at ?? "ukendt tidspunkt")}
+
+ +
+
+ ))} +
+
+ ); +} diff --git a/frontend/src/pages/BpmPage.tsx b/frontend/src/pages/BpmPage.tsx new file mode 100644 index 0000000..0b2747c --- /dev/null +++ b/frontend/src/pages/BpmPage.tsx @@ -0,0 +1,478 @@ +import { useEffect, useMemo, useRef, useState } from "react"; + +import { BpmDevice, BpmStatus, PatchItem } from "../lib/api"; + +type BpmPageProps = { + status: BpmStatus | null; + devices: BpmDevice[]; + patches: PatchItem[]; + onTap: () => Promise; + onSetManual: (bpm: number) => Promise; + onStartAudio: (device: string) => Promise; + onStopAudio: () => Promise; + onCreateEffect: (payload: Record) => Promise; + onTriggerEffect: (slug: string) => Promise; + onStopEffect: (slug: string) => Promise; +}; + +function slugify(value: string): string { + return value + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-+|-+$/g, ""); +} + +export function BpmPage({ + status, + devices, + patches, + onTap, + onSetManual, + onStartAudio, + onStopAudio, + onCreateEffect, + onTriggerEffect, + onStopEffect +}: BpmPageProps) { + const [manualBpm, setManualBpm] = useState(status?.bpm ?? 120); + const [selectedDevice, setSelectedDevice] = useState( + status?.selected_device && status.selected_device !== "manual" + ? status.selected_device + : (devices[0]?.id ?? "alsa:auto") + ); + const [targetMode, setTargetMode] = useState<"fixture" | "group">("fixture"); + const [selectedPatchId, setSelectedPatchId] = useState(patches[0]?.id ?? 0); + const [selectedGroupName, setSelectedGroupName] = useState(""); + const [selectedAttribute, setSelectedAttribute] = useState(""); + const [pulseValue, setPulseValue] = useState(255); + const [pulseDurationMs, setPulseDurationMs] = useState(180); + const [syncMessage, setSyncMessage] = useState(null); + const [displayLevel, setDisplayLevel] = useState(status?.input_level ?? 0); + const [displayPeak, setDisplayPeak] = useState(status?.peak_level ?? 0); + const levelTargetRef = useRef(status?.input_level ?? 0); + const peakTargetRef = useRef(status?.peak_level ?? 0); + + useEffect(() => { + if (status?.selected_device && status.selected_device !== "manual") { + setSelectedDevice(status.selected_device); + } + }, [status?.selected_device]); + + useEffect(() => { + if (!patches.length) { + setSelectedPatchId(0); + return; + } + if (!patches.some((patch) => patch.id === selectedPatchId)) { + setSelectedPatchId(patches[0].id); + } + }, [patches, selectedPatchId]); + + const groupOptions = useMemo( + () => Array.from(new Set(patches.flatMap((patch) => patch.group_names))).sort((left, right) => left.localeCompare(right)), + [patches] + ); + + useEffect(() => { + if (!selectedGroupName && groupOptions[0]) { + setSelectedGroupName(groupOptions[0]); + } + if (selectedGroupName && !groupOptions.includes(selectedGroupName)) { + setSelectedGroupName(groupOptions[0] ?? ""); + } + }, [groupOptions, selectedGroupName]); + + const selectedPatch = useMemo( + () => patches.find((patch) => patch.id === selectedPatchId) ?? patches[0] ?? null, + [patches, selectedPatchId] + ); + + const targetPatches = useMemo(() => { + if (targetMode === "fixture") { + return selectedPatch ? [selectedPatch] : []; + } + return patches.filter((patch) => patch.group_names.includes(selectedGroupName)); + }, [patches, selectedGroupName, selectedPatch, targetMode]); + + const attributeOptions = useMemo( + () => + Array.from( + new Set( + targetPatches.flatMap((patch) => + patch.channels.map((channel) => channel.display_name) + ) + ) + ), + [targetPatches] + ); + + useEffect(() => { + if (!attributeOptions.length) { + setSelectedAttribute(""); + return; + } + if (!selectedAttribute || !attributeOptions.includes(selectedAttribute)) { + setSelectedAttribute(attributeOptions[0]); + } + }, [attributeOptions, selectedAttribute]); + + useEffect(() => { + levelTargetRef.current = status?.input_level ?? 0; + peakTargetRef.current = status?.peak_level ?? 0; + }, [status?.input_level, status?.peak_level]); + + useEffect(() => { + let frameId = 0; + const animate = () => { + setDisplayLevel((current) => { + const next = current + (levelTargetRef.current - current) * 0.42; + return Math.abs(next - levelTargetRef.current) < 0.003 ? levelTargetRef.current : next; + }); + setDisplayPeak((current) => { + const next = current + (peakTargetRef.current - current) * 0.28; + return Math.abs(next - peakTargetRef.current) < 0.003 ? peakTargetRef.current : next; + }); + frameId = window.requestAnimationFrame(animate); + }; + frameId = window.requestAnimationFrame(animate); + return () => window.cancelAnimationFrame(frameId); + }, []); + + const syncSlug = useMemo(() => { + const targetKey = + targetMode === "fixture" + ? selectedPatch?.name ?? "fixture" + : selectedGroupName || "group"; + return slugify(`bpm-sync-${targetMode}-${targetKey}-${selectedAttribute || "channel"}`); + }, [selectedAttribute, selectedGroupName, selectedPatch?.name, targetMode]); + + const syncTargets = useMemo(() => { + const channels = Object.fromEntries( + targetPatches.flatMap((patch) => { + const channel = patch.channels.find((item) => item.display_name === selectedAttribute); + if (!channel) { + return []; + } + const absoluteChannel = patch.start_address + channel.index - 1; + return [[absoluteChannel, pulseValue]]; + }) + ); + const precedence = Object.fromEntries( + targetPatches.flatMap((patch) => { + const channel = patch.channels.find((item) => item.display_name === selectedAttribute); + if (!channel) { + return []; + } + const absoluteChannel = patch.start_address + channel.index - 1; + return [[absoluteChannel, channel.precedence]]; + }) + ); + return { channels, precedence }; + }, [pulseValue, selectedAttribute, targetPatches]); + + async function handleSaveAndStartSync(): Promise { + if (!selectedAttribute || !targetPatches.length || Object.keys(syncTargets.channels).length === 0) { + setSyncMessage("Vælg mindst én patched lampe og en gyldig attribut før BPM-sync kan startes."); + return; + } + await onCreateEffect({ + name: + targetMode === "fixture" + ? `BPM sync · ${selectedPatch?.name ?? "Fixture"} · ${selectedAttribute}` + : `BPM sync · ${selectedGroupName} · ${selectedAttribute}`, + slug: syncSlug, + effect_type: "beat-flash", + priority: 60, + cooldown_ms: 0, + parameters: { + duration_ms: pulseDurationMs, + channels: syncTargets.channels, + precedence: syncTargets.precedence, + source: "bpm" + } + }); + await onTriggerEffect(syncSlug); + setSyncMessage( + targetMode === "fixture" + ? `BPM-sync kører nu på ${selectedPatch?.name ?? "fixture"} / ${selectedAttribute}.` + : `BPM-sync kører nu på gruppe ${selectedGroupName} / ${selectedAttribute}.` + ); + } + + async function handleStopSync(): Promise { + await onStopEffect(syncSlug); + setSyncMessage("BPM-sync er stoppet for det valgte target."); + } + + return ( +
+
+

Lyd og BPM

+

+ BPM kan drives af manuel værdi, tap-tempo eller rigtig audio-input via ALSA. Ved tab af + input falder systemet tilbage til manuel BPM. +

+
+ +
+
+
+ BPM + {status?.bpm ?? 0} +
+
+ Confidence + {Math.round((status?.confidence ?? 0) * 100)}% +
+
+ Kilde + {status?.mode ?? "ukendt"} +
+
+ Input + {status?.audio_connected ? "Live" : "Standby"} +
+
+ Level + {Math.round((status?.input_level ?? 0) * 100)}% +
+
+ Aktiv device + {status?.audio_connected ? status.current_device.replace(/^alsa:/, "") : "Ingen"} +
+
+
+ +
+
+

Manual og tap

+ +
+ + +
+
+ +
+

Audio-input

+
+
+ VU-meter + + {status?.clipping ? "Clip" : status?.audio_connected ? "Signal" : "Ingen signal"} + +
+
+
+
+
+
+ 0 + 25 + 50 + 75 + 100 +
+
+ Niveau {Math.round(displayLevel * 100)}% · Peak {Math.round(displayPeak * 100)}% +
+
+ +
+ Valgt som standard: {(status?.selected_device ?? "alsa:auto").replace(/^alsa:/, "")} + {" · "} + Aktivt input: {status?.audio_connected ? status.current_device.replace(/^alsa:/, "") : "ingen"} +
+
+ {status?.audio_connected ? ( + <> + + + + ) : ( + <> + + + + )} +
+ {status?.last_error ? ( +
+ Seneste fejl +
{status.last_error}
+
+ ) : ( +
+ Input åbnes som {status?.format ?? "S16_LE"} · {status?.sample_rate ?? 44100} Hz ·{" "} + {status?.channels ?? 1} kanal. +
+ )} +
+
+ +
+
+

BPM-synk til lamper

+

+ Her binder du BPM direkte til patched fixtures eller en hel gruppe. Vælg fx dimmer, + strobe eller farve, og start sync uden at hoppe over i andre sider. +

+
+ + {targetMode === "fixture" ? ( + + ) : ( + + )} + + + +
+
+ + +
+ {syncMessage ?
{syncMessage}
: null} +
+ +
+

Aktivt BPM-target

+
+ {targetMode === "fixture" ? selectedPatch?.name ?? "Ingen fixture" : selectedGroupName || "Ingen gruppe"} +
+ {targetMode === "fixture" + ? `1 lampe valgt` + : `${targetPatches.length} lamper i gruppen`} + {" · "} + Attribut {selectedAttribute || "ikke valgt"} +
+
+
+ {targetPatches.map((patch) => { + const channel = patch.channels.find((item) => item.display_name === selectedAttribute); + return ( +
+ {patch.name} +
+ {channel + ? `${selectedAttribute} · DMX ${patch.start_address + channel.index - 1} · ${channel.precedence.toUpperCase()}` + : `${selectedAttribute || "Attribut"} findes ikke på denne fixture`} +
+
+ ); + })} +
+
+
+ +
+ Tilgængelige devices +
+ {devices.map((device) => ( +
+ {device.name} +
+ {device.id} · backend {device.backend} + {device.is_default ? " · default" : ""} + {device.recommended ? " · anbefalet" : ""} +
+
+ ))} +
+
+
+ ); +} diff --git a/frontend/src/pages/DashboardPage.tsx b/frontend/src/pages/DashboardPage.tsx new file mode 100644 index 0000000..9b64c32 --- /dev/null +++ b/frontend/src/pages/DashboardPage.tsx @@ -0,0 +1,119 @@ +import { useState } from "react"; + +import { SystemStatus } from "../lib/api"; +import { StatusPill } from "../components/StatusPill"; + +type DashboardPageProps = { + status: SystemStatus | null; + onBlackout: () => void; + onReleaseBlackout: () => void; + onRestartService: () => Promise; + onRebootHost: () => Promise; +}; + +export function DashboardPage({ + status, + onBlackout, + onReleaseBlackout, + onRestartService, + onRebootHost +}: DashboardPageProps) { + const [systemMessage, setSystemMessage] = useState(null); + + if (!status) { + return
Indlæser systemstatus…
; + } + + const tone = status.engine.blackout + ? "danger" + : status.engine.degraded || !status.engine.connected + ? "warning" + : "success"; + + return ( + <> +
+
+
+ + + + +
+

Operations-dashboard

+

+ Softwaren viser beregnet og afleveret frame. Den beviser ikke alene fysisk DMX-signal + ved lampen. +

+
+ + + + +
+ {systemMessage ?
{systemMessage}
: null} +
+
+

Førstegangsopsætning

+
+
+ 1. Administrator +
Opret lokal admin, aktiver session og CSRF.
+
+
+ 2. DMX/OLA +
Vælg universe, port og kør en tidsbegrænset kanaltest.
+
+
+ 3. Sikkerhed +
Master-limit, strobegrænser, safe scene og rate limiting.
+
+
+ 4. MixItUp +
Generér token og kopier færdige web-request data.
+
+
+
+
+ +
+
+ Frame rate +
{status.engine.fps}
+
+
+ CPU +
{status.telemetry.cpu_percent}%
+
+
+ RAM +
{status.telemetry.ram_percent}%
+
+
+ Oppetid +
{status.telemetry.uptime_seconds}s
+
+
+ + ); +} diff --git a/frontend/src/pages/EffectsPage.tsx b/frontend/src/pages/EffectsPage.tsx new file mode 100644 index 0000000..9a45007 --- /dev/null +++ b/frontend/src/pages/EffectsPage.tsx @@ -0,0 +1,206 @@ +import { FormEvent, useEffect, useMemo, useState } from "react"; + +import { PatchItem } from "../lib/api"; + +type EffectsPageProps = { + effects: Array>; + patches: PatchItem[]; + onCreate: (payload: Record) => Promise; + onTrigger: (slug: string) => Promise; + onStop: (slug: string) => Promise; +}; + +function describeEffect(effect: Record): string { + const parameters = effect.parameters; + if (!parameters || typeof parameters !== "object" || Array.isArray(parameters)) { + return "Ingen parametre"; + } + const typedParameters = parameters as Record; + const duration = typedParameters.duration_ms; + const channels = typedParameters.channels; + const channelCount = channels && typeof channels === "object" && !Array.isArray(channels) + ? Object.keys(channels).length + : 0; + return `Varighed ${duration ?? 0} ms · ${channelCount} kanal(er)`; +} + +export function EffectsPage({ effects, patches, onCreate, onTrigger, onStop }: EffectsPageProps) { + const [name, setName] = useState("Raid flash"); + const [slug, setSlug] = useState("raid-flash"); + const [patchId, setPatchId] = useState(patches[0]?.id ?? 0); + const [channelIndex, setChannelIndex] = useState(patches[0]?.channels[0]?.index ?? 1); + const [value, setValue] = useState(255); + const [durationMs, setDurationMs] = useState(800); + + const selectedPatch = useMemo( + () => patches.find((patch) => patch.id === patchId) ?? null, + [patchId, patches] + ); + const selectedChannel = useMemo( + () => selectedPatch?.channels.find((channel) => channel.index === channelIndex) ?? selectedPatch?.channels[0] ?? null, + [channelIndex, selectedPatch] + ); + + useEffect(() => { + if (patches.length === 0) { + setPatchId(0); + return; + } + if (!patches.some((patch) => patch.id === patchId)) { + setPatchId(patches[0].id); + } + }, [patchId, patches]); + + useEffect(() => { + if (selectedPatch === null) { + return; + } + if (!selectedPatch.channels.some((channel) => channel.index === channelIndex)) { + setChannelIndex(selectedPatch.channels[0]?.index ?? 1); + } + }, [channelIndex, selectedPatch]); + + async function handleSubmit(event: FormEvent) { + event.preventDefault(); + if (selectedPatch === null || selectedChannel === null) { + return; + } + const absoluteChannel = selectedPatch.start_address + selectedChannel.index - 1; + await onCreate({ + name, + slug, + effect_type: "beat-flash", + priority: 60, + cooldown_ms: 10000, + parameters: { + duration_ms: durationMs, + patch_id: selectedPatch.id, + channels: { [absoluteChannel]: value }, + precedence: { [absoluteChannel]: selectedChannel.precedence } + } + }); + } + + return ( +
+
+

Effekter og chasers

+

+ Beat-flash kan nu følge BPM live. Vælg en patched fixture og en kanal som fx dimmer, + strobe eller farve, gem effekten og trig den for at lade lampen pulse i takt. +

+
+ +
+
+

Ny effekt

+ {patches.length === 0 ? ( +
Du skal patch’e mindst én lampe før du kan bygge en effekt.
+ ) : null} +
+ + + + + + +
+
+ +
+
+ +
+

Aktuelt target

+ {selectedPatch && selectedChannel ? ( + <> +
+ {selectedPatch.name} · {selectedPatch.mode_key} · {selectedPatch.start_address}-{selectedPatch.end_address} +
+
+ {selectedChannel.display_name} +
+ Kanal {selectedChannel.index} · DMX {selectedPatch.start_address + selectedChannel.index - 1} ·{" "} + {selectedChannel.precedence.toUpperCase()} +
+
+ + ) : ( +
Vælg først en patched fixture.
+ )} +
+
+ +
+ {effects.map((effect) => ( +
+
+ {String(effect.effect_type)} +

{String(effect.name)}

+
+ + +
+
+
+ Indstillinger +
{describeEffect(effect)}
+
+ Slug +
{String(effect.slug)}
+
+
+
+ ))} +
+
+ ); +} diff --git a/frontend/src/pages/FixturesPage.tsx b/frontend/src/pages/FixturesPage.tsx new file mode 100644 index 0000000..d3930ad --- /dev/null +++ b/frontend/src/pages/FixturesPage.tsx @@ -0,0 +1,266 @@ +import { ChangeEvent, FormEvent, useMemo, useState } from "react"; + +import { FixturePreview, FixtureSummary } from "../lib/api"; + +type FixturesPageProps = { + fixtures: FixtureSummary[]; + results: Array<{ fixture_key: string; cached: boolean }>; + onSearch: (query: string) => Promise; + onPreview: (manufacturerKey: string, fixtureKey: string) => Promise; + onImport: (manufacturerKey: string, fixtureKey: string) => Promise; + onImportFile: (payload: Record) => Promise; + onConfigureFixture: (fixtureId: number) => void; +}; + +export function FixturesPage({ + fixtures, + results, + onSearch, + onPreview, + onImport, + onImportFile, + onConfigureFixture +}: FixturesPageProps) { + const [query, setQuery] = useState("showtec phantom"); + const [preview, setPreview] = useState(null); + const [selectedMode, setSelectedMode] = useState(""); + const [filePayload, setFilePayload] = useState(""); + const [manufacturerName, setManufacturerName] = useState(""); + const [manufacturerKey, setManufacturerKey] = useState(""); + const [fixtureKey, setFixtureKey] = useState(""); + const [fileStatus, setFileStatus] = useState(null); + const [searchStatus, setSearchStatus] = useState(null); + + async function handleSubmit(event: FormEvent) { + event.preventDefault(); + await onSearch(query); + } + + async function handleFileSelect(event: ChangeEvent) { + const file = event.target.files?.[0]; + if (!file) { + return; + } + const text = await file.text(); + setFilePayload(text); + setFileStatus(`Fil indlæst: ${file.name}`); + if (!fixtureKey) { + setFixtureKey(file.name.replace(/\.json$/i, "").toLowerCase().replace(/[^a-z0-9]+/g, "-")); + } + } + + async function handleFileImport(event: FormEvent) { + event.preventDefault(); + try { + const parsed = JSON.parse(filePayload) as Record; + const sourceValue = parsed.source; + const source = + sourceValue && typeof sourceValue === "object" && !Array.isArray(sourceValue) + ? { ...(sourceValue as Record) } + : {}; + if (manufacturerKey.trim()) { + source.manufacturer_key = manufacturerKey.trim(); + } + if (fixtureKey.trim()) { + source.fixture_key = fixtureKey.trim(); + } + if (Object.keys(source).length > 0) { + parsed.source = source; + } + if (manufacturerName.trim() && !parsed.manufacturer) { + parsed.manufacturer = manufacturerName.trim(); + } + const imported = await onImportFile(parsed); + setPreview(imported); + setSelectedMode(imported.modes[0]?.key ?? ""); + setFileStatus(`Fixture importeret: ${imported.manufacturer} / ${imported.model}`); + onConfigureFixture(imported.id); + } catch { + setFileStatus("Kunne ikke importere fixture-filen. Kontroller at JSON-indholdet er gyldigt."); + } + } + + const activeMode = useMemo( + () => preview?.modes.find((mode) => mode.key === selectedMode) ?? preview?.modes[0] ?? null, + [preview, selectedMode] + ); + + return ( +
+
+

Fixtures og OFL

+

+ Søg i OFL direkte fra UI, behold importen lokalt og behold offline fallback via cache. +

+

+ Når en fixture er importeret, kan den sendes direkte videre til patch-konfiguration. +

+
+ +
+ +
+ +
+
+ +
+ + + + +

ieVZL#9#B0JUx=E$UNwGSy1iHY0Xmt7Z%~zk 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�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%0AeWMC_x1493UIS&_AN$!4 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 C;4ZEJ literal 56126 zcmeFZcUY6l);Am#EGQ~M=;$^SArz%b5iIl)AS5AlkR~JqArz6~R@@*26Qnmm2@q09 zkP;vuDAJn>By^-BgkqxzZnrP)eV%hY?{m)co#%Y-^}T<6ll#iG=AOAHGizq8S+myf z&X18F(}0r}Cgvu9eft1_eS06kk8yw@;2;n0L0+DN2YC-3I&|jJSlfq_FTWO20_Uol^iSh@DZspe%nuR$f8=XCwO#9XiB!m`{+8 zPf%W5SX}%nP2jgWh> zg_X_Hnp%c%uTbJOqx!9_5t=E_^bGD zz1b(Q|CFlWS*Y68;N~A=fMa{VzF**g0N^rUrwkD3@Shv`XSD0N-r;3ImRT{y!1sk& zez&peBf#OO|E%W!=l6~i+Jw>un}w8-o!dTWSR4ZBDRuDC(q>q!nX_B_jADppuM2Ff zVB@SGaI(gHh90H}MkLImT~_PB<$NkfYg@UYrI3Li092S{X6LL+=VBMVw+udOCCI5- z(Rt$(e0Trx0HH%AaaVQQEFsRfi6!M!jFi#k zAI2*4CE0{F%=@pn8}+U4Fw5|#n=DAZK-fcR+@ZJ7b-^N}cy|LP*?OA#{A!MHPQNCQ zVFP=HrDC=u8Sf@tJ zVNt`4KYp3%xevbZsIKqEb`PM%SrQs(#CQVlK zSk^0IKNM$p`rc5o!u~7o{$vM|JozU#fA;0H@BhPO zMegzLe_Z+h_RRjd3>yAnD6T(wxBj1(IYm|0%Qo$p8OF?*FZ& z^t1ARBeVa=|Nmnp(YdElc+qKbBLA_L8qvuw{JubPuV6|`2!+%#Bk!)4i7)5u$Yg3# zg>7$}QVf6x`83eo2lvgLU(+(<7cVKr{^u%2E*HMN{$R6VFn-lDwP{@ZR)~y%;mlwa^pFHARVTa2P59W^DX6x1Z zg;h2&);!Yso$DlN*gNx6b%)10{?xtKY z+7^mp%IY_Lh=B`|{dN#ogJrY=hVo|D5 z_+L_GqArkA#Kb{sKLE#-IsgXoB@h|cwmGj%nSli+!wR{P6EvD!t|fM-YGx;7#hu<) z))wMB(=nV}y~)}}v&`$uBJD;NEJGy77LvdCzV7j}jsJ^@k2qaddSw418{%kNwB}0Fk2qY5?y4VRPsFWpkUr#KNu{UPo<&ow@ORIPd5lOTOtZ zKI2;00#;jY675ZwPp3Ms30RHDlx2X-C9{jdgQg?<+@>)_1l6Di|ik6@X9=B`QYH0IaAdbH~-;v zNU@e)=JGBQ641Yd*@U)%x@_C5+*9G`@9wkMq9&qM=T4P%Xjr{+vAWY}P-z`E7gyE1 zIQv}TRfBE6;prN`Ipb!x`9OnBgU4@`1^XK>JYQBxH7|NrfB2k}gK{S&W8k9X2X}ig zHU3371W?_-gcpAF)=|up9!t_*Bqeszu{xav^v4F3Yk!=OnN+;O)euH|hiUdB=%M0U zWdZi{kUWtyw`p(t1nQUZ?G}nM!CjXEhICHSI&`JTLl;CgRF2D#s&3Kqisf z0SYEglcbmMZ#3LmN~4I&%0p2~!OnhJ((+DZ^3EQ&Bea7$R%sn%iQSp7r~Ne! z4ExO?Eo~Q$xg!oV7yp{KWAtA5nG5%q?QNF~lGe?O#IHv8=c0CT2}E>CnNetRNH9_d z`M?wWV}=aPiNd6?1bCm70^ z_%|vN#0d>MDZvs9qMqN26e1|ifl?_CDkSq_-uFZzc;I8uh}e8QL6j!vCCY9VXGao2 zG1uh!X}Xx#8x|PN0lzZ#CUl@nTJk%3jA7KB{qgL|P?TK!lJLS7?T_?Pv50aO)d&9# zs@et>luE2nRb6)t?eD2s*AQIFpbU-aFM|ymB*Nz;U-oebQJGsKIyqlKrQnDk<&F>r z`@tIrO#HG({56DA=dL^|N~J0|RW=4q8@ZjiBYpi7S^ozhSn3U3ghoi4RN1;^&d+a2 zp{%7gsI||xAsC1mxG@T|l_xcJ(V*IxHCP=_XpxGYF;mgi|<6xnAREf1H+eh_W9I~uB`Rd`ZcVw#;7|2ofVzWGiR!9 zuuD@i<=*~z+WS`;?cXdvjJ)|+eQ6AG*0m|~l~c0nB=69TexnW7Y}Rvaj}n|w!w>=W zAxoYz1(f2I&K)+l-S$Dzpx9Mo#NM7Qz7rq_8|txfM4DPX^m0q>-1d%geMxTyBFRgG zmdjK6Gb!xhw{4C}A*Rp+P&W=5dLbl4PQK~0rb>#P7V16373)M1z{k%njmvbhX9D@= zyOUP2nS};S%OYSIm5RHq@H9S$9-VPMlKb&iUMvyJFqk99cNrh6Ry7cJta2>PacgZW zkMwQ+7IWu&vEJ)+=kq7ZN#wAA&j>B29=KL#V3udF1jP zgtIwzS9Z=0cUW&TDposq;G^*q+N!Nn>XxG4d>Ru&8*Cw_){m4l$T>3I1r|kBatPP# zRXfG=>HPi6Wa>E@qwk=DKlhhFq0bCaR_bD#fYz#!Rq&Wa+%Ef_Qizk6>n6gCsT|@g ztA3g$gIc83thV@ys_@l;3u`JI=j#0))A7&LYAhdKFx6hPRyLuzE7pU`XbT1&PDJ(NB5PdiotbC;U>dNJ@o(%IQ|>8*BP*kcyrI~t z1znWnw@TV?qKTm5r;Pl@7Rk=eyR1mlc z%4!MnF}QDVqiDOwZ5M2g^sGOJ34ddMCI@wbEL5)vv(aZD`vOxqf#~U2Q&t$67SA@C zRy4rF*|Zg(-0`bC%=7o?ArnJI{Sg8Jz@V+o49o8zmr!hUm3OUCJ7k^&Cf6}s8}7{Z za6V_&j6!S#eM~!?m9H(LKt6kBUX#>sUtd5Six3IBliSMrlJHcNcjhe>m*3O7akP$? zCQXi9C60h0{Ht4K>uBzhdk%Ft2%{U-_<1~%R99KZ+}KFv)I?CFGL~we;!%!{%snhx(OK7+ly&djB+*melk}Fm8*f`2(ti`TBpitfO9@M53Ltr` zE*O7C#z7Bf=;|OP;R7&Bh*KB$BF#RBTW1-oV%#Q}9H(mIUsE*TB!9DB(_ztuTGL-s z;B7(z&%aq*8!NC27S;IG+_P%Tj~HN+N-bC#n-JkaXFu$wB%fg$oUtwK&#h@KFDb}m zI;wl5RKGzg-Na5O)DgXKBvFz)h8!BHYZ?AXmm0}Op-_UlBr;yd?c}v5u35oO?c%}S znicTou!doi?i%ZKrnYLrP=gj9D?cYfYx=P-Z~e%!N7ILk!#$eqvR;}MOp36IsRxzd z^6vX%NeRnO2CS3&;_v=VkBXT8O$L)PYOp6SLwe;C7DI5RUe)d*kLa7^T$*6GF)aj&|qw0B&U;UvT^YPp{xJ)R_h zWs2vWveFhf0ob3hS}#c26)YSlaV7)US=s?=&O`YrEY`vhEtg75`g*BA?f638Q^yVW zP<`pfi5z>b-ftl_Lh%|Q{qE{+*+lB~3hg)Y`yVjYG4+_r)?7pMi+(nIgi&SS{&qT5 zU9FrZH1qTDr@0$b94Uwld|J}47&D-7Hb*8kl7c|=b=-rx)P2)hz0}Ef=9=5~t$XKp zHI=jO$Wrk+=)zPDR9A(dFJIki$8W<<+mL=sIqqhpDZ03PN3Dq$V}urT+A?ov_r(&w zz5V#=H}dH>MR_E@ExiBadX!HSeOEQyQ_I1v&TLpk=W!zL<7|Vf=Gd*``UB9SG^k&G z{d)JZx9JL(&<r~MBcR~9>4{H5L%k_%RPvN=hrCas&b>yrK zwdMsd2~1frHns|ynLazRv2tzInQAwsR735SxCDQb_^E>YUcWmVR21B-`$kG$K1%ET zc!|TtuhyZ|53W+Efr&B7e$!KmX{hq_oU{|qy9&pP{2DY)(@d&~1>E!%M_DVZZG+-t z0+uBZgarqEvjKwTqkNyNClN&&CHi~xo8sTg0_zJInc{Iq$o9l|u}=tuuB8b#D$kLd z=N?ewwoJ{Pd}LC0jrM@f`ndbi;O71Z)qdft8r8$!<-=3P=TrM)QoN(#Uwso1z^2~d zz{3r&`-0~6r&Ij&eUqE761BdSg(>Gb?BZBRbPNWL)Kd!%KJCqW0y@zP9kOpC+wQeE;ujhxWr&-rb!MY;5rgwI!; zPM0?rEDiOYuNlK=iKA+4-!eio>A@*I@rNHPcD$nAz9KI@O_qlP0KWj__vHF8;3*&Z zZ!`d4i~F;P{HMVGE%VD?($5E=-rWz_e|Il;_a_Yi{N-imJxq;_yYjzh_W$(=k3{)v zu?>veBgPBu8~xSo(dg5KzwJ8?(f0~^GpzDQu1)*kz%BFdxVj&J(jNe68?ArtDyshY z3?TVd{)8c4mPv=Dw6v$^Hds>-4`*sy4^T$~b0;CnBwQ*fMOfIzZgk!v;T<(6WfckX zpi&d)fu{#r9p=}C!i0B6{S~D-Y@^k3U-`Q8jamY)KR1ovU^d?&$5dqK4NZ@nC72hR zFmXvZ6(p$KF(#(qHMfV^l=?13Ny8rrG$ciK4twC}Et1s9x*)GLJ8tIm5luKyqngbT z>_`>Qq|JtVyL2YS>xuZjQ>X46j|**|x|ZHuT{)nItkSEYwlem1)QBKi_FKA-9NuKi zj|#$N`pb9^lm(bbPcGM9Ze{eP3eoS#a83~2G?Rp_*+kuiYph&WB zrT2LjRkV1{;ew_^Y%ui&owc`>;e&lJ`>$dLD_yPly_{%-6Q+xZ@Lm^6EWag|HLfE;=J6^>o$znZ6mD0ItsMz3vpC3B zI|7Oa-tnT@}W6d z#`HJEq*9DgD%01ixVP05yk|_pfGtBwt2R*i+OxiOt_r0XePSi4z~TWjVZ_Jb3k%89 zfeKDxC{b`tMBPm+hshlc(NkOO2vl6r(};bUvEkfpA-_VbGa4DSV5+?CT}sOL2^34? z8JiG9t;$X+XV&|#s36bTn#&^E!=)9aZ1HG^HS(l|S5EK@qFF1zuK%XaAvDzddSQhN zLnytBRZ%N9IB0OIyS*4K-f#${hzM#qVL$m?;z*XIX5ND3_e#RlUPO^^$k=wdU|C>9 zbteM5V1%vh>+sc{)l`1}@&i{{Tra@PZynaJ`KH*rJWo6eE<^D3wl8v~_27utnL!n8xi^O`(DMxKB+TdWu+Ev zr6C|f{)Z69q!+CVsG?`qGH_Ypw+9;HJJ1wD=5k|L=sGc#WFcp^X{wVH>(ho9MM@$A z4F(aRv9U1%r7YOE7m*SMBVyZRa2=ZBxNPZ(g>P(VptlguPjBGf^#DtiJq9k?no+{f+ul1>*jm`Fr_)CZ7H+ z^HanAJ!t*Qf3ER&`kys>@-KCnd#(QWnI|TLI-i2MqE}AN4h~)XpE~_?dTfpY_VwO9 zVF)Ht!C)1(7Dv}KgmMp*N!0MvVYs>oRJhT1g00LKl@ouv?nMS5T#^93uq)f-6mD&z?iJEfus)4axJ z)cY|{=}AYEuE$HBZaJ{V!DB2lbG?1kD|@M&@8WYW*QLE|d@?r9d#3}tTz0$yY)t;Z z3v|6~dX8ipJP{u7H-49T*t3+1c0MYsrE?wcHgx`Ih+@d~+WV5nZ2fs(9~#sJmtAa- zlJqM>k&s?FR9v=>$Z6izp3wfhlBN%zLzcZW!w_9G6xA$o#pb%&IB`?`?c_Mr5)E7m~zJXhiYEDl&TH`TnQa(M?A!O+8=*{Zy;t7Lm z3K-n-#!I$Yt&djdH`vA)sJ9f?`uTgsinrk_n9^Qj?ZtSMicVOzZ%;B!l4sX6B$uc# zsiBms5Y`t8|74o9W0^t82`@i>Nk%cQremR zr~|_;__X<$kj}frB;MVPMvH~fy~C`$ziLrBchbPOQAvbL5?Y@mXb3LpmVF;0IzIDu zWzi_il8%ELwV67mb2%vFJYLOtJWx0nJJYS^aLl6StABkrv`{#?fc}xsMW8=%~@^}<}QyN>Ep~9C_ z(UOR~u`gx2CyC4D=G)Qq;d<|Gc;C!AeR$$R3(rVmb1V9)5^1#FI0Pf1z+4Rx6MxlF zFFGmhP`9H1B6&k-FPkdUcduegV+r!5o?7^wX+#`uX;?B`2PUby>2;6F%TiEPLHJuD ztkdqqQ+@-aq%sMljv^n#~H9DWO$UQ=NUC!S)&CMx^^^kp11*~FwE zE-opSNc?7Av*L<)rBhsrJ|!RYMkZBDi=-!@iY0nJH#HL&o_Q ztq|nB^xQEW8VI%!Pgwh8-a818QzD8Thd)B&hmnmsV%Hc|Z+6#LpBfS~OmxS7~lO8gner*FAV z7P(1DE6dxhp&M$ihkWgKAXYFGpX66P8iYC(iYcJ8Rj;Mh6UDCMUw1EfscUxOsKm9o zP026hLdeM}nlMme6EuYRf(289gQn%H^FoFHF$H7 z?%L@BttHpVe+C};Zrn&3oO@F1WdcEpUgvLol1j{4pi>|p;7BJ1uz z+4%V`HJ+Hs=f5X&x|xc5&?{Do$O$qoQiyGf=pS34c|xR=c?MBA6*BNUt)tv=F38r2 zeAE6LY>1#M21dIcOHOpn=rx(Ekfc4Bs)h#sl6MtVUZ=Vjvn7+!B8QZqv=ou?d(U5V z`0N;j57g&pR9Gdn4_0Ez#&F3Wr?88%%q@`Z8Bffd>D2GX-g(Gs=MInwCGdbOi z>CLrWy#G>Gx6_IA@=XrAFUNy^ufc^f50>*DDVFK)mPgs=M%N7u$-v*VMJGI8z{Xf4 zt_V3Ns106KhOfovp6gNE(tK!zi0KRy`Km-Orp0G?_ynjGc?KNIQ%{owo-Vgi-69>* z38bY?2A5Kkg}aU={I1{g@}RatDVc2cOT4+9OOTfnwLv>vGy@2P!gvjv3KHePfmvW9 zV@#x)xQ3O0h-+*EMayeVy~V%kgC&jYQCowKWCEq9_=c!drk!z1_cv|KmT*!K9IgqZ z*jD%UrhiiUj4^6XAmbV$B5WVt3Wd}xHW;wCRH82BF18LA`)#Bo&c7dz7mbO?Q6B2? zc5=M=tS5j#I@j7^Zp(<&Uk_2IrSZ0?>}?hIw9Sp{0GMjKap1cj0CQv8O>Z?YjiZg& zbA8&}5tRaJD#td>VdC&4$9$L0DWJM9+FdXUrQ^P0mq zJkwO7C@RB^gRqjqF{a#lj|q!MYVy?uRSvp5!NiiBx*q42Dh_Dp za#|FF!nMnp@Ug3!=Q_pJ`5{f>@o%7tK$)mCX?qtf4@&J#zF7<9R|gt0`~0h~Ds3uS z{LZO-$)=jS;Jtuaa&&FvX(0FPgaXFCCm>@(W3|pyA3gIRTDrfYeTXs>YvP*dfRp6}I`1qG9oPyL#9aQH8E0UWe4KBh~uRuYoQ$bb_l{I=XE(wvYVRCga%&=)%xaYJocGpX#;^^ zQ1f1yrqaKcsovqE)z(=de*9jIk7g5r`sT_v zG&r?Vds5l3U>-}`c`m}!a>nUAps@46vpVOcGB})@4xR8OlQT7=30ROOp*vxMnumM< z?BF~bS`On8%0(bdO~tS7*QcWq2xuKKk`2Wi*2~*$YPlIU@b3MUQOX?rUaxnLT4(n4 ze1w`uLxi>}gmjx;Q@VUqsejzl%csyhZ0B9MckaWlq=^e{+CY7DEnB`;Ah3{J$L1=C z6}T|&h^1(00+A0!a3*{4RWI{UqBdvEQ};-}%R0|@!J4#lOk?1h-!HXS$wi6YnM9H) z$Raz^xH)>Vj(G8Awe8&1C0j>~n#-CU{gT=s+YX{Q7w7FA7^2z?yO>=E!B zsW+V)sY5a!h{Z9-LO-*OxH>L$N;l;`QjJO^=|u>Y#7_o3uNg-u^T5AONLb21b#`Pu zi3~l&-U`x^Cr)VViTz=LNv&sPX4^SAwUQF4+cdXf5aayk3WSm8$LlRGQ5vssNAIM- zo6UM3`4CL1B(d-DlL(mRzt@F61e~RU= zauFi+lw5PAg5z8i7*X{;33!LEz+O}{e9d_CaZN^lGlm`?Um)}S7zAmJqm_rGNp}4J zybnC`%!(f&rNPXA!eF%;11#~O*+g9V^FA1cN-CaGSCtTEz4gighLrMMZ`sU`BNe0$ z-+9(wc`xIXb?5sS%Z$-4dTFsUu~E<%AAe;HAVT95e6W~6uJ03~<-pVhfi1s50}o5( z{b8{qhZ-9D#oVLpU1#ry&aLzGclO%fpiuqaaN~%YQK{XqLho;rpOlWJtatZz5stUKXXBuM{Cg})mGW9N-v}Tg6?S(-P<7lmMCyc5Lfm)dkT!kg&@z=x~GU|g(rkY*%ktm&! zqCA2`#8-ZG`+FMp&S`7#hUHC)HMn~z|u{CzfSxnL( zVCCQ`f?eGd=A9Qo#0gQou{>E4dyJcyZ@nmMPtxMZFwhcNYNbnCbG7`X=R->iQ@>Mc zEE)!oOmQm5s%{2{X%4z-2oK-}gl%*=R9(ZrOK8jMK`rzx?rwcIHI6B)fT}gcxm%Cn z!ih#pqiWsd){NssioqbU zS1KxfGF}@uhfql_K<#Ja_YPPSiF^2kt2YaA1==YDM}gNN6I3>0#^u6ztA%*@IM{xu zmNy`vq_+(HMB1qw-XerX1c!@~v`-S2otV4o#LysTe^RD@DN62!DpD~gIU|p!H<5|Z z9}$U8383HxZQG$Q^!ut)KR{3>TVN3NHkzQP4GkKTuRVDDRiuSP`Y=^oF&fU%C`ZCr zgh*B&`Xg2aT*r`z&^LOM8t}2?b(n=W<^{s4e$A^W8kdyMeK`IKS5PeEeE;CM+1yi$ z-?yHCbG%RuiY|EccfXu8N&WdGWo3zH`yQD-L|<-w2V`?%ZeV*ryOwV;(V}Y z3G`(k1nR(E%sNcVfnS}SPx-q&s+!-`bXWtgb|<%Wkv$jO6_07nRPi<+HGW?2Hzf8% zB71_Co`eq}s+}M`cYO4ZxgX!b{PkdJCk)*RLRUo;kq?c*nb@DtDxmlv@JC zU8)9bk-Z|uXK?N^nCZ08atOROE##bIgfNC1H*3TD3@w$zyfv!(Od;wi4~?-PaQQ*b z$OH4DFslbfq4%UrZL|>g5Z-+Yo(qsV9c_KLFFrOmne_L@Ydx5_K6+^^Dp7KK5!)aM z)tXMM`T_VVUwc#|F#bjx$YV>#X}&{>>=2d;gF0h|O6kmu%Hb|hqj$)lqBE#Mv=^wg z+5zl{(-LnyUmSbioS{*j!kxw;&|)~okq6bbgLe-X@~!+t5}Fq){u!H5eIl|KlL5^C z`_9GKryCav`*mxC{fw0adi%DenteEP3n1^2x?szgcO(aFY*c(4n1RMAA{^!(^bnpU8^f>PL=dqINL+p122IWM zNjsdvuv*7bXP=9HjI6<2n&-y_Y@~+L2b>?T<;Z$7?G(L{o;VJ6y6)5UdmP3iCya<9 zL__EUl`ti)ijt-@CnML=d|fHE$In1t#=0Kw=hS>Nrhc-te2&g#u0|ir5|Pfy2q*D9 z7A2k}Gge#;e~oD;YO&#Mg3`vHVLZPcfF+(>1XQL5!pn+i(W>kgyCLG8OxZT7G59cb z|5Ltyb{&24#dx{&FK^GrAj^z&<7Wte_rHYjZBAV|djFJ0Af*};B8G+a1w?pv zyEJQYyCZYnUv>muI1IJ7w+#M}3dxta&*sV1vLc0pJ~`qHD2;F88(vh0=G7 zVcJN?(@k|mB#}Ijra^v0!HlKF7!GId6*mIXf#FrHA}Y3W6qPPo$a`l}8L6NLW zlXaLgMp1F?)aeRk??lBSlq$oXsB$+f z@!3JGP@_&SNqZHih>~%2AgY`}S`-Cr=A8+c9L2t0tIs8Xd-iV655Q;3%HAD!cyh{KU?bWpoNXll6B=on)ew&Q?PHe`JhfhX zf*$p(S)80rRXB|!5bI+gGS-<^Ky2x$6GgJd-IYY)wo4yU@F_kL2Fo1F7x zT8ekhyO0b)e`d{6TYF6tN;B?yu6!oK^wagKvSzPZS(B6j=M|?#<`)^PrU66=TcYP_Gg#yoo z!Y=c)t%Zx09(tB+?g%wyycbiMM* zXpW&;>mu5z?si{`BrN&5!NXIo=wdQ0fAd5r)5>8HJF`$LLWc2LjmcP5y^H}jsV;`+p`1y$o6i0`poDzQvbQ81-_C)t5IB-o=dW+j1@Yg>m`+(T|R`S%B7NS%jI|Pcq2j{H!;sy`jnHr z?KlHnk|#o(^J5xYzr9QDlUl4P7`9PL-{7*5;JJ8(73c=4lr{9m(h{OC5ZBRw!9j7RjQ<#d7?qLr1~w$)V%Rynp$agCHQv20%B&` z`UJG~p3nJMe}zTwxBC6vZKj%iEOKsjuvfegR*2@KHwd2t$W^#wGJWpiq1!+fPwGW zDFSuM+R>%YX?BQ)c>cJ~r)Bh>l!H1;ilEYuUQCIdY@yKvO4FJ+>v=5q*}S-$$eGv->`|B$1&IR zqAxpx%q850FK6ue@l~dv7Ex>M`GaL)qAT-5oylHqxbIE&e7J-LBuf0PQgL2f7^J;4 z+P-(0)IFp)`HGwv8`J6QGuxP^e#rGPd~vuyPSO zbbWmct&uvP6}8|R;#3y!rj7huJF;Rc_pK7CoA@o5ToQJPBQ~-qElHCIVNv1_m$#^W zJXg+k{M`0yH$P)aWeT!~srAS%!Y;JjPkVNk_u+)-wI_p*BdkiJ*v@T?1)N+7V zcC0>C+lxew4!{{_BqZcXQsVWEPAXx11|*7;@4cord!#vwYiTjX*N;I3E}XsUcnO$@ z5X!bDAbsJ+W6$+OZj=!KqfOtiVOD}Ac9mwTW}6ta_(Vi>x)G#lMs{~W7IJCDj-Hwy zVw|#ve0Y8vdZA|GTq-kmS)DNe$*la3`Aca6{m?aJcFe(RE@SguM@rmC3@P!S;7jgdRlTF zaP!x{YSO6Dxx*KE#{N*(G@flL$v9R}@+M%%-Ux1^c>WOiF5qz%YMwH6 z#C9#52F>I7a-k>de$w^Sf^Wg4#TX65nL+TGPDZFkq8(A$P;z9GEE^cEWH-UD9!JsA$58{Ag`o~j&h))VHmwI^~Rtz z-LVm*L*Dqc5eO9e4KT)bGQYedApI+V^+dvOoG|G`i zLq*qxng#hu)khT+YWYYl5J6u!A!kL#Joff+gmK5ZArNB3)Kr7-ZJPr+Ztp*Wsk^;b z_%nPy&pBH!p{S=!SOSvuHARmT<3(A5z-epXrm(@DWk$ti!C5!RNl?X)HVQe=x}adt zS-?>Vu;oH~YDW4;ILN3C;i;>|a-i+4HlXvSFw8AbsK@LXyfJTBtCYt^`r_lq62V)K z02R-|W?BCB`8OaIos~sUycJ^(HIsCw>?rp`t#}R5#&$0zpyQHK!N8X8rxHD1IPS^l zuq)bC*@ZyHHqlu(Tm*Zr^~A&=>U}Z^2s{_Z8NuNmTO?JOJ>_rI93qiEK%kCpyJ1Pa zIS)sL57&7Nkwm>(Vk6n3?&Sfwuf{`A12v|v)0#{Ssa_Y1jZhbP+QO;SY3xf!^YCvO zu8ndQ=1_bN%Nxa%9G252$&<-$-~(D`Lz6(^DBs1zi1vD0rl zV7T^5Yle3!Z|UpBwHf?~3Lj++LdyIB2->mVbaYJv*?<})S_{hS?((Js0RIJtBlgLQ z>~SE?#^Il$6#Hub2{`Ay@+Bp}Aq{~3vA+X;{u@H&*FF)_-rrovUS3QZv|a$^6qNCN zb0_Y-a5uj{=09-Ne;&#t8c&qP#(x)L+Hh1IW&E{7xsMkWp?fh!N*$3*tR6YTYmCu% zNeYfF@kkuaEei}7j~Kppr|9ASf&8XNlh7$}mn94prio7Z)r2#w4_ulz1$_huf7377 zKH4U^YgrOPcXsE6D5bnyKs2w+FBoyPZJiYw-*W5ZKOE1bnzWtX&dJGdub_g$(ne+V zUyb^hxOfzY9aqlW^MAX9_`ZIppJz~%w!b^v$uz3C&Jmqwse-g|OD(pnK#(WY!BKtI zNhQZ?D0`7DU$Yli(sY~!^9k(m)8*HT_IF1L4O{-&BfK#MC$nn}ay}#irM);JJlm2r z1asgE3qN^`&On?9z0}_qeaBaS`3@(Q8SRz&`$Ewcspff zOZ28-zbiQhsN7zV;lFYtWogsCsDHif^u%7s?Sl3rrP3mo^IF{8$+PhVkqT#EvX@dU z;YqZNvOqqLyWMQvchj@Qo2m9L(nCF#;FhBxQ`p6WAW(qOT#KaYmiS#cjQ=|u1ZwYq zW`RR;OmCJDG|1Ru3o_fZ=-CW>G&bs3mUAQDn_CXx8CMJy9Ig~W)LEjpQP{V?3a76v z-4vRVU+Q^J3uNTx^kyKU+YsSxyU)~yUUuh8R$O=IR|?2Q&PZoa;sb@|VE1L&6Xz(z zlHv@fXM?^Rq8wlL$2DOXvtZlMoxd9#R%q@HPi1n* z#grtTdq8@WI0y3B|7Gw~N61zt2gYIB8Wh-f(~I^(B|2skK#{Rfj&7Y|wNq16x~-wP zv5oW`QYBiTj;h)8Ji?&rbywKtm*EdFAL*_}%J;J6PFuowgkfbkM(lzV!KbXW*aDp6 zu7OqI!#jo$nfg(Cf%eW7x>^k_a`-Cn+SCx^T%#&V{gB7zmM1yruA|MBk~$}O#s!P= z5{#>rps9Khw#!CvA_4!axL54l1F<*DK=0(j;$lZ-Mq+Z*ShvPVn~OGbylr*QA|>sv zAbIMQZm%I3ovky0;A}C9PYJo-PoacD(D|iosIx=wkPa@}^PQ&7Go?sgAD_yj zVMC%|KVh9S;xALE^`=azSDWsR$q*H|NS%)lzl$why-E=nkN{Qvs);al!M-#xQBJ9+1?chBlJj{&g$ zD-!W{ShqF??r0UH)!VEhI=)}t5x-qC^Mv90UE>M9w0J%38!-3>z~&E=#|x!#cL9r6 z4i(;|T(bmui6?1+7p$O^oqLj}LX3MaRyRp&xU@uB&hmKvR@NWFzji*MPvpY8f&azc zdq6eSb!(#mv4N;ald6Uunv_sQQ3xGr34zd*CWPLbC^n=90qKemS`r`_By>=ucj>+N zu83lP@22?n?|kLlamP9L|M$p%wO7y1+H=h{*E65>=?=rG7k^0C)!0jj*vmzy5%b6L z*VO-*eure^)P%_lS?q{*SC6e=#y!V!BcH)nVRLQt6GAgxlJDGxkgJnLp}H zZ}3riWNZtaI z*o)fXCC3ankDr&EOdaud*fjB~gvw7CC;S2$H+B6+l320<^j6Mp&B&}96Ev#g_4&;S z7db1%Oyyqn1_8bDG*BH-#R4qTK=AA7D; z7kR`k557#Y_nd%+XRpu4)3Jj9{4RFKZkd_$t!vkX-`4**{aWe{O6}3nkDaP|9|IZ` z_(IPf$fYnOcUbT+D$z?kZ={++d^~NNWHDRP94SM0NlZc`I@esvyQeNY-%syjPu=~a zB=vIgoa%@UU9LGiu;|@6ivJt&|NrN4s+{~mka=|L-Pt=NbqtyexB`h5rDKjhuZa;6 zEBN?Tw`JC_3{@%coFv6hf$)cM-lQ|FU=1IqgGaU`PKG=|m(rp(GuCoK={A6E%{hdH zy}cAlyRQIpao9Ivd{)OU_AEe!$wMJLx&pY8(X|3d{`och3@wllN|0KuQLK!T&tkWG>nbV{3;OOzCIs*F7WLKXAY~(#p|Ci;*PD1xFgl+lpNaNwh%+z(2pDOzlqaU-=ki zHecD-Y|O(O-6NHPDqUtRfWsp%y$TCSp{J75K6fj+G0Puaer3r(>8ZN7a;%L8Qo-bl zQ0RPKQfVboV&N=x;9)zjzH$R=ucy}9?b0b;O%sXBg(4+pQL%ZQ7};-m>L!UM**Ui` zFm2)Ksf+=ZWhNDac6KpyI*0bLE^xQX@|i@U$fe7hbd4+ zLV+^y#f~THCdJ;|@7tL9?kvdby1QeT%`c$$pVN;eeN8IAlzg(SIYpbgBiUo*~tf0;vYun-0&IM%a$x}5Jb*~0XUrNwirdgW$#=Gb!? z=vrADdXX6@j4})H}w>-)OE@UcdC%I@68%D-9XrvvC*?xDAtzN{Ev}n+c0&OXhI~KfSpV-De13NPH~?3aBAHwQ~FDhzghm~O9VSY zOpY1GnoUL+up`dL-tnGHv|2fFZUfv5G3oV$JQNDAL4Iofah4h(S*$hXS@ zo2bn9Wm98hEwj>ly$h#7a`|nZCcl8hdo*a|M?V_0%z18DVr5BK%Q+a_EE~~s?~Tuu zH!?*Ao;V@ln;XTwtxQ-XW++~$y07)K5gv!&(Xv&Sb?eFS?r&b=sHLcgd+3D6;;Jo7B8 z===N2^pML}oSt1?BuI02S8)?jO~j93O-o6~tsUqkW*nl|3}?b__~a`n`VA`Rc#X9t zT=w))SwE)UuThF>*@`!m1>+65;v!mKk424;rFgq55}ZxTZ=@%y`#JA@BHtW@;ubmoX*xnmX8BFXCF}k0w4ng%x5;5>sxJ zqOOpkw?FjK!$~l$n_7?uhW`a5&@W+pOei`E;lfIQWZbF*$}gUB*2|JwJNLq5!@E(j zHB#xi!;qvi>?*UL8X*LiNbGJO+Tut)oHfCxpVyfl&(uy8t3V8hy)!shdqRLw1~eJ; zt1|uPp+%ql{zs-oX@iAm>QkoebJvTn@bvV&SRB>_o9!yv9{;hTeGTN#f?z&D6+ zU8q2)_6W4g1m`2r(|vGr$paUE@;!!2*Nv_|&0?E&_P*L32K)SzQc-Av-lNd_u}f&# zkh})J#ZT5qZ2LQDc|LoUPbp7hi?9#=&&eKasJtz5q;LBj6TB)nMoL8ZMnPntt#m6_ z&*7?d9rUyj1BfD^+OA4+U0;l6LefWD{&9q@Kh;-Yvv}7Mwky})MX66Kf|g%zjJ9`u zdlRhny>0AF`w{E7;BCdx$ezG69&vPd3ra#k?pEZ*rm2lv$R#yAuE@NkK%@k7sTn1^bi#a zzF&{a*;`!b))b7}RGag7QVAiH67GDsI`73W@U*4KJ$1N6uDsPVml)=dve?gO3Ggn2 zlvTBuWeh8RjkH~gW28}6mou1E=|MQ0CaQ=&9=MiB_!{+C@r-8s%^d7#tVc`kgR6xy zD;Zu_pmBRZ z?u9xhm1Wmn5O&}sOjsokIDQ~Jle+`>e*gJ>{O9-d)>AhwzkF~+c}T|ijmwmhZp`z- zf?$z{^I3CoH^n?JL4_g?zjUVMNP%tfe$HZ5M-}NA-d?Qbc0xAw7f@&DG5Wd=`yM%e zF{x*9RStpuB5<=SH#|3{-HcW!rlZfgAWGg>&(-XSF9&h4&oEE~+nrBWa&=Io>s1Rm znmuG_>~&=0Kus{`%*;vtK>DmgtFraE0b?SautG65Rj#4j)D)u%CJ+L|3yw~h<+Wv% ztv}3EcTbCt*|7CDXk^C~Y+iR45%}ImPAkA97ZRc?#<&x} zT!mGP&HZEe)eDjoAA;xlO%TT;76Wat$#UPV$mBQ)vk6N5mmHsc+*gM`R+1D5$n7>V9E%U+A|tpV@AO6>mK*zx>kVLTslvxzo9W zS)^}LfqKe4w$bDXQxZ3jYrJ$j9;%8HVl!(ub9#1diy!nKl#&@+kO}!{1 zw(F-FFv^@aWf*XNnCj^U2$vWv_0HF_Q5JMwqaZko)D_SSdrS4g8}M%%CX<;4JtD zqm63l=GJ0K84bk)y#}*(k z3EgxnDNH?d_K?}lCqP2bKy$-*i|^?m7O&le1ADnFK{k5{w7a=}SA4h9V~WShx8DKv z{L}3Jq&4#&QXdUo)qz?IZvWSvYgvnd5_P-}v4(U@gGmUZ+4>9A2|DkM%AMEk=xP)h zqxXfhx=%X?uy4V|l6nVFx(WLRHv~W&Xw~iei26V-P3)T;X&s`eqa>~L{>nL?YrmSQ z{=x6}Uq@3~KM`7#ehcXGd^9_{qLDgkPeIh59)3BtD?mU8Apdn8zon+^D-NFH{+=eI z4}z26`(q`f(xm6LWI|U-DqYgUzX6F2#${3)?|yf6-9T!P1cR|TKb_IW|eG#8u!aN#0u*(nH{Vd;iM5Z zN2l^J13l_yNt z1>%|NasmC=Q{isffcO+-Jao2@pehz`uvJbQ)%U%vH;6 zYI4wt_|8P~o~q|nsfo46F6kLY5M$lK8zcu~(HsT`gTNQ-q| zb~1NM)B^+dj>h)dJ8t^)p3-U@?tzphJQG3>AnZvg0Mg^|LZb+qubTpAU-n0P!v(uA zl&?UNL-5#Tr0YHTGX(cCLzQe9u6G}&p4Vz-exQNq_gNH~qtxt1t}gRr2ME|k+91*I zp{3KKbc0hb#IYwmx)xEF%hu-0i{q`UyGQNumR4ty7z-uD!CY>t0GHYI2Dg$Fgj4*K zFl`41%+%xzYZ-gKIZqAJ<@v|&XL_`0yZkx8Stad4kM&2dYgnVpY$KB&Sj~ra%*rB6 zFr()uFCf)$*t7~AT7?dpOyjtA!b7Q3V8R;UhlTypC-wF%UZv=#sru(~xO?fx?)sSW zJm?tab4I!SXr?8wD&ENa(~Ie}wfkazr*Ckj=zGw-XuEjJPMIesJtgCF`pKB*zi}1- zR4>21BS2_}FlL7`1~AVC?Sz0UXg_ioj`R>4JakN?EnL3w{-U`g6kcpH3J2S9&{sP*yr6-^Z z*J4zl3K*D0Y3+qju4vXoG5kHt(7m@H#+n82W1>t(4J zb)>2eTYk4Hf^EuhHP~DE16+A}5aaTlUAR1diMO#1 z(gK#&qE7w_+>wif{#?>Gw1Q*>i~v|(H`tF#n#D6b3z z>r{IpuUhz2TwhF$unCtk9+S#9i%|E-=ARv@NwBvnD)dT=dFI!1BM_`t?r4F@myxn< z3155l`a55~|8U$|=q;V$_V6#T4}!&OHBu)Y_LYRQOM2?yGl>(9VO}{2TN-V|+CH+I zc9>mzM1p;0NuT}>xe%O3DZ!b4t%822XyBCMKi(wtPO!TkFQtjjN=t580!J2#OAaVj zNU2qO3zEf5_1vb;POLiFye8UlHl+vlqotJlS1q9<%wu<_9zKs0c{D}!PR|6l*o{@W z=w#^C88;MND%%pNXihnji7<7oF<=-@VdkWQy0!{^ z5vAo&!j_uG9P1O!zN63RO+u9lCb+~T65Nsn^I1pM5peXDe+^d#5_}y)6U=AgSgm9s z^|?~h0WFo^cg!(Asau%{M*{412-vjy7mWUU!{M)0P9}7yq3oNHuqkCkJ=MUc=fNQH zv|VZN*FO~dav@kN;X&1*9}Lhijn{i~wumrcM@|4Xp5p~7!fps70-;(xW=^*yaasl1 z&1*;y5u7a;&*Ar!GI?;!o0UM_l3Z@jjk9i#ITHPqj*;=g{M2hT9;g0Jjgd7kD36mQ z!*hb4L6s}a;%)X3LaB(rD?_H?6|33ap7lvqZw=jg04peLeb}O!+Lj3*@Ay!ACk}SL%9axQqe(YI%3R z#F;Jyc6`GGD$qWRwHZii8x%KW9T@d&iJFCpTNPCkIzfL zi}6PV_Y00NbXB?AqAlkM1Tc1L^+URKxrA|ilD$oKp8B$Wv~)$EdrRrHzIytHkpOb5 zXryaNNV25D3kK_6a?8o_#JFFrb2e==%r=}itMDfBR`>X1-fem;QB7cBnqxFCrqXJ& z0#rRh?gF@sQNI34pzRC0BB;+YnmRm-EeYI&@jT&95Tw875LmqyUi5$yqw(eFN=*4Z zzj}xg5m`ppVK{ToKt!;YED{JhJc-dmP>&f+6b!}T zOS@nh4i1?&yQ|2}`a|52r^Cij*}ZM0B9Mz`j0RK)-G}8(w5v^ySJ_Jt%UFVCrh?ho zTpQVGm33Ri6)ZzH)JBq)`w4Sbq0>sF@+Ey_!MAK)D>1M zn(zJOfdYJME$+G2rx8IW0B2S!f$XicQ_oT>Y=jBFmNFfaw;!-v){}sIiFKiP({7a( zuCe~MEQY7}E;PwFrNtf0OWQb1aDTj^whRs+)evE(3Jco2kMx=|x8-sQZAu0jNDAk* z76F=1up2Pi-=v+6o2Xi0H*mu{CaAI?GG$r4j~b8bNDIy>Mcu0?;GQSfqrjW$n1%vS}2 z5oGj|ZX4&vvc#z{NVav2uh`|yx-S98j(5oo2y4GIVYI&eHEgaW!l)1U`qIbQ&P(Tla6U_n!n+8Xb9j0`2NAl28p4Oied%aH#k?A=q zWSXIj1)4>DMKS91{WsLvx?DW~f3h!4g$msYodI#3?gT;sHU5DoE7GO7s~crol=-DR z(R5qRroIF2eR?wGWcM2$iCnP8wnmHNO>!umSukgwc3k%w`^T?Bp1Fd2>7nf&r5ExB zvDj(FQd0*JQHNYYHqOJ~P#y+(?Ll;JpWXM0UqB+`&okSK>s5x!Sc&!PXcY{+F%ntX zZ;D$a6uHZj4@zwr!t;elT%#W=n%f4zWe7djdPar&Wu7r{o=I`}7^GfxbWtqSRn?|1 zgB@SHGMqYnuw_b>10%0Zdf!UjK^AY7w5vy6k7JF5nT4cQdK2R9Si;3jc+I1#jP%et-4wXT;Ub%-NnzHV=eSZn{!^=Y~ zQ*G+4A`x8LDVOTk3@C)O{_sGAGTW6ad!NR!?&ejZZ24c5oB+6t02}OeINeNo2t*u) zi1c>)5TIMOwu5`%&tl-!d_8{eHucHon71Wq6R(3wum@y|^2J+dQxn8j;=_5Y?|G1E zgPbatQ5c~*15$KKn#k$d1@$E%)-PAZJ`2Z>Q_$6L1@K*BHmE%G@#-y+9A66dQ__VV z@4Vz+xmYhuFZ%@jAD^Mnh_hk7o_IqbH{^5>g#iy>u>75z9H!EImILso#w(Y7@dge7 zS*X9SNYQNm@1w?c*1LuPQf!O6*WXW0b6h2=)1~Stlr!~e%=VoKyyCCeH|kV!cDVu% z$c;3%DO-${qHrnsC0Ft$C%tySGtOPu(T7OPt#< z`xF=Ad}~8#G^gbWRogqm2FlJ}1>Mxhf$mW@l>wC@L&ka;1x^T|lBTA?e(sIjr>*!U z8&om^SJGWgRK->ZCii0rylrm7!0u_kS!b>Z%=)GewLtEMm^fPQ$osqkhbnZLJDJ`Y zLI@?P3yn4`z`uAF8FrbXzSO11y}Mzl1kUCs6re5pYHnsvrzq63ACX3>+T88tiU29>s}xuRK2Ar$p7vX5G@LU?3u!9P)97)BnVkvG^fPbm?GP1|})r#9G8-X)w|e1Aku( zw#)_K4+rn|*kggCKE`PBKIkI5H4O~t7bRMC=d5#|$q$imxX=WK;U}P*Uyirbr|WbJ zbVF#eXdD(i%aeJm!{!Xhe)MMCK+}N(oVv64H_7h3Xabu)ycY_&rIp0K zT@6JOz@H&)2r1xr1HZ9`Fj#rtTxeHMmeNR`+5i{5c(y$K9fcr=%UkebP3>}Qe9zT* zLb>f?Zy#iAI=L?a4ACl-4XJP&OkAB-Y8LjV6YhWWg+P-})#sQQXoVY&xuGKA5N(kF zmZfKGP2sr19we9B5M149lap6!W|y9u8W$J+hM=D3!Hx^PS2){#cP2qfhNF79oQ75< z(c+nP9vLRgb3ky+;Q`TVgoex3Yj8BA6jC7~LvVU^g7dE+j-zp$sXG3Tns@)jpE7E8 z-<=fhUoou|-Z92k>e)LX*UQf&#|iwL98OJb3XrZc6R-uOBlnBH^@|3)G+oIp{6nrd4rB}*J*}>i&D;s+Eb8CqUZu6S5 z5B!U!<=uM!BBg_`S&dhcOq6FG*yjZetT@AFht^;Q-fNe-mP8UvMjs<3D@>g_GHz-& z<0IG6;4)?@Ncdg<*aIy=oOd{%HL3@`8F|Vf6!w*oUckmWEHn?^hA||#I(onU8XS*8 z=URCt1d8D^QIC@>lks%d(OhxjerSxlEDBd~zNIqY!dr?V=X+W3WK|veutU8%25OC& z+tj5=>>mKAId036$lp(SfUCdc>$xMTJM<_D$=fhP2ux?CVo z)1In|QL{*v2i#v&0qoYEs=9epZe(X0X$QOY1mtDo?k@l!w&>K=7qb_C*uf+oRf{lh zaeRV@Xg+l4Q$P=Z0bGWXcz#E)8TR>-P4tFC9owA>>Li9cJA6ShHWC;xpmATMLP2~L3GQ#D8CHN z%>F>GQe86+4{WyesmrV+OOM31e1BQf@S5dUljtJM@)jW{r)(5l(#|zj6_dWidEC_1 z5IbrAiZeq5`05iZsK;LZMI^btgyu%0eC77q`R}vkwB7j(p0w6<<^n^T%JFk0SMr=7 zYKwj4V;GqGbSY5)(>JnwA%bEtPR`2K_JQHhHK*>f9vGYbOlh%n;e(|Fd91&PHLUe6 zl;gGoUFF z<`GT*!248=sjYtw%XOaXBIdiBCLx-8#!=}op*>lerGdD$lKvT&dW>pMjDpVzzl4U5 zZ!|SUqrcm$Znb?=3slefVwK4h*j;4V>F^6^xWurhp(Tu21>+bAh!do(JpJ-T#9gG) z1@{-nR^4UAW?*$&OFnMhC3F5TI~z@KpLkZ0eZG}ztyP>i#Zt0*1|07Fy~o%tkATg1 zX!s#3E5L;QNj{nYu|Z6I0H@RXoO=^0d8hp1P=VNJHu+mxv!RNdlv9nHmY5kKJh;4>MoRv_g1_>My0F;lDn;KTa;BqUWOLyOwPn-Mq6Ck^4anfba7ckir^8<_c%G8 zob{1RNwkZbPEcAm3>C>M8FR4Cz+wE@o-vWXqHu}4g9B0bliWsY6_=b?H7)Y00c&-> zB|&Qyk%S8=Gk$U7NobO9oa=?xUF9}EdK_N7(Ra~?5%C{9KTjh}*E=ybjp$p^6Rw0Y zaljMashgF>CmZ`!yc2of#KZ3*dWLl2@qykmr4O)X-RDYr;E3Ya#YLqMIhB9&k?#O}Oew_p}J;AJ7 z@EQqO1oA|_+T>5T?C-|fuR$hYPP~;;(Z-AFeA>B%*$|`BOxd%>RJ$n139nzNy$0J| zWvDBg>@GSwZW<|r*yH|fKcu-=hrKB^d94N`QyAcb7@f8V>oDf#FtQXMHL>o1)XDb~ z!x=~XHrDjpS1V`D(yJ1lgcrdr?qAsch@9aIaFC_)X>1szho*){eD%$y;mS4Ef3 z$ABj86(8)g)$Ih%*alZ!4rB8@lg|~@-h6tji2%W3bEugWNG)Y?2+RlI42pP40o)DX zp+JuT&q|TvUkEd>275FE=AoTZptN2I;9&wW6T@lLv`VrYYx@cRDEw=I<{{mKhti(_ zBVe}*kS>}9_{k!7s?Y`fG28(hr=Bp~FJ{6i?~Cw-Kc~r<>S!W4WYdX zeqY(Y65eSLFl+60f%2Yi2QUnGn+-bfFNFDl=M`I+q1)jn5Bb*~0yBw)sh?2xBMUw$ z%n!ov3;y7J!4ExBl(nl%-;LX~xA5INx-aj8wOraQw<|WqbFT)QolZVVC~4PnGcX_# zJ=bA12m=N*@QU@MDln_h-c!@-J=qImM6j`bGLYj295clLkVO;v9M7u_<9^1Z=NixX zHpE5DpAXCBs1!;idqvVqSx36oM$x}nql2ld3{FVc=6F>D$D+bR>ikJauxb>w=oz}; zu(<~_$^zRXCTfrK9NRiV0E*6xYN8n4`H&nc)Y6kwBRK6Wo7xY-UT?@;Ua=C$W2(5T zws4X39@+*U91ZK$Quy?=Iz*LLvj5>q3RE(t>W0U%zRYBOOA;dSvr#ttg&U#)@zQpI zccl~vA2k8NUSSfR6wD7vD>6AA)oTt;Hp;%sKch-m@OeDvz}ONp&N%qYFI!HSDqf~Q zzZ^-99FIF1o3zh`-o_CsrUvZy7|psjtRLn(75fdbCAoq$rjHM;xw1gbl6^o86}|?Ru%Uw4fq>WK2Iw1^ihE<}DNOXwgJ@ znN}EJr%`8s>-ILwo5ny}MIRGFdSPY+qxHb~pdmswrgX5Z0@zxdsT%UM+9`FX6zkMRDGd>;WcJ&T3hz zs?=bvOB&S$NES4m=dduFC~4T(Bl3f@hu%cGJC~kG3VUDxBdwQBdPH$~b#Q*1XPdt& zB!dxSS#YTSgGf(~m)4o@xS@EXes-(+&po18m%O=L=hc|8N;^D@y4FHw3|PUu5aMc? zyR2P7)kUidY5{b%-(3g#L8n(P`dsRkudK7l`#kzx+9&Y}ul7DPMS2%^9x;e#TG;VO z;*KWXO4{{Ex_%Pmj{LU~h6x~!K?HDsr&~;pDMzk$q;1=gw)Z0&-0)qq9o@BGF*my% zJl5MwX4C{5To!6&V^UonB)0TUxlg@H@zpx}+ZUj>Tor^TC9zkRSoVD+`2X1A-?ea6 zl%>-JQ5bW)SM>yZD(e#V=aD3%qx~DOO90>_Hh({Fd2c|jld{5@>+YhpSr|j}3t$8r<5zR`;$b0mV1K=7_ zJjMde%Vi)681(N%ut3G%>#X8>Tiah2rdb`*)~X!&3IXC=R&l3mVhu#4egF`Oow!5i zt#>nJ{H5Tf{enHa1%b-`VL_m>y%vGmfy(~AAkZzKMWC|ZwfLukf8W(V6}(jV*RJjq zgjnDcQf}L5Og{2+pA1XUOC{@a_3vqSJf?FVaV@0;B1HG7$DYlDxqWY_I#EJ9djLms zbuQEI68{a`hX_did0A>e;A~iw4xf5J)9T-jPfA#Y)9VCIud2lWVq9-;_YzaAgxZQd zUst0+hJe#L9%IjBW98*vnoO97$U8$KFEAZtV#$cZh0V*dhg7mL3{AN7AtSkxKS)@H z5!Kmv>A-Ui$swV4AqA&g@B2VmDXxsMmX4a~cwpo29wC^v5K0-}i?xKz_F`{@daoia z9X($tuQCfuJJFW2tig+l8<737ghs9mwP8X88d|CVoTvn^cY8H2Vv^C<-(_z3nX``; zHWg`O19ytEjy)y?kRzJZyb1|j6_fVVyyyHlL3qm9%M(7*;m6)s2AOJ!Z014?`O*Pw zM`@lZiNImg1yvT+I>4&p;B$n_Y80|VcfEGD{6$l$h-Dtp*reu zf`SJVYYB8C@?FKj&E$}<@G$=fSNm8T0X<7L&i6cqPmj5)Hl>bWEO3`K3s22Wu>@O| zg8d_%YSkbPMb14o@iHdbPB%M4*I*rU(RyYn&Yby)V2YgI>~_?hyGUL8D=&7e+7-!w z`}D7fUA2A0Zc<#(Q|B#%@2Q(drN$O>zADW9&g61t-{f)&Fu9xsfrI|z7aj10FY`44 zkp5TB?dv(u!>M-{w0QkJ{l<9m6-b;gZw_5ydD>!L7(_kqBjDd~!#yD{jj{}gAtjAw zt?+}0J2AFEQVU3MC+2^2=EAVjx4<)_Dy!T>qR;Pb>`2{VU06!mohHox+tWlYK>PPN zPWM@sN7dEM*cC7f_9?0@3ayZuY0j|CugL6>KA-t1bQ1dfz5Y$*x72BZ#D~eT(|kb# zO6}_J=wE?@h{c>}osiT6CMTeLbvht^>XqxiFF_eZEZ@suwx2<_VlPCIzgH6?OXFve zH@l4-`L&V$+TBK|Da!}_@E5_pw2l{gpV3_ar3vnr-R}i8gUEi!VXyInf3EYd-7w5) z4rUTPKJZ~`68f&h;oN5F`08!$^9n87f=>XdU^q31vS5FV$1u-hb~sM~hfnPie}NyJ zen(RF#{5jTZwE*YI}6|!FG+%9V!N~fkb0P{?tc@UzHbjdnIKBzzXMK(J%GIQdh@Lp zuTk)CW78A%l#A;(_p#}ZxJ;`6$(;#koI8SC>(lcPkgVXpdpKBY(DBtnc9ZqE&+HNC zw{G}Qe0a1>Z>;XiYYmEBiwtE@H~|#4ZH>vsM;$K@UwvE?+WCSbvFdyG3*4)Gp>~uz1@>F` z+X8=Xfo7+IkGmD{{93_&i+}Fo)xYZ^4Vg~fiU)21oMKXQ?1WX~oI~tEB>^v;I4V(d zc0`qt?;U_%Vr5SintiYbp!N`dPVcm<0$t%9sbcsAbfdC#D^=od&|-K`m-ZWAuxJ3g ze!CtGj0Y(gb#-yOGE$d9cki=v_lFzmpDDXJ|9JP8tor){=~&XQ18Hyf9lob0#jBj8 zhyz;S-#OTB=W``(r$LIpxluf*xRbP>ldAcTB1!TN>)c;NlE**LTxU{}$49Q`2NMki zr##Hqx@7bi-Rk8Yt!-^++c|q9N7l+_2LugO%Lu(_0G(Je5O%HuZ!XriV0=!MMgnKp3!6tFr)aCGm)V{|+4_T7PDd|zBcUDc zliy_Av_S73`PU<`1IFcSl49|8{5TfFCh1M+$P_As0PKfPmVFlxoH1|{$>%7K-NZ%02+yB*j6KFhfgTrHqiNT4TMo**=ek10I(c1zN?e#Ti zaVv*Yr>C4+9-QIL5dLWulccw&yIN=x0*Q_#9vaU{iqA!O6!HyKjU54`}Cw*dOouK|m9bzrWMn-Oc^=#n|o3 zKgbGH!_&G8NufKsxBK|uzL9?Jw%LhxjmNv_Vg07p)CV9qeh~24x%NW)H;lW{zztpz zNc!U)2$b{(Q5!6whTnfH=+=Lms6CKM_Maneec0eVxpqk`YP@Q;_DK;4G#7N(n^~gM zr80VtLxPd{AZ(iVYElAfEdSQ1@8e@=XZS9j zw%wjAr2`qh4u0pBmJuJ1DKxU5i;k&^Fs19XobKCBzqpbuciAf|CV9#;)sEZ4{G-Sb zj0chdI1dznZG-4u=68Sn?j-4oFoSSopjIgumS~fCqNCW*1~cvXm!nVzV~=Zo|F`ju&8}V9JWPwEBj2rQC7?OZW65S@5Dj zl5qmBg|}I7B98NEy1$va_1#vy9GQyNjOrNX~>FDM^5>_!@T~J2J z74+9_K?uFmkDX;GAcMdEDuY4CL&~am*P;6QfH`wVSKT>p^XD(TD~J#N`t!qgTi#Fn z!wu+fa{jIy#h-R$glPVxxT=73S@zEsRowYyueaC{GXBqYhVRA{>1h1Z*5S@h$UisGLacoV#&Ne*phW+?i<7$hh z@aOk#zKmwRPV*ktCQ-COmn?GqX^!t5+t0VbBClyTe<+*X7X|pgI(jNq?8<_@pH3f4 znfrgcDWCtmDUtsVzLl_6B1BryUs(D4sh3yQ!Z~#u5Vs|$y7F{t5RA-di2oZJ5EaY5 z&e=?}uTaDVrR+&dI;n}D>#WBhPuLQ$rM=^SRkEv2gs9Uy7DW_P>UK3PK;!5O`D82k z0Y2f57xqY(65&7_p6b*ouB8}+f3@A)n#9lMXvd+j^gI%x@p3>~ZW24`vOJGFRLqoh z7Ey~E6N$Z;z2=r$jm@^>xtq;TH?IG}s84waQ#aW-3XaYXS0(D;d-E@9(P5BfYbqJ$ zrBDyZWa&(U^-H@s8*Fxdlu9eDL^LrDgU%kO4at32Is}}t^xkNa{36gAYp6~|NU`yT z5LJ2Q>CsccGS}B6kmh+G3dgx(P)$qg$1&FaihZ6g=rw1S;+ztOZKkv@T_vg_L`ULy zk}(@vgwGK?K@aCD*&(eRxY#EB_8F2GP;y4)tX;!SJV!(teCyVm#<|&L4@;tpCXUghKy; z;__Cw%94-{0fnD8EX&uB={dGpX4HqQux$Vna#)F-`pKb^x8|EHFMt;dY)ao+Y#&Ly~X*fef!(~ zo`bOpXji@b`@(;U)!N%gY_Q({Z%?VPyFgLn8r@m1?4WG;LG#4mp7*D}uZ(M*8@^?A zrYfNMp{yN+;4X`mD*=y`T;Poy%v46PrF}YW2#Yu34 zJr3#sE|IV7&#;&KtSNvsnLORM%IS)0TMZ4l|wp->}Iv`KH zD-&y62In8R*<637)+J~{+)efE$fPDny6uVHH>ppw@A(*R(^gZy+7JB9_xxvIzkm>E zKd@hp=6_BF%-CW>2$`eeY{h{V)1j z|MD+G0UR!D)AEr_G(QYIKeBeEPm58{SA&1w+3j4+zNwq?^`719=Sog52xO!9r&sD9 z-O}^!8j{44_Wvg&p?OuM~2n zhLQ$JdaH0PfGm&iWzcF&J7Z+Bj(VE=%U?j;-)W`*-SY$dZJAg+|7Z%L-INZ2!@PP2 zqTBEeYi&a*=y9c04J<`?g(Pqn8y2!QG(>8fd-YXyxE$wCbb23>@RW;)eKU4GzxXoG z-6@{wBXbzm`!}O249ntxZ6QX4)SU8%^r^`cS>})A7CZ{FgRwd4=v7ZIIu}TA4T39y zA+D>+Xq6+_)Kv?)a#nvraOR#SI=iHISfqDYfrhaU;gm{Lb-0jZ?G7cx*ceWQam7-Z zb1gigwk6<_iP@;+vdmO0QgAjNDfna?GEE>7FH2afjWL9R-$GHP1-*yPJLR*=dsVos z&8ThXGfL$0srt!Up|Oy)DKk7tDtT=~3g(@yg~tfSxoUyxXeN%4NCh`t95`Ohp|Jwj zK%U9+*a^WQ5ovUI7DsvTgLjQw%PfL%h;OI4Smz`MAZmEDd5cErN}BVTuO~@smfv;I zq9}@!ENoOA-n3ybQ?VM>%7Z4_@_kK%Htu9s?_-GC@k3|5n4X>vE>O0v?j5*zWV)>W zGPl#ii?jiVmLKd0gA>xUnGTppxOn`OJ2^8hUISINI82T*Tp(n`<>p!lh^Y|1g5Cg| zM-W)PQKs5wKjiVk2D0g_g8?&SGUOmdX}8%KT-Vo?d`1r?9&3BfGB5%jx{ijBkhFwR zS5q;qKG0mOm&FZkPKzY_B(^<%DI1>sbUvC9@WoR+1V5~vku1Dfg_-ll zmFtb*?6@(qXLOrQ2?dQJM;gikmBXq|I30u$u*3zbkJL+0dk?Htwgcdfo6AVoG^<^P zpi`W!fnXz>4dm^*QDNQ+?bhXFtu@$SseiG5gveb(66a!Sqz`2-@*v=5pD%m`45@(t zZb-ADM;+3m3(;e2-B&fpZp)OftUc+al&!GQocOTaF>1o?5;|mUmAKB%p2*L1uk@h@ zA%9x|YBM~c3Kh;5>5GWtLFzXU>Qoe1>rIzqpsrf3SLrQ0-z+WVk;a8fs0H)$ZPaX1 z$WU6`J$VdS#lqw>dQA36N&Uf{*>{_e%zgye;KO*XV)yquq# zx{bfzkiqdoU*5gyO#8y@)dQK!A#eB&)~i&bL-iui1&5FKSy+N`>~G{4yU+>7A_=F_ z_-qr$FUiT?w*6v^h*MXOiBCU~dGhwxsev}Ky3xIKB-a6F2OP&4Nr&dPa#QQ_6+2*> z!h8y$lM_3hjS7c0r1t1|ref?CA)KUo`ILL+vs20jj611W_pSb9Pzg@^vq9w*==`tk z{W-AD1QE0!PieZ3wSK>kwf?uJrZjnRf(T8hSaX54bpYb#{Fg2@m>wcG41)a%ijE$Q zTV~;CHqYR!HV0_dB5zg#lxs(t{}R2!#CCvJ)g6hm@!|20@c--wkgq{E-vdN!g1kQ& z+x`%JED5MKeWxO^mAM7$HU5G2j^<(Ah`&U)?nH}Q1Jwra)ZbW;01&ukScn2-Zi>I} zh_l!CEY{t24`~r+3v^r7H9nmFu-gTP-3AP`FhF$E@1o~-+Ew{W^lokzaru}kC9X2T zUaNtfF6iyHn`XUJ{uoe^UX;ZypIo&$(Cz_2%YXzc?TAFn7>;71ia?H11w5!032&zr^D&Mv=ssD_g_}@g01aujHK)?QeoVWnh!tO zb!Ac4_3K!?^cK(1c4w^|M1J-?FvGccXi3Dq)-P$pv!%2r+tAMrH>MN5bZzgRKJ;v^Ght8?Yna2b!WDgT1qX#DP zq}o0}r5rpZz2`6MKhow(o--a}PZT+hFlW$0oJbAg{NVJ`5SBTBN>08MLxd*_3fV0! zr|8L#Mp=?J<*7E`);Lk5VBUZCjR&JVjJq zeDNA|M)8fdTgeja$B0s@wi|%<}SMBWjwf_Ag7XLctRb)%s5CKth^BcQfTySjdL_?=gGvA;Oh3tD#F61 z+f2<=+NxmXWm_&fwpjwNVZkApx10)^CaR3d#W5xxym?8hp3rcv=r>@|$06ef+t((c zlP3&D`(oS68XniEI^n!-wnw7}8WmCep%V!kD+q<^I_t zR`rBvECfPgClH>YQguOJPEA=r77u2_2-1qJ$bc2?!*J zfFPkrS3wj}S`d&>LJ{c*2}QtAMQjLCq!$4}dXpkmvE98B^yqnd?m6%M|L@+r*3Duu znatj^r|oa%YrijJ5uxJ&{n#QpP=MQZ+P(&5qhTQ;k$<^#cLZ<%+pW~ zCEm&Je_FIB@Pti%kxP~jxAhB?c8cM;924t?lf!rf7)D(NxAtlk6vA(Ec)?ALdfMAwAH-qlzrc=XK3#Es zgE=#!8+;9N4BPH3lpm~l;e_UF;(G_@cgJvYO47X1Y-LK!T#WA(E@$?s6`2?zPaiQU z9_57=luR`x=GrFY$7yH!WE|HVLmh}^Wi(|~om|}B%En2u|KgVxWhshl)z|KuEOiWY zM|5h}sS4~^HAx@W;2EzAcRhM?(j&KWkd3g4G(I(cWw-B`>2ZOhJBW`+m>zE0 zd4}#aoJpCB0KehV98no-V^=INJo_>nu{vjLdT~h6L-zWBV1c%p6B0@CI=u1~(j8u6 z^Y#r4rk}Iex;@{e2-U1q(lM=;ts|6UIirZxP^if04?7Ek=|<`j=M;47@AR%~w@ubh zkaCT%gz?AB*0=q)bR1DIzC0hyHxp5IUWim5KT=?JRU^3jQbJjFJ8h*i7ooVLc*is$ z(b7l`4!{vQ;p+Qgu44 zCGQB`0V0esd#}vK=71k>#+lkTp35 z(610sYp(f-b_)-g0Xv*?7y+2Kd{^m!U;dN@RGdGSBmAjU{xH)^S+f`jl0KKae-u=9 zO2>;G+qA#b`dWOW~aZ;rK@6WrNFX?{~)$-lx77 zU6e_67W_BVnv^&!cE3KXv4Ighgj*a`(A6BPHzI?l|V%tMK(}95hE=ATbkyCxe$`VK& zjzDtDMLc2~!(x$YwCs`%b)*+h!a~m-&U<&(y*kOpyA!eMOE2K9+_a1|s5&huJb%)N zms$_(&vh_&Li^@UMX=)l3}s=()*X+c3!`J#50Zz#;J-;x9gX&+ox9buJ_4Gzr26G3 zN_BAZLj%Fw;5%Z$H}!CAAV5bv$ksPC11li3>_0$;OgK(4?R~MCb{q=$PCH^LCcb}3 zJIp9vbIkxrSnaZJ&&>yYk@*&6O}|2VWNNgtzC!k<%pV`Mgz#FCDJlfQFr*{GMn`|o zV#FeIT`2cZa-qklljii^h{whNKH|lfODXPsEY*F^?)@c2hvnvwdVnv4qUo3^rmdn> zKwiLBKd*H@)Yoqi%U?Q;rpwPO>v%S^)iY$(*9PWcD09&U>lU5SUd7{bP0Nz>Zb9}G zQ&js|@10_~7WnI2Zm*s(K7*&ThmpK=;(P_NlZ*3oLrJ1OcCcFWI)y>=6*pO?b2c+8 z(i(#I+w^7TD+$^APDKoB_Sn_-#yi*Qe$LPqf*!F^AI>N!>UVV3E^5F-l^u(k6ZpgH zdz{yt`fdx%cib)YN!|$;?VjlK`FL~HXJ+GKY(aL@C-b+AN9#7)Aj`z;$#q9>tnuK4 z`DGkjj7cWB{l5?=?YYr=cNv|NsO4?=p0OO z!~7#mQOGVEH>)A4hF#!?51Z7`*2gxXY)~~{Ol|JTn!9C*0HJDlb4muC7}6`{TGdVf zam^~~EA|tb7%fO1cIf=IYmED zY@N-EqR=cWzN;}H)^&sy^;t6eb?ZgU{vbf#{TrJh#+Y8x7QIT)1$-hXbq^^RFW2*abn`yS{*1C4UyV_m?<@cZIeH#23nu?9z z=7eP?Pc(dmY)lkg97C!aC9$7*&~1#ij#nmyHt$-Cnea+@wP7kTZT7#>V_95N+I#|#mk6@m&fxlmSHADs2f>X#_umschEm(@O1>63x z1*aT5tsPh0qp2|fNe zcsL9UT;9+pn_|>km2cPqXe$$Rky!xv3g8E+2I1;z-PBs%P||O*SueaKF)0dxC>T(^ zx&=T7kr9JJ44GMBqXNo}w3rN3`K5;2(9|=7B(7)Gft-Mr7=JGn@?$Pbh2{S~tNl|| zsX70?s@SyXi?XF)Yj-&lb8PsEHHzG9V(BpPLp(!0|LM)_yGwVh$5sprbrmBidHMO8KWSHGNwWG zLUZ63&5S!dx14m~1_0$5qRPx1O7)^Td2DVJ__oXUVdKTR01*2bHTitWtbprqah8~< zOwYwGEiNZDWJ9NWxfGRIxdgtIyA*myIfma#|BUZKnYR6%%AL9K6;ArdK%RJK2!UI|}9 z1DHOe51|uS8tIa1i*W^{_aayQjui(vb=&)WMKYnh>xJB%kbi-e_ck#gv6W&0L2fD;N_uFZy?rJ;rZs($czc0p zeMOtbm6i$*L~3#v$lh}N1L!KI1KAmK3_PKzQsx`P>9_?LGrirU>}F(nu{z(sbe`>p z|E2SsK+jH|=i8KdjusQ)g)m^IoGC_~Pq^<+NPg^j5bpti7;>dTX6m(Un|v8dY_Lum zf)naeYII|@<{{yFtmu$!=UbN>dkr`CU-G53sKzIUm_QeV9_=fSq)TQyahd=K= zS{*0~_?OpqKiuMbRaT6&NWJjmJvB+}=I?jSed?|3q^nVF5kI2=-Y4V&)`F2MTehAx z5F=M|AZ-$VFRQBmLy=dZ|KLzF@F+;t%F(4YmMg(`ET6<2u}Dvw|;JyHA9(O}8hXI*_( zh{vv$dk7FnBYB50rb?kKN(fEE0g%-{6n)qaphV=L1NBs@>Ee_vW-qRVY>+I;=l^?5 z=I?LnUwqkVe5rX#dNGY9R_->4ipR!eLR+xI=RjhNFq!%o)dSYjsee(yk3~B@$R`a+ ze9QE)MgR^I;4Fv9drZ98eqhUKKU;gliV6s5vbhXZH;p+M+*=`AVjY z_=Q@-0R%L_3@Q`Hy6ve3@e91Vty|cmScuWGOUFaTTjAJ!q-r6Y!`$d$=svzMSHJ{M z=9D8_vP9HNOhI!_(cGK9befW$>)wO9L5<%^|A2m#@9OfISDV_G|Vej zAgl~OZU(S?23&jCFa@lJ6CO(q6B8F`-w;V!l4=?L2G~D@i{JqLAxs1rA~1KFJ|f5j z&hcgq2zD@nplJvNZ{uKZ;W&Yq>aDA>tV2AN?g|HHVBh1&ZL~7D0eQuw(Q{W9XMN|I zlB4obxi@AaE+pQ$539?Gc1R5>eq~i!-GUXqQQUm==3`Wahs=YcW>;4E*+x(FbxeK6 zdXkj+D`fB-!A6p-rwDZ!QPPBA61%jw@7k@@5+e;;KPMwZGn%@-7{hOU{(?-e3=*3V z%WgfP8yb19@`VeE^Yf9=n#1i~q?{g8!>34I^LT*^at(-e0`#-}F}o|kQ3;v~1kD94 zZZ`kYKyD$GIy3jd#LB++1|jgIm*-EU1k&vku_gxW51vRxx~c-F|6+-NKpo)7_k$@D z5DA1zw-Nt>~$V}wuE;H^%?3@Mea`*9DIfIF5(Ig_ZB$!DL>+|M6KJfQQxlPm4^Hk zJa^N*-=)O`9BuOM9b1mQT&U#IB%yDmK3B?&um=PT-AS5DpzI;6FN@l#aGZ`=AhWf9JVD z-s;g)H}3V?1nU<_PSc`Ov{Z$=14Y|a)@n@o6d23J7&NSNLP@NU zK8K(+bi@4T18qOZiiY1(Su@H!8s$ZtqGQ z$U&8CdY*mfpj@~!@umoiNiU;Hm>%Lb7V6CedT|=A_VZkH=0MBW_-v? zNe%)=Yd^IIbj1JvPzBy-!8qfzXZSl2U#{B6^*Ik)MIlth7F|!r8Z3Me3PKK9J+Nmm zHOKewhF1&CqchuQA7I1suZ0ylYv*~sD>)L1&A@M)Lq9Bm)eo*9F;3vQF~tnMIi}-K z<|(l*1BFwu;sHW}PD{sRc`CRDT-{yW3YrXtUVG*<4RI@1+BZsd^1~;*xICvK^yv52 zB9KTF5~-*0(*W@ZSY=L~zp#T7s;XFGp@>j0?^Np+q#g}=$t-+7sKSwlV7G=%mlKX! z?9kw-Fb$U7r88uf_w%4vFwbA8?2kQySQQHu8u6))s-@#~L_L6pbm}oHb8lcQyhJ2r zj0iYWEq&R;Io%Z!9!Nrx_uNKj=M1_bY((xEhLWH{i!6oHote#`Jcc@?J(qTlRU=tV zue)?-*GkuBvgT)b3CA4?f}I-kbS)~bi14*l9w)A=Oa$)GkuvAnm_(IT?YT0nRfh3HB6c?F#K^OE>4T4q}p!kcseGpz0;N(exsg+=a7GA32V? zbgPcLRrG$*wDP?TIE)htELo{rA^Wb9b%<7foO1DMfEa`CB$|EGDvI6z|2XA7i@GeT zp&7CuBZ*uW=%6oF)EHUFRo1+%e(~s}=K;W?SIYpR0#f{6efT;mEPG&cIU$6hGkeL< zwF^(uA(gU|QTcl8&_fP!_(_SCjt3dLUgX z*AL(n9>A}0;gQRs%H!8UHhC6CEs%);z*^7n-^@3qQ3m`bSqX1~0pY)`6=dJv701%# zQUqj8(G(^o(N+?rEPO1SK3g~#5SOOiF28pZBJpcyj|K=sUeHC*^_)A3_;?m6L6USA z>XB75#cjE*|b4MGbzv=mJj4BQjDx>;u!(s|8F~f3x&6ZP*c`i z)J{)JP|(7g`R*cQD(uy!V1;r7xT$prw_D-$_AjhFxYXt3)~mxtLJ5d|Wt+M6!_f5X zfNagzVb*t)ZMYuhS{+Bz(bfH{Ix-eaa1ngUMw4dJ= zit*E8E(InUeAgP`%ke%AgVs{*pCEp@||ZWGJ6Ot)MozNXz)x+;@i%ewXX zVmuNd3eN=mMqa8*8cI#L+dRo~smc&VUC^2ql{6d_yH!ft(5*NAvhyjcqr?)@RmVF= z<2;MW!Ghb75Ig|G<@n>F!F(+3I>5DSfgOFDP*KF{fy$0R|HMOL7#5Krh_uY<5VC%Z8rC=&TWVB+(JT;Yp8+ z*ok47)j0kIKvbM{{=CfMK{A)QlvxD`OhmgFdk{pUy|Gocrmkl#w+^3Vee&AOrM&S3 zTAzJpI^CAtu0?KC?{oRnB!~P8YDX z)GH~Koytf>mSWr*gN~V;{|dRdcx@te)sHi%MKyIp$k@<2wSZ88J`F!g+Civ%P#+J- zQOa)gqVl|j1E#|ZIMJds-sbW9^i7()63_w~_DB@FU2Eaq?Zr}E_Jod)cY^b=cj%mz zkK{YMAhkwMjW$JByr07m+|GWpPvHhE_a~FOp5?h#p#DYdev#p3k6SiK6f7DRDIf5FRt?3KhgPgy?ejs`3?r;3$6TSEco97{}!88TyKVUjxWsioZZ`iB&^ z!x}Uk+5PO>j-)`lCI6&a`OWu}GeAG(C_n@u^`9Y_O@a)VPg%*@N^a@40T?krSs@ zU|$e{nDMd!GO=N`NB3fr3o(58$fwo{@^E*sn=xS1k0-3tgWV+e<3Gu`HLlYFaY6XF z+&@1B|2?_ks`+C3^08sC&wnSwpm6Mm9s=Doh}gOB;Ar$;4l+3WXKVnFUE@I0El1}y zbXN7Y8s$t#vhrZk3*X~!JU94G{B*uhh@V;jh3L_CE>dJq{(oQFh@fbk&aUpKXdR=B zS+8bAPPNwC6s|;l=F}MnMZnj7cZ_d~wb@iWfy57iVr37(E83wQy-6S4Ml5-5s!)Sl zA5~eg1NUIBtk&Paj?_xja5^ef&<2|ZJL#oP= zRpP05uEb+`dc6lIZn%XG$vuy?n6FEu&bCkusiD-5&4o}^Mr)sUH*VQ7k7U4Jw9pqu zUVh&{QREl;OwDg%c&^Ej&{KqXBJ(vu zxi#Q=X07gW3!Px# zs+yDQQ{_}N5*F*1#B6`B(|_|IL3aAP>Y>d8CGZG9voNt7y(6n-tQV^NPP?;cK=z!~ zCu7-LN#7;Irbs~e+k8Nc=pHgFp*$WD=D!_g`)AF>|Dz>DG^mg`PRkf7{ei5ZIJ38b zvL4gS$qI^ZKtY>*`0GSFhrB0SOCfwfTL{TSmAcc@ynrT@-s=nQI1o9zJm=AtEx-0I zwc3(#2q$!!O@TW=oYp7ixt6U?cn$zt-w>Z+==yYUD*#Io|8a+02L+bm^wSa$VM2WP zRo{hBwWOaQE68O`73p8NLHLPCGA0G>0tj6J_*m8i18^0*N66Rg5gF14Kp###OaZVf z0zXi0xY>4<0f4Absrv!ZfTwkea5H8{yb@U1L+^MPjM zu6>8)__?7!;BrW9Rwk`RzGMqW=Zm0S4Fi_|pb8uSR1py-NFvlE1e}W#d_%xui`g*~$0T(}T;`ieAw2Y5&<3=};!a`U@>XFN3cq{*_!2rUTJ4{GDTUQfR& zBku6VdSbw9Vz#;M|Xs&VC)1TrYX`WJ?qhsZ75S2MrUQI36N z4gU89OW((8pYu?})6*rin27px)*JDdec-ODUn?;=ZeXLY!huZy%9Fu|1mXZVslgN) z^{jyK!VpECiA!_qIKZ6aP8}4oP2yLbBL7A`6Mnz7FrRB|qx7Ob4Zu@JQ%((#9p8=% z)OBi)ww&A4mATURL$JTC>~9n>*#l-T_QNW4JDyX9E|u!W-&b>LQQmbMNY38b&wN+a z{h2{EI6Xs#I$uORXZi%a;5b2}6_H<1%QbK0?-6(V4P^J% GSN{RG-9I+~ diff --git a/docs/system-manual/screenshots/fixtures.png b/docs/system-manual/screenshots/fixtures.png index 3ee0a8fb53eae02eb45da091757adf3aa7ce7af6..cb7bb918d9221488d35ab89ef1071b8d04ef8ee7 100644 GIT binary patch literal 58245 zcmeFYcUV(fyDy4eL3AMmlwt|eLQ#-_G#i9o3`q#xMH2`;G-z4zSn+-LuD&m_-e%rVCNjW;u6yz@8S@^k3t zd%oXH4NVOB_Uz%~+q3(}_j80#pYP!Q0|yW6KX~xK!9#}*9_IgzpZ~}aevxCxkNzem za`L2@h^VNzl*}1%328}D(X&ctrDf$5KnkbMC|^{TzbGTGApZ+w&!Izy_z&|7^YaVK zi;IfO|Gz$d{>dkFcyHVOPy6-&`SuF!*(bE;=UYC>Ut%8kCGJ0u{d@NA+m-b2Zmacg ze0%oo+q3r&|Iz&icT4;C@$EM5KOl7C;5lIt)$7(U+#%p4b*M{FN_nre8rTgTazC|z zQ1KcN{Gd-%;|BcU%kzh2T*dS!PilsKy4>_}7xUzvzm9(nw_Esyx!ZDHXb<1seSCX= z$@6!C_6Y4gp(=dNWuMx0=wty9_mj(abl+|-p?yMpSNV2I`66xqGtmEBwyeDK=120% zW4B|Sqr?}DD{VM$huq;+yfD5kPapeog^ZroTU~if(;rg+7J29>^`5tIRTWQNX;E!2 zn$EY!>QZ*5dcR*Cwm8?wHL9{Hed203$f6s{NkfB~f=ApE&hkC~p9lSKsM%Lo4mrQ^ z5h8$C)8pE+c?iVlq?Dfm%`U%g|oxC!FiR_eETJbtz1R}g{NpH4e^n&|^5C%dcsnO3}gq%4OcTh{(-1A;c9nLs8Z_jYJ z>2O2-FpDK$<>?K41yT18sW4<)9)X6-@|YHT*PqFAxMQNk5 zNOB!NnRj^V{)R|QQy6O64(V6EJPJU@gMt0pvIItZ=aLpea|erLwxW-OW%vfv=|$2~ zMqnru%67^GtWp|G@t=dpB+DHtaE{7i-wbzt?CP3lasn0qjD^1qa1DmCzIkSXgMacB zEow~He9v|dtGm6dDOf-@HLGoFCQo%)9_X?uL}xJpP7M(lUHIu&nn42DQKXk1!#e5r zdp{*l37lRzlpEBZv(gg%IDdJJFy_L=jCka||C*$ySfdHoitnY)d=-@=!^ zzxz`8YYtv<;8H@1Q%pmh%#N-kAv>NF^hjBbeIq+V|}+?OknMXi{Gtawggq?%Uo&)R#NK>t3z_Ry0^Pj zGD46qyu%?;f&;&5z;#6{z0*!vPP-j{@7ujYg66-VQ|S|KGFI5)+qbaW@!+pJ#{Q~t zsI^=^ed%_FS*_xb`mdos{HhTj>kIe#l&xOt)a(4Zcnq+lY5%L{*QiEMhKqlp{x8a* z;r;6iJ^Tgl&-f)7ZA>mK`P56ZU#Q}{@NYtY)g=8A@lMzO5&Hi;>Hjl5{{OiUAMffU zMaLY{KUEN~r{vBjV%J%X{=U|m92=mT`%J5Jk|}{eQQ_%d5-DHe6LP*k+SmcuY7|Fh zfUdP@BMT!O<7--{!lUk$Z*c`g@LNLzhyJ9o$4p5Z2*dSt-p$#sanTj4RFf~^Y>)r*{+-bNnYC@!p#3_)k8WR|Rw3bHr_hm1L802fa$0Maq%I zTOqFCB^Fb5 z!`99*7;_?&^TO}$yX6C4Qc#Q8FV!hGHvD6|BX)2X6XxZ&QKnHb(TK^wR_~Hj0qOE_Z&i-l#up@f}Z1~jVgx)g}?vyxi^(UXDUCy2j zFvt(MEtZ6}P4!71s8xG)q(tIn4^{kb|Kv{S$Fj-Lz)UB5W^hlw)`#G2AEwEejUL$- zUCc~+f8w$Ionv8T8o{rwI7(`Um~~OTG%6|<+zQekWRdR}y_UuW0l#^e2Vc10wadu% zQuz5myNrVGfGHnnxA@nGk55D6s?^u3Ay;Tutjj;I4u37!^lrVvkc@7vz6V0apsm=` z>Dswlo^5cBI5I__4{@c{|5T{UxuKl zh$*nHF&Ppzlxzl2r!wb8-JLgA)B8_-DvgZeyIi?>cQRk8Zn5ufRbJ|t+&6sCPrl?I zEqQ*Umv|X5_ErP^eNja}`BLatKmFtz>K7i!6XiQQ`^TYzKmN-o|9Ww-rFHt1=gMPF z3Crg1Pw(>FK*9Ry|6o>&VXHjTRl3QS95l=4qr9)O^RdD&F~s^I`+6y(jjtAy10M2x zVJ_9fiqc!j-pX6?MBfuOrnvK1^TKfS`^~Jz_kM+>5J0w%`-8A)IC`6IPK3$Rd(OQM zm-xxIt?zlIGOt-LySBSCT&HGvnML*1s3nYrMnanU)pQG0C7^X17Zjml89ALjjEGpd z;KQH`U$6T)Q7T(T%z#lS$(ddlE$d_V*KAxwcpfUMIs)CWtA#!pTDWfGNn1)jm~hW+uNnB#l(hzlnDcN zsD*hFMjbr~VAWX6EYpUmSeCPtZ@uahs*lj(ldz(uwSce3Z&R4Q4Rv*07>?VE-inmC z5F)PA6?{u4_3*d#1q5V+kp2DDgZ`MGd~B&Wjsxm}O$A_D1*euuSVe&%UNjI|JNdrI zxm20Hwi~PSp@rIHnfS3gJJnZ`m6E5{&L!3ibop}p>ij5W16e4N7bw3FrZzv6>8RP> zrWCz(JbIX48Ml&I9il!!%Z?lNDY)McFQ-1XT$&`+@bv4r-Lo2sjh*9##9`Yd4jfl& zZyN7722+G0`4if6+yrk z@B27ST_cG|j2n5GVh6MhRY59cM$=lBNAsX}=Og0vJa-rWh?pO@tFXo@I!Uge`dW&T zK-)Gm+_N)&(0@ZJ*MsU(warZL8xOnZIpRgG)G#^uxmUdGT{GHKl0@$6R6e8iaGoU~ z+w6-(H{{p)0TMD$b#>1$n+9x7BxnUOV}J_FnfOtx5!v-SeR$@@2zlN$FVCm}csuuw z%_Op?-oAdswaR9?O010*mJVdiu;=Q6ZO21lY?XUoBI^6!St$$7KB%RLF52G)+w;~v zb%|Er#8-iM11>r}#xWX!wW$kMw39vH$ zkRN&&bgP*(X1&$6Rq_^9jwa<&?yL;?z6#F1+rxn`Z4I(VReTNJlP69KecfJtmotvO zRZiln%;7aG=eCl_DUGLGY8LwUxxs_MK>B94*waa?=Q_lDKQ1qM63@IV>6s3!9~%48+=hiT1E zzSf_7Zst~q$=~-L^Wuv6MXMOGQ&wm98gI7>k8{x9{O05X0y2m;0}eC9 zkWOq~mV91fol1bp#bS&>-9UF>ct;w16@z_%>+&fgMO88oq}p&Gg&y4L!+T+2<)EzR z;UuM|niOd!Jyx(B4y-;*X?SdyeamuZ^(dCu7zb*1%hHY)$81sU6CP_?dx-TJ7IQ&{ zU5*P>x)}nf`eM{c!aY+wht|YYC+y@DldSx#mzsS*6hfY<*EyokEg7@%`qNUM0!bKZ z{&lv#J0Z^gWWJyhx3s^r%+;eT67^<#{Y&`MRUN2r{guY70#11!TtiGFMld=-T3Bj5 z6bQOdEO75_6-lnxPZ2b5SUIKFW7)q%Z@6h%H@jo;xSxz@7lPA#Fq7;?BD*&7N1P^~ zrx_qvE&$ERAiVjr*%uZE_JL3+^4aL8A3yasd}z|kYy$bWd_#N6?qu7xjwmmg6>}e; zv_tN@6dUx)rmZ5R$m*1pZXU2==h|3a7KRX6yL{6-E{||i3nv8VLMGwti&w09VRkh+B z#cotLvRhU*PJB>KB{+w2+(y-5E3&a6rPRXBNpgw!Zri0B$09%4a6!Zzv{{vg zO)xzqhq9Rj5K^meEB-io%IZZ==KK$}!A499Vw9dRGFF#;hKV}vB~k~5S?SS{UH&+Z zzt8&zM$9{KM9YT3jN+9pIGg&xBWvXPe#V9SwBXT!!rllWAwbaFGAQGVLCw<4m)pJm z2~V;c%qaw3$m+yrQRlKWMimQnCmVD{dl)4Kg9@ABReL&W@-n!J8mRI!4lTTrLQIO~ zK@(5(!eFn3Jf+e326(LpdYgn1FKOCLm+c(9@!i6vE;XWmY&Cs^18&9(mX#Ex(_S`1 zCFQ^A+yL9pE*i|3uRYZvoQID3eY`Q)`scfA%~(jsP;G?N+_)?-4&;X|BYE%}>4}}B z-}fYz*oi&DlQ1;~EkaQo9{h%kWjCS~pq|#(Z&MM81#yUxbeSfVSe9G{UM(-!EU z=0q5(yfgnnRc}?EyCD(LUN*Hlp1T%tRN`u7x!tllR70*EVHM)%FLroP^;9wJ%B>fX zdIeT5!F~z1%=DB|6}MkYd*{(@$9YXap0F0Y1t#xD3X9Y>3wx(ciR34f$w357#aw|+ zO;*C3IniuUgZy-$8FpY`)ky+0tZmJnd}7GpzMzu18L4-LS-(5bu;~J;!ZFb=9bIiM z#U{~=D`vs~&<<*UU21AXj9fL4@8Y|^^y)r0w@(uK_!TP5Y7@1@ws5^F0Z_2RXLa~fP6^$k?&o4ch)oE+P;^^9y2$mvOTx@ zdPC_ZqUk9iDF#W*u#5ExHACT!Ty16A$k*J(f#GbUn>gtcw+nBLza5}M0TJB#IZ3|F zD^ogAUPBa%BJ4+2wf5vu-^YI>NyVZ}a(J*arv&5PZktssi8je-bX)gm^s!m3oE}~I zp$)<}I2=tO$j;1+Q%bOVOgEFNNBo}ASMGaoM-C{vhe9nRIqbET0q_cnz@tN)zK!PT zyH(}(FM;*?N*(N8vO|5qIw1oU1wys`3Xl8&Fr3q?ps7D^enCC1I~1HHRan~4XHUmD z`V{s<)eJb@y4+7&IkKxG;(K2xa-bZ%u> z)3ReYIF=*Q}nh)HDSSON15K81pXu(vOO7LCAA-In~ifDn*W4TYiaP0RyHMEkp) zx%ukwX4s|N551PboqrU}>osqEuiICN5FWVpCDG5_5nvEBZS8^{l#K{#P@U6p*bZ5K zQsoPtYJL$GSsU&IUC#70@UcyXK;WwxIvIzvamSDB#cgyqjghOU%-Hma$~x&V<{N!A zhz0nPknOhS6g?D30IC22$u;kO@-6lmD$jYI^G|P=Qo_vl1{VVyl3lk>2ULvpS5U0=>poR z=I-ld%`>)_o0WP$UTR5>s1hq>{qp@QMjpY2-~ogFD!yTmMd zX8)g?<8w}Z%Ue;hgROT>nTo60qpb#SgG03_*&KvwL-ZVu54xKEV?MWsuGj4wrNu}? zM#er*$Vxfr?O$o`0XU5z*H6|x=WJij>kTPg6n9U#Xi9Lf<FVUxO9xskVUb%vV!?cSF9y8pl1Mdk2HV*lWqy?-t8B)nEb+wPQv z@C9@sRF_grW`*HxIzk2(z5UeTc=h-f6_M#ZK)B&1oSp2-6y~RpFay)wwuzFtO<2N& zgR+c!w3LBm-cz0bS%mHHY=k4 zi>}I0vLYy`iG61$W#0epBhGQ0od0f0AIku_94uzSl$FidsTGlS`A0h)8K0Q;vt^k# zSBNj|=1KnBayJ7%6${Gv>8Ypcoe(o!QUutO=%|S8X^Hjv_eAs+qlWS-4JHDb)GeN8 zz@kj*E*3p2PIm8WS1(KVtTj1JnbYgQqsu^)^t^`^BRc++&|2*3f&FO2p9`tNmJF4E zXwpVsq692l8iz#hn2WG=Gy`iKrV_krken*;gCq`U80hR|1_BnQhHX(i?@leIPcP6m z5$brrMF@pIMpv2v^kz+Jf_QhEAe+^fLDIx}lS{=Ijd}N!4}BbSg6yV&l`5yDGP%-E zS0n`52WwUelD6MwIwr`f@q#n%6&|>t5#>~%!b!Nsjk|vSX0z4#6fYDro`|IGJ4?Qzs{n{e3Vu``rNMkRPQfx{)L$aR5^LFVO z8Q-dXAyX>>!V~~EEm-JyF9Y!EYjC|%!#AK-8mq>9)k;BpiuH`TC|!nBc5tR;z!)l} ztE~0htn0sK;5ee;e1p4|G+h_RPu7nI!REwt`X{fRIP?Hf-Wxr5T%5==VejblJ zHT0x3^ahybR$X{Uq`SBWL>CU@DT}T@4P%I;i%S4llP0De*%D|!y-Rb^r6|L4>Wdi& zimr6LD#Sc2n3IUJ$Ey8Y(nTb}_<7S`}1 z9fATiL_|c_ZU2sPh%2c^z@c!?8&OK6Z(tcap+xb~SWejxM4MY{<_Agt4zmitW^M!< ziGbSAqbHq7lx0ge0=^E6h}Y0IHMCO^vuA~r+J~#jFN|-4GsC~+(BNUhZJ0*{E?;=y z&~m71-`M4{LzasQAa{a$GCcTMjfEB>4Bw5s8$C-|II#b#v=zFfsug0rSYp7#m;kUS zFyLZxaKeJzgud-C?l`%ij7RU zMHn8uKdx!;{o>UUu1{BN*#B|M8b@{BJzP{!M}Q0sc~;nSWQH&Hoz; z^xB~UJQM){h($`EatoR4KXGPIaaGB|3y1dmBB^&lOnWxcO>zgU+yb)+>Ul^ulPcJ< z^%t^n%x~&x&OBlL()!h@4_X4EDSaGgpT#LMmQd&b@-X39C|g)r43B0vHt`xAZHTB? zva`5X%@L`BhIQ2^=!hrBt8Ksx6?<=7T6e!175RQp7rQ1Q9;H-P5Ow}J-E^))!ZlL! zeXnFrVh?`ybdQ<024U4?zbcFaro|>oNWN$(^AW?>;%m!arCwIOUMY6@jQKpJym@GT z8sdgfuhY&Vkskx+aA=QO->$xi@E?+2>|}BgA%T7f6CthsPV=gz2J;QgFt#;EW7_m- z=}m$Q(w>gadvu|4t=ypPPjQ|A7>W;>q<0_`9kb2LH%b~9r z=b8xw*TyP&No^F9u9cqc4cb>3#6!{v4B!40iK~b}-!Hda%k~}2 zDJ8Kx2CumPxfSViDwO6PYVQ8o4~ARc-PCf#v}VR$wfWPKl*};)Fk(&IZniJk!{UN~ z2q__H*-%R@-)Q+9*AITl4&|>YPI=~rxqTz)foucP8nml#*G~9sxhP1W!^Hho916_^Dl2oWo`vY)aLuwSib7TGb+i+pfiJ-V)po53)>pAomgX zO#;zdr`6$GE)>Kao)o4D)%v(VFBr%q-SCK-<@Oqj)5*tO!2;pcGM z9f^yJi@DZRJ-Dv3r&qwe(?T^Z7qf9%x^a~!Sbo`+NR8f#?8k1;+6F}R-nA@meTuw3mq5#d24$&)fb8f9}n`HvTmT&xac4DLq94eNMKseQ;JxQ`{ zza!bgZhiZX-2{$~AB{-Jwu;0MT8;cLbnSL&e80*0i-D?|3Xgmwifh)lN$5YSZt|Vw z+gqh^;VzFDBysQv%!o-8)+al~9`<`Nc(>UKsrI490THcsvQ|y#}H}g(UM)!JL)ABe1Sgem)7UfjlX0XcXeM&eTrs|M9y1(DT5?A`^iaM_L8QmW&hd*kh&$uc#bfqYdqw33% z((N7f0TCugj1C@qdZ$Lg zw{b%gQk5{YFuVz%y(H2D{cPf)&lrDt`j`{cxe_;MfxKj27Fh?ml3v{aM-djCoxU|C zMl=x!lTc_h@3)3?DhJ_uG0iH%@=eI_)g{zq2{Ef;TE}nTOC&!s(7q&^GC(htg;L4gw=Nd6 zpCT5M9^8JTu4bf&1C$0M0MH1{h_1%rcd(H%Gl00XOSCy&=+YykY`EuLJ=r%X@dXXS z&@9+7IWF6j5bf9ACLe6wi?}iDq^w)&d%<`H35MxsWJV`4%>xZ~=CCJI)r@D{V3&9K z_OX6%fYkNM+VI(h)2j0ktYMr(WPuToP;3wZ`C=?@L?fnS=_pj(LY7!*fPe5~;AD8g zqgDTMsAIqg)J%qnyOPTQ93>m+I9Ju_ZGFESF00y|Q_R>J5oB~%b2==srZ&vmhUN=3 zMuy2ovciVDd`~xLN5lbJRzP|las=Kbpl*?yyQX5h0vUzq0li3cv6%cS#LZT@lT`-T zT<4i6o#vJt6=8u_kt!C44(R(8y##L!QS!cgAUbU7%<1mT!bLjPi3+{@7|| z^rfGCfb+)qFR9aRms=G~?G+ZEle0uo*j&<%nEW&I>17>u#Wk*p@)5;ci*HW2#kv0C z@W_aGk#$(RH`i-{R^F#^vNwK95swi1{HB8XDnCpB!UTc%F#~Yz-1wRMIp;IcvJzWs zIE(R~UKqz=)!Is2@1ylc9DSE3DAX^?Jb$UNth|?7*ekUc{xJ#ng)`4~L{AIM%N*A| z6zWsu;E&MJv;K0>NXovu{dvMl-}2!lkOu-9E~h1$68B)!L`8nOx>0<{#TUn9CHsuU z8le!Ysi#ioFt#8Y2?=ls* zJ+ky&N~$UsY+@um6O~72Z=fh8F^_mXz}0ns5r>}FqiQK*GRiH>c7UTQ(}|`-MZO&p zffydT5aC3Qk(rv+(+3J z$R)`nH$pm)`9T$2mUg6lt%3s3*bZSL`C-?DK|}KZ!aASou6p;`^ua6+C?nvyE(*%# z_!m6r=~}$z^j%@CQTf0PkyPXW#LToS*to_Aoq*pU$1dCGb)sFm94{2DY=vc|M=s|x zuUkk-R&cb%T3WSiNl6HH79OEvt|_4#c+0iA-(iwuSV%cf$%6RY4ggU=Dnev#jk4&B z@<#A(I9+kkZDvt-I#2jA1To&|ez5`TO3?ybtkF9$avcH~@%%ta*>5)xb~UjmL87vJ zr1wlc`_|&KIw_PZw4YFGhdZ6c&^*qw{CdhcrYRB4H^C(@cyC2g7W6JD%9xB;wiO|z zPhzt09mP;&TXuiWn3-3#k@4475fnpti9Ds9TYNqw@ig)-?Z~I{oSk<4I2p6+P(UO9 z@F|S<=&a$gNrS_a72ceFaOF*Fl^#3A1(KZ!7*=8e#iAKpMEovtVD=!x;vwZ6ame8k zuK-KyKJNLg`&3XR)&x%MeK*8WHp;UF%2hz7q<%X#&O zFSK326;tvk*md$08QRvhV`-q+WKS*)U-0`_LBw0Kl#wT{(QLW zM&KBCcxCCJdSYC)eCAjlLg$F@)(@d-ks{QM^bP8iUvMRJr{z-4!rUd_F+F7nBz;a$ zDI`^!{IT}(=<;y`S2|RZ@+v{Tnjfd5U1V#frzX%0gO%gG=Xd26FskFt5N4nld5U=onBX&(!?{qYr)Mik~=Ts znr|torx*z%lb90wE*loku%_il=T1Q;o=AxaRl}X=VR0jw0t&z5I>`eo!Z2a&+*g)j zl5IJ}tueb3%c8B9KF5eF&T~l{gXsbHhnwvuCjcYM+Y)m?Dq;~M+~EVPUQZ0lE7R)AyYm5YV6>)b#d-KR zrS7{dKR3#Q-fL!E)rOKyZzKRFPk#&av)MH@1WYhvbn97?wmOS-2k0D`@rW_Y@;A0= z?<$JV2cN`@IegYztZ#42DN(#@79H-X%_hr$3U3wL&lorcpgj4>c~+{RIQ|h23xK*X zobkkji*>tf_@S>JL+gg>F2<&*0|4#X{inA{OUWoVh{hEpDms3b$FRqjP3v>&5+F5C12ii5BPAZ( zgh5Lc%(HAfDbzXVtko8=Y{`ypKQb+S!L_hnJ2%1KLtp}WtoTid>wJF>53JQ&b^(Zy zZ16h(5eexbxq=x&Mdg!iOn=0sT~mJ!Cd~h3zZzxYJiPLQfS)pzWH&zJ3ZiC}!6EFr zjTL>TDiM)Nsvn8q>*s;EdU*D2vZ040IsL=xiyBL)e(oWQKrFW3!vB8NXQ~Xj#H1+8 z=&BZ)B5fCIVD6SHGOV1J{MjNJe9>Cp$-)pX?izx{Q<+h`&)MtktOt*OYoU%N1%T+k z;Q|SH6EQ`PpjbrgOly}e?!820&+-5@7ALLb zrUKW%yKmp7RmiRjg(Yv#2mD{LKI~U4dva;VPxdLj@nR3JvOC%_GVZs1iB`5Nr`9?e zX>uRD7xen>wIk1b{>iuGJv;X1id{IT=)0euT&>j(X!GE44kH`OUva{o|isNPPlzmrdtDD+%*# z1IStc=xPWfj9UA#(@1+#n2@Y9pdqW4Ff$qyS-3bjApYy5(r)>MLcnb+{^Z+- zE^?#ez}~ZyFu~Rqw~X(g#$Xual3%)VL1D_|(bO&}9lO_NT>>GMJG z*GWL3f5N|VR0_9*O>gKO$rO2#4Z~p}P93q3Zb5qc#4_6kltwjvp5^mEDOz;1xYH74 zIzXX^P}X;%YcA{k4QE4aKq9IlxB1M+&&s}4qx5n;(H+S?D=U>^+Zs(^TVhuO?4BA~ z#q^7KRE(rb`mpeD1f~$8)FBHrWP+J2Dt@L%PGfm450(79@dfA1^%$3Oi?}{Ze4SZv z?#uI~=@f`BW{JRXta02?eMohBUddIl$?{T|Ku9&JyRwa7aeB8JEx6&tZ|HSNS<)BA zX56n+LWqu-&B(GSwORRs5FIsG{!z`5DcPmiaFN`eb^`zy^C1PS*02q^m}dlcuZBgJ zGi~fOpyc>J0b-vFf^49i#*>RKWFP1iQJD@n#+`G<=9i2%jpcwRr@+5{N3hYmTehMt zN3#m&FZ}DpZnJ>fL5qJr?mhp!=RdWGpc$|Rf3g0j_J6|ny!gj1axE#j^={ADaVl18 zlk^|4UL~MVhre6iOwq)`NB_p$hPFC!?a=KL@``fL$tDY@pWuZY@F=Z|g#CaPOuUz7U}4hP=ng(>JM4HNT;P$9l#`)b@Fw$=gdKSt(YMQ8 zaxZ*-05U}lDi04H>ad&#dWyaKzTB56{UYl{&aksv{DDehB&dDF;G|{x>iaFbsj~IZ34PIiv@?8v){owK(!|U9TMT; z6dvox`QMd%sR0?{LsEi>8^(h`>5PXct+r<^jtTe~OT_GriV1(~Pu-&A9@Do5xsn5v zt4AI=x}m3YHM9Oy@`HJ)Bq*JbvHtk<(nGgOP3@p0#kxlG2(&?28MzFXOo`O8&9YB& zvyIPlM*)Sdm1`){d=-pwY%Q`eFGMG`9>KF-)M*Hnm%AbnPrg)NRK$ zQVXN!i)jMhN-bSxZTfAtDdX^qDsXIVA&PmDxe8@v;WX(>>sjxVto)`L@M#htKJ;R4?8evYAtl($Q&hB?reYRmfPRUU z-H(gTi7ORQV5EBar-qQ?AtJbM+UDYKIh*0E%ZbOCDXC&-7Gke$|6xR ztzN_(NXztRB1X~?MHx3tvz$37ExI{RjRS#bh<4Bns!b@A6>M>?i;V^((Lpjh^#(&& zJScalWk&sX+xaTWC#k0N5hIZf*jw&q$d}6+4Lwa1aE&?mVnSQa48P7M3!AR(1rk!2 zMmOMUH5$ZuJUC0``)(eVfCPUOr|HO|tcO|7m!!3i@ySN3-5Y3-g6}qJF@Eus(qbve zrZmZrAYJ**sV%#F_UwH(7pbX9$&G%s;sqI<%a=2bj90f~LpCx@qH7w7{IO)4_Jenn zkNVhmu1%7jeG~K&)d&e6!At4_^h_C90|pQ`r{WG4jirL$_>Bs>T}nwO5FshvQsh-< z#4UwK0um;x+gc0hM^Jd%*+R)$du%Wa2N+_L7hodck)Idk=REXNP=@CNb&iZ{-klkn zv*r_(?RQf2E_`rVF8I^|Bk?35;f9Rxn9p)9evlSA@u0pg>vN`bu@6ExI5){`Yx3|P zf`u0bWjSzm5I%%)d6H31_xaSGPI1d_yG|vi(+k$wI*w&6$iq1ak4Cdo(I>B!S73L7 zu*GtIrXLedTyLPkZDeOq1R_9BrhoZBUnnA-*4=4#ycs1M%k!U^0sn5x)vpvYK0^mp zgGW#3f3k0wLTjczEi4<9Lo~x$a#G%MeAF4F0m2$F&D?DX{D+-I(e~G(9%9tu=&mAc zloIq2!qnFo7%0emnc8M{=-AVfdg<}c-r6uP&NKnhI}sMYi&{G&S}63aygZ`w2~gO4 z0)U)e-Jaul+Vx2dqJsN1>NXnMXn^kxRxE$=_3(4SG|i4DYOUu(70FM7Zu4mH_v^VJ z%rp4LGk>IZM=HU7INkY3?J1^^cxJcokv9FkEiHN5fh9$L>Y-=$cFr5A(rr95Oer3( zT+*EgwPu!|&)85Urr+m}g8^M@isksPaQ1xkJJi1>|GMhsS3(RCqhODbBWtF|({K@ww z+qrTv%^zaJq8k{w1lCN{-~8hUTy&B8FfR?KlqIaxj>%}owo z#!-3GX1j&kmVQMDtcu1O$p$f@fpwj14WHPMBVgrA`Qns9qzf96HzaPZ=WGG(;H<^7`qtc# z6T5T;3IQd|CbI(j6{Jc#*@%llWbau z>zFYIt*(n9?flg*26Eut?q0QswwW;enu=IBSKjCTyLY}x1H?vc?*dbgD95F?S>8pC zv-#Y;mFo}Qp!2-l;<6nI(Wb?biK=PcN~>bbbA&JOM_4G9%GpZft9LZPNw zUV1gPwiX~Eef>c9*8|G-S}swJlq5%$SqetEWdG--%{3$Qt$rN~(}h?B6kL{lPcHvy zTa`o>qS-txIb@A-OTwPCY@AaAcjOoU)1ti4PTOPi>MNt#au2190LXJm9*PxzG9 zfLDrQom*Tad1$Z@G8;t7+BKWw4uv^YkWXpQld+5?O?PV?Nin=oa`g5K)cOc(F938K zwBpn#+0CNw_PJTO*Rb1lgRJY|D!o80Xf3k60Tyv2ZT(8I!mvcHcHIqCVGwm@-$`xb ztuSMyP!9N=mK@f2_;jWaERqflq}IQ7aHEjQC}yFxUM~0BS}RP1Y{2k2G+h8vd2OiK zy{5~YA=Jn0^+tLs;0<_ia~`Zau7&q|R0?~<@py{KyaYlshA9TaAr+az=o61G!^a#o z&{dd`>$WpKBQ_kkn-U%04*l>zqYKJO3^ObL_p{Y(4F>AO`BZDg@M>-Korq?^i`p8#8BKM!0dL7KBQ%a81;LT7E&P%GJ`PZ2``B_I1Ag5?l@vBit`I%b`z|EWSf`gyKXiAmU>V{WN71_)i zF(l)kO?33+-3Vp%n@AB?tyy;D+e9i>6mmWbA5RN|M%TTA`a25y4NyL$%ESP4irqnM zTpKCAbM6$vX*6-jxyk{93<49;aIZ;qDo)t&64fRs`O3AyhY`NRiLrj&rgG(H@i-+) z8QKMA%2a)IH;DDfSSjPwfHQx-f<&bjYpXCcLI@E^ofiTBxu_UsUocPyuM{bZUN`)4 z3b630m-Wm5!5eFPtg^e2vY&yYRRChoZtf%04>=B#?R@XALJB<$DD=_MH9GR?;A>ZA zk2yD#OeiIA~#cYv;MIJmzyT4&XMLe~MKz zUSyvr!^%T8gU>&SI%|)Iw9NM+0HgJp*YzEbR90mzGKx)6o^1@vV3!u1O@A;jQZ4Sb zt-lrilSVGMT-aJE$=vg@`CJBig(m|3W311&E5<@F`ip}EY4l076&j2Pj^#NGDVH+L zl%15pf{k}(LjxU2iuQg{$^8EkIwc1U-`g{3rZ~8u$V;`oE{%|n& zY{nM+am+%`t;VxM_X|J58G3L2QNcp~ zt#ph(e=Z6(dUG%SJ^8N=5B_!sU-2F7d%4S2fq%QNnXlsi65-fC5&kyBe;|PVhVU0~ zGoQllO#L<1<-dS~uJQjvgntG2yNrAV-qZIUL>AU#w{bZfA3WV06nw&zO{|fS`;t|Q zh;F==W59R7_aA&Fy3qA+p~lnL7}Wm_vAHt%p0XQAbWLtV_pgL3x9#(v&hKVqF^3jw zGGI6*APlslFPZe<6UdP3e8S#jP_YDtpq?oR&Nq$dK7Tk%VZt{z zlra8P`3AeU1-EF=$i+stZK9_Qm!yNRR@yn=XKPPw`M)+3;TDznjw%Z4EmGI=?-v}X z$hGWp^e!w%-fY+ig10Nm_)w+?C3@9%U8R9_YuO11B+(?Gp&9D1Kehen#kVgEOMQB& z4MMu{d9WvYSpgakD)J~J?(S;Rytqs|P(TOLdQxmjQ$!4Pa&gOUm4wnrk*f-A+Qu+j zER_TlMo0Y9ezSA0HnGo9_T=Bl6biD)GhFj*Z22ZMzoLHgUfc&Mm^f{3DNO&BGnley zF$8bQ2^39Ra*3%O^JA8)glwK*BW`S+_gak~)IuN?I$k}+Nv$M)^NS)!f2z%^P;iNh zI7xRyAOI9{#}nBr{c(E-vd4;O(eG~d)e_^p-WxG#g^Bv7$S{Q*S;VeR^{y+Z`|~RT zuYmHaeEE*inVO_e?h0d|^%7&dgJ;JdA3Nfqtw&(CI=NN04EL^Am?p@gWOEerFo{@; zuN}UjZ1&fy!6jL6_r8vO&p6#1K5Gr}!GGFWavL{IzY^IUQqFGF`=|Iz#2zcSDP_(s5eiRkrW}_u^snhR**w9>hXPDB&eT4Hav{9wZuC%PaU4QCe8gOUk*wCDHBix>@*(5Ed)n5{sNg@{0htnN$ z?EoSl*-Dg(IddAk6$D(hI@i6&$4WnI(?66oCxQrBHN_Z9V7A{~H6aNc$#; zmw_D3)_yt$BH#8^@0sdy)nW)4Q~(F^!@e*$q!QU zFEOn3_&cZh6O%gfAgZq;2o|Il>?`EU485a4#=P#6yIbaxslY$0(muFlVXB5*IcO~2 z3(%FNS;)9>j|$s$FiJ3)f{f6WxN?vNne zB~i>6O=IBmDFjxl;XEgBRC?Nm$eW#2cev_gbiHzkgl7ff_A#ucrMOPdx*_xP!U{NTt>v~^4LG)yM)$+)6dkSenTsCTppmNVGelIJW z-e@pC51I$j(z+kufWfjQoJ)=a6p&`v#w}Aco?7of7vNB@;V3^is@fM^X^gI; z{a_Z?Se-f4eVRggwh_S73N*71m5>Q6z@|q!RK^dv;_!h4B6@3$aV2FpYEIb!V#-CC ze3&tU-xCfsNHRd!Fzm@>J^qqo0vswBWBP#2P!@gYs2-hQ8r&Hth_T_SKdBJ>($RSHHx@q2)!_J&w+vUUA{q1S$ zQAYMV3JTtLIE`L~!FdDF<^o#JFQ4$iKLqSU(ikEyeaDVkQZNehi(`s~chOsQhFg=m zEME=GvOWw_sq~B)s&E>oZtPhe;O|TLg6H*=ee1 zzR#BOAos$c9SAEh1hBVNWWBIPtZiYJ5G_&dIZYm_d2UZ1G~SU1k*3iydS=fSBp!{I zcISSZIAy%6X`;Z~@#Uhbt4aMu=2hD1Cep4|8pdRxzd1U*eM_ADndXPV-meDPM|c(A zZLqI2#WodkN!c9Lr1{4xyORV^+o$1|fkG4x{}1-w1FETP?HiAU8AVYMB2pbg5kix0 zC{{vmAqkXP;f3@_SUMZ<1=Omp>4{Ma+x}?c~W@nWZJ|es7fL9*p+_3eO2rTZE99!HVmNl@V-WQ+J z%3i#Yt7V6^VthEOgM7eHlx2eO%#4h+?TX?($5_r!40&=N9xGTK=sX}Vw1|0pHHqpw zpu;1ZD(=ShTUz2Y8JZ=QG#dKgsB^jY6|Nk-ycavP*mN+(Atbs3ESXS_ zDwr@sxKRAGO+!DLRW=8QGzTX(CpL=;4Gu1yn71C5<6Jt{Toj3_@NC3)w>vr|ib+-_ z>k5$uTSOO2X&*Dw9iQ7`$^A0s9Y;C)NP%z<-x}oOz5Pkm-ES`4%pEdJ%MFr6ztauE zq^6l=X^@??M?x)RhWx!IvmC7~)fWj!zD+X`9}M&%pvDaZIwC!0{u1^pyDGl}F6T%L zrjsX^skcuV3(dTV%t#G;VOcI)N0`WM^HGgdI1Kp@n-3 zFt^YpK=9uQZuSG`doJz}wvT^sSv}xsvF&E6b$V2B*UdD)_w1hk#C-#>J`U{q?D0u2 z4)JF4ljh=S)%U}*mmO6fM9qp9ogxN@l7kb;S`H2&5&^Cs`@F)W?cNQ}q>`fjzk)w^ zpjMB7KQEzIlL8a2opOsD*X5q_hklyTzhRf$;+o;PjFT`}!~Y|ylS&VYBqRmO^lkg@gnGF;#t&@;Gxq_vcoJ5*^lmiY}t zhMpAdJ17!N#fX(NpND4ViAyfiUI%~NJf*RCVsN3TQdHB!&rzf=K{*;VpkZh_db2>r z^Dy~^nYOBc$zX&~<QlQ$%9QnY$B%U(44^K~aM4X{*D z7=h4zjy_#9aU*VNmNLuT5Md2rHDyXQCP8e@ufgfcW_C#*m&1In6jff}zupZo7iBR$ zRk-M%ntIUi)tqf#bHhl4x%owthO{M5mt@X>qF7-iQ#WaCYMkAifwDdK*QEB%*^UP% z{Lt7TKjQrx6q~$?Ve1rkJpPOf5wWpsAB9BTUej@-D{5BSp!zDkjPy#4Ig_{^8>xdx!tTXv5p1#14h7h|&4V$$fQ?eERFgjC576g}*m4adza@_X#LQ$Y!!xy-mfc z3b1iCKB$2A_4x=Hv988obwAJaGo&QT)p(>Th=_LqEF>cm+y&Lat0PSi?s6JX+-Ec&(l~og zNFX(&81?>rf8$15_M$gpcsO8mX3R{}<>IV$$zT^WGgKqQDu~;j(=?jYhVN&c)Ih__QXV{Y8VGk2O@YHXf~2huqW?wD&+PFTjEa&oleiPoHu+s zPMW9D(c|m5(>b7D&|lA->2Y4t%Sqlze~G@R2R0G@?tl7whZBSUYM(f`<8bniePVAi z-`yiQpjQrG4r4g0SPPqTtk%T6v+>@k&@^TYPMCN$ZdzX(oeyaN#B%L1{g*xaJia_GlM(DXckq40<9HoG1m9i6nc z|2f8V@@31RB3hG#?~I|FYa{WP{22jH8_FayQA$Fm%%%vmPxME7{$09XA?v~Sd0GL$ zrGdTwPnA1ufO1DTZF6xo3ahC2L>+Zk$0{-5iTCL&CAI~Pk_%^o8;L~Y0VSGo~ra%GffbOZ23Xt@Bs z=y#wo$M2}U2IUfen-xUP@2IBCT{!5mXK6>J?Lw2ukz z3VFvu!$%g|v1b&@B}48%Ujpd%Ld* zexbU*82K9C$sD%|$x@qWUpqf*dgzj&>7k2kdtWl(B=z=~5=BAQ5fdq`Ns4#4k6i80 z`36#5$rd~;fA>36K<@eDw~aovjY75k`~5ix1l^rh(+l`}>I*+QN~V2B6_IXlgXbR)a)1FQ1petnt3Q!fr0B48Iq}=dyeHJ;CqM zBQ#FUo*^f{*-hS_W4Nr!nUJ1L_Ia?I1iuC!CT7KzpvnQekd1Q8~E(lVqmn=E0hXrJ$+~{a&f} zq>4NKM`Yx5-(3MoSzX{r$lCm60_pY*wEyg$|9AO+^l6+n=xa&-20Ee(N#Qy~$Tt-> zo)Y(7oY5A#Ao-eXnTv{#N=RWx9mV2mZ;v@~&tgTCV ze=#FOj)dLYp)d@xi#9j2LpEnzRn?DwhHwogCe_4Ff=;^cexv{Xcp!FXRUD)IKV22a zf_Q>1YaNp@s?#8cPbt&&6_8@eDpH*$ zM}IipFf`oTFcvX`3m258X@25BoTV``~jizzVvafbb2~ixKZ1 zBa5T#ozVabhKFna$g;=si{qT-no7x+q3#_}|LC63k+Pm-+4@nCsb`wav?_Uj%K;qRaB z6G21Y9e?Pmi6{SNdHO?*0p7-yv+7Nj0+y#o-?8|e8a=RoW9P#S*awq2*zbdOpDGO< z78*yKk5w`rfym@)QHU5EJPqjlIPupT3Lr{Kx zO-1}Y&cn_=X>PeusP+)E+WX38gH15P^9$DE3)QN2Cf46TFZjX*tknZs*$AHqE?J$4 z?AKoI^$BY0sG>KR#$3%4+`ZlzgU2_!(}K| zL14^tA&CI;lWp{X;W~M^Am&SA(Kiq?{`Iqgnp7&*qr6L!{bY`tBL)Jc%26lxbwUOo z_I8=r;Kvox%3(%o3jzWty0Yws`Sid;r#8gc83*hj-B;&c9=1BPuL%$Vd=U81gLGQA zB*bcH*bUA3a9M2eFuO<*LkFNvBjq^iH_+*}h2)n*LJkUNkQQb-vx{;6Bsz`+W zfNMhKA^KSM&p&$%YL2ER!p~bWC?N&=RLErUxSIyc1+kS%$I&A*r*wZZ z4yF3I%b13eVp8c+f%Gd~l#&_+v~QH;L}771$w>lL6ORu!5ouSoMXvPL6BOr(Fs9n9 z^kh1&qI;2Bw58bnATI=~#E&w~yB!)Fk`+bty4Y(}qQBw&G_qp&;>YZXD1TqtdVaVE z^Gz~cS(}!WrCw-q5Mg#>_?++!D5qahlg_g`YEOol7!P#{)kExX>2UDy#>;Z|tY(zq3c+}8;0oks#Hy8I zRrb$`tp#i|&c}u(OVx%3Qzk^NXTIsWhB42X?FlgZI3-zV=@GtxE@{Fht&wyaH)Vy* z9(&0Eb`!{#St(s(9_BTjg=Ysa`l9YfI(vHx!_qbd&?4FS1*T_wN1T=11?Mz*=@zAUL?pKLFx$M_aZPu3nmiHnPDY~KG`LADF)bn5 z<81cNVBP$LD@eEO(knnaqu-}@H$GlA1T05xl4^+uPrc^O>Lq;^Krg$?AQn*G*DzJ4 z8zT?j<2<_;{gOFt8b`q`{P9n04aR6~uybv+FUH1Y9n5S8DEP}v6s#x#vmtFnWm0q0 z@Egc~ zm%qV?j3*{LDY9q=iUs) zyFbL9JLe!l)YIMi0r)mM=X*tWR*3w}PRZN=#$Mv)e<=K<{|Z1a{6YBH^oDcxvdymW zlToF?r;9{OZ%boQ_K8aJ&1Ag5NSVZvqJ#I52epGL9Yy7PyVG6t(~90j*pE?B^m@Yq znBTdk#QVjZ;x2>bX*SQp4JSK7j1pl;;@Rxb&}6u>Uar_IV3}_D@qjKipEiI?eH{Zx zWaes6@XyDN+%M1UL@t_-80Qe9G?|o4Mh03=$jBXbEwvSDb1d<+vJ+FVFOs$6bWJ{l zMcuSleg5v@^I8qzHNZg>uub-fbz~4|bzDsSfOF_fPxncJT<&%41LK`0(SSkDw89qP z;3)IJ!D)bUd2v6&%?Oql~~ZWZb>! z(N>T1u@3gs=rz|~c!S_L^3=Yt@|Na@(Pl3UeUcolHw+!~jWYe*o@HFQrdp`4Qib>Q z8=L+Hiea7giQUl19Bh9|DK{5P(MI8e1oRN_TU4G z2YmynG|!(pk<5{7FyUr|OD*=@YZe}xS&bDcy&RYFT}JL1pwqBTmyA4 zld1=6CO9!3Wh2=X!EvW}eA4w76=roXq^Q-+1?QFN1MbA6fd%KBijw%`NgBE^qXe&- zW`HS|8do28+LE-;9rd&wy>$;eQSqK#<6ykl`t-YjJ)w_pWf+TF>tWc;wYF}WaD z7+mp-+SmXY{y^-u*x9muty@_R^z$u_)wCA4bWcw=g}Fd8T$2>;@fmUk*2-<`ZkCcZ zR9#hJ?wA`FO@uaBYW3Rp9Ja>@0`_wcJ8;*4@#ApxOLe5e>3iglJZ1LC#KTt!qF^oQ zS;c471mS*Z*C=+tQj2Skk)n=n=J-g;_w@4VyNtQS2fO0n&glPo<3I9*^kd_X1~3kQ zjeiZ}Hl}X=R^+V?ko+?R-<>tjPtPfVV{z~i68)^Y8kzj8oa#)#Fb3fQ1FqV>jdC-Y z&#H1!uMl198M~fgxaUczc9%0X`F(@HOzD8`Ez-%qK{?*NW}Ki{qD-i*@6QUSNDJK3 z2K*>v2`nzTQtx+JpGzM-@o9D$%nSN|l%BEwn@6w!G*7we7i3na1IeMZ-6kG&9s zmZ=oyZsuy8zH&1>gVK=s$#GpsFvR}7T@4`JP?zKK`mmK?!W2W@KyBKclPwVtiP9D> zDiAm$oLHl)qUp5WI2`%2WKC#sWGY#nxMX&23gwDGJ{w%%%_9u-X)xr1^iwt0GhP?n3h_qzeu)C&#iasrYumsoEhL7dK$0N16Rb=0L zH1SUOhFitRTA2{aRi>ka+l-` zk1-g{_y#)U*y@2lXq6G3qk)PG4jvEq23oxHz7ZzJ6pM)-7Mz(QQPL@81(9mJ1Bac$ zO$#e8fWa^&s6oALP7TJz_$LYT{+vjqC6xjJ0m%*M3dDM*gg@7#(XoPpKo>o_hK8L7 zAF6zEBe%d&DV{wQPrvEUn&A+k!bcvI%umhx6e|=kjS|g}k*O3%GLU`3xowyl@kz}? z54zRphPdo-3~zj29r+EIS+8cIpupq?X*##U1QL@PDc?LxToJ)r4UwL(q4C0FSZu(1rUtQV1bo%TtzGVnHVhZwRH#-&JoNH(vaBjdGq(jOKn*qQki6^vsJGX>&RW!ihGTDF{hm^j4w7qF|$NG98$ zuQ6N4I(oH)pOlBtYV(g{aw1`^G&0y-Q9L^?AD(4WE(7Cuf~8JwX%TyoFWU&He2!@u zo<4g*yDNr(K%l`&41$n14NVFotytHFpwy?|#c0D{^aqeVO z16S~78VbE^yh_)CibLO^JxO;C^fs`hJB0RG@^X^gl{hQgi2&rlnCXz0nbxNO+h6mW zn-qk~G3Ruj>r|wO;*(W-YXS*1;1|s4!oO}TjzmOEh)LB>Tx07l;1p$)^DmR{k8U-5 z$SL%MaMi8|xlSFYBx1^TIHazs5;k99x#(nW^dKaFDA0B<~ik4b~Np18|DA|~U>mcLe5V=GZ%Lh?Ems<%hK z;8x-j?b>oXw_Q!s>0`e#7|`l>G2*9bCr<5v_~f0N?%PE+bMBw~qJi5%JT>^@q}!VX z#hz2sDcOVqo)(YP`^Om&U(WX!erZuu19AUNCz3z+P>0-PQMv6UIiHF1L+#b!1$`Cm zCN9^x^=bffkk?C{I}zKeqiOj>OY?L82gx%i&u8WgX!bxwvpN`m;P6?43|t_f0e zM#&_%YBqW-IVzPrgcTGi?w@C>Arp(2oKHrQbD>;0So+BkiR_T1kEVHvlPi)MY`jEf z1Q@{<4FTX{Ze{?h{^}LjX8*JT54r`8qe_yi8p_%CL0ci2CsfH^k{N-(72kR0%;2%h zwTwL~wr6xRL5C~;+@Qav?ALsdIl>cu?lt#n{r zdx`&wu(hQmx_feD;5O|TfGsnzNh$Y2c(LZ~fqXWY(-p?>K5Xr)eCGdEy6U~^=2jDj z`HcykaW7l8Sc>P>w<~K-3wsCoeIJffT>#@0Lz^86m$`ZF=v~X7%*DkGmYz4z=SE)% z{$IZmi>*#G{RSeS+i?!I`!LUT zl!*VV4;%gUtNZs<2hp+JKFrQ*^4ZuTbKEj+#fb|yw-6RHX`MrDZgEn%Sjo$u#`k-% zW(;`KApVN$(LlRQzKW~=gRb-rp9=bq%(6uQv+TPdQ1dGroK1c;vaL_JVS3JH4W(}? zu}_@s2`RP@u}eVQd~vwS{C1`VS`{Ei_33@j5Ve!RdJV;P_+smBRu`{Naeioq`eTys zch0zWie35xgV^5~?B3xY41lw321>s%P(uGT0|fjJchE({fhv?QxU$vSC(LS{2n2x~ za(I-sJ;$#4KDqjS831*j--q`z-0>m*KA7$LknfCffDd`Vyz`EFVSke2yX|$mOoaaS za=jp15Cr^@F7EV#KU{!!{sWMmb@JS4WTL$+H zM5iUTdql4aEWhf%P%2K6YB0z|Ti_=@DO3lZdr|F>T<}=Z8h=Jf^0CTCRA2f0q0Jp4 zUP9dDOisqFpFT7v-M{NBO?oAgjSSQ5Z1Gomi2&Ca>9X%2R@5gSj)5Q|s}P8osa^LyVF;g%$G)c;aaF z4J0+20y^pGkn>%M?3?mKEf({`AE4IcH%CX4wekzQj*jxfJN^Kd&Y1ZAPLQ4r+PmF5 zo^Bt2-!D7I-NO%+=09cljeJH={8z2SPw_S5Ua>$VOE*cZ(^nh#^ksWn0CCNHW}qcY zAf;0YWUS@y8SLJV!}7JBdGFg;T#$6;iFOE|!`Be#j-5-ABi*kdC!gSh0c*yaKAfZM5;5 zjn-Yz?w7Vp{znV<2K-ZZe;06ZPmB3~-`Xh_#Qn-T>)rb=eCtU}K-Zq?y(2N!le|kw zn4^CKwP$~|s?JQq8?7HOsZ$G|n&vA9fJ@^OgH_Tk0zA8rVwd$lhb2cm%gZQnSio(x zlgnsRIjss1wc%5;rhW95+@-Lh;-dcfTm|z%>j7;6Yx}Nw9u|El#P*l069cXaJ{aPG zg3|kh_7(O5ONzzLVwZKX@<9{Vmp&2Zc24W??pjfA8@AV@Z4TKU8WC8JJSUQo$or9* zNfIg5U!YXE!Wt*c)>&QFl=!;DW6h*+fNYXWRcSKOBF~IWr4hggB*9aRj_h8ysz~6k zX}Udp5Gzn-Vgz}4<%%wsR$R9XqD7d%>=Nz7cITX-L$*Tn!ors7t)dq1TtDrK1Frjp zP92i&fMbe-7Xa9ExuOQkC8P~Gt5nssV#IEV&4|pK8uCa6LE=mt4>Y$~_I&*|XS91g zwAIX&QlhKNTD*3IMC`m*0EN*gV-y0K#VfLJ6lw41b{x??5}&WM9EEyRyljdvQUHV>|O$oAz|n$MA&Moy_r&Ey8=csGUy=ctgyq^g<6?dl3E#Rg^aOCx@r zDvk$JGr|$GVFJ0MD<6CN^*z;wly@_=+ZX627{xrzUSn`&!T- z`d4$YL$0CSr7ABrho4grY=V^5w#?2OvPXhG;CxFfGnC!d=MT$}KY8C8s=$3NJrI)A z(n|Ak80}ie+hxRPlo3~6=9a&@7xGRxc_S*;dzlXA?v{;ADOMLX)gVd>IYqtZhzpbo zm>j8IS*HJ-<#_>TBFz>*$XD6_4Ft+4ELfN|VKH#GCvGb1=&nK&AGj?>mMl~$TtL_Y zb~u?8UHn#N0H`y8jWHprEwk0qCj(VqkNzL zwNvd8uU693KxdZ*4SjvKBaK#ly!>OYBT~`3i%xpGbQ`dF2c5KZ9(Q{Oo%FJM<#XLH z=erNekG{^@j_KeX)p%2n+X!`Bbk&`Wv3d5!gwdHOd6Q_ZH&V39@?)Lo8cj3M2gU_5CG6{Eu;*+68ogVL-r zYzNJ_`MgK^DI?@btPD#M8qIuYvIL!9SZ-yXun(~Ui-r_Gj-KbuUe-O4j06vh@4gZtL<$itBYSfUka4gVI(>~(Y;{_EJ@2D$f zE|uT;fW7c|85?tMIu@O75!gfoA09jnL=*(W^kN1%#a2=FAGwSm3w(5xJ2!eI6j(j7QU!Y@*dVE=tiHl zJv(O_3PT6ulFhF;%+vRsiM*~VQmDz1o@dxCO&E%=93~-PY*Dd_fUo3-Cdn zhS$YdTbGC%ndhftr-hku;T;PxlcoGPkqn#x>CSp+#8lIQmyo0eXX|+%d*G0Hj3|N%1;}+sMtVGykjD z(>|heo$aYsm&hOvj!^rNXx2zdYF2nxNs5VZBs@D@?i!%!2(wD^&5{nyE{CJ^LP^c! z!2DT7^F!_(eP~rxwLuFr7ANjGB_aO$+f2;J!&;PBp^nF$-WMy3u})_VW=f_exI2$a zo@2&4XaGV{hyX`fhZn4a4OzO;T8*ouy^EkxOKrS7W4e>R_FjTJ`R6}F=u4TkycF&i zAQvbdD0A{s;;%G;I{`?yAwp2dJw8ihZM;J^gG;*yS+J|_S zipz?E&^$P0WR$qMKZ>sKqkOeZso5D=G1rzrjMJ7n+X0Bb|H32X=J-#Hwq%LyU@~u@M35xUF~OG__EVq(R$=dZxEMs;JVb5J_I#nM?$+SLVv+%o)yVaEM{lV7$&4xW!N zlU)Wk_y)>jta@-t(@aU4rJg0qKZ%(STg-OOG%Lk-My=c|JvS)+#1*hK>mth91;Aec zL~Z40G^Sf5%M58B$xzm!enr#B-SS1qK0A{!0j-Lc?>H*7cnjitX{^^&$X2_H(p zPB=nxoWk>L6!YxMR8qx|u|jy~{3Gl*vWv6W+(=Rh8In}xIvX!EGx%m=LT{LW!4D^a zU4NTxC!C$%!4m)kU*=bPzid^IH$#67ApwJN&dMN|VKAK7Q_{if<=Le2+&Zhp79Lqy zs%BfsybWJ*Z}&Sr{emQ5rAWdpo?MRYD1ZLK#x;@Zo5D3kMbIA7;i4G|gN|K=_|{8K z{`Rfc0y|UHB2`{cH|Ge;TB#GBvRWIJJ`}5*K*2Qk=P{o!s)t2-rL_8ii1Y5stQaP z2#)OBbU|pEg9v6524ZKSd3s75YQ1Ptir2y_Qp$M>Po z2&(0Zs#8U~`X#vVEPqg3L?kN?n(EmaNT*Fsuh+ywO%~d-tgONpt%DmgnJeN$vy-i~ ziFKJ6Mlc%VO^&qA0PX)_mb(4AfA{i_Os%&4xe`00$f&7vh8FlS3sQ`&>3{cYW|$-(g)lji1rt+bmO z8_-lrB02eH9*ztxr;%E!N{}^02$5&~?Kg`{gcFWSJ1TliHCKQ!Vy|%t15pC<5A+cA zb=@Wqc+6XZ9VJs+3xGu$6;8a}bg1rvfqUh7(`XEIr5y7lItE!=p;ELiJPPKPw%28- zKhm>TsVg5Dt5{=g`Z1W3lObPh?XaWcmDwaXRBPj6n1R5;8yN)!{1p>mw5yH1BczPh zful|!yGV;J_IaM~HixAh!;8ZF3B_ugY!?{A(K^g%msn?1CxrP;sWEkcv6)?~NGm1V z5fvh0%CgCHfw9lY^BUr8+-UY|!jjgt4lO788KfCsW@&HF6;?+-T^~`EH9{Lr3~vgt zVfGXNVyc$tEBP*xa+7bpwH6`FO*Ou#Hw>*Lur#ZJXm@u$@ZTSv?p*BQn0^!Yxg=6; z;KE_R@2A7}^nWbx0b^%zFj%a>Qm($LY)Zl)6uT-e?-4JF2HVdP40F{_dp3rTBuB3Z zT?F=kEG}mkdy_lrZZRUa z)x_jDPdWdlcI-Q~+THel6V+*+{PiDv|9m%L7tei{xQ@JwR0u$=2*};0bDL>0UXK^z zi;C;H#(W_|X{y4`LYf+h5l*Jl$auhw4z%CxuY^Em-$5b%Aq1kB{X+<}yD{0H;Pejp z4WwJtucSV44m9WQY}Q~tGcn5dkkZ`Su@_n#sRT0~$#S}Y+aqv8`_0o?&ABsGH($DC ztg(z;{>dXU>edZ;{ZApwT+-Y^e##q40v z=S(br;-oyraU{AX)u)N+XAKL4(&R6)gg-M%|5K*FsMFu#^mnTC_ZpWzcH&6l6ML31 zQ_@&keD+ixBn1?uOz&NH6-N8W#qimHD)`!hLvJ94PR0>Gp@FqD)a3i4Ij$-^HZ2aN zYHBU$JMXr8V)x;#924mN6Nyt@y=wQ#<9DA`^F>E~fp@#_=iKhAIlZSSI$@Xnt?w@| z;HSUG3i8iY;8goFr~mMFe~VMdpIZ0lDygf_gu4QPSM<+_OQu{_;w2Uqa^cN{*CR1F zQg#BXSUsX59Vb&YNVm9r;;}FnMQ?S=a#r{9!FcwvKla^wN$G#9H~rmC@Xx*XFFNLb z%IYsZgul~$|NI^NMVBrqxrYL-!`#+Oiq1V(H+Hl3qQ&jLz4FY>-Z=XjdG5hEh zy<(=`X5ZQB;@-7wZ*}XKK|k|*KXDP72wHzZoau`>coNv)7eglUS%IK?g$*Z~`c-+m z@`!Er%orac&%*_{;)yo8BbN>qK;TD%*%%*2*Ggyc@^t*d_{T5*|1Ov>*SYcaj^U4H-}>z-P5Fj}z8JqSa%Xz&o(Jwt;PO=q z;SF*d))q#JSuI^XuA6MPDd=NIa*Eww~ zWq+fxg85Xhbg^@uABwpxKaIJH7ttKom()6Qr6%K9S6{CxgA6s^2pA8-9GK9!JV~c> zRC;3Ug-yUI!F5O>@r_e)TlfsEMew?fa4eDEV5#W|`#E}lN@w4KBoe7DKkQhjy7#Tq zK7XR+C$$kW&h^ofkA$v6jNrUzw1aQH?DbTYhE`L+B+p3%H2^ax7bWKxKZ0S=v~a9S zV)nw;QRVpS{fi70JxESKBoM^Vwz~EK`woEf+7$bUmYGjhF6{0E(Yv;l2`b02)vbN4~d_m|u zy=KDREZ;>BPA&-QJG3bstN-w0 zA@4Jg4g+IH~>V_3Cl`1eCJo2?vMWzmJvdbcv(ExF95^|p4?(m zYV5mN(xS@^#OsV(V=lR2A`GVRa=$knSxNn<{SD-n_hJ7XjPsn!T&3ExMeCT{Xp%w6 zw5~%crC2jSTjw<=6^x$3L7-kQ7rCyRGg-iq&XmZQii1LPR*hwo*y47;o%`VwN*}gp z;^>g#{|!{KG51Np6e@U1b3e*eI8qw(;)T(v3>QBW3=+TNJ=HTSaa|X6qPzf#)g==#XGA4_i zwtX5@P;){u*)BcHDuLH5wy_N7WbQ09pCI)D(4mg34_jO>t%;%15v;+95HSGx&V42C z!W;kj^X*+0ISIU2G75h$Rv{|!1sd*ZSgw*OS@|y6*ZSyzpPw!kdKhh;!xz7o9fME| zpnA{snv+gk=&J+FEx@qY#0E`uhx`qN(sBNho>3<@X!*4Uo#N0WLaI|e5J-4YtsFh6 zbCGIL(rO03UNQ=WsC1d$QqJ^N0$V(<)GWniveE2yZ$?(UT70zRs*5h{jjA`pQEc}q zMp`DHK|^5Sb*a-e%CzZ|lhO%StO^%wQfHB1vha)f+c_nTb6HAV-3@zFAxbB6&6z(H zwub$pO58WdH@HYF9m8^pxZOmX=B^TpSO?Ci74>#&#HWWWV*xJ=g+5#+eLPBd-Ll=f z5Hqs8KJQplJb+F$HcpmMlwNdj^k9GPj5aeNVt5`Y8uAp)DMhC|TMU0YYKNcJ)wa+E z??vb2s7R`i%fZ>XKtvqd+mo={b1|WuDqTGp)FdI&+{{(VYi8P1<8&!Bm{QC0=-f-t z&VHN#e-k@X`6?X;XA81OUA7FKlVYoXbL?5osRIu#QN^rGH;TjHu8C#JI%xfFbRJ#) z!nD-d>2@@wq`zCr3@y?nb*^=YR2A$@IUXoZRZ&&aOp-5tuM`|yZf*nb(DG5e!c_bo zdAXN>2G3v6yfCY)dL}*QmmU*ga;mx=AR&=4#oD8he5#OQ8eR+Pgp#9bzz19JaQZHq zA2(BEVII>lC7&!y)MOyEKNQxR=6hIM^CC34?GVRRH}_}yh~aq~M?Pnw*l}dOIVC8c zrQ4i_RWTRJ)l_L};x)u4q20;l*%eW@&&I8|9^$y+NYsDtci8#sWmp%zIZm0rdaMu3 z3`X3{!Z3&+o38tNq!ZF*xVB;$%a9x;@^hL@yl;YJX;f@;d_mHRE$7Duyea2=r6@^V z>YAZ`CXD$cK~kB96U*>e_{4PJhgZe#H@YCuPa1blKAb&M6tf&w6Ul!e3=T-rH9Z?G z)N}MvynUO!zW^t_%>GB`cP*Ty3@-;S!Zc zc`Z!!_@sX0js5jB%bQ_+j|-k~#uAj`B%l+|^J}hfi#mgYq_LNKu`RWdVp5c@TF=KL znyU8cctNPe5sSTQ)GkO101p?av$3~Hb?tM+3F?1 z4o%dC#0MBgRNHX0HrjAHB(DT5!9%q|Dr?92Om0%b#NRre<1mh!pFJM(h+lzgN;B3T z4k)rH!hxMB2QeohG0-@haGuQ@S6!u&TFV*m05~NP%*gH5b;+gdC0y}r1E-*gBn2_( z!P}9H2Cyoy;#`+{pVbh$Tmo>#vxj*4g*~tNEZw&F)vy=zL*xI)#|n}?j?3zD&OfA? zPS;Hxw>*(_jMubE3NR5>=b&#(72-MrAfO`}GmhtZPi6R}*KudPuv*P4dh8l=7sT}p zwDjxs)c4I79*^4vw5v`$x+783bx_gGllToZimiQ|t{CYIgyyK|`v#Iwdzo3z(Km^f z*EM%I|H=l>4}j0l+THn?P5nzSV!5?yq+#`4J5nI@RyuLBpJkOv~P$ctk7%_=CvYaJ~c)o|{vUqcg z+R!Xdzsdk?$&}YP4y|9<#CNiT#Ug<4I$+uU+p<>I!Mk$vyyFhI0_Xj||2 z2q^i_WSyeCI<%jG^UKUizWK|aMRohGe_=G7hkYpkOl0Ip1ub;K^iS-?h2p@^F zC$hFS&0iSp^?SS3;Tqm*@QJ7Lh8XdgIuqPD2d97vZj^~109;X`wN~Pqf{cEI1}3I5i1VOMBJ=#JMTTQ_GD@9{CmHNi2gg3 z*;@@8;fMT=su!_os8Fs^aH+L{n<^z*3hD8Ln>GGJnrj_|59c{br)<+B?UlV@qarZ2 zJBc6Xf0V^vF#5Wbw#+srExHUQBKvz=5NP3yxcOKhh_t>#>3kxU;zo4F^)3Z#Ga@iN#t%`^$i(9`{=JL35X4h!hsJ2GGQg?4E-_X#2%x0rxpO($pgm?Dy z6sYiAIw>dagU(tjAffpN+SHYJJ@VsGxP0o|a6fgc=6#CO!wOBp@WnQ$*e_TySZNs$ z)0T>MU+pXGqs>)ZSLKq-oR-MZl3?LcR{lk8qj}8@?>bTiMB5WF9HJw!Vnp3+LavIOV7NU;VmlTBIg`S4Q*cCY zk$)^m!Pkx0t=#HMjVCg*yiQ(1Yma=rIhs*b9PMaRcb%VWnUvKNU^t1RcffU_@i%{( zS}Q8G?>+24ff_t*)vs)I+WH3790QeL5w0X^7d5dBUCQ&2dDRFD8AC)&@JYSq}PSYM=CgZgWYrETT#t7dhIRSfN!%JpvF9o-VPSI~K^iFtvp39n63&x;oK>T+dMC2~jrF4gKJ z{JEdN5D;~i7=fSW?Jv;baEl8g=H1ae3Rkwc)Nxmq$a%?)lu6A>E>W#Fld{dmPQ2k6 zd4us-u<;a_U>ce?@k|z?${a~nOLaKxN?_6Ccx>NrXac&RfVZC^lXTI8GDBmVV zTvEpM6>oN%#nFJvb@|lT)TI4;XU1kG?O&Dopt&ASqQsJALgpT}wAG*_68j*~mbYZ% z7&VeS9lfcwOc#yJv=bWKH;GYh5{~biLetOQ1tKIsXJ0!=sEr*Ylf&H{J-}XGdO2*y zLmqZPexkj3I%{kidC<(ok;E6r_J>fQ0^#plq2&?8>o{?R0isrWMSn@svl4d|nF^L_ zZMAWT0=x1!{g=D^sut)|`%-Ps>>ZFvOqvrHQW-#%#1+j#)3rS^Gg(9}Bv-OdpWGu! zoj@DBuu;yQnpTJpCfB$tkFP)a^`8d#@0a_2KWFj~LJQIc-WKD?wr2BDdiQwp8Z$rH zFY=wFoUDS-LdI%u`+k0_Y-#bHqe{G9Y%>x(68AFk#YG#VEK-a|W0aCPq4bJtTk;hJ zC-?Bo*TH)?u{9uI6TI=J3h?N7Lm~+1{OQYX zu2prQ1cX~ocA#a9yDJ+6Y7xWv*vifOjU%63C8HqnhBDrMU#szy#L@{P( z&fBi1PG7Yebc_qLAB%)41uwwlAemmQ;T2zMW1x#k4h5HUv!7Dl=0uqcm~i#oUcLPl ztvDgDal@lxx#$?59BhzR=H0`L;E~Fcw24@kr`q!Y^u0vQZ4j;Qpz&)QgR=cES~v#s z`(CESPtu_F+O(iZQgdPDp_ZU^frBSBA1=y;3I}L8MC!M-#5dt!#@S`&zee0%dcrU( zOVtn*7Kx6D#r)cAqCv%eIN4<5TSoeyf>0u&=&qOv&sa`;U{c?b+s2{x#&Ni&rb~rROGdV3 zxoLkX_k?R(*%;h?ojdZ?b;I>`fov+p#PWu5Mo2|kBi)syCwhDmcB^D>kUjMUvcU}b z>mm!+M!DfA0-|L6c#9=5Tys?3*e7E>ZIio1!=#lNdSjGwA9LnY)NN!}vs%H1Ve+uH z9bS`xOg2F#7P)HR`wpSeZkcRRx0LuzOZK+h7_6)wnsCX(AqFaf&ZSyOL9!s^ywg>g zOQJgSZt4KUd}xiaj^x0sEgP0>bCOJ0%7hw02fk zq9AwaiA-ZBShTyvi9!i|@=&sPZk51t5?&`Jd3W{IBAaXIq4O_Fmbo3>9W|diB=So; z`bn8nl?`Am)nJx0vDV9+qmtf!@wr9A4*j3_a|2IjC(GcRb-2`2m{R<1} z|3Hqza3q+5HqIu|0`r2-P!Z_Rs#i2H$fzNq|0`nqp#KiakZ4rxOy}A@h(n=2ofjD^ zUBPc3;y~FaHw(STY3H^N)_b2?y=|YrBe;DKx&_|b@mt2&dwL@O;$Q!#c|3ZWeZuAX zT5a^sp^EXI?Fn1O+UVxsekrXRWz#?atGjyHf+)r`A`4?MX%f}EET6r_2ofH1N30+D zK#q8pa#3uDPF5CV+@qh1D-}$9NDBpSBl@F)H})=Vw`;p_V8+GY7u@)bpWdO$?RF&r zRo-sU*mi?}8?%DUetRxOzialV5}v1&%H5Zg%Pui$Eay-Jh@T6Fn9Fe06wHf?X&vj14ko!}<5rZ0x_q-Mo7rWQT zN>=B-f#Po5{fT>6_~!_}Cl#j*Pn~(CxMLFe>vXK~j<47E-N}xx*Y`~e;OnJbx+(Mx zlr?l&VEFTnQPQ?kL>ox{mwz?e{-2_&mfyO5M-zJK&mF*1luG z0yac?@dzjqnt-7R*a*Fo5IQO#0@6a0ZULktCG;9<0tD%Vsz?o0dPjuNq)A6C-_p+U zo_oFJz2AGjZ-2kc%w}hvo!!};ou~aDchQHsoMqL$BN&M zZ-v(%(DU!VIW#0bmM~&gLL)NcHh;6^p#I>8&tIDiV%WB0UJmhZ*Buas3<0OC0!}Hk zU*CM`$#UO0B9RKHAVfnmSCz^14>U*BZo_sOx1Q{O)y5N>fe za$J{ZIDO*`P+tkCPw&EXGwQJo09|8awe98pyd01X))pz>gV;+EL0X6*J zc?`wt?s*LTf{%CK=i{q(?1gvv_%}z;`|rSo!-)rP!%syJDCuYOoqtv1r^-JO`KkCb zy`yFkUVw|CG|SMA{H9ZQ$wT>2i|*-tdClE|O@BAkdgvKsJLpI_h%t&Zmv22CWu;uo zL)s>L2%KcY5gL`5D*lc<#Qii|hrY>ul0%nY6=wKx!x7)E>Myy<-9U_}oT3mvi!nCc zZqg-VN+1a@LuWQkAHE8D3Lro$AGl`#7eyKdGJ07lLsLcB0-uwQ^e^~M?)IWeHvH%{ z5dA-zg!Z7LexW@Y-L=9#5o7s>vBR~iXS{zmApXhu3ixkl`~A?a+t%-UyGMU_)cO~D z|54MwtqkmuFX-*)Qhy8jU6*?6IK);Ufjp?A5(uc$`H}YvVnANF=@#gW#)ab#;oN@J z`5m5~pP#5ZDWBxuGy$-7WjoU_eSSptn_fE**QKF#wCmf)CybD@NbE{zHkEV0N2z)< zbbR)l1cFr_0XBa1)UKkWACJF%)Fh%}Nthfn1?eig@gy^^%^|I*Th8nmJg=J%qS1$GLQN9yj;N-axPO!G zm4aS=FmN7IZXO~$bXaZLq8zTM}){lsbGG$leRs|@KI&h=z6r?N7I}>(_`k$YF0k#Q;!#Ebc8!*bkOdf z8_=VoL*|h6LEm;nhk}xpulH-|Au&ovL3*>m>Uo7CFImDiNnL!nKyn=CD=-8@gmadN zeE3!#+?(xQqh2B8>QY*mrj%sAyk*g^kXtdd;IJA8<}y$9Z5URBJ10v>35$c-#9cnP zI`?ULNcxzNe4Lg?1*cjK*!b0Fm!E4yi&RW)M5rQR@j*<5W? zC~}HL1<_IVD!@89dejPo#+nMCqY-ymRBT>CtT6Ge)6Rvc9)kGXx;7-=Fv`T7a`c5c zvJ&c&ZKfBgvr(}=WwA`xQt-k!r;K;_SZR1IBS}xaZGaD~QD+LqnqT3IgAT{9A&@qS zOjq}UPao5AKT&miG*w=5zaV#*<|?TFU^TKO{&v@qx97NM>Fcc^i|=sUmt8oO*`h_F z)?#+!moTD&)X9@YKR_fmSGT1l26t!RRKP^q2*juo4TN+U2v_Tn*h+Vs%=JO(_Fsl; z;;sicV;@Zh&o;px>GIRZ_yhHieVmomwk_zzn6N~<@hCC)kDr!+ zIknc|$TKS_Db?mxJA~`dcojNdY+3L*Fra5mqdY5Vbea)2Z-h-t^wU*%taCpHiNBiQ zm2)gow<&_7c#B*(tVcH+qpN@rRbMqX)m3LJx>9zv7Fwr*h*J~hPAz%uFeqbLG)vtv76BfybB?gdi`h6WXKk(4 zavj-t!NQqY!e+<^k7-2lGFCPyYfs1(-uN`g#Xt5CLs!r5R z_E8GHq)T=;&><25kwgiLuQ@2-X?Sx4pHir0Rw9di^1dK^OD{ipxjRJE2oD`?8i|!} zH6uDlb^%dxR4~o)cjQ&f{?_hvcbfg*NcJX7nWN6T-!fzIbG{(q%%uHq*9rUm3A9xU zupvo2l7Gns(3ysD?#`Z1WfI=WtVRr6a`Vw5PCzL(cL2-f@5wuvIK)II1qyd(cdT}e zSc0jSUauO?-vYw}5W?hSPc)qP+(<%{!ZQsl!gF{~w~CUcw_>v=CY0`2aHBKhz4A!0 zGK`cGXJuHN0HYZ^^cqOyQ;uywPU-t5IeoXx@RMri1#Rru;#9~Lt|PWn)L{iu+8pK> zJ{arC0MRQ8+f8u|rcW8^=8N8!65)EED(>{aZ`Y=wtRw2*>kfHnwWO8zxStuPJ{cQ6 zA=$xvA4AGKRUvWx&FO%iHLEh+IGYk!sndoqLq3=pj74%UAS0Sus<*A|>_#waa0@ey zyqmNziRvqhyg4Ad)`g(L)+9UnoI*4CX{sm#T_KI`YuUO(kwa#Q15I=E;^9ITcBcwi z)>3c4$;k%_ji^yKCZNRYx6Tx0mJ0NA%Se9lBf^4`QEbl$0ZmNa*;2;zy=P#f#OqD& zrCgAnI5XA{79j$rJr*^KW~dhUsxSfY2FcoSCDQQ^0|71+Aj-y&gle94hZ!~U@V$b{ zVH(isxP8UQ+0b?OeHDqL-Tf7&;jaf~BHiYrg#GV-bl`ak^Y1&p53hWHH~k2JGSM;K z70>tdOhzgDMT+;I#hRUv!kM0Ta$8unO4ylNG+HCT#$;h%RW7{F4EA3NlFSLF03U;5 z6UM}u^gZm0H$IKtAXLIvqEyGV`dNbuQS7XdQuxdEx>Z_9wdq z9l%XdS(#DAnOaWoyL~bH+_wfR2&M#t2mcKwqot%t-8Z)slMT}suH9gP8@Ty;3>OH z$BZ4L02@kQ(UVSDgB=IzxelD6p8U97z;JXJ7LSeW2COS1^@V7K^ke)M+IO2K`5y}P z+$yP@->XjZ=C3-qTu+_hnOE1yVl%G5ZLwx4Aey0Nn7+B7#KAbHeCg?bzPbxzI<_aMg|xz=c*7*%a9Ew-R&lh52Rw|yeHG( z6tWQBmexlmrjw}{S#Jh^6u)Ojr2H2C)Y7nNQo7;QTrvOF!1GrsG~;!_n6T{=0@iP( z?rbAD8I0D>NG20?he)q(_!6E(F(7$W zAzk$%0{CYA@4Hm&D8$hYEgXf?YhA=TzC>F%PpbLpVAS<;kxGauwnE#ZyCu+FM$1g$ zIwZ&|O^AvbW~I_}JqL<3rZE*vXe|qn7sU1@d0nZ57_xh>N%V4vPGe&tTG?|T1#^;l zl4Wu|lK9Vs3uY03*AidCJq$&9ax%KGi?AtV5~Kdbo+CcP8vvrRirsF}c`Xpd5)N)) zbyHDc?#5KQPRDnI_I4?eeMD^;5H(TPVumoD`fuJI#XWy0#{|hmMoGZt^i%_e)qMmU zv(hs(lgza^Lz;bid0S1<4rLqnGpjfn8;MoMzxl>*(Q!$@Pib61Sb^so-IQ^C}k)C&H^Ob-zv|d4@HApcSM~?+)AK-qz=NU;ok8fo6Jk zv7ekxI<|(>ns~s&c18SMFch%TV9$@<(&f9M+kHrXT zmL3xI0ONZiU4xMW;ps#ukq3;}x|H}9FX>)NNi9}Rfo;V@FT62M zUTRv^ol{|?1s!WYsPfr+V<|vrFYeUOUhaV4@=zS_d6OXIN?Dv7GLw*cCc(hoq&OwSDMI0mfMj*U zSVtgg)|aTDxTxjb19-N@STVFB2)bdx*PAMY<62+Bi=25WF-2H_K0x*naJ6l6Ymjm-6itkKO*u|?|<&ePed;M z;&OiK$=?z&^p(W2Oz6pTsI_7ZH?L240hj$Q7FTEOF(EPJt?}&EKA!Y{{~iJq-dZnZ z0j?X9WI>*QB=}!&&zYBOcerP+zu}&BWyVi!yL#sDa?f%G_Ad)Zpoeew&M|feOCe0c zb06u#Cgl_mv8??0B6d9da7q=#`(~t)(wd+%;#I+!PKyQKuveNTUvx}qIk0A?19L?( zL*Bz&diI6c5>SPv@{ezA=;Ic2Ai}Uya5wrd+Fz819mHW4!*k1c6>^RbaQK%;kJ8*v za>O;FCOD4_Z{y5S;q?VKjBh_EhKa1%D{^RSi)P!JoG-*n55&VHh*NWdMPCr=^TZ1U zb}OA-YLDaS$7K-`A%yv>(R4F>J-F{`lX=hIuN4xDx(EG^uIXrRel0Qy3D-)mThj{1 zn)IwnnBpmf^x0b;gXc-j3zdF=l(F=Xl}(!;AWv+|VQIh2%JvDU>5axPaf`zQSGBJe zkBSCf25G0Il&WfG>Y*To=UP}B0v7GEo+!em?t1iPR=@}GMV;_rvx_PSuAX3cM-_*E zG153nG`8ORnUQ$n09Sfe_F!B||7>)mQ6Aqr&d;~9EW%K^xhf4M1RPu;y#5D>My}{> zS_7=3K37LkT##O!wOfEOQA~pC4@!05$!eZvU!6B7m;` zPq)1a|H(&*k zS5^KwqSos)n}Vy1eL_3QF~w^YInauJHT3bg=V>DCGVzb*N!RD?KBG9P5-i{ zBwsn>47Oo~2+^I}Mo&-o5%U9dcjInn;=)Ti-=45iX4{P6lOj_HCS&~kYFCxtjd8_+h-s*dzSqI#qzye=5^Hsi}bMp5-2W$(nO@C{l=O0Q`u;z8`eHMRS1TfFJ)2J#q=ZjwCw#~v}AQ-7;@G-w-1AU>aiZR|$#|A4{Y3@_W_)v9Dy%D7jWl*Pv#Noe zVOmf{6EmJ@WL}5AmmV!8rS$f0wFu0DXiur_wPL9=6`5esx5a@wuU4;pUSbx&flH8` zL6sJud7w6UM=Pz6q1OWL)tAk2r8tC@WlCJwqNjG1>TD|jeiU+J{xZxS?1eFb_>mPj`W?G1@kkxhBJRUZ_<~^tlIU z&%5V;_Z4_+wZCe6xw~rPKIi{yokyZbUg^yfqp}pc;T2s|u6|{4y{eG0v<$FO&!jc0 zrF*tyERgr^DDzV}l8ke75ih*h1|Jaur8vf-PXsx%65E zT5JBrgh#QG*Y+ld2o{H0th}-|+%$EhFbHqo*5M#DK$@A_ojZEf;!Lv4COc&=9`{Z& zm6|M@l3M+%=?c5=%Fy9YcgT&86`al#f+ z1Fy?t-cvkTb++JPted%-!JXG(Zb(@ufPe5DdrUBot-X+C*8Vho*gv_f` zWnQe;Q%m+rSEuYNIVLY*{%X88eyFT~dqv~>l$?A1V^1-NLVRGfsW3JT7wBUU`aFo% z#Sdeb!zR&QTqd@~(>XM1p4X879?)$gIxFtknolg+ecxOme{>^zG~=R?maLiK&{+t=7#GL2PTNEfy zoxiOFCAkr$SmOo(Ll|Qh6kQy>)mvw`Z$CDFR$$$p%h|}!+-#vo8-nE+yrNriqif>L zs*eZ`_<6B|x$x1=6FlH%0Cnv#r!eLemOkbe@!F`AT zUmf5bj&-VkAw4GE6tkArQwmyFTcC)X8 zzHG{`e)R{)Kze6!mUOT<+bzgg&ni(rJ>%Wir+s)BlK_V^a`KAh2`@@+4?~JrF=j)()f<_E6&XY+W-J<=_5;KYi70aw<5D))YtYZ9 z30w$D>|>n4XAVko3OW@8yQdDfxFCD-pvZu;S4U5`N^|~gmSAmWbXs;}bJ{Diyr+jQ z{2uswH?TK=+Pt&<5xJWL*gLe3Fuh|OcEB(FU2VXs3fTTZ^}WDTy9Y?*sn3!EAVAG~ zORAJ64;Ij`G;4{VS;F*B-;YPMVKBlJNd9>ZoVuXBXSiL>XtBtnt;>+vcQg^VXJb*&~D+3S|l$$p5i3_ zT=(H;Uit5GqB0VmpBI!IMgrVXn8yak5Y7R-_*-Q(YxKk1j=U>5924-4u4SCyx+VY6 zqi~<4^wSqUx6sKj1RKl6pcHMPM5w|{Gnag-tBXR3bZ)055VvST=gI_pq(o5>2_1li zH?!hMzD5Wfe z2$Sw-F@Wh1;VOuA5zHd&Oh&loY=Y|6CH0B`L@BGTxehO&2bX7FnBXhgmaIp2>jEMap*G`NYLj=z+&Edn?Yp?Fs*OSma~9#ZXhdEo#yk z!S8IW*xjwH8y0%ubt1@jXDoNNN=?J4h8aWWA#a}uFm_BBm_XE(C_-n7H?HpI=R&+d zJM)3b|8zc3Dgc-@zcdXMy01>8G!>#aMzI?iE_=I89d7-xE z+O3Ll|F6yZF(Xn(@qhZ`a7`fp3a^{xlX3Pgpx%TPr}X$ue(K4My}un9$bQ*iw_5O< ze~02O?Snr2amsxPxh#9V+w1Ct6}QAepMFsR=;MD$@gH=WFHRn~LqY^Q;BNd+E_>pa zH!fWbxSzpq{(PDL@=pId6nAO=Ul^-D?(~02@!#q6?z4C>+JAQ&g8%Ku;olvrKi~QP zy$8%OM3^PYcILxKd897k?%|q3C={j#yQ(i(--aT0Km6|20bhK2moL7ebBX4cN@gIY zINWp$u##X?8iNnDE{4wkcK%*m>3QM&RAB%`mdrP|^#KtJ2t4LF_5C4Gm0$n7 zr($-kyqrY4D z{oq$RyIiN~>ulQ8xM%7=(>bc4Zr3T}Np#L%2Sl6waE;`VjpPXQ@Yc3;Cn2v&bwN== zV)7R6Q&Ir|B|7)^Z|%c$+H3(g55yta2hxv)gOya^`Sa5*r*=SBnGXuwVlsw+(i!=L zw({kI2j7FeoL~4{sAY<)xzZ8(=-x-p%M0=lEODJi`$C|6VIYi1xRl$U&SK$u2V7Nz6DY3wbormIV4ERbjG81t3clw$&o_)RBS0+zXHdT%s&w4M~CqgL&0RG=%> zJ<&}NBzRZh+hrR!^Z1&-ogiRT-A;c&L{z{5giQY}A0C&SvY{waF-?|nDVUmcfDN^* zt4&BGD;O_NvO zbTSZJDC>Bh8ZX2io~))_h0MJcxlI!IpeV$NJscd)!Q{mnFx!pfC3F#C3U!~%E{YZ( z4VSsdde%T40)$KQXgyt^wgj^cLZ`Z{wxriYW^^)Hl@=B=pzET^_>FvzFU`hsaiVBC z8&eSuJds_jmNxK)dJZ*|ir}RlRq58lL6xTN^W7)?m$`LInv|4Zy>D-X%5KdJD#r3% zmh@h`Z}-VUOtkX8L16ngk%BU%2zvkbwG2fT9s!y`uefgyaL!~`LUulLsMKv)1_ zl2>cWtTSvVO3)5sks12P028CbBL%y8cAp$RrkcfD{3fF+k}JKtaMj zndn}IR>C^I(2yHC$(`~^azyr~-wZyj-c(98H2jX4Bb<#@8rM0xa^Eo`OrtBy(ySnp zA&^*|=*-k?W)_nGzBh-NB^p&nf!T+T2G`z*-kKa^n&>Ej5|DjlnmDfmr_8L62RK50mVL*F}>=YQhrG_*aNim%^@JgCbcP4sX^WNaq zMpc8;#DoRHP^$HLcDY3kg;Z(RJAz<~@En3cL;2*o<~{R)$?X??pKMZnXngTd6nP13 zh1nPpGe;$~uG}RauH{v;Kq?5q=^(*VOtmaC_SUI3P5z7`GFEn_D@Ue+ySd_moVD3F ztmb87wgl5ZNc$d_aWJxh$HKcF`CLhZ=6B2Ut?IE zVidTq=kY3k(+`kOGG8t=a^utIs;^-KCnsgu(b3_Oxy$H08L*Iqye$QN=;1ow=K*Uu zs9b!u#<(qjo9GcV7GTI}r(k$ajzvhaZUVs27POS8Hf}Y}g>)@-_sB-y)3`_{>^M~J z?J*z?zLI8$(6Sc^$i?QRUkwc4Epxw_bgS!~1vJfY4bH1t&-S7x5bmCE!nb543NvTZ zh71hOtM=ibl9bOJ5zdHeb$cgf&c9$ArmE~BNJ1*H&b-kAo2n0%DahkH$(|9%!gyKi z@*U|39kg%@a;7cjw@2eet+Uu@hmXQ0eH#^wKR~sDNhitSD&%~b&35XTk2y)$4Ai{2 zxfnz6O^!gyXscc)wP3e*@nbWCM}%lt15>en?^w%cT73eB6BTiVo$tlk+eBO9UZwcP zQaj;brpYQcQzMxZmxePsp65T6%Ith$u#5@v?{ZkMEvAc*v#w+f%^V0jC28uW#_<;X zp~L)caPQ+n6}4wCop@RbZoRcFF7WzXMp?&AFqo~qQ{2?{<@pE6auCa|APd27==zIEU+hfm z6SxJbVg?JfJDMJQ(NYHEgAlwxENfyzn)e?uPxcnm|FiV)<55O&KUZ%J;LE!Uf(3>4Z{+AzL_$sx3RX+9q?hx68m-P1=loSMwTcAU^c~3gOzg+N| z?$F$4FYFDtvmnK7)Il@f>s}3yit61=-=@23U42KFde8$Ub*gwfb>Cd!1SyMP+#-XYI_ z?02IKvNdFr>`H%dU!1ZLrO$jWGH%fGu-VDv_)_f_qH-1} z;?27izdj)vmprz6N#|%&pJ@#%=qh|wt_B^sZ4HsVdgpppSyaWmx zxt#-CRDw|fLhsX))VwoH$+A_7Ma4)YPAB8(Es~X*%_||a(b*w_91Pu)FdZ-z=xAhy zDKR-52i6>wIiGA8m5a^wn?M)<8j=0&@VfNmGPhbox$k|fPj)A(iPw#ohE$^As3Z_n z2ne57%?twd{XUu|oblIpg-2z)5$beXZKuMpj{W zWIa7sTx`E^tzWuda0;;_*GLMh-FY#!Xm{iqr#SwxW5B&5$sEa>^S_HS?gWh&cX$j0 zodw+59+5s|Axh{;jHE>1b?|DZFM2q%t6c>-gwq>d2(RR4N)5rasjx;DqruW$@~$t1 z3#dr_pb}Y&X^vjUtWzLNlri)Fx>B5j;b9s{?X{>HWb8)LDR zcgB^4!h9giGMgG_TeVyO2eTwGC?Y{G)^W+{Yd8H}wfwlwAD}NUkLDD-#dL9HDR9b= zx3<5^3H|t0&&4Kz4+6(YK>#?CFxaG^U^cdDl-(e$e8hsX>oYD*N=139Fw@_N9Hyyc zUa`U7f7SeEt;v|}1w@*1y~!9@C-YROu?Jj!V?d3}6F#A;*XeMr4@>&Vu98k<(=^KZ zIcfpfC5*BzJ3&Nbk_YI{mY7x4w{=sOr9$(hq`TvLgV91Jgl{5IB6Qn;@GqFpmaa2U%?*ffhWBOKQ$Qa^jZD+}5bn24}V-=hiNM zj*cFLcRphM4ymDOV6)LBqa2*D4;%F-B8@N$cDVwj6-lmkX;^f8;3p;M(Z`w2l=Ljx z1pH`)4N-IjKWcYut_HP+aNtt9i*)6}C5GTifSrmsjjddPGXm z(INw3SXWU#Jd0F%Elhqnje=A)bsnO9)~ryg2-mA{8L8dxoZ|V~IwF}$m`XG`nEH&) z4O-nvG39X+3qg@DrCJzGE<+xSJ@`7-Ky?L2eyzMFFaG`T zMSM@QmcWh2*zE0_)=AiWk#MjR!S`jUNF0)vVV!wFw-sP5C#D)#`aj*U97b|1)OF3R z;oie#D7BL{C$sP}8f#_@fo57c@`Zd+^=v$0%lBD9hp!$A558n4ZvvYtqSO&?mdCP% zC7%;;Fr^crNq$V3otc50h5Ov7D~@pjP|Nzvj($13A7k{+US0y2k&x%+Zti|$<~sU9 zAr?v;H*Lkl;#wAYeDYYk=-?2x>ax&oUNH^F+LhYzFYdW1g4;3_iBO-}Zd)V(ErFL$ zQ?pJKWMIAge#g)~#Tzgk+_gl=?a~8@Fi$M;yPh3B;Zd-cdm%x9!1b@%4)IwACO|7| zIC)~mcTv<%CqCF!WuHm|15uAJF1NSt@a*@0_riVHmnjDQY>=F6tANs)nnak$Gk>`- zZCOTXlQ)>4jo@Ogsg-~k`r>qOg3M?JV)`}Ekx+mSwRPJGt=qL5TKCrBS*S!5xqFwd zmyta81&~ixX)hmDH6cn>pk`VHKVc979=(%+DMNHaIqfJ_8yexht2X(Wcff+;9&ix& zJRq@Wwp1h0LbuKV3tM{&5UH9KJHL7=tA?6$2t)$86^sb&^aR$Ry}m;CqC7KDjcnjoiHnBo=%2ce`BFT>qW z$e3RU0lYPr!|kgZ`Z*Y4-osV;;MHjq0Qzs*>lSpX?}r?uz}48Ed=Jg@Pr9RR{6BT4 ze}(|wspxU`GUUV&VJL*+9;o{1@1sd#_*qyy#@&i+$EPSDs4fA}h>KChn48V4oAiXE zIdYRwbY+wIjeubD2t~J*!~QDfh;_}Y2E=LRletXW^cC6Qk RVIkzHO?d1F(AgjT{|Eb$qBH;i literal 54163 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 JgARP_{V!@MA1?p^ diff --git a/docs/system-manual/screenshots/live-desk.png b/docs/system-manual/screenshots/live-desk.png index 8905dd483f9bf172fe6922e9ff66b308dec875e0..1210bdd905d3360be96048ca50b053ba3142477b 100644 GIT binary patch literal 75979 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 z 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 diff --git a/docs/system-manual/screenshots/midi.png b/docs/system-manual/screenshots/midi.png new file mode 100644 index 0000000000000000000000000000000000000000..bafb8d81db6323f1936f9289f1a84c8ff3ebadbd GIT binary patch literal 80510 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 z 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 Q7!NGB?gKeF{vQkf11V|4S^xk5 literal 0 HcmV?d00001 diff --git a/docs/system-manual/screenshots/mixitup.png b/docs/system-manual/screenshots/mixitup.png index 1a75baed730ea52d693272663e70cd0916caf135..b2a6e5a594212756f5cfd09d8f139cc3fd6e97b2 100644 GIT binary patch literal 57288 zcmeFYc~p~0*Dp#t3ys}~k=cQn1W<%9W4A(>1BT=w42iY^0tsW76hvEEX$T}3CM66? zfRH>PL52VUfme_z$PgePv&amBsED&(`t9$$=e_5<_nv##I_vx6u2ad{tMUxHcBN|9 z-nDuCSQm7Uv<{PTeyWOf`pZXk==d4@KldMf;)TjBRHi66IR-XXJ7 zM&cKVk7W|E9{vLA4wsS1^H_bwA(yNR-z7}*bvM6C4-5xPT3H_) z8_Us*HS-%=(U&nXS>Ub1KD*q|8hEifqNuP|yFXxMlx^uECf%rymwK|SRT`K`Gqhh> zE)Cup=t}`R%+yD)%ou-C*z}s^lU^&`-*?*oXEFY(t~}hg*T!DYEASGxUNkU-IhC!j z;Om0-1<5(<5&KzV&5030-Qgy9M)?cc?MFyxg6t5WSGGDxT?yqpG*A zeK_z|7@g=@Z8tYfGpe61&RZq&7m}VlBdqv%yW4$P^J@=(i%qjbNZvU!YGy7Z!LMLjS#(399FK}zd>KKs|Gc?_&aVQy-7nv)Bo;bSMX-EH~iB!_nc0OS_ zN`nl&i_6E#swepV;a44z#}(TQ*>)o!+y80X1 zbQ9!n%gSxfnQo0SsM$E2z;6k4ulRaLKy zY|7obN85d&a4%g|y!TxKjk+at9<-NU5Pgk_v;B)W&3>0)_Q-cV8vBL!D&U{wb*|A> zHO=<{-x?Z={z=+{M83XLYez?7s)PR`S9<8WskxIypVqf1e~~nWDg-SfuKEUkO7u@M zYaCE{Dl|H6wPDQoFJgJQ=ddku{a=mRrH(Q>yBhybO?oPrG}yhHTvPgs95K9{^1ns+ z-~Yn@pXb66TjYON!)=Wy+Oxgz{+r7EarG}<8h~`pJ)sZ>JLmd7r5*i>r2mTN76%25 zwdNOuu^xFfwyDWNo>WUn^h%f?i-&xreL=h2aQ|b*;4OP)B9W95*e`EHxl4}ym_7ev zcx#VG2Z7_}yh=2y`?%a{rEdH7v$3ZhHqIrlX)UOb7Y|nsxh*z&nRN*W8g*Y)or%%< zNmaqjv|^0#U7{*6XJTb7Qg(v9aybZ28mt&-Pd)@q8Ug)ep^xNBTq-&*=p4FsAGe+y zQ%L8HhbLDE@2CN5?u+tvP*p}z9y!P555aje&wl%lrUTM)qTr)~aRof@A+rcVji3qQ z#J&JR=(9gh)#Qkcbcfoo%HesZvpTHx!(LEWTRJF*!3>~k^rIB@=i=ze+_E8(86+Ze zco|*;Yhx^bEq&P^Fb^h-6Cb3<28=s6c1H7pP7xc&xCk6?uJ5c?7V>i1n-2eeige}Z zCUnxB@67gn??`^;(HnMu+IFR}J8L3|^Z4gdPod_Yh;AeY$vq@@MJFTR)2EnLMY93j zkW1!94iGu>t~@ZT_sh*cGWV;ee0H(g5cJUWH}ARgzDs;98YhZmKV!Tf=0(Owyy}cJ z6JY1=Z!qy%A<0wBW<5tdUa*%o3l9#$%P#?Czx$76GdD-3|H z!b3soqCqoREZOW-zADm0wDQfd+RjElY*MkNI|U^ACTfe19&GY+ZwEJlXmvuUjm>n2 zQtOiI%XfM&O4FSpYrU>qK)F;J4=s-zhzt_ND$7rx%g#Nfbc>LUEz`C2Td ztC#l0&4yHzu?6)}k+(v-2m<5JXDm&8QrNY%s*)`K(9LnUy;2{J8&Lx~DMK6RPBQ0{ z`G{UDx+vDaxZ?a~2zAB*Z5hjd3i>FHSe>LqMB!e7%=zBagsYgJEF~bn{ty1s&ZYBq z-zAI*H*hh}F1{6Qo>2QPkqiHYXYumn{F``vJ%8OVLDTKuCEBkTyt1r%U3Ek0yM)5? zCmkhsc1W63)?S`VHnmN9@-^?qh}KR$ECsn*{^Ut4?)U$pmH&#L$}d7h-3K>lkb#d8%PORE+L`Z0UR<)$ z58QtL@UC$Q{KVHTX%to6K)Jang}s>$)LSp`Ft;iE^a1$k?ek|BB%nbWY3 zzt%0?f=3TeEL|M$g3Zy6yU(N~@|Y1H+F#o|FKt{xB%XE+RrC(a;q~->MOxcWsA>v5 z<=LE1#w#h`JjH0l%TL~4nMUAr@u6$$w9Md~inR+zj-=j{A+;f%&u^u7^uG7f(W^BV zDok`BoeZDHRsdc+VwRjj`^!R)tu+Y|UV0#|COaS>FBN#=VV_%e{gVQq)ob1c5z@rT zszXfWVEP<=he;zv^{_(Yaoe;%8|KBFI5SaQ{#{}n{axa1^>px`g{0d) zwSh;saw@#aF<%xE7*h@Q{E41mk3~`_fx+Bjth+t?n0FNAEij+!uwPenD9Sc>?0j{2 z#OkP9RVSAsoVOv8=7}`Ua~|5Fu3UD$<;k-<@w`-pUpp!eLs!zO09rF5g=I4@4K>Pn3CD(G{sg~gv9zFg0U zO#Uc-zIJU@v+7#%OyuUZz7nH{{mWKU=~=nvv9VnYN)8|B2XS-_{nsOMJ6K%`2skPyK#QB%UI02Ri`OCr?Uf>llplt6`s*BgtRWEs2ibC9r?a z9v5HTCyGBZ_)CkD)eG9uC`V-Du4UcSNMa)or^d$~h$JMj8ZFVc1V_%{E5m>xf`!t5qpOca$+h z8al6&*Z9k?11h^j4Uk_n57%?N)8Ah$V|r%{GZ0S+3+gmb?cqdOQV!upc+AI;)(2B& zCkLFa-)puFoJp9C^fSkB0@XL7gFKhc!QTc*MYuJ;NlI4(HtgAz<6}m(XG6SB_=#3aT4Eh^US)n+$a!cb zTrdHsts<|alw_sH*o6F5m$EH0JhU>rJGrm0pK>BW$%teZ zR95OR>oZ->nj`Uh5P*=m!24F)f0cGA$o|+a`(r;G`+Zk}#KCOLP1t!;!kondslB%4;OE3*4egWyb76K!)|5a zl^%20m9k(0)L`P&5YEpeyh923qKC*9X@7Hb7!9SDymPBjkl~Kl&H@ktW^%4~eV?l8 z0le+#Z*>!ezSR#qs^Yf7%c?pKi@&-P1@MvBkdP~-SqCs<77?sc&s>+z(XuVL7Tq-O zoqw+_e;q+8b&-i#w}4c>cloMPHP8`W>%GEKQ9IAC*<@kW3d-#&#!Wz|zx?Fm-6~TF zymZWf6h$LSom$|R;E1gRb#Oe4M_&7iX61?ih37P)l`1O>uST(hu=}{l7j#jlc2hKM zB3~Di+emPgs^JkafSFE>+|XYV*Az4j-bfD^TV7tCy>=ktoeb5}YXY2?O(<7s`&2(3 zY)jRRfsUE4u-HC+2U}g$qfR#eqx;Aj#^>IUo#s2zM}rJ}(TF6$N&n7clzuTk@+tN3 z3b<;fLCiAIT0m8}jTbJgQu<<80ckamDu3S4SaGO!L97G!+ho|l?QW)1Iu;}Y6gl#{YMoXFKTpU?E)XWPXH`qG`g{b{;`$rNxdc} z!7;wFvB4Iw)(0zOJx`8&SzCU-Xz`XJB3dhD@y|e680eL6+4+5L?M`Y zW<^7ukwTEGjpm2=-bGpBEZ5-Oh1vtz*$Pm_l^TJJ@(>;r2$PZo!qPpP&)cw3RF1W` zlhMlOKX~clPBB8r7gfNs!YM1%PsqtP-z9?CMFV@zpvzW3sQe|Qon}MP&{N(&O3ln29i$)!iG&3 z$XDilCX%yk+|5vN?^PHH9|<3g6Uedr+rHJVXN18s6fRGZ|tPL|;Y zJd9A4GqD|ydi~?OSiP%7EW?|8^12XeuN<7USSUyd2kH`;zu7#A|Ug@|(3c5Gs?4#4jX^aVh z?9~_Sq2jfQgKZ+$-0L-RD$1TZTu}5s5k#n851F4zrU);H;^oT91ztx{NX7o4-lr9B zE7G#{BJDVyWoel97{0k&X9#GNu5&d%s%bf-wo6(`HS(t#W5>kC)S=d+RTy`ktYo>f z>TL9nm=P&Ba@sb8Z-QY4H$ekRnI688Nfl5{50;p~56==Zm{<}|CipCAdBh`U_dun5 zE=M`SisHPukBT|VCal7=>fMnCSMAjM;;`~USk^i4;)B0^`%iMT?-D)q`y(n_^4B)w zr8>V$EcCdpQa}G__9aF7zwc&F75vMKmn`lmk=Skf=|7zJQ^1v>sroO@{)NB4Tah-b z9K7KVa+QN0iN3lO0-*rTMeZDZV=3QY~-S}wG1O8;- zDq+FF-S2u)?p;+i6iNm@a^xTn-PIgi^r$eP@#xm?1A6K#!HOqgX+WEB^$~}+=7CmZ zP5OSMzR2I(_x#*@mE8khe-b%1>J5~RXoS$j7>q^@?Rb`qT7(z{2zxMCeMro_VgZ1G zubLp8E$Ig9#}0#m2- zm$CDr7_!_MC$^E%>t@9+rNEN*8VDK+az2M$F=*&-R4)^$XcRSh`;=z$?p{D;Nn;J7 z?k(t}AaZ})Elt*rS6wriTRdx&;>62@L+;;-lI?~d4?cNEEb*C00qg5oRFXe*y@0w` z=r=wuB=)S#M1nyYw*ja76&jd zr?mE=b>Vp^b*dP!sj76!(j&vX4d}VW1qkMyx&O*VUKNeBOb#KDZ;ODu7 zR}TVz^tpcBdeE*0Y0%V2rV=@e7|b%VD9uLjT_QlwkXO@X zKRm93SA(RWTz971^f?l(P;y&GZ0yNL+P>yj3tJfw#j|Uw6B%(D8AXEk5LWo4d$YHfF_zkrN7_mceMvjj7L{wex{jV) zj2_6=v{OAL7ZtX}hg%8&%+edhb@xrM=SDxzH9!xZ_kt%5^?<33TIFiJd>(RY&L(=x zBG&)UCCfU=Bh6ons@vO`a=AvI%hbp) z^1qPo)H^}3UM+pnpSyBF@y`+0 zqkR!;ZFtmGnFI1DFKt&1P%3HrJ3)4*SfrDrv~ssT{iJcmn_y+ z+CmbV9aloKa9DSKy`fIXVn;DG|>3c zw!+xkwtZ{mgVU{#o$NMCmGO0UNUC3yAX7&()k8Z6f_eRgjcN0CAbQ2#l!&pge(X_#A{bQrb;;9_%ca%wA+vd}Uv4<3ve9rJ|%) zaS4^Klf%{R#qt&j7gKF3u!@}i9Q~5|n+5`ptwtG;i(^)*maZWtN~0c#;_zN=xXKYb z0(}zYF-$ZVwEciRaET|QoHLb@_;yBVRU0-@WaE`!_*uj%w4b2poeNAN7$ZHkxoxHuhR&ttd5L+m#BQ&`fb+@wCkw zpJ?}kbTdnOZ{S06 zko6_fAECVFFqp5}{*CSv;71TQw)E^7pZ&sK>BoQ${iu8G3=>HKjuC2s2>G-BTnEYl zi&chi3 z%Fk3TeYx|D0I9X{8}lo*ce^6~&ApR?n^O-tfbasZOckMSuLt95DXlL;NUW^hy#caut+7< z=YS0$WQ6@=sMevRl+G)>C?iGMSv4CHLUfR=0GeimFJc zcy*oTK0IiR`E(CdI?{IGa3wz}weLvY2JYgOd^@|fw8p7rmYZ+#WfEteL?rNKaEm@A zVJQv8nclbqz1>LOTCf1=Lv2!6%A(o=&RqvDn=L(ECq^lgS#=v3)Hk0aW7})HDR%?I zqJSS|%?REwV^X&=fk!Yz>mhydpSs^((Ik=ewvkuzHsb19c=hO)QTEsH>5G5%Y4uP1 z3st?}IRwx9SL_#z8~ImE7@Be9cL`71t^ejaiT`$;>45(8Y?@$+|F?rx{bI9ymBxI zJjS_v&FIfdA*r@C{JJlV1V^KsV^|I$#-58M%=#4UYxrGa9Wjqq#6+^6G`YV@NRF6MZ&&L{EA*5-A8rqAZS-`$X~i zF=jGoXq^zsjDd!9NFrh7C0>w3bKixmgF{ui!0TO_1_1kXvSaUG@sgi6>Y|a?5QK`eCB5yM#J^QuGlp>dNO^oHq4$08EQ06qYTU6|D2j!-lbvI)_mQwfe&73Zk|ad_%6)JMFt74CWuJVA+FM!Sv9+CS z^B6#rBJZ(Z4Ior{<<9kYAZMlHhogjc1lsy8j=h1)DWp1fxaTDJK3%2#J zAYtF~3j%)(95zHjy7Cr}AgqDVGFI(yE7nf64JAc;85`R2?e+wFQ-2(Ef-A>*Z$^J(|#@TJO&q@j(8H4I`pamMuO&+9UiDh_(Xv(Ztv{j;g|hneI;b$Z2m z8meiBRn)1vhzg?6!Q{yru5!}N!~ z-RLQS|Lo;&Cf^JnWA1HA>=2sp|3;K#{)H(0sQz;dQsvR40z=W7P2z?clk<-~Sx2S^ zqfSnKJFqr>>%je8r-qz6f1|t+zO$`J-8MVGl8p;AJPy|(NF(sqa4_H`tI4|Y454s4 zR%pkFLW)OV8OOnFE>uxW>6-#mw)IaCvlufFI2~Fm8h^lhq!(nNJ+iHA10QoFOQ(F@c)tJLWQzc zR4fgERzMx5q&$a@z5=DTgkTWcqjXPi*dpGq#=A%@M<@Ern6^gUST;$!)|&abrq|DLQ(EVoa=eOaxfEXtYGYQDnj>51^9 ztcwvL0NR`U+py@_B`=~Q#@bsiIC21r9-Q^Q)HB+`oX4uw^5$&88N}h$-`6*m@_&5q zy(>_?0*$+%>t>J@juE6Ns?MulBJfaM4GPXDvLvI&HR|ih;H)h4AX!JrrIX1^*xRMb z00rkaZTWEY0>g~-D2!afm^`N{RcL|g^4nXz<&ExJoqXIttjRZurHRxNjXgmvb6 zO`Z=1aBH&P7H4i6)(5aJV?mBGd5Zz>MSf`6a7nwUU2{*RB)}+MH++(>pL>L~VuxNU z8U|X-j-(B>Xc|7BiP^lXA=;{!lN!7|5lyBXt#LcOh}A%^1P_(neo8I4GO5~xdtqXq zw7{qZMlpz9*~A#10X`FdL{!3X$lcLuUUZpc)`PFAB(suInk_bR-W=DiNnj>2=-G7U zWz{ooRF49xo!Y}X%tS+$NeKRPe;KZJczCdTr*_F*&&pz&ZNb4{(`~!g;N4l*HTj&# zfmX+giZi%)QHbIj_4MGQKf-Q}T1^2MKrEawox$!|ZEGM1PqbHzl8a$c!UIRwt{5fR##HJqye>}fM?_Cj>kjI96|P{Y0n#sCD(my4u} zr@ZtAZ#MT6BY29|k}rJ=ptkiq`)xnC&o8 zj~v^4E7l|USY@xIIhXu7#^jGGWa@O_BfQ!J{@XD>tiYYYwCxlpb0hNBY=}|##Ccg* zhr+VixL!18vge_NT^Zg%XSm?7KwNM{?27zgJ9Qz>O&awcvag{behXgrcKwyN)5 zmtJzw&w8GEMFGDXlPbO>C?^&op)3_Ef&_MtZ?lK!T8bG@Xbwt|;!#3pNYE)t5o#1UT42B89A_>(M@ zm|qkv=8PMcf7=7q5)WBJFz9YYe&-}I`pW5p0x*Rt*-(2pC8}O2*e~)<4Slagux7i7 z87ej6bv}kP1FvPiT#UWySWdk6-eAqWk#n2CgvfP9b264jeqBBq?C0$K(FJ)KscO{| z-Ib@DG{H3J&;O;kAJuC0;;rk>g@_fRRuEB_iiHY#ZG`2Jsp3LsmBL_SatA(;%i{$j zcb&-5%vp=jvj2ADcM9V2mC{?URPSm>M)%UK5tn#TvBSc4-Kti#gT{?LBSW?@VB3Ds z$0lN>5cTnv2Zwq)17D+VC(YqR2@Li((;gl$e z7)99b!rBIa{(NP=jN|J<5AeHWtYuH{d~%5&A@HJ)O`5gLO0|p@VeV_8hjHh5RM5ZD zxTZdk$41eoUhtva{df1M=iL1h6zc zZxL5*OIJ+ET+e!Y?o5SOWRx?8m!)yJA?m(X0-ZZ6AU%?iHJ$Oi%q*&z)_71STq