Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| onairscreen:manual-de [04.09.2026 01:14] – external edit 127.0.0.1 | onairscreen:manual-de [27.09.2026 02:22] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| # OnAirScreen – Bedienungsanleitung | # OnAirScreen – Bedienungsanleitung | ||
| - | **Version: | + | **Version: |
| **Autor:** Sascha Ludwig, [astrastudio.de](http:// | **Autor:** Sascha Ludwig, [astrastudio.de](http:// | ||
| **Projekt: | **Projekt: | ||
| Line 11: | Line 11: | ||
| ## Inhaltsverzeichnis | ## Inhaltsverzeichnis | ||
| - | 1. [Überblick](# | + | 1. [Überblick](# |
| - | 2. [Installation und Start](#2-installation-und-start) | + | 2. [Installation und Start](#installation_und_start) |
| - | 3. [Hauptbildschirm](# | + | 3. [Hauptbildschirm](# |
| - | 4. [Tastaturkürzel (Hotkeys)](# | + | 4. [Tastaturkürzel (Hotkeys)](# |
| - | 5. [Einstellungsdialog](# | + | 5. [Einstellungsdialog](# |
| - | 6. [Funktionen im Detail](#6-funktionen-im-detail) | + | 6. [Funktionen im Detail](#funktionen_im_detail) |
| - | 7. [Fernsteuerung und API](#7-fernsteuerung-und-api) | + | 7. [Fernsteuerung und API](#fernsteuerung_und_api) |
| - | 8. [Presets (Profile)](# | + | 8. [Presets (Profile)](# |
| - | 9. [Kommandozeilenoptionen](# | + | 9. [Kommandozeilenoptionen](# |
| - | 10. [Konfigurationsspeicherort](# | + | 10. [Konfigurationsspeicherort](# |
| - | 11. [Fehlerbehebung](# | + | 11. [Fehlerbehebung](# |
| --- | --- | ||
| Line 39: | Line 39: | ||
| - **Textzeilen** NOW, NEXT und WARN (mit Prioritätssystem) | - **Textzeilen** NOW, NEXT und WARN (mit Prioritätssystem) | ||
| - **Wetter-Widget** (OpenWeatherMap) | - **Wetter-Widget** (OpenWeatherMap) | ||
| - | - **Fernsteuerung** per Tastatur, Maus (Doppelklick/ | + | - **Fernsteuerung** per Tastatur, Maus (Doppelklick/ |
| - **Home-Assistant-Integration** via MQTT Autodiscovery | - **Home-Assistant-Integration** via MQTT Autodiscovery | ||
| - | - **GPIO-Eingänge** auf dem Raspberry Pi (Mixer-GPI über Optokoppler | + | - **GPIO-Eingänge** auf dem Raspberry Pi (Mixer-GPI über Optokoppler), **Axia-Livewire-GPIO** (Multicast oder LWRP TCP 93, z. B. Mic-ON-Lampe) |
| + | - **Instanz-Links**: | ||
| Die Anwendung startet standardmäßig im **Vollbildmodus** mit ausgeblendetem Mauszeiger und eignet sich für dedizierte Studio-Monitore, | Die Anwendung startet standardmäßig im **Vollbildmodus** mit ausgeblendetem Mauszeiger und eignet sich für dedizierte Studio-Monitore, | ||
| Line 53: | Line 54: | ||
| ## 2. Installation und Start | ## 2. Installation und Start | ||
| + | Fertige Builds für Windows, macOS, Linux und Raspberry Pi gibt es im [astrastudio-Shop](https:// | ||
| + | OnAirScreen startet im **Vollbild** mit ausgeblendetem Mauszeiger. Einstellungen: | ||
| - | ### Voraussetzungen | + | ### Windows |
| - | - **Python 3.11+** mit PySide6 | + | 1. `OnAirScreen_*_Win_x64.msi` herunterladen |
| - | - Abhängigkeiten: siehe `requirements.txt` | + | 2. Die MSI doppelklicken und dem Installer folgen. Die rechnerweite Installation braucht Administratorrechte. |
| - | - Netzwerkzugriff für UDP/ | + | 3. OnAirScreen liegt unter `C:\Program Files\OnAirScreen`. |
| + | 4. Start über das **Startmenü** oder das Desktop-Symbol. | ||
| + | Im Startmenü-Ordner liegen außerdem **OAS Send** (Befehlssender) und **OAS Send (no console)**. Einstellungen stehen in der Windows-Registry, | ||
| + | Eine ältere portable `.exe` wird vom MSI **nicht** entfernt. Die Datei nach der Installation selbst löschen. | ||
| - | ### Start aus dem Quellcode | + | Windows gleicht die Internetzeit standardmäßig nur etwa einmal pro Woche ab. Bei Zeitquelle **Local** kann die Uhr falsch gehen. Sync-Intervall im Betriebssystem verkürzen oder in OnAirScreen NTP / PTP / LTC nutzen (siehe [5.8 Time Source](#time_source)). |
| + | |||
| + | ### macOS | ||
| + | |||
| + | 1. `OnAirScreen_*_macOS.dmg` herunterladen. | ||
| + | 2. Das DMG öffnen und **OnAirScreen.app** nach **Programme** (Applications) ziehen. Nicht direkt | ||
| + | 3. OnAirScreen aus Programme, Launchpad oder Spotlight starten. | ||
| + | |||
| + | Shop-Builds sind mit einer Apple Developer ID signiert und notariert. Nach dem Kopieren nach Programme startest du die App aus Programme, Launchpad oder Spotlight. Für lokale Audio-Meter die **Mikrofon**-Berechtigung erteilen. | ||
| + | |||
| + | ### Linux (Debian / Ubuntu / Raspberry Pi OS) | ||
| + | |||
| + | Offizielle Builds sind ein `.deb`. Nach der Installation liegt die App in `/ | ||
| + | |||
| + | |||
| + | | Shop-ZIP | ||
| + | | --------------------------- | ------------------------------------ | ----------- | ---------------------- | | ||
| + | | `OnAirScreen_Linux_x64.zip` | `OnAirScreen_*_Linux_x64.deb` | ||
| + | | `OnAirScreen_PiOS_x64.zip` | ||
| + | |||
| + | |||
| + | Prüfen mit `dpkg --print-architecture`. Die beiden Pakete sind nicht austauschbar. | ||
| + | |||
| + | Raspberry Pi: 64-bit-OS auf Zero 2 W, Pi 3 / 4 / 400, CM4, Pi 5 / 500, CM5. Nicht unterstützt: | ||
| + | |||
| + | ZIP entpacken, danach mit **apt** installieren (nicht allein `dpkg -i`), damit PortAudio, OpenGL und Xcb nachgezogen werden. Das `./` vor der Datei ist Pflicht: | ||
| ```bash | ```bash | ||
| - | python start.py | + | unzip OnAirScreen_Linux_x64.zip |
| + | cd ~/ | ||
| + | sudo apt update | ||
| + | sudo apt install ./ | ||
| ``` | ``` | ||
| + | Start über das Anwendungsmenü oder `onairscreen`. Update: neues `.deb` ebenso installieren; | ||
| + | |||
| + | Falls `dpkg -i` Abhängigkeiten vermisst hat: `sudo apt -f install`. | ||
| + | |||
| + | Pakete sind OpenPGP-signiert. Optionale Prüfung: [Package signing (GPG)](https:// | ||
| + | |||
| + | ### Fedora | ||
| + | |||
| + | Das Fedora-RPM wird auf Fedora 44 gebaut (Fedora 44+). Ältere RHEL-, Rocky- oder Alma-Versionen können wegen glibc scheitern. | ||
| + | |||
| + | ```bash | ||
| + | sudo rpm --import https:// | ||
| + | sudo dnf install ./ | ||
| + | ``` | ||
| + | |||
| + | `dnf` zieht PortAudio und weitere Systembibliotheken nach. Signatur prüfen: `rpm -K OnAirScreen_*_Fedora_x64.rpm` (erwartet: `digests signatures OK`). | ||
| + | |||
| + | ### Raspberry-Pi-SD-Karten-Image | ||
| + | |||
| + | Das [SD-Karten-Image](https:// | ||
| + | |||
| + | [Raspberry Pi Imager](https:// | ||
| + | |||
| + | - [macOS](https:// | ||
| + | - [Windows](https:// | ||
| + | - [Ubuntu x86](https:// | ||
| + | |||
| + | 1. microSD-Karte einlegen. | ||
| + | 2. Raspberry Pi Imager starten. | ||
| + | 3. **OS wählen** → **Eigenes Image verwenden** (`Use custom`) → die OnAirScreen-`.img` wählen (nicht die `.zip`). | ||
| + | 4. **Speicher wählen** (bzw. **SD-Karte wählen**) und die Karte auswählen. | ||
| + | 5. **Schreiben**. | ||
| + | Standardbenutzer: | ||
| - | ### Vorkompilierte Versionen | + | Auf dem Desktop: **OnAirScreen**, |
| - | Fertige Binaries für Windows, Linux, macOS und Raspberry Pi sind über [astrastudio.de/shop](https:// | + | Wer bereits |
| ### Erster Start | ### Erster Start | ||
| Line 87: | Line 154: | ||
| Der Hauptbildschirm ist in folgende Bereiche gegliedert: | Der Hauptbildschirm ist in folgende Bereiche gegliedert: | ||
| - |  | | | **Status-LEDs 1–4** | `buttonLED1`–`buttonLED4` | Große farbige Statusanzeigen (ON AIR, PHONE, …) | | ||
| - | | **Audio-Meter** | + | | **Audio-Meter** |
| | **Uhr** | | **Uhr** | ||
| | **Lock-LED** | | **Lock-LED** | ||
| - | | **AIR-Timer 1–4** | + | | **AIR-Timer 1–4** |
| + | | **Datum** | ||
| | **NOW** | | **NOW** | ||
| | **NEXT** | | **NEXT** | ||
| | **WARN** | | **WARN** | ||
| + | | **Textuhr** | ||
| Line 114: | Line 182: | ||
| - Standard: Vollbild mit verstecktem Mauszeiger | - Standard: Vollbild mit verstecktem Mauszeiger | ||
| - | - Umschalten: `F` oder `Ctrl+F` (macOS: `Cmd+F`), **Doppelklick** auf eine leere Fläche des Hauptbildschirms, | + | - Umschalten: `F` oder `Ctrl+F` (macOS: `Cmd+F`), **Doppelklick** auf eine leere Fläche des Hauptbildschirms, |
| - | - **Rechtsklick-Menü: | + | - **Rechtsklick-/ |
| - Der Vollbild-Zustand wird in den Einstellungen (`General/ | - Der Vollbild-Zustand wird in den Einstellungen (`General/ | ||
| + | - Einstellungen → General → **Always start in fullscreen mode** (`General/ | ||
| - Im Fenstermodus werden Position und Größe gespeichert (`Window/ | - Im Fenstermodus werden Position und Größe gespeichert (`Window/ | ||
| Line 134: | Line 203: | ||
| | Taste(n) | | Taste(n) | ||
| | --------------------------------- | ------------------------------------------------ | | | --------------------------------- | ------------------------------------------------ | | ||
| + | | `H` | Hotkey-Overlay ein/ | ||
| | `F` / `Ctrl+F` | | `F` / `Ctrl+F` | ||
| | `Ctrl+S` / `Ctrl+, | | `Ctrl+S` / `Ctrl+, | ||
| | `Q` / `Ctrl+Q` / `Ctrl+C` / `ESC` | OnAirScreen beenden | | `Q` / `Ctrl+Q` / `Ctrl+C` / `ESC` | OnAirScreen beenden | ||
| | `I` | IP-Adressen für 10 Sekunden in NOW/NEXT anzeigen | | | `I` | IP-Adressen für 10 Sekunden in NOW/NEXT anzeigen | | ||
| - | |||
| - | Beim Beenden erscheint die WARN-Meldung `QUITTING ONAIRSCREEN` auf dem Hauptbildschirm, | ||
| + | Das Overlay listet diese Tastenkürzel auf dem Hauptbildschirm. Schließen mit `H`, `Esc` oder einem Klick auf den abgedunkelten Hintergrund. Andere Main-Window-Hotkeys sind gesperrt, solange es offen ist; `Esc` beendet OnAirScreen erst, wenn das Overlay geschlossen ist. Rechtsklick / Lang-Klick → **Hotkeys** öffnet dasselbe Overlay. | ||
| + | Beim Beenden erscheint die WARN-Meldung `QUITTING ONAIRSCREEN` auf dem Hauptbildschirm, | ||
| ### Status-LEDs | ### Status-LEDs | ||
| Line 153: | Line 223: | ||
| | `3` | LED 3 ein/aus | | | `3` | LED 3 ein/aus | | ||
| | `4` | LED 4 ein/aus | | | `4` | LED 4 ein/aus | | ||
| + | |||
| Linksklick auf eine Status-LED schaltet sie ebenso um. | Linksklick auf eine Status-LED schaltet sie ebenso um. | ||
| - | |||
| - | |||
| - | |||
| ### AIR-Timer | ### AIR-Timer | ||
| Line 172: | Line 240: | ||
| | `T` | Top-of-Hour-Countdown ein/aus | AIR3 | | | `T` | Top-of-Hour-Countdown ein/aus | AIR3 | | ||
| | `Enter` / `Return` | | `Enter` / `Return` | ||
| + | |||
| Linksklick auf einen AIR-Timer startet oder stoppt ihn (wie `M` / `P` / Leertaste / `S`). Reset, TOTH und Timer-Dialog bleiben Tastatur bzw. Fernsteuerung. | Linksklick auf einen AIR-Timer startet oder stoppt ihn (wie `M` / `P` / Leertaste / `S`). Reset, TOTH und Timer-Dialog bleiben Tastatur bzw. Fernsteuerung. | ||
| - | |||
| - | |||
| - | |||
| ### OAS-USB-Tastatur (Sonderbelegung) | ### OAS-USB-Tastatur (Sonderbelegung) | ||
| Line 193: | Line 259: | ||
| ## 5. Einstellungsdialog | ## 5. Einstellungsdialog | ||
| - | Der Einstellungsdialog öffnet sich mit `Ctrl+S` oder `Ctrl+,` (oder Rechtsklick → **Settings**). Ist er bereits offen, kommt das Fenster nach vorne, ohne die Werte neu zu laden. Laufende AIR-Timer (inkl. TOTH) bleiben dabei unverändert. Der Dialog enthält **mehrere Registerkarten** (vertikal links angeordnet): | + | Der Einstellungsdialog öffnet sich mit `Ctrl+S` oder `Ctrl+,` (oder Rechtsklick |
| - | | Register | + | | Register |
| - | | --------------------- | + | | ---------------- | ---------------------------------------------------------------------------- | |
| - | | **General** | + | | **General** |
| - | | **Network** | + | | **Updates** | Update-Prüfung, |
| - | | **Time Source** | + | | **Network** |
| - | | **Advanced** | + | | **Links** | Andere OnAirScreens finden; Replicas (1→n voller Status) und Source-Mappings |
| - | | **Timers** | + | | **Advanced** |
| - | | **Fonts** | + | | **Timers** |
| - | | **Audio Meters** | + | | **Fonts** |
| - | | **GPIO** | + | | **Time Source** |
| - | | **About** | + | | **Audio Meters** | Pegelanzeige, |
| - | | **License** | + | | **GPIO** |
| + | | **About** | ||
| + | | **License** | ||
| Line 236: | Line 304: | ||
| - | | Einstellung | + | | Einstellung |
| - | | ------------- | ---------------------- | ----------- | ------------ | | + | | ------------- | ---------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | |
| - | | Instance Name | `General/ | + | | Instance Name | `General/ |
| Der Instanzname erscheint in der Web-UI (Titel und Status), in `/ | Der Instanzname erscheint in der Web-UI (Titel und Status), in `/ | ||
| + | |||
| + | **Der Name muss im LAN eindeutig sein.** Kündigt ein anderer OnAirScreen denselben Namen an, zeigen Settings → General, Settings → Links und die Web-UI eine Warnung mit den anderen Hosts. Nearby listet jeden kollidierenden Host extra (`name collision`). Linking rät die IP nicht — Host eintragen oder eine Instanz umbenennen. Apply wird abgelehnt, solange der Name kollidiert. | ||
| #### Stationsname und Slogan | #### Stationsname und Slogan | ||
| Line 307: | Line 377: | ||
| - | | Einstellung | + | | Einstellung |
| - | | --------------------- | ---------------------------- | ---------------- | + | | --------------------- | ---------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | Digital | + | | Clock Face | `Clock/face` | `digital` | `digital`, `analog`, `analog_numbers`, |
| - | | Hours LEDs | `Clock/ | + | | Digital (Legacy) |
| - | | Seconds LEDs | `Clock/ | + | | Hours LEDs | `Clock/ |
| - | | Digits LEDs | `Clock/ | + | | Seconds LEDs | `Clock/ |
| - | | Show seconds | + | | Digits LEDs | `Clock/ |
| - | | Seconds Layout | + | | Show seconds |
| - | | Static colon | `Clock/ | + | | Seconds Layout |
| - | | Use textclock | + | | Static colon | `Clock/ |
| - | | Replace IPs after 10s | `General/ | + | | Use textclock |
| - | | Replace with text | `General/ | + | | Replace IPs after 10s | `General/ |
| + | | Replace with text | `General/ | ||
| + | |||
| + | |||
| + | |||
| + | #### Anzeige | ||
| + | |||
| + | |||
| + | | Einstellung | ||
| + | | ------------------------------- | --------------------------------- | -------- | ---------------------------------------------------------------------- | | ||
| + | | Always start in fullscreen mode | `General/ | ||
| + | |||
| + | |||
| + | Apply wechselt das aktuelle Fenster nicht; die Option gilt beim nächsten Start. Ohne sie stellt OnAirScreen weiterhin den letzten Vollbild-Zustand wieder her (`General/ | ||
| + | |||
| + | ### 5.2 Updates | ||
| Line 335: | Line 420: | ||
| > Die Update-Funktion ist für **vorkompilierte (kostenpflichtige) Versionen** gedacht. | > Die Update-Funktion ist für **vorkompilierte (kostenpflichtige) Versionen** gedacht. | ||
| > | > | ||
| - | > Für die Update-Prüfung in der kostenpflichtigen Version muss ein **Update Key** eingegeben werden. Diesen erhältst du nach der Bestellung im Kundenportal unter [customer.astrastudio.de](https:// | + | > Für die Update-Prüfung in der kostenpflichtigen Version muss ein **Update Key** eingegeben werden. Diesen erhältst du nach der Bestellung im Kundenportal unter [customer.astrastudio.de](https:// |
| + | |||
| + | |||
| + | |||
| + | #### Aktivierung (kostenpflichtige Builds) | ||
| + | |||
| + | Shop-Builds müssen aktiviert werden. Selbst gebaute OpenSource-Builds nicht. | ||
| + | |||
| + | 1. Update Key aus dem Kundenportal ins Feld **Update Key** kopieren. | ||
| + | 2. **Activate** (mit Internet) oder die **Hardware ID** kopieren, im Portal eine Lizenzdatei laden und **Import license file**. | ||
| + | 3. Die Aktivierung gilt ein Jahr, sofern die Bestellung nichts anderes sagt. Der Tab Updates zeigt, ob dieser Rechner jetzt online verlängern kann. Wenn der Lizenzserver nicht erreichbar ist, vor Ablauf im Portal eine neue Lizenzdatei laden und importieren. Der Update Key bleibt derselbe. Es ist kein neuer Kauf. | ||
| + | 4. Zum Umziehen **Return license**. Den Return-Code im Portal einlösen (online erledigt das die App). Den neuen Rechner aktivieren. Ein defekter Rechner kann nur vom Support freigegeben werden. | ||
| + | 5. Ohne Lizenz läuft OnAirScreen 14 Tage voll. Danach kein Vollbild, kein GPIO, keine Audio-Meter, | ||
| + | 6. Beim Start wird der Update Key beim Lizenzserver geprüft, auch wenn **Check for Updates** aus ist. Lehnt der Server den Key ab, wird die Lizenz auf diesem Rechner sofort entfernt und es gelten dieselben Grenzen. Weitere Starts wiederholen diese automatische Prüfung und die Meldung nicht. **Check now** prüft weiter. Eine fehlende Netzwerkverbindung entfernt die Lizenz nicht. Eine neue Aktivierung prüft den Key wieder. | ||
| + | |||
| + | Passt diese Aktivierung für deinen Einsatz nicht, schreib uns über das [Kontaktformular](https:// | ||
| + | |||
| + | Dieselben Aktionen gibt es in den Web-UI-Einstellungen. | ||
| --- | --- | ||
| - | ### 5.2 Network | + | |
| + | |||
| + | ### 5.3 Network | ||
| Line 346: | Line 450: | ||
| - | | Einstellung | + | | Einstellung |
| - | | ----------------- | --------------------------- | ------------- | ------------------------- | | + | | ----------------- | --------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | UDP Port | `Network/ | + | | UDP Port | `Network/ |
| - | | HTTP Port | `Network/ | + | | HTTP Port | `Network/ |
| - | | Multicast Address | `Network/ | + | | Multicast Address | `Network/ |
| - | | Web Settings PIN | `Network/ | + | | Web Settings PIN | `Network/ |
| + | |||
| Line 357: | Line 463: | ||
| - | | Einstellung | + | | Einstellung |
| - | | ------------------- | --------------------- | ------------- | ----------------------------- | | + | | ------------------- | --------------------- | ------------- | ---------------------------- | |
| - | | enable MQTT support | `MQTT/ | + | | enable MQTT support | `MQTT/ |
| | MQTT Server | | MQTT Server | ||
| - | | MQTT Server Port | `MQTT/ | + | | MQTT Server Port | `MQTT/ |
| | MQTT User | `MQTT/ | | MQTT User | `MQTT/ | ||
| - | | MQTT Password | + | | MQTT Password |
| - | | MQTT Device Name | `MQTT/ | + | | MQTT Device Name | `MQTT/ |
| Line 374: | Line 480: | ||
| - | | Einstellung | + | | Einstellung |
| - | | ------------------ | ------------------ | --------- | ----------------------------------------------------------- | | + | | ------------------ | ----------------- | -------- | ----------------------------------------------------- | |
| - | | enable OSC support | + | | enable OSC support | `OSC/ |
| - | | OSC Listen Port | `OSC/ | + | | OSC Listen Port | `OSC/ |
| - | | OSC Send Host | `OSC/ | + | | OSC Send Host | `OSC/ |
| - | | OSC Send Port | `OSC/ | + | | OSC Send Port | `OSC/ |
| Send Host wird nur für unaufgeforderten Status-Push gebraucht (Companion-Button-Feedback). Abfragen antworten immer an den UDP-Absender. | Send Host wird nur für unaufgeforderten Status-Push gebraucht (Companion-Button-Feedback). Abfragen antworten immer an den UDP-Absender. | ||
| - | --- | + | #### SNMP |
| - | ### 5.3 Time Source | ||
| - | Die Anzeigeuhr kann der lokalen Systemuhr, einem NTP-Server, einem PTPv2-Master (IEEE 1588-2008) oder SMPTE-LTC folgen (Leo-Bodnar-LBE-1110-USB-Serial | + | | Einstellung |
| + | | ------------------- | ------------------------- | -------- | ------------------------------------------------------- | | ||
| + | | enable SNMP support | `SNMP/ | ||
| + | | SNMP Listen Port | `SNMP/ | ||
| + | | sysContact | ||
| + | | sysLocation | ||
| + | | v2c Read Community | ||
| + | | v2c Write Community | `SNMP/ | ||
| + | | v3 User | `SNMP/ | ||
| + | | v3 Auth Password | ||
| + | | v3 Priv Password | ||
| + | | enable SNMP traps | ||
| + | | Trap Host | `SNMP/ | ||
| + | | Trap Port | `SNMP/ | ||
| + | | Trap Version | ||
| + | | Trap Community | ||
| + | | trap on silence | ||
| + | | trap on warning | ||
| + | | trap on LED change | ||
| - | Datum, Textuhr und AIR3-Top-of-Hour folgen derselben Wandzeit wie die große Uhr, wenn die Quelle Local, NTP oder PTP ist. Bei LTC bleiben sie auf der Systemzeit, weil LTC kein Kalenderdatum hat. | ||
| + | Mindestens eine v2c-Community oder ein v3-User muss gesetzt sein, sonst startet der Agent nicht. Community- und v3-Passwörter sind maskiert. | ||
| - | | Einstellung | + | --- |
| - | | ---------------- | ---------------------- | -------------- | ------------ | | + | |
| - | | Time Source | + | |
| - | | Enable NTP-Check | `NTP/ | + | |
| - | | NTP Server | + | |
| - | | PTP Interface | + | |
| - | | PTP Domain | + | |
| - | | LTC Input | `TimeSource/ | + | |
| - | | LTC Serial Port | `TimeSource/ | + | |
| - | | LTC Audio Device | `TimeSource/ | + | |
| - | | LTC Channel | + | |
| - | | LTC-Unlock-Warnung | `TimeSource/ | + | |
| - | **Local System Clock:** Anzeige = Systemuhr. Mit NTP-Check wird die Systemuhr mit dem NTP-Server verglichen (Abweichung > 0,3 s oder Fehler → Warnung, Priorität -1). | ||
| - | **NTP Server:** OnAirScreen fragt das Feld NTP Server ab und steuert eine eigene Uhr. Nach dem ersten gültigen Sample wird die OS-Zeit nicht mehr verwendet. Das Feld bleibt editierbar, auch wenn NTP-Check aus ist. Bei NTP-Verlust läuft die letzte Zeit weiter, plus Warnung. | + | ### 5.4 Links |
| - | **PTPv2 IEEE 1588-2008:** Software-Slave auf Multicast `224.0.1.129` UDP 319/320, Delay-Mechanismus E2E. Typische Genauigkeit im Millisekundenbereich (kein Hardware-Timestamping). Das Interface unabhängig vom AoIP-Interface der Audio Meters wählen. Bei Sync-Verlust: letzte Zeit läuft weiter, plus Warnung. | + | Mehrere OnAirScreens im LAN (Multicast-Discovery über den **Instanznamen**) oder per Host/HTTP-Port verbinden. Instanznamen müssen eindeutig sein; eine Kollision wird in Settings und der Web-UI angezeigt, Apply wird abgelehnt. Es gibt keine festen Master/Slave-Rollen: jede Instanz kann Replicas pushen **und** Sources abonnieren. Runtime-Status wird bei Änderung gepusht, nicht per Dauer-HTTP-Poll an alle Peers. Host-lokale WARN-Texte (`QUITTING ONAIRSCREEN`, Reboot/ |
| - | **LTC:** Eine Zeitquelle mit zwei Eingängen. Die Framerate wird aus den eingehenden Frames abgeleitet | + | **Replicas** (dieser Screen ist die Quelle): Instanzen aus der Nearby-Liste hinzufügen. Apply schreibt Follow auf dem Ziel und schickt den kompletten **Runtime**-Status: LED1–4 |
| - | **LBE-1110 Serial:** USB-CDC-virtueller Seriellport eines [Leo-Bodnar-LBE-1110](https://www.leobodnar.com/shop/index.php? | + | **Sources** (dieser Screen ist das Ziel): z. B. `Studio-1 |
| - | **Audio Input:** Dekodiert SMPTE-LTC (Biphase-Mark) | + | Nur **ein** Full-Follow pro Screen. Ist er schon Replica |
| - | Die Lock-LED unten rechts ist grün, wenn die gewählte Quelle eingerastet ist, sonst rot. Daneben: `PTP LOCK` / `PTP NOT LOCKED`, `NTP LOCK` / `NTP NOT LOCKED`, `LTC LOCK` / `LTC NOT LOCKED` | + | Discovery: Multicast `239.194.0.2` UDP **3311** (nicht |
| + | |||
| + | |||
| + | | Einstellung | ||
| + | | ----------------------- | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ||
| + | | Enable instance linking | `Links/ | ||
| + | | Replica *n* | `Links/replicaN_`* | aus | Ziel-Instanz (Dropdown der Nearby-Screens, | ||
| + | | Map *n* | ||
| + | | Replica of | `Links/ | ||
| - | > **Empfehlung: | ||
| --- | --- | ||
| - | ### 5.4 Advanced | + | |
| + | |||
| + | ### 5.5 Advanced | ||
| Line 463: | Line 583: | ||
| - | Städtenamen neben **City ID** eingeben, **Find** (oder Return) drücken und einen Treffer in der Liste wählen. Die City-ID wird automatisch eingetragen; | + | Städtenamen neben **City ID** eingeben, **Find** (oder Return) drücken und einen Treffer in der Liste wählen. Die City-ID wird automatisch eingetragen; |
| **Test API:** Schaltfläche zum Testen der API-Verbindung mit aktuellen Einstellungen. | **Test API:** Schaltfläche zum Testen der API-Verbindung mit aktuellen Einstellungen. | ||
| Line 475: | Line 595: | ||
| - | ### 5.5 Timers | + | ### 5.6 Timers |
| Für jeden AIR-Timer (Gruppe `Timers`): | Für jeden AIR-Timer (Gruppe `Timers`): | ||
| Line 501: | Line 621: | ||
| - | | Einstellung | + | | Einstellung |
| - | | --------------- | ------------------ | ------------- | -------------------------------------------------------------- | | + | | --------------- | ------------------ | ------------ | -------------------------------------------------------------- | |
| - | | TOTH Timer Text | `TimerTOTHText` | + | | TOTH Timer Text | `TimerTOTHText` |
| - | | AIR Min Width | `TimerAIRMinWidth` | `200` | + | | AIR Min Width | `TimerAIRMinWidth` | `200` | Mindestbreite der AIR-Anzeigen (Pixel) |
| Line 511: | Line 631: | ||
| - | ### 5.6 Fonts | + | ### 5.7 Fonts |
| Für jedes UI-Element kann Schriftart, -größe und -stärke individuell gesetzt werden: | Für jedes UI-Element kann Schriftart, -größe und -stärke individuell gesetzt werden: | ||
| - | | Element | + | | Element |
| - | | ------------ | --------------------------------- | -------------------- | | + | | ------------ | --------------------------------- | ------------------ | |
| | LED1–4 | | LED1–4 | ||
| | AIR1–4 | | AIR1–4 | ||
| Line 532: | Line 652: | ||
| - | ### 5.7 About | + | ### 5.8 Time Source |
| + | Die Anzeigeuhr kann der lokalen Systemuhr, einem NTP-Server, einem PTPv2-Master (IEEE 1588-2008) oder SMPTE-LTC folgen (Leo-Bodnar-LBE-1110-USB-Serial **oder** Dekodierung von einem lokalen Audioeingang). **OnAirScreen ändert die Betriebssystem-Uhr nie.** NTP und PTP steuern eine eigene Zeitbasis (`time.monotonic()`); | ||
| - | | Element | + | Datum, Textuhr und AIR3-Top-of-Hour folgen derselben Wandzeit wie die große Uhr, wenn die Quelle Local, NTP oder PTP ist. Bei LTC bleiben sie auf der Systemzeit, weil LTC kein Kalenderdatum hat. |
| - | | ------------------ | ---------------------------------------------------------------------- | | + | |
| - | | Version | + | |
| - | | Distribution | + | |
| - | | Settings Path | Pfad zur Konfigurationsdatei | + | |
| - | | Log Folder | + | |
| - | | Open log folder | + | |
| - | | Loglevel | + | |
| - | | Enable Reset | Checkbox zum Freischalten des Reset-Buttons | + | |
| - | | Reset all settings | Setzt **alle** Einstellungen auf Standardwerte zurück (unwiderruflich) | | + | |
| + | |||
| + | | Einstellung | ||
| + | | ------------------ | ------------------------------ | -------------- | ------------------------------------------------------------------------------- | | ||
| + | | Time Source | ||
| + | | Enable NTP-Check | ||
| + | | NTP Server | ||
| + | | PTP Interface | ||
| + | | PTP Domain | ||
| + | | LTC Input | `TimeSource/ | ||
| + | | LTC Serial Port | `TimeSource/ | ||
| + | | LTC Audio Device | ||
| + | | LTC Channel | ||
| + | | LTC-Unlock-Warnung | `TimeSource/ | ||
| + | |||
| + | |||
| + | **Local System Clock:** Anzeige = Systemuhr. Mit NTP-Check wird die Systemuhr mit dem NTP-Server verglichen (Abweichung > 0,3 s oder Fehler → Warnung, Priorität -1). | ||
| + | |||
| + | **NTP Server:** OnAirScreen fragt das Feld NTP Server ab und steuert eine eigene Uhr. Nach dem ersten gültigen Sample wird die OS-Zeit nicht mehr verwendet. Das Feld bleibt editierbar, auch wenn NTP-Check aus ist. Bei NTP-Verlust läuft die letzte Zeit weiter, plus Warnung. | ||
| + | |||
| + | **PTPv2 IEEE 1588-2008: | ||
| + | |||
| + | **LTC:** Eine Zeitquelle mit zwei Eingängen. Die Framerate wird aus den eingehenden Frames abgeleitet (24 / 25 / 30). Bei LTC-Verlust wird der letzte Timecode gehalten (`LTC NOT LOCKED`). Die großen WARN-Meldungen (`waiting for LTC lock`, `Clock not LTC synchronized`, | ||
| + | |||
| + | **LBE-1110 Serial:** USB-CDC-virtueller Seriellport eines [Leo-Bodnar-LBE-1110](https:// | ||
| + | |||
| + | **Audio Input:** Dekodiert SMPTE-LTC (Biphase-Mark) von einem **lokalen** PortAudio-Capture-Gerät, | ||
| + | |||
| + | Die Lock-LED unten rechts ist grün, wenn die gewählte Quelle eingerastet ist, sonst rot. Daneben: `PTP LOCK` / `PTP NOT LOCKED` / `PTP ERROR`, `NTP LOCK` / `NTP NOT LOCKED`, `LTC LOCK` / `LTC NOT LOCKED` oder `LOCAL`. | ||
| + | |||
| + | > **Empfehlung: | ||
| --- | --- | ||
| Line 551: | Line 693: | ||
| - | ### 5.8 Audio Meters | + | ### 5.9 Audio Meters |
| - | Stereo-Pegelanzeige am linken Bildschirmrand: | + | Stereo-Pegelanzeige am linken Bildschirmrand: |
| Bestehende Configs mit `Audio/ | Bestehende Configs mit `Audio/ | ||
| - | | Einstellung | + | | Einstellung |
| - | | --------------------- | ---------------------------- | + | | ------------------------------------ | ------------------------------ |
| - | | Enable Audio Meters | + | | Enable Audio Meters |
| - | | Audio Source | + | | Audio Source |
| - | | Audio Input | + | | Audio Input | `Audio/ |
| - | | Livewire Channel | + | | Livewire Channel |
| - | | AoIP Interface | + | | AoIP Interface |
| - | | AES67 Stream ID | + | | AES67 Stream ID | `Audio/ |
| - | | AES67 Address | + | | AES67 Address |
| - | | AES67 Port | `Audio/ | + | | AES67 Port |
| - | | AES67 Name | `Audio/ | + | | AES67 Name |
| - | | AES67 Codec | + | | AES67 Codec | `Audio/ |
| - | | AES67 Sample Rate | + | | AES67 Sample Rate | `Audio/ |
| - | | AES67 Channels | + | | AES67 Channels |
| - | | AES67 Pasted SDP | `Audio/ | + | | AES67 Pasted SDP |
| - | | Meter Layout | + | | Meter Layout |
| - | | Display Unit | `Audio/ | + | | Display Unit |
| - | | Display Style | + | | Display Style | `Audio/ |
| - | | Meter Width | + | | Meter Width | `Audio/ |
| - | | LUFS Reference Preset | `Audio/ | + | | LUFS Reference Preset |
| - | | LUFS Reference | + | | LUFS Reference |
| - | | Peak Hold | + | | Peak Hold | `Audio/ |
| - | | Peak Hold Seconds | + | | Peak Hold Seconds |
| - | | TooLoud | + | | TooLoud |
| - | | TooLoud Text | `Audio/ | + | | TooLoud Text |
| - | | TooLoud Threshold | + | | TooLoud Threshold |
| - | | TooLoud Action | + | | TooLoud Action |
| - | | TooLoud LED | + | | TooLoud LED | `Audio/ |
| - | | Enable Silence Detection | `Audio/ | + | | Enable Silence Detection |
| - | | Show WARN in OAS | `Audio/ | + | | Show WARN in OAS |
| - | | Trigger when Device/ | + | | Trigger when Device/ |
| - | | Silence Message | + | | Silence Message |
| - | | Silence Threshold | + | | Silence Threshold |
| - | | Max. Silence duration | `Audio/ | + | | Max. Silence duration |
| - | | Recovery time | + | | Recovery time | `Audio/ |
| - | | HTTP GET URL | `Audio/ | + | | HTTP GET URL |
| Silence Detection nutzt **dieselbe Audioquelle** wie die Meter (Local Input, Livewire oder AES67). Der Schwellwert ist immer **Sample-Peak dBFS**, unabhängig von der Meter-Anzeige. Capture läuft weiter, wenn Silence Detection an ist, auch wenn die Meter ausgeblendet sind. | Silence Detection nutzt **dieselbe Audioquelle** wie die Meter (Local Input, Livewire oder AES67). Der Schwellwert ist immer **Sample-Peak dBFS**, unabhängig von der Meter-Anzeige. Capture läuft weiter, wenn Silence Detection an ist, auch wenn die Meter ausgeblendet sind. | ||
| Line 608: | Line 751: | ||
| **Lokaler Eingang:** unter macOS Mikrofon-Berechtigung für OnAirScreen. | **Lokaler Eingang:** unter macOS Mikrofon-Berechtigung für OnAirScreen. | ||
| - | |||
| --- | --- | ||
| Line 614: | Line 756: | ||
| - | ### 5.9 GPIO | + | ### 5.10 GPIO / MIDI |
| - | Raspberry-Pi-GPIO-Eingänge legen Mixer-GPI-Kontakte | + | GPIO legt Kontakte, Livewire-Source-Pins und MIDI-Befehle |
| + | |||
| + | #### Raspberry Pi | ||
| + | |||
| + | Raspberry-Pi-GPIO-Eingänge legen Mixer-GPI-Kontakte. Nur auf dem Raspberry Pi verfügbar; auf anderen Plattformen zeigt dieser Unter-Tab „not available“. | ||
| Pi-GPIO ist **3,3 V**. Mixer-GPI ist oft 5–24 V oder Open Collector — **immer ein PC817-Isolationsmodul verwenden**. Potenzialfreie Relaiskontakte nach GND dürfen direkt angeschlossen werden (interner Pull-up, Invert an). | Pi-GPIO ist **3,3 V**. Mixer-GPI ist oft 5–24 V oder Open Collector — **immer ein PC817-Isolationsmodul verwenden**. Potenzialfreie Relaiskontakte nach GND dürfen direkt angeschlossen werden (interner Pull-up, Invert an). | ||
| - | | Einstellung | ||
| - | | -------------- | ---------------------- | -------- | ------------ | | ||
| - | | Enable GPIO | `GPIO/ | ||
| - | | Debounce | ||
| - | | GPI*n* Enable | ||
| - | | GPI*n* BCM pin | `GPIO/ | ||
| - | | GPI*n* Invert | ||
| - | | GPI*n* Mode | `GPIO/ | ||
| - | | GPI*n* Action | ||
| - | | GPI*n* Command | `GPIO/ | ||
| - | **Level** (typisch Tally/ | + | | Einstellung |
| + | | -------------- | ------------------- | ---------------------------- | --------------------------------------------------------------------- | | ||
| + | | Enable GPIO | `GPIO/ | ||
| + | | Debounce | ||
| + | | GPI*n* Enable | ||
| + | | GPI*n* Name | `GPIO/ | ||
| + | | GPI*n* BCM pin | `GPIO/ | ||
| + | | GPI*n* Invert | ||
| + | | GPI*n* Mode | `GPIO/ | ||
| + | | GPI*n* Actions | `GPIO/ | ||
| + | | GPI*n* Command | `GPIO/ | ||
| + | |||
| + | |||
| + | **Level** (typisch Tally/ | ||
| Werks-Mapping für zwei Mixer-GPI-Leitungen: | Werks-Mapping für zwei Mixer-GPI-Leitungen: | ||
| Line 653: | Line 802: | ||
| </ | </ | ||
| < | < | ||
| + | |||
| + | |||
| Line 667: | Line 818: | ||
| </ | </ | ||
| < | < | ||
| + | |||
| + | |||
| Line 673: | Line 826: | ||
| **Werks-Defaults am Header** (Platine mit USB/ | **Werks-Defaults am Header** (Platine mit USB/ | ||
| - | | OAS-Eingang | BCM | Header-Stift | Typische Nutzung | | + | |
| - | | ----------- | --- | ------------ | ---------------- | | + | | OAS-Eingang | BCM | Header-Stift |
| - | | GPI1 | 17 | 11 | + | | ----------- | --- | ---------------------------- | ------------------ | |
| - | | GPI2 | 27 | 13 | + | | GPI1 | 17 | 11 |
| - | | Masse | — | 6, 9, 14, 20, 25, 30, 34, 39 | gemeinsames GND | | + | | GPI2 | 27 | 13 |
| + | | Masse | — | 6, 9, 14, 20, 25, 30, 34, 39 | gemeinsames GND | | ||
| Sichere BCM-Pins und zugehörige Header-Stifte (diese Werte unter **BCM pin**): | Sichere BCM-Pins und zugehörige Header-Stifte (diese Werte unter **BCM pin**): | ||
| + | |||
| | BCM | Header | BCM | Header | BCM | Header | | | BCM | Header | BCM | Header | BCM | Header | | ||
| Line 687: | Line 843: | ||
| | 16 | 36 | 17 | 11 | 24 | 18 | | | 16 | 36 | 17 | 11 | 24 | 18 | | ||
| | 26 | 37 | 27 | 13 | 25 | 22 | | | 26 | 37 | 27 | 13 | 25 | 22 | | ||
| + | |||
| **Pinout-Referenzen** (40-poliger Header, BCM-Nummerierung): | **Pinout-Referenzen** (40-poliger Header, BCM-Nummerierung): | ||
| Line 694: | Line 851: | ||
| - Pi 5 Überblick: [Raspberry Pi 5](https:// | - Pi 5 Überblick: [Raspberry Pi 5](https:// | ||
| - Compute-Module-IO-Boards: | - Compute-Module-IO-Boards: | ||
| + | |||
| + | |||
| + | |||
| + | #### Axia Livewire | ||
| + | |||
| + | Axia-Livewire-GPIO folgt Source-Pins (Operator-Mic, | ||
| + | |||
| + | Zwei Modi: | ||
| + | |||
| + | - **Multicast** (Standard): CMsg2 auf `239.192.255.4`. Die Mapping-Spalte **Channel** ist der Livewire-**Audiokanal** dieser Quelle. Der Rechner muss im AoIP-/ | ||
| + | - **LWRP (TCP)**: Verbindung zu einem Gerät (xNode GPIO, iPort, Konsole, …) unter **IP:93**. Die Mapping-Spalte heißt **Port** — GPIO-Port am Gerät, nicht Livewire-Audiokanal. Kein IGMP-Join; der Host muss im Livewire-/ | ||
| + | |||
| + | Typisches Mikrofon-ON-AIR-Profil: | ||
| + | |||
| + | |||
| + | | Einstellung | ||
| + | | -------------------- | ---------------------- | -------------------- | --------------------------------------------------------------------- | | ||
| + | | Enable Livewire GPIO | `GPIO/ | ||
| + | | Mode | `GPIO/ | ||
| + | | Host | `GPIO/ | ||
| + | | Port | `GPIO/ | ||
| + | | Password | ||
| + | | AoIP-Interface | ||
| + | | Debounce | ||
| + | | GPI*n* Enable | ||
| + | | GPI*n* Name | `GPIO/ | ||
| + | | GPI*n* Channel/ | ||
| + | | GPI*n* Direction | ||
| + | | GPI*n* Pin | `GPIO/ | ||
| + | | GPI*n* Invert | ||
| + | | GPI*n* Mode | `GPIO/ | ||
| + | | GPI*n* Actions | ||
| + | | GPI*n* Command | ||
| + | |||
| + | |||
| + | Werks-Mapping (Master **Enable Livewire GPIO** bleibt aus): Zeile 1 Kanal/Port 1 GPO Pin 1 → LED1, Zeile 2 Kanal/Port 2 GPO Pin 1 → AIR3. | ||
| + | |||
| + | Multicast ist `239.192.255.4` UDP **2055** (GPIO-Node → Konsole) und **2060** (Konsole → Node). OAS joined beide. Nach dem Join fordert OAS den aktuellen Pin-Zustand an, damit ein Mikrofon, das beim Start schon ON ist, die LED setzt. | ||
| + | |||
| + | **LWRP:** OAS öffnet TCP 93, sendet `LOGIN` (mit Passwort, falls gesetzt), `ADD GPI`, `ADD GPO` und fragt dann jeden beobachteten Port ab, damit ein Mikrofon, das beim Start schon ON ist, die LED setzt. Bei Verbindungsabbruch wird neu verbunden. | ||
| + | |||
| + | **Level** (typische ON-Lampe): GPO 1 low sendet `LED1:ON`, high sendet `OFF`. Invert bleibt **aus**, außer die Konsolen-Polarität ist umgekehrt. | ||
| + | |||
| + | #### MIDI | ||
| + | |||
| + | **MIDI** liest ein Eingangs-Interface (Settings → GPIO → MIDI) und legt Note- oder CC-Befehle auf dieselben LED- und AIR-Kommandos. **Learn** wartet bis zu 10 Sekunden auf die nächste Note oder den nächsten CC und füllt Kanal, Typ und Nummer. Clock, Active Sensing und SysEx werden ignoriert. | ||
| + | |||
| + | |||
| + | | Einstellung | ||
| + | | ----------------- | ----------------------- | -------- | ----------------------------------------------------------------------------------------------- | | ||
| + | | Enable MIDI | `GPIO/ | ||
| + | | Interface | ||
| + | | Debounce | ||
| + | | MIDI*n* Enable | ||
| + | | MIDI*n* Name | `GPIO/ | ||
| + | | MIDI*n* Channel | ||
| + | | MIDI*n* Type | `GPIO/ | ||
| + | | MIDI*n* Number | ||
| + | | MIDI*n* Threshold | `GPIO/ | ||
| + | | MIDI*n* Behavior | ||
| + | | MIDI*n* Invert | ||
| + | | MIDI*n* Actions | ||
| + | | MIDI*n* Command | ||
| + | |||
| + | |||
| + | **On/Off** hält den Pegel: Note On (Velocity > 0) oder ein CC ab der Schwelle sendet `LED1:ON`, Note Off oder ein CC unter der Schwelle sendet `OFF`. **Oneshot** sendet einmal pro Druck `LED1:ON`, mit Invert `LED1:OFF`. **Toggle** sendet einmal pro Druck `LED1: | ||
| + | |||
| + | **In Logic stehen nur On/ | ||
| + | |||
| + | #### Logic | ||
| + | |||
| + | **Logic** verknüpft Raspberry-Pi-, | ||
| + | |||
| + | |||
| + | | Operator | Ausgänge an | Ausgänge aus | | ||
| + | | -------- | ------------------------------------- | --------------------------------------- | | ||
| + | | OR | irgendein gewählter Eingang ist aktiv | alle gewählten Eingänge sind inaktiv | ||
| + | | AND | alle gewählten Eingänge sind aktiv | irgendein gewählter Eingang ist inaktiv | | ||
| + | |||
| + | |||
| + | Beispiel: Pi GPI1 `MIC1` und Pi GPI2 `MIC2` benennen. Regel `OR` mit diesen beiden Eingängen und den Ausgängen LED1 und AIR1 bleibt an, solange ein Mikrofon offen ist, und geht erst aus, wenn beide zu sind. | ||
| + | |||
| + | Ausgeschaltete, | ||
| + | |||
| + | |||
| + | | Einstellung | ||
| + | | ----------------- | --------------------- | -------- | --------------------------------------------------- | | ||
| + | | Rule *n* Enable | ||
| + | | Rule *n* Operator | `GPIO/ | ||
| + | | Rule *n* Inputs | ||
| + | | Rule *n* Outputs | ||
| + | | Rule *n* Command | ||
| + | |||
| + | |||
| + | Acht Regeln. Ein Mikrofon, das beim Start schon offen ist, schaltet eine passende Regel an, sobald der Pegel dieses Eingangs bekannt ist. | ||
| + | |||
| + | --- | ||
| + | |||
| + | |||
| + | |||
| + | ### 5.11 About | ||
| + | |||
| + | |||
| + | | Element | ||
| + | | ------------------ | ---------------------------------------------------------------------- | | ||
| + | | Version | ||
| + | | Distribution | ||
| + | | Settings Path | Pfad zur Konfigurationsdatei auf diesem System | ||
| + | | Log Folder | ||
| + | | Open log folder | ||
| + | | Loglevel | ||
| + | | Enable Reset | Checkbox zum Freischalten des Reset-Buttons | ||
| + | | Reset all settings | Setzt **alle** Einstellungen auf Standardwerte zurück (unwiderruflich) | | ||
| + | | Reboot | ||
| + | | Shutdown | ||
| Line 746: | Line 1018: | ||
| - | | Eingabe | + | | Eingabe |
| - | | ------------------ | ---------------------------------- | | + | | -------------------------- | ---------------------------------- | |
| - | | `2,10` oder `2.10` | 2 Minuten 10 Sekunden (Count-Down) | | + | | `2: |
| - | | `30` | + | | `30` |
| - | | `0` | Count-Up-Modus | + | | `0` | Count-Up-Modus |
| Line 809: | Line 1081: | ||
| - **Digital: | - **Digital: | ||
| - | - **Analog:** Klassisches Zifferblatt | + | - **Analog:** Klassisches Zifferblatt |
| + | - **Analog Numbers:** Klassisches Analog-Face mit 1–12 | ||
| + | - **Analog Studio:** Weißes Zifferblatt, | ||
| + | - **Analog Railway:** Weißes Bahnhofszifferblatt ohne Zahlen, spitze schwarze Zeiger, kontinuierlicher roter Sekundenzeiger mit Ring | ||
| + | - **Analog 24h smooth:** Cremefarbenes Zifferblatt, | ||
| + | - **Analog 24h ticking:** Dasselbe 24h-Zifferblatt mit tickendem Sekundenzeiger | ||
| + | |||
| + | ](https:// | ||
| - **Textuhr: | - **Textuhr: | ||
| - | - **Zeitquelle: | + | - **Zeitquelle: |
| - **Lock-LED** unten rechts: grün = eingerastet, | - **Lock-LED** unten rechts: grün = eingerastet, | ||
| - **Wetter-Widget: | - **Wetter-Widget: | ||
| Line 817: | Line 1107: | ||
| - | ### 6.6 Systembefehle | + | ### 6.6 Systembefehle |
| Line 827: | Line 1117: | ||
| - | > Diese Befehle sind **nicht** über die Einstellungs-UI erreichbar, sondern | + | Reboot und Shutdown gibt es auch unter **Settings → About** und in der Web-UI unter **System**. Beide fragen nach. HTTP `CMD: |
| - | ### 6.7 GPIO-Eingänge | + | ### 6.7 GPIO-Eingänge |
| - | Mixer-GPI (Kontakt) kann LEDs und AIR-Timer über die Raspberry-Pi-GPIO ansteuern. | + | Mixer-GPI (Kontakt) kann LEDs und AIR-Timer über **Raspberry-Pi-GPIO** ansteuern. |
| --- | --- | ||
| Line 839: | Line 1129: | ||
| ## 7. Fernsteuerung und API | ## 7. Fernsteuerung und API | ||
| - | OnAirScreen unterstützt Fernsteuerung über UDP, HTTP, Web-UI, MQTT, OSC, REST-API und Bitfocus Companion. | + | OnAirScreen unterstützt Fernsteuerung über UDP, HTTP, Web-UI, MQTT, OSC, SNMP, REST-API und Bitfocus Companion. |
| ### 7.1 UDP (Port 3310) | ### 7.1 UDP (Port 3310) | ||
| Line 887: | Line 1177: | ||
| - Dauerhaftes Connection-Badge (Live / Polling / Offline) plus Fehler-Modal | - Dauerhaftes Connection-Badge (Live / Polling / Offline) plus Fehler-Modal | ||
| - Zahnrad oben rechts: Settings-Overlay für alle editierbaren Einstellungen, | - Zahnrad oben rechts: Settings-Overlay für alle editierbaren Einstellungen, | ||
| + | - Links im Overlay: dieselbe Nearby-Liste, | ||
| - Audio Meters im Overlay: Dropdowns **Livewire Source** und **AES67 Stream** (Live-Discovery solange das Overlay offen ist) plus Paste SDP | - Audio Meters im Overlay: Dropdowns **Livewire Source** und **AES67 Stream** (Live-Discovery solange das Overlay offen ist) plus Paste SDP | ||
| + | |||
| Line 911: | Line 1203: | ||
| " | " | ||
| " | " | ||
| - | " | + | " |
| - | " | + | " |
| + | " | ||
| } | } | ||
| ``` | ``` | ||
| Line 923: | Line 1216: | ||
| curl " | curl " | ||
| ``` | ``` | ||
| + | |||
| + | **Instanz-Links** (ohne Web-Settings-PIN): | ||
| + | |||
| + | ```bash | ||
| + | curl http:// | ||
| + | curl -X POST http:// | ||
| + | -d ' | ||
| + | curl -X POST http:// | ||
| + | -d ' | ||
| + | ``` | ||
| + | |||
| + | `link` in `/ | ||
| **Web-Settings** (optionale PIN über `X-Settings-Token` nach `POST / | **Web-Settings** (optionale PIN über `X-Settings-Token` nach `POST / | ||
| Line 935: | Line 1240: | ||
| Geheimnisse (`updatekey`, | Geheimnisse (`updatekey`, | ||
| - | |||
| ### 7.5 MQTT | ### 7.5 MQTT | ||
| Line 942: | Line 1246: | ||
| - | | Topic | Payload | + | | Topic |
| - | | ---------------- | ----------------------- | --------------------- | | + | | ----------------------- | --------------------------------- | --------------------------- | |
| - | | `led{1-4}/ | + | | `led{1-4}/ |
| - | | `air{1-4}/ | + | | `air{1-4}/ |
| - | | `air{3-4}/ | + | | `air{3-4}/ |
| - | | `air3/ | + | | `air3/ |
| - | | `lufs/ | + | | `lufs/ |
| - | | `lufs/ | + | | `lufs/ |
| - | | `text/ | + | | `text/ |
| - | | `text/ | + | | `text/ |
| - | | `text/ | + | | `text/ |
| Line 958: | Line 1262: | ||
| - | | Topic | Payload | + | | Topic | Payload |
| - | | ------------------ | ------------------ | | + | | ---------------------------- | ------------------------------- | |
| - | | `led{1-4}/ | + | | `led{1-4}/ |
| - | | `air{1-4}/ | + | | `air{1-4}/ |
| - | | `air{1-4}/ | + | | `air{1-4}/ |
| - | | `air3/ | + | | `air3/ |
| - | | `text/ | + | | `text/ |
| - | | `warning/ | + | | `warning/ |
| - | | `silence/ | + | | `silence/ |
| - | | `lufs/ | + | | `lufs/ |
| - | | `lufs/ | + | | `lufs/ |
| - | | `lufs/ | + | | `lufs/ |
| - | | `instance/ | + | | `instance/ |
| Line 988: | Line 1292: | ||
| Der Home-Assistant-Gerätename lautet `OnAirScreen (Studio-1)`, | Der Home-Assistant-Gerätename lautet `OnAirScreen (Studio-1)`, | ||
| - | |||
| - | |||
| ### 7.6 Bitfocus Companion (empfohlen) | ### 7.6 Bitfocus Companion (empfohlen) | ||
| Line 1006: | Line 1308: | ||
| Presets: LED1–4 (Toggle + Farbe), AIR1–4 mit Live-Beschriftung und Zeit auf dem Button (MIC = AIR1), TOTH, Reset AIR3/4, NOW / NEXT / WARN, Silence, Loudness I+LRA, Reset I+LRA. | Presets: LED1–4 (Toggle + Farbe), AIR1–4 mit Live-Beschriftung und Zeit auf dem Button (MIC = AIR1), TOTH, Reset AIR3/4, NOW / NEXT / WARN, Silence, Loudness I+LRA, Reset I+LRA. | ||
| - | Variablen wie `$(oas: | + | Variablen wie `$(oas: |
| Wenn kein eigenes Modul geladen werden kann, bleibt **Generic OSC** als Alternative (nächster Abschnitt). OSC-Status-Push ist langsamer (alle 5 Sekunden) als HTTP-Poll / WebSocket. | Wenn kein eigenes Modul geladen werden kann, bleibt **Generic OSC** als Alternative (nächster Abschnitt). OSC-Status-Push ist langsamer (alle 5 Sekunden) als HTTP-Poll / WebSocket. | ||
| Line 1017: | Line 1319: | ||
| - | | Adresse | + | | Adresse |
| - | | -------------------- | -------------------------------- | --------------------- | | + | | ---------------------------- | ---------------------------------- | ----------------------- | |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| - | | `/ | + | | `/ |
| Line 1043: | Line 1345: | ||
| python3 utils/ | python3 utils/ | ||
| ``` | ``` | ||
| + | |||
| + | |||
| #### Alternative: | #### Alternative: | ||
| Line 1062: | Line 1366: | ||
| Query-Reply an den Command-Socket nutzt Companion **nicht** (anderer UDP-Port). | Query-Reply an den Command-Socket nutzt Companion **nicht** (anderer UDP-Port). | ||
| + | ### 7.8 SNMP (Port 1161) | ||
| - | ### 7.8 Befehlsreferenz | + | SNMP unter **Settings → Network** einschalten. Der Agent spricht **SNMPv2c** und **SNMPv3** (USM, SHA-256, AES-128). Standard-Port ist **1161** (kein privilegierter Port). 161 ist möglich, braucht auf Linux/macOS aber Rechte. |
| + | |||
| + | Die MIB liegt in `mibs/ | ||
| + | |||
| + | **GET / WALK** (Status wie `/ | ||
| + | |||
| + | **SET** (gleiche Semantik wie OSC): LED-State `0/1/2` = OFF/ | ||
| + | |||
| + | **Traps:** Silence, WARN-Textwechsel, | ||
| + | |||
| + | ```bash | ||
| + | # Status walk (v2c) | ||
| + | snmpwalk -v2c -c public localhost: | ||
| + | |||
| + | # LED1 an | ||
| + | snmpset -v2c -c private localhost: | ||
| + | |||
| + | # Walk mit SNMPv3 authPriv | ||
| + | snmpwalk -v3 -l authPriv -u nms -a SHA-256 -A ' | ||
| + | ``` | ||
| + | |||
| + | Ohne Write-Community (Default) ist v2c nur lesend. noAuthNoPriv ist nur zum Testen gedacht. | ||
| + | |||
| + | ### 7.9 Befehlsreferenz | ||
| Line 1070: | Line 1398: | ||
| - | | Befehl | + | | Befehl |
| - | | ---------------------------- | ----------------------------------- | | + | | --------------------------------- | ------------------------------------------------------------------- | |
| - | | `LED{1-4}: | + | | `LED{1-4}: |
| - | | `NOW: | + | | `NOW: |
| - | | `NEXT: | + | | `NEXT: |
| - | | `WARN: | + | | `WARN: |
| - | | `WARN: | + | | `WARN: |
| - | | `WARN: | + | | `WARN: |
| - | | `WARN: | + | | `WARN: |
| - | | `WARN: | + | | `WARN: |
| - | | `WARN: | + | | `WARN: |
| - | | `AIR1: | + | | `AIR1: |
| - | | `AIR2: | + | | `AIR2: |
| - | | `AIR3: | + | | `AIR3: |
| - | | `AIR3TIME: | + | | `AIR3TIME: |
| - | | `AIR3TOH: | + | | `AIR3TOH: |
| - | | `AIR4: | + | | `AIR4: |
| | `LUFSI: | | `LUFSI: | ||
| - | | `CMD: | + | | `FULLSCREEN: |
| - | | `CMD: | + | | `CMD: |
| - | | `CMD: | + | | `CMD: |
| + | | `CMD: | ||
| Line 1102: | Line 1431: | ||
| - | | Befehl | + | | Befehl |
| - | | ----------------------------------------------- | ----------------------- | | + | | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| + | | `CONF: | ||
| `CONF: | `CONF: | ||
| Line 1206: | Line 1537: | ||
| python start.py --loglevel DEBUG | python start.py --loglevel DEBUG | ||
| python start.py -l WARNING | python start.py -l WARNING | ||
| + | python start.py --start-time 2026-09-14T12: | ||
| ``` | ``` | ||
| - | | Option | + | | Option |
| - | | ------------------ | ----------------------------------------------- | ---------------------------------------------------- | | + | | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------ | |
| - | | `-l`, `--loglevel` | `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | Log-Level überschreiben (wird **nicht** gespeichert) | | + | | `-l`, `--loglevel` | `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | Log-Level überschreiben |
| + | | `--start-time` | ||
| Line 1240: | Line 1573: | ||
| - | | Plattform | Log-Ordner | + | | Plattform | Log-Ordner |
| - | | --------- | ----------------------------------------------- | | + | | --------- | ---------------------------------------------- | |
| | Linux | `~/ | | Linux | `~/ | ||
| - | | macOS | `~/ | + | | macOS | `~/ |
| - | | Windows | + | | Windows |
| Line 1254: | Line 1587: | ||
| Crash-Dateien werden immer geschrieben, | Crash-Dateien werden immer geschrieben, | ||
| - | |||
| --- | --- | ||
| Line 1273: | Line 1605: | ||
| ### Fernsteuerung funktioniert nicht | ### Fernsteuerung funktioniert nicht | ||
| - | - Firewall-Regeln für UDP/ | + | - Firewall-Regeln für UDP/ |
| - Korrekte IP-Adresse und Ports verwenden | - Korrekte IP-Adresse und Ports verwenden | ||
| - Mit `curl http:// | - Mit `curl http:// | ||
| Line 1281: | Line 1613: | ||
| ### GPIO schaltet LEDs oder Timer nicht | ### GPIO schaltet LEDs oder Timer nicht | ||
| - | - GPIO funktioniert nur auf dem Raspberry Pi. Status unter **Settings → GPIO** prüfen | + | **Raspberry Pi** (Unter-Tab **Raspberry Pi**): |
| + | |||
| + | - Pi-GPIO funktioniert nur auf dem Raspberry Pi. Andere Plattformen zeigen auf diesem Unter-Tab „not available“ | ||
| + | - Status unter **Settings → GPIO → Raspberry Pi** prüfen | ||
| - PC817-Modul verwenden; niemals 5–24 V vom Mixer direkt auf Pi-Pins | - PC817-Modul verwenden; niemals 5–24 V vom Mixer direkt auf Pi-Pins | ||
| - Invert (Standard an für Kontakt nach GND) sowie Level- vs. Flanken-Modus prüfen | - Invert (Standard an für Kontakt nach GND) sowie Level- vs. Flanken-Modus prüfen | ||
| - GPIO und die jeweilige GPI-Zeile aktivieren, dann Apply | - GPIO und die jeweilige GPI-Zeile aktivieren, dann Apply | ||
| + | |||
| + | **Axia Livewire** (Unter-Tab **Axia Livewire**): | ||
| + | |||
| + | - Livewire GPIO und die Mapping-Zeile aktivieren, dann Apply | ||
| + | - Typische Mic-ON-Lampe: | ||
| + | - **Multicast: | ||
| + | - **LWRP:** Mode auf **LWRP (TCP)**, Geräte-**Host** (TCP 93). Mapping-**Port** ist der GPIO-Port am Gerät, nicht ein Livewire-Audiokanal. Status „host is empty“ / „LWRP failed“: IP fehlt oder Gerät nicht erreichbar. VLAN gilt weiterhin; IGMP wird nicht genutzt | ||
| + | - Keine Pakete / LED bleibt aus: prüfen, ob Konsole/ | ||
| + | - Mic beim OAS-Start schon ON: OAS fordert nach Join/ | ||
| Line 1364: | Line 1708: | ||
| Die Reports enthalten keine Settings, MQTT-Passwörter oder API-Keys. `--loglevel DEBUG` nur kurz zum Reproduzieren nutzen, bevor die Logs verschickt werden. Nach einem Absturz erscheint dieser Dialog auch beim nächsten Start (schließt sich nach 30 Sekunden). | Die Reports enthalten keine Settings, MQTT-Passwörter oder API-Keys. `--loglevel DEBUG` nur kurz zum Reproduzieren nutzen, bevor die Logs verschickt werden. Nach einem Absturz erscheint dieser Dialog auch beim nächsten Start (schließt sich nach 30 Sekunden). | ||
| - | |||
| --- | --- | ||
| Line 1376: | Line 1719: | ||
| - LED-Änderungen (Quelle: manual, autoflash, timedflash, API) | - LED-Änderungen (Quelle: manual, autoflash, timedflash, API) | ||
| - AIR-Timer Start/ | - AIR-Timer Start/ | ||
| - | - Empfangene Befehle (UDP/ | + | - Empfangene Befehle (UDP/ |
| - Warnungen hinzugefügt/ | - Warnungen hinzugefügt/ | ||
| - Einstellungsänderungen | - Einstellungsänderungen | ||