Skip to content

Backend – Übersicht

Aufgaben

Das Backend sorgt für die Speicherung der Daten, die Kommunikation zwischen den Geräten und dem Frontend sowie die Bereitstellung der dafür erforderlichen Schnittstellen. Darüber hinaus hostet das Backend außer den Schnittstellen-Diensten auch zusätzliche Tools für die Konfiguration und Überwachung des gesamten Systems.

Serverlandschaft der Backend-Komponenten

Übersicht der Backend-Komponenten als Serverlandschaft

Komponenten

Zentrale Gerätekommunikation & Datenverwaltung

  1. MQTT-Broker (Mosquitto)
  2. REST-API + WebSocket Backend (Express.js)
  3. Datenbank (PostgreSQL + TimescaleDB)
  4. Frontend-Server (React)

Routing & Gateway

  1. Reverse Proxy (Traefik)
  2. Datenbank-Queue (BullMQ + Redis)

Monitoring & Logging

  1. Monitoring (Grafana)
  2. Logging (Dozzle)

Weitere Web-Services

  1. Admin-Dashboard
  2. Android-Releases
  3. Produkt-Website
  4. Diese Dokumentation (Zensical)

Lebenszyklus eines Geräts

Ein Gerät registriert sich über die MQTT-Schnittstelle beim Backend und schickt bei der Registrierung sein Thing Model mit. Das Backend speichert das Thing Model in der Datenbank und weist der MAC-Adresse des Geräts eine UUID zu. Danach kann das Gerät über MQTT oder im Bluetooth-Fallback-Modus Telemetrie-Daten an das Backend senden, die in der Datenbank persistiert werden. Sobald das Gerät eingebunden ist, kann das Frontend über die REST-API oder die WebSocket-Schnittstelle auf die Daten zugreifen und Befehle an das Gerät senden.

Sollte das Gerät offline sein, wird über das LWT (Last Will and Testament) des MQTT-Protokolls der Offline-Status an das Backend gesendet. Das Backend speichert den Status in der Datenbank und informiert das Frontend über die WebSocket-Schnittstelle. Bei jeder erneuten Anmeldung des Geräts wird das Thing Model erneut an das Backend übermittelt, um es jederzeit aktuell zu halten. Das Frontend erhält über die WebSocket-Schnittstelle ein Signal, um das Thing Model über die REST-API neu abzufragen und die Änderungen anzuzeigen.

Schnittstellen im Überblick

Schnittstelle Protokoll Beschreibung
MQTT MQTT (TCP / WebSocket) Gerätekommunikation: Registrierung, Telemetrie, Commands und Status
REST-API HTTP(S) CRUD für Geräte, Commands und Telemetrie-Abfragen (Authentifizierung per API-Key)
WebSocket Socket.IO Echtzeit-Events ans Frontend: Status, Telemetrie und Thing-Model-Updates

Mehr dazu in: MQTT-Schnittstelle, REST-API, WebSocket-Schnittstelle.

Oder in der Live-Swagger-Dokumentation: Swagger UI