Skip to main content

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/