API Dokumentation
Die FNA-Steuerung stellt eine REST-API bereit, über die alle Funktionen der Ampelsteuerung programmatisch abgerufen und gesteuert werden können. Die API ist unter http://<ip-adresse>/api/ erreichbar.
Übersicht der Endpunkte
/api/status
Aktuellen Status der Ampeln abrufen
GET
/api/cmd
Verfügbare Befehle abrufen
POST
/api/cmd/{cmd}
Befehl ausführen
GET
/api/config
Alle Konfigurationen abrufen
POST
/api/config
Neue Konfiguration erstellen
GET
/api/config/preset
Aktive Voreinstellung abrufen
GET
/api/config/volume
Lautstärke abrufen
PUT
/api/config/volume
Lautstärke setzen
GET
/api/config/brightness
Helligkeit abrufen
PUT
/api/config/brightness
Helligkeit setzen
PUT
/api/config/nach
Nachschießen-Anzahl setzen
DELETE
/api/config/nach
Nachschießen deaktivieren
GET
/api/config/{id}
Einzelne Konfiguration abrufen
PUT
/api/config/{id}
Konfiguration aktualisieren
DELETE
/api/config/{id}
Konfiguration löschen
GET
/api/logs
Protokolleinträge abrufen
DELETE
/api/logs
Protokoll löschen
GET
/api/logs/training
Trainings-Modus abrufen
PUT
/api/logs/training
Trainings-Modus setzen
GET
/api/time
Systemzeit abrufen
POST
/api/sync-time
Systemzeit synchronisieren
Status
GET /api/status
Gibt den aktuellen Betriebsstatus beider Ampeln zurück.
Antwort 200 OK
{
"a1": {
"red": true,
"yellow": false,
"green": false,
"time": 120,
"group": "A"
},
"a2": {
"red": false,
"yellow": false,
"green": true,
"time": 120,
"group": "B"
},
"run": true,
"group_mode": false,
"count_arrows": 3,
"alt_mode": false,
"shoot_break": false
}
a1 / a2
Objekt
Status von Ampel 1 und 2
a1.red
Boolean
Rotes Licht aktiv
a1.yellow
Boolean
Gelbes Licht aktiv
a1.green
Boolean
Grünes Licht aktiv
a1.time
Integer
Verbleibende Zeit in Sekunden
a1.group
String
Zugewiesene Gruppe (z. B. "A" oder "B")
run
Boolean
Steuerung läuft aktuell
group_mode
Boolean
AB/CD-Gruppenmodus aktiv
count_arrows
Integer
Aktuell eingestellte Pfeilanzahl
alt_mode
Boolean
Alternierend-Modus aktiv
shoot_break
Boolean
Schießpause aktiv
Befehle
GET /api/cmd
Gibt zurück, welche Befehle aktuell verfügbar (ausführbar) sind.
Antwort 200 OK
{
"CommandStatus": {
"START": true,
"STOP": false,
"SWITCH": false,
"BREAK": false
}
}
START
Schießsequenz starten
STOP
Schießsequenz stoppen
SWITCH
Gruppe wechseln (bei Alternierend-Modus)
BREAK
Schießpause einleiten
POST /api/cmd/{cmd}
Führt einen Steuerungsbefehl aus.
Pfadparameter
cmd
String
Befehl: START, STOP, SWITCH oder BREAK
Beispiel
POST /api/cmd/START
Antworten
200 OK
Befehl erfolgreich ausgeführt
400 Bad Request
Ungültiger oder nicht erlaubter Befehl
500 Internal Server Error
Serverfehler
Konfigurationen
Konfigurationen enthalten alle Einstellungen für einen Schießbetrieb (z. B. Zeit pro Pfeil, Pfeilanzahl, Modus). Es können mehrere Konfigurationen gespeichert werden.
GET /api/config
Gibt alle gespeicherten Konfigurationen zurück.
Antwort 200 OK – Array von Konfigurationsobjekten (siehe Felder unten)
POST /api/config
Erstellt eine neue Konfiguration.
Anfrage-Body
{
"name": "Halle 18m",
"time_per_arrow": 40,
"prepare_time": 10,
"count_arrows": 3,
"group_mode": false,
"alt_single": false,
"alt_team": false
}
name
String
Bezeichnung der Konfiguration
time_per_arrow
Integer
Zeit pro Pfeil in Sekunden
prepare_time
Integer
Vorlaufzeit in Sekunden
count_arrows
Integer
Anzahl der Pfeile pro Durchgang
group_mode
Boolean
AB/CD-Gruppenmodus aktivieren
alt_single
Boolean
Alternierend Einzeln aktivieren
alt_team
Boolean
Alternierend Mannschaft aktivieren
Antwort 200 OK – Die erstellte Konfiguration inkl. id und preset-Flag
GET /api/config/{id}
Gibt eine einzelne Konfiguration anhand ihrer ID zurück.
PUT /api/config/{id}
Aktualisiert eine vorhandene Konfiguration. Body entspricht POST /api/config.
DELETE /api/config/{id}
Löscht eine Konfiguration anhand ihrer ID.
GET /api/config/preset
Gibt die aktuell als Voreinstellung markierte Konfiguration zurück.
Antworten
200 OK
Voreinstellung gefunden
404 Not Found
Keine Voreinstellung gesetzt
Lautstärke & Helligkeit
GET /api/config/volume
Gibt die aktuelle Lautstärke der Hupe zurück.
Antwort 200 OK
{ "amp_horn_vol": 80 }
PUT /api/config/volume?vol={wert}
Setzt die Lautstärke der Hupe.
Abfrageparameter
vol
Integer
Ja
Lautstärkewert
GET /api/config/brightness
Gibt die aktuelle Helligkeit der Ampeln zurück.
Antwort 200 OK
{ "amp_bright": 100 }
PUT /api/config/brightness?bright={wert}
Setzt die Helligkeit der Ampeln.
bright
Integer
Ja
Helligkeitswert
Nachschießen
PUT /api/config/nach?count={anzahl}
Aktiviert das Nachschießen mit der angegebenen Pfeilanzahl. Bei Alternierendem Modus wird hiermit das Stecken mit angegebener Schützenzahl aktiviert.
count
Integer
Ja
Anzahl der Pfeile für das Nachschießen / Schützen für Stechen
DELETE /api/config/nach
Deaktiviert das Nachschießen.
Protokoll (Logs)
GET /api/logs
Gibt alle Protokolleinträge zurück.
Antwort 200 OK
[
{
"id": 1,
"timestamp": "2026-04-03T10:00:00",
"action": "START",
"description": "Schießsequenz gestartet"
}
]
id
Integer
Eindeutige ID des Eintrags
timestamp
DateTime
Zeitstempel des Ereignisses
action
String
Ausgeführte Aktion
description
String
Beschreibung des Ereignisses
DELETE /api/logs
Löscht alle Protokolleinträge.
GET /api/logs/training
Gibt zurück, ob der Trainings-Modus aktiv ist (Protokolleinträge werden im Trainings-Modus nicht für das Schießleiterprotokoll gewertet).
Antwort 200 OK
{ "training": false }
PUT /api/logs/training?training={wert}
Aktiviert oder deaktiviert den Trainings-Modus.
training
Boolean
Nein
false
true = Trainings-Modus aktiv
Zeit
GET /api/time
Gibt die aktuelle Systemzeit der Steuerung zurück.
Antwort 200 OK
{ "time": "2026-04-03T10:00:00" }
POST /api/sync-time
Synchronisiert die Systemzeit der Steuerung.
Anfrage-Body
{ "time": "2026-04-03T10:00:00" }
Antwort 200 OK – Bestätigung mit der gesetzten Zeit
Antwortformate
Erfolg / Fehler (DefaultStatusOUT)
Viele Endpunkte antworten bei Erfolg oder Fehler mit folgendem Format:
{ "status": "ok" }
Hinweise
Wichtig: Im Netzwerk darf nur eine Steuerung gleichzeitig laufen, da sonst die Anzeigegeräte widersprüchliche Informationen erhalten könnten.
YYYY-MM-DDTHH:MM:SS)
Die API ist nicht authentifiziert – sie sollte nur in einem gesicherten, lokalen Netzwerk betrieben werden
Basis-URL: http://<ip-adresse>/api/