Zum Hauptinhalt springen

SpeamBoxes

Zweck

SpeamBoxes (Speambox) sind die IoT-Gateways der Speam GmbH — sie verbinden Brandmeldeanlagen, Sprinkler, Sicherheits-Beleuchtung und andere Anlagentechnik per Dual-SIM (3G/4G), Ethernet, RS485/RS232/GPIO und MQTT mit der SpeamCore-Plattform. Pro Box pflegen Sie Stammdaten, Sub-Identifier, Konfiguration, Live-Logs, Modul-Verbindungen, Dashboards, Panel-Status und Notification-Streams.

Voraussetzungen

- Hardware-Box mit gueltiger Seriennummer. - Berechtigung `create:Speambox`. - Vorhandener `SpeamboxSystemType` (bestimmt `enabledFeatures` und damit sichtbare Tabs).

Berechtigungen (CASL)

Frontend-Page-Guard:

ActionSubjectKeycloak-Rolle
viewFE_Speambox, Speambox
create/update/deleteSpeamboxAPP_SPEAMCORE_CREATE/UPDATE/DELETE_SPEAMBOX
viewSpeamboxSystemTypeAPP_SPEAMCORE_VIEW_SPEAMBOX_SYSTEM_TYPE

Tab-Subjects: abhaengig vom jeweiligen Sub-Modell — z. B. view:SpeamboxModule für den Modules-Tab.

Schritt-für-Schritt-Anleitung

Box anlegen

  1. SpeamBoxes (/speamboxes) → + Neu.
  2. Im Stepper-Modal (SpeamboxCreateStepperModal) den Box-Typ und die Seriennummer auswählen.
  3. Anschliessend name, parentId (polymorph), iccidPrimary/iccidSecondary (SIM-Karten), speamboxSystemTypeId pflegen.
  4. Änderungen werden automatisch gespeichert (Auto-Submit on Change).
`type` und `serialNumber` sind nach dem ersten Speichern **disabled** — Änderung erfordert Löschen + Neuanlegen.

Box aktivieren — Aktivierungs-Assistent (Mai 2026)

Für die Erst-Inbetriebnahme vor Ort gibt es einen geführten Aktivierungs-Assistenten (SpeamboxActivationWizard). Er führt den Techniker in fester Reihenfolge durch fünf Schritte:

  1. Seriennummer — Box-Seriennummer eingeben, „Prüfen" führt die Hardware-Suche durch (die frühere separate Außen-Prüfung ist in diesen Schritt zusammengefasst).
  2. AnlagentypSpeamboxSystemType auswählen (bestimmt die aktiven Features/Tabs).
  3. Installationsanleitung — die hinterlegte Montage-Anleitung wird angezeigt.
  4. Modul-Prüfung — angeschlossene Module werden geprüft bzw. angelegt.
  5. Standort — GPS-Position speichern. Das Speichern aktiviert die Box zugleich (isActivated=true); der Assistent schließt und springt auf die Box-Detailseite. Einen separaten „Finalisierung"-Schritt gibt es nicht mehr.
Zwischen **Modul-Prüfung** und **Standort** kann ein zusätzlicher Schritt **„Telekom-Check"** erscheinen — aber **nur**, wenn die SIM-Erreichbarkeitsprüfung den Status `fail` liefert (beide SIM-Karten nicht erreichbar). Ist mindestens eine SIM erreichbar oder die Prüfung nicht konfiguriert, bleibt der Schritt unsichtbar. Der Assistent pollt die Prüfung alle 8 Sekunden; sobald wieder eine SIM erreichbar ist, verschwindet der Schritt automatisch.

Der frühere „Verbindungs-Check" (Typron-Online-Polling) wurde entfernt — die Box gilt jetzt als dauerhaft online; die Telekom-Erreichbarkeit ersetzt die Diagnose.

SIM-Erreichbarkeit prüfen (Telekom-Check)

