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

MethodeEndpunktBeschreibung
GET/api/statusAktuellen Status der Ampeln abrufen
GET/api/cmdVerfügbare Befehle abrufen
POST/api/cmd/{cmd}Befehl ausführen
GET/api/configAlle Konfigurationen abrufen
POST/api/configNeue Konfiguration erstellen
GET/api/config/presetAktive Voreinstellung abrufen
GET/api/config/volumeLautstärke abrufen
PUT/api/config/volumeLautstärke setzen
GET/api/config/brightnessHelligkeit abrufen
PUT/api/config/brightnessHelligkeit setzen
PUT/api/config/nachNachschießen-Anzahl setzen
DELETE/api/config/nachNachschießen deaktivieren
GET/api/config/{id}Einzelne Konfiguration abrufen
PUT/api/config/{id}Konfiguration aktualisieren
DELETE/api/config/{id}Konfiguration löschen
GET/api/logsProtokolleinträge abrufen
DELETE/api/logsProtokoll löschen
GET/api/logs/trainingTrainings-Modus abrufen
PUT/api/logs/trainingTrainings-Modus setzen
GET/api/timeSystemzeit abrufen
POST/api/sync-timeSystemzeit 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
}
FeldTypBeschreibung
a1 / a2ObjektStatus von Ampel 1 und 2
a1.redBooleanRotes Licht aktiv
a1.yellowBooleanGelbes Licht aktiv
a1.greenBooleanGrünes Licht aktiv
a1.timeIntegerVerbleibende Zeit in Sekunden
a1.groupStringZugewiesene Gruppe (z. B. "A" oder "B")
runBooleanSteuerung läuft aktuell
group_modeBooleanAB/CD-Gruppenmodus aktiv
count_arrowsIntegerAktuell eingestellte Pfeilanzahl
alt_modeBooleanAlternierend-Modus aktiv
shoot_breakBooleanSchieß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
  }
}
BefehlBeschreibung
STARTSchießsequenz starten
STOPSchießsequenz stoppen
SWITCHGruppe wechseln (bei Alternierend-Modus)
BREAKSchießpause einleiten

POST /api/cmd/{cmd}

Führt einen Steuerungsbefehl aus.

Pfadparameter

ParameterTypBeschreibung
cmdStringBefehl: START, STOP, SWITCH oder BREAK

Beispiel

POST /api/cmd/START

Antworten

CodeBeschreibung
200 OKBefehl erfolgreich ausgeführt
400 Bad RequestUngültiger oder nicht erlaubter Befehl
500 Internal Server ErrorServerfehler

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
}
FeldTypBeschreibung
nameStringBezeichnung der Konfiguration
time_per_arrowIntegerZeit pro Pfeil in Sekunden
prepare_timeIntegerVorlaufzeit in Sekunden
count_arrowsIntegerAnzahl der Pfeile pro Durchgang
group_modeBooleanAB/CD-Gruppenmodus aktivieren
alt_singleBooleanAlternierend Einzeln aktivieren
alt_teamBooleanAlternierend 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

CodeBeschreibung
200 OKVoreinstellung gefunden
404 Not FoundKeine 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

ParameterTypPflichtBeschreibung
volIntegerJaLautstä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.

ParameterTypPflichtBeschreibung
brightIntegerJaHelligkeitswert

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.

ParameterTypPflichtBeschreibung
countIntegerJaAnzahl 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"
  }
]
FeldTypBeschreibung
idIntegerEindeutige ID des Eintrags
timestampDateTimeZeitstempel des Ereignisses
actionStringAusgeführte Aktion
descriptionStringBeschreibung 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.

ParameterTypPflichtStandardBeschreibung
trainingBooleanNeinfalsetrue = 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/