Brainbox Serielles Protokoll Referenz
Die Brainbox empfängt Daten von Podcatcher-Geräten über BLE und stellt sie als CSV-Frames über eine USB serial-Verbindung bereit. Interaktive Installationen, Kioske und Individualsoftware können diese Frames auslesen, um in Echtzeit auf Besucheraktionen zu reagieren.
Physische Verbindung
Abschnitt betitelt „Physische Verbindung“| Parameter | Wert |
|---|---|
| Interface | USB Serial (CDC) |
| Line delimiter | \r\n (CR+LF) |
| USB Vendor ID | 0x2dcf |
| USB Product ID | 0x6003 |
Verbinde die Brainbox über USB mit einem Computer. Sie erscheint als standardmäßiger serieller (COM-)Port — auf modernen Betriebssystemen sind keine speziellen Treiber erforderlich.
Konsolenbefehle
Abschnitt betitelt „Konsolenbefehle“Aktiviere nach dem Öffnen des seriellen Ports die Brainbox-Konsole und schalte die benötigten Frametypen ein:
<CR> ← send a carriage return (0x0D), wait 300 msconsole tracking 1<CR> ← enable Tracking V2 frames, wait 200 msconsole interactive 1<CR> ← enable Interactive V1 frames, wait 200 msversion<CR> ← response: "version: 2.5.1"Verfügbare Befehle
Abschnitt betitelt „Verfügbare Befehle“| Command | Funktion |
|---|---|
console tracking 1 | Tracking V2-Ausgabe einschalten |
console tracking 0 | Tracking V2-Ausgabe ausschalten |
console interactive 1 | Interactive V1-Ausgabe einschalten |
console interactive 0 | Interactive V1-Ausgabe ausschalten |
console syncdock 1 | Basecamp-Frames einschalten (noch nicht in der Firmware — siehe AVS-147) |
version | Firmware-Version abfragen |
help | Alle verfügbaren Befehle anzeigen |
Contentstruktur im CMS
Abschnitt betitelt „Contentstruktur im CMS“Um die Framedaten zu verstehen, hilft es zu wissen, wie Inhalte im Guide-ID CMS organisiert sind:
Site └── Tour └── Stop └── Clip (audio file + optional Interactive Clip Id)- Eine Site hat eine oder mehrere Tours
- Eine Tour enthält einen oder mehrere Stops
- Ein Stop enthält einen oder mehrere Clips — ein Clip ist der eigentliche Inhalt, in der Regel mit einer verknüpften Audiodatei
- Jeder Clip hat eine optionale Interactive Clip Id (1–65535), die ihn für interaktive Aufbauten eindeutig identifiziert
Der Wert clipIdUser in den untenstehenden Frames entspricht dieser Interactive Clip Id. Du legst sie pro Clip im CMS unter den Clip-Einstellungen fest.

Wie Clips ausgelöst werden
Abschnitt betitelt „Wie Clips ausgelöst werden“Ein Clip beginnt auf eine der folgenden Arten auf dem Podcatcher abzuspielen:
- Beacon scan — der Besucher scannt manuell einen Beacon an einem Stop
- UWB auto-trigger — der Besucher betritt eine Zone und der Podcatcher löst automatisch auf Basis der Nähe aus (UWB-Abstand)
- Clip flow-Navigation — der Besucher drückt Tasten (Up, Down, Left, Right), um innerhalb eines Stops durch den Clip Flow zu navigieren (z. B. Choice Clips mit mehreren Verzweigungen)

Jedes Mal, wenn ein Clip startet, sendet die Brainbox ein Frame mit der entsprechenden Interactive Clip Id — unabhängig davon, wie der Clip ausgelöst wurde.
BLE-Frametypen
Abschnitt betitelt „BLE-Frametypen“Alle Frames kommen als CSV-Zeilen über serial an. Das erste Feld (version byte) bestimmt den Frametyp.
Tracking V2 — Version 66 (0x42)
Abschnitt betitelt „Tracking V2 — Version 66 (0x42)“Wird ungefähr einmal pro Sekunde für jedes Gerät in Reichweite gesendet. Verwende dies für das Echtzeit-Tracking der Besucherposition, die Akkuüberwachung und den Tastenstatus.
66,pp009071,0xA1B2C3D4E5F60718,1001,150,3700,0x0004,0x0000| # | Feld | Typ | Beispiel | Beschreibung |
|---|---|---|---|---|
| 0 | version | decimal | 66 | Immer 66 |
| 1 | deviceSerial | string | pp009071 | Seriennummer des Podcatchers (pp + 6 Ziffern) |
| 2 | visitorId | hex | 0xA1B2C3D4E5F60718 | 16 Hex-Zeichen (8 Bytes) — 0x0000000000000000 = inaktiv |
| 3 | clipIdUser | decimal | 1001 | Interactive Clip Id des zuletzt aktivierten Clips (0 = keine) |
| 4 | lastTriggerDistance | decimal | 150 | UWB-Abstand in cm (0 = kein Trigger) |
| 5 | batteryMv | decimal | 3700 | Akkuspannung in mV |
| 6 | keysLast | hex | 0x0004 | Zuletzt gedrückte Tasten (Bitmaske) |
| 7 | keysHeld | hex | 0x0000 | Aktuell gedrückt gehaltene Tasten (Bitmaske) |
Tasten-Bitmasken
Abschnitt betitelt „Tasten-Bitmasken“| Bit | Hex | Button | Beschreibung |
|---|---|---|---|
| 0 | 0x0001 | Down | Taste unten |
| 1 | 0x0002 | Right | Taste rechts |
| 2 | 0x0004 | Center | Taste mitte |
| 3 | 0x0008 | Up | Taste oben |
| 4 | 0x0010 | Left | Taste links |
| 12 | 0x1000 | Volume Up | Lautstärke einen Schritt erhöhen |
| 13 | 0x2000 | Volume Down | Lautstärke einen Schritt verringern |
Interactive V1 — Version 161 (0xA1)
Abschnitt betitelt „Interactive V1 — Version 161 (0xA1)“Wird jedes Mal gesendet, wenn ein Clip auf einem Podcatcher abzuspielen beginnt — egal ob durch einen Beacon-Scan, einen UWB-Auto-Trigger oder Clip flow-Navigation ausgelöst. Jedes Frame teilt dir mit:
- Welches Gerät ausgelöst hat (
deviceSerial) - Welcher Besucher es verwendet (
visitorId— eindeutig pro Sitzung) - Welche Sprache ausgewählt wurde (NL, EN, DE, FR, ES, IT)
- Welcher Clip ausgelöst wurde (
clipIdUser— die im CMS konfigurierte Interactive Clip Id) - Welcher armed code vom Podcatcher gesetzt wurde (
requestedVideoCode— in der Regel ein AV-Sync-Videocode) - Wie viele Trigger dieser Besucher bisher hatte (
sequence)
161,pp009071,A1B2C3D4E5F60718,2005,EN,7,0x0000001A| # | Feld | Typ | Beispiel | Beschreibung |
|---|---|---|---|---|
| 0 | version | decimal | 161 | 161 oder 160 (beide akzeptiert) |
| 1 | deviceSerial | string | pp009071 | Seriennummer des Podcatchers |
| 2 | visitorId | hex | 0xA1B2C3D4E5F60718 | Visitor ID (eindeutig pro Sitzung) |
| 3 | clipIdUser | decimal | 2005 | Interactive Clip Id des ausgelösten Clips |
| 4 | language | string | EN | 2-Zeichen-Sprachcode aus der Trigger-Datei (NL, EN, DE, FR, ES, IT) |
| 5 | sequence | decimal | 7 | Zähler, der pro Trigger hochzählt und nach 255 überläuft |
| 6 | requestedVideoCode | hex | 0x0000001A | Armed code — in der Regel ein AV-Sync-Videocode (0x00000000 = keiner) |
Beispiel: Szenario mit interaktivem Display
Abschnitt betitelt „Beispiel: Szenario mit interaktivem Display“Ein Besucher geht mit seinem Podcatcher an einem interaktiven Display vorbei. Das Display empfängt:
161,pp009071,0xA1B2C3D4E5F60718,2005,EN,7,0x0000001ADas Display weiß nun sofort:
- Besucher
0xA1B2C3D4E5F60718→ auch am nächsten Display wiedererkennbar - Sprache ist Englisch → englische Untertitel oder Texte anzeigen
- Clip 2005 → die passende Animation abspielen
- Armed code
0x1A→ das diesem Stop zugewiesene AV-Sync-Video abspielen - Trigger #7 → der Besucher ist schon eine Weile aktiv, passe die Inhalte entsprechend an
Anwendungsfälle für Interaktive
Abschnitt betitelt „Anwendungsfälle für Interaktive“Automatische Sprachanpassung Der Besucher wählt seine Sprache auf dem Podcatcher. Jedes Display im Museum passt sich automatisch an — kein Touchscreen oder Sprachknopf am Display selbst nötig.
Besuchererkennung zwischen Räumen
Die visitorId bleibt während des gesamten Besuchs erhalten. Ein Besucher löst ein Display in Raum A aus und geht dann zu Raum B — das dortige Display erkennt dieselbe visitorId und kann personalisieren: “Willkommen zurück, du hast zuvor gesehen…” Kein Login oder QR-Scan erforderlich.
Interaktive Projektionen und Animationen
Ein Podcatcher kommt in Reichweite → die Projektion startet automatisch. Mehrere Besucher gleichzeitig? Deine Anwendung sieht alle aktiven visitorId-Werte in der Zone und kann die Inhalte an die Anzahl der Besucher anpassen (Solo-Erlebnis vs. Gruppenerlebnis).
AV-Sync mit externen Displays
Wenn ein Besucher einen Stop auslöst, setzt der Podcatcher einen Code (in der Regel einen AV-Sync-Videocode). Dieser requestedVideoCode wird über das Interactive-Frame gesendet. Das verbundene Display gleicht den armed code ab und spielt den entsprechenden Inhalt ab — keine zusätzliche Hardware (Tablet, Touchscreen) nötig.
Interaktive Installationen debuggen
Abschnitt betitelt „Interaktive Installationen debuggen“Verwende bei der Entwicklung einer interaktiven Installation einen seriellen Monitor, um:
- Live zu debuggen: Frames in Echtzeit eintreffen zu sehen, während du vor dem Display stehst
- Das Wechseln der Sprache zu testen: die Sprache am Podcatcher ändern und prüfen, ob das Display reagiert
- Das Timing zu prüfen: Frames treffen innerhalb von 1 Sekunde nach dem Beacon-Trigger ein
- Mit mehreren Besuchern zu testen: mit 2–3 Podcatchern gleichzeitig testen und alle
visitorId-Werte beobachten
Verwandte Artikel
Abschnitt betitelt „Verwandte Artikel“- Die Brainbox verstehen — was die Brainbox macht und wie sie funktioniert
- AV-Sync einrichten — synchronisierte audiovisuelle Wiedergabe konfigurieren