Die Trennung
RaKoDart kennt nur einen einheitlichen Wurfzustand. Der Adapter übersetzt entweder Autodarts oder die eigene Kamera-API in dieses Format. Spiellogik, Korrektur, Anzeige und Statistiken bleiben dadurch dieselben.
Aktuell ausgewählt: Autodarts. Vorgesehene Kamera-Adresse: http://127.0.0.1:3190
1. Zustand lesen
GET /api/state liefert immer nur die bis zu drei Darts des aktuellen Zuges. Nach dem Ziehen der Darts wird throws geleert und numThrows auf 0 gesetzt.
{
"connected": true,
"running": true,
"status": "Throw",
"event": "dart_detected",
"numThrows": 2,
"throws": [
{"id":"4711-1", "label":"T20", "x":0.12, "y":-0.34, "confidence":0.98},
{"id":"4711-2", "number":5, "multiplier":1, "bed":"SingleOuter"}
]
}
Erlaubte Treffer sind S1…S20, D1…D20, T1…T20, S25, D25 und Miss. Alternativ akzeptiert der Adapter number plus multiplier. Koordinaten und Konfidenz sind optional; für Ausbullen werden echte Koordinaten benötigt. Der gemeinsame RaKoDart-Vertrag ist perspektivkorrigiert und normiert: (0,0) = Bullzentrum, Radius 1 = Außenkante Double-Ring = 170 mm, positive y-Richtung nach oben.
2. Erkennung steuern
POST /api/command erhält JSON:
{"command":"start"}
Zulässige Befehle: start, stop, reset. Als Antwort genügt {"ok":true}. Alternativ unterstützt RaKoDart auch /api/start, /api/stop und /api/reset.
3. Wichtige Zustände
- Ready/Throw: Erkennung läuft; neue Treffer dürfen erscheinen.
- Takeout: drei Darts oder ein vorzeitig beendeter Zug warten auf das Herausziehen.
- Stopped: keine Erkennung; RaKoDart zeigt die Startmöglichkeit.
- Nach Takeout: Erst
numThrows: 0und eine leere Trefferliste lösen den Spielerwechsel aus.