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
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /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
}
| Feld | Typ | Beschreibung |
|---|---|---|
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
}
}
| Befehl | Beschreibung |
|---|---|
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
| Parameter | Typ | Beschreibung |
|---|---|---|
cmd |
String | Befehl: START, STOP, SWITCH oder BREAK |
Beispiel
POST /api/cmd/START
Antworten
| Code | Beschreibung |
|---|---|
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
}
| Feld | Typ | Beschreibung |
|---|---|---|
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
| Code | Beschreibung |
|---|---|
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
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
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.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
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.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
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"
}
]
| Feld | Typ | Beschreibung |
|---|---|---|
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.
| Parameter | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
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.
- Alle Zeitangaben im Format ISO 8601 (
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/