Über GET /api/speamboxes/:id/telekom-check prüft SpeamCore die beiden SIM-Karten (iccidPrimary, iccidSecondary) gegen die Telekom-Schnittstelle. Das Ergebnis:

statusreasonBedeutung
passat-least-one-reachableMindestens eine SIM ist erreichbar — alles in Ordnung.
failall-iccids-downKeine SIM erreichbar — löst den Telekom-Schritt im Assistenten aus.
unavailableno-iccidsAn der Box sind keine ICCIDs hinterlegt.
unavailablenot-configuredDie Telekom-Schnittstelle ist im Mandanten nicht konfiguriert.
unavailableapi-unreachableDie Telekom-API war nicht erreichbar (Prüfung nicht aussagekräftig).

Die Antwort enthält zusätzlich checkedIccids[] und reachableIccids[].

Live-Dashboard nutzen

Tab Dashboard (/speamboxes/:id/dashboard) zeigt Echtzeit-Metriken aus der Box. useSpeamboxLiveEvents() invalidiert die Queries automatisch bei eingehenden Engine-Events.

Speambox-System-Dashboard auf der Startseite (Juni 2026)

Neben dem Live-Dashboard pro Box gibt es ein Speambox-System-Dashboard als eingebaute Kachel auf der Startseite — ein Live-Überblick über alle SpeamBoxen, ohne in die Liste zu wechseln. Es ist Teil des Startseiten-Sliders (HomeDashboardSlider) und wird nicht als eigenes Dashboard in der Datenbank gespeichert (interne ID __speambox_system_dashboard__); die Reihenfolge im Slider merkt sich der Browser lokal.

Aufbau der Kacheln:

  • KPI-Karten — Anlagenzahl, aktive Anlagen, aktive Ereignisse (24 h).
  • Letzte Alarme — kompakte Liste der jüngsten Ereignisse.
  • Letzte Aktivitäten — Tabelle (Anlage, Typ, Status, Letztes Update).
  • Systemstatus — Anlagen online/offline, letztes Update.
  • Status-Verteilung (Donut) und Live-Karte (geografisch).

Die Kachel ist nur sichtbar mit Berechtigung view:FE_Speambox und view:Speambox.

<KIHinweis titel="„Stille" Ereignisse werden hier ausgeblendet"> Ereignis-Typen oder -Optionen, die als stumm markiert sind (isSilent, siehe Benachrichtigungs-Event-Typen), erscheinen nicht in den System-Dashboard-Kacheln (KPI, Letzte Alarme, Letzte Aktivitäten, Systemstatus). Die Ereignisse werden weiterhin erzeugt und protokolliert — nur die Dashboard-Anzeige wird ruhiger.

Adressierungs-Kontext der Modul-Status (statusContext)

Der Live-Status eines Moduls (SpeamboxModuleStatus) kann pro Statusschlüssel einen Adressierungs-Kontext (statusContext) tragen — ein JSON-Objekt mit optionalen Feldern area (Bereich/Zone), lineNumber (VdS-Linie), detectorGroup (Meldergruppe) und detectorNumber (Meldernummer). Es wird beim Payload-Mapping (VdS 2465-3 / Klartext) befüllt und erlaubt es, eine Meldung präzise zu verorten (z. B. „Störung in Bereich 3, Linie 4"). Bei älteren Payloads ohne Register-Infos bleibt es leer. Diese Angabe ist vor allem für Integratoren relevant.

Listenansicht — speamboxes

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

UI-Elemente

Stepper-Wizard mit Box-Typ-Auswahl, Seriennummern-Eingabe und initialer Parent-Zuordnung.

Komponente: useSpeamboxLiveEvents

React-Hook, der WebSocket-/SSE-Events der Box konsumiert und Queries invalidiert. Stellt Echtzeit-Status-Updates im Dashboard und Panel sicher.

Tab: „Panel"

Zeigt den Live-Status der angeschlossenen Anlage (z. B. „Betrieb", „Störung"). Nur sichtbar wenn Feature showPanel aktiv.

Felder und Eingaben

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
typeja (disabled nach Anlage)sput112/lite112/spbx01/vcmBestimmt Hardware-Klasse, MQTT-Topic-Pattern und unterstuetzte Modul-Typen.
serialNumberja (disabled nach Anlage)StringEindeutige Hardware-ID. Muss mit dem Box-Aufkleber uebereinstimmen.Eindeutigkeit pro Mandant.
namejaStringAnzeigename in Listen, Dashboards, Notifications.
speamboxSystemTypeIdneinUUIDVerknuepfung zu SpeamboxSystemType — bestimmt enabledFeatures und damit sichtbare Tabs.view:SpeamboxSystemType.
iccidPrimaryneinStringSIM-Karten-Identifikation (Primaer-SIM).gültige ICCID.
iccidSecondaryneinStringSekundaer-SIM für Dual-SIM-Failover.gültige ICCID.
parentId + parentTypeneinpolymorphVerknuepft die Box mit Kunde, Standort oder Lager. Bestimmt Sichtbarkeit und Mandanten-Scope.Parent existiert; passende View-Permission.
panelActiveStatusesneinArray StringStatus-Array für Panel-Anzeige (z. B. ["betrieb", "stoerung"]).
hasIngestApiKeyBoolean (read-only)true bedeutet, dass die Box einen API-Schlüssel zum Datenupload hat.

Workflows und Zustaende

Status wird nicht als Feld gespeichert — er ergibt sich aus den LiveEvents und dem zuletzt empfangenen panelActiveStatuses-Update.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • Anlagen — Speambox haengt typischerweise an einer Anlage; Anlagen werden über den Standort gefuehrt.
  • NotificationEvents — Ereignisse der Box landen im Stream und triggern Subscriptions.
  • ModuleSpeamboxModule als Sub-Liste pro Box (Sensoren, Aktoren).
  • MQTT — pro Box eine Topic-Struktur.

Häufige Fehler und Lösungen

FehlerLösung
Box ist offlineTab Logs auf Verbindungs-Errors prüfen; iccidPrimary und Mobilfunk-Vertrag prüfen.
Tabs sehen anders aus als bei einer anderen BoxSpeamboxSystemType.enabledFeatures ist verschieden — Mandanten-Konfiguration vergleichen.
ICCID wird abgelehntFormat prüfen — typisch 19–20 Ziffern, ohne Leerzeichen.
Live-Daten kommen verzoegertWartung der WebSocket/SSE-Verbindung prüfen.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/speamboxesListeview Speambox
GET/api/speamboxes/:idDetailview Speambox
GET/api/speamboxes/:id/telekom-checkSIM-Erreichbarkeit prüfenview Speambox
POST/api/speamboxesAnlegencreate Speambox
PATCH/api/speamboxes/:idÄndernupdate Speambox
DELETE/api/speamboxes/:idSoft-Deletedelete Speambox

Sub-Resourcen über Tab-Sub-Pfade — z. B. GET /api/speamboxes/:id/modules, /notification-events etc.

Versionshinweise

  • 2026-06-22: Speambox-System-Dashboard (Startseiten-Kachel, Live-Überblick aller Boxen) dokumentiert; „stille" Ereignisse (isSilent) werden in den Kacheln ausgeblendet; Adressierungs-Kontext statusContext (VdS-Linie/Meldergruppe) ergänzt. Verifiziert an SpeamboxSystemDashboard.tsx, HomeDashboardSlider.tsx, speamboxModuleStatus.model.ts.
  • 2026-05-31: Aktivierungs-Assistent (5 Schritte) + bedingter Telekom-SIM-Check dokumentiert; GET /telekom-check-Endpoint ergänzt. Typron-Verbindungs-Check entfällt.
  • 2026-04-29: Initiale Veroeffentlichung mit FE-Tiefen-Standard (12 Tabs dokumentiert).