Zum Hauptinhalt springen
Version: In Entwicklung
Kontext & IoT

FROST-Server

Speichert und veröffentlicht IoT- und Sensordaten gemäß SensorThings API.

FROST-Server ist eine Open-Source-Implementierung der OGC SensorThings API. Die Komponente organisiert Sensoren, Messgrößen, Beobachtungen und räumliche Bezüge in einem standardisierten Datenmodell. Anwendungen können Sensordaten über eine REST-API schreiben und abfragen; ein optionales MQTT-Modul stellt Änderungen ereignisbasiert bereit.

Die zentralen Objekte der SensorThings API sind:

  • Thing repräsentiert ein physisches oder virtuelles Objekt.
  • Sensor beschreibt das eingesetzte Messverfahren oder Gerät.
  • ObservedProperty bezeichnet die fachlich gemessene Größe.
  • Datastream verbindet Thing, Sensor und Messgröße zu einer Beobachtungsreihe.
  • Observation enthält einen einzelnen Messwert mit Zeitbezug.
  • Location und FeatureOfInterest ordnen Messobjekte und Beobachtungen räumlich ein.

FROST-Server in der UDSP

FROST-Server ist in der UDSP der fachliche Dienst für Sensor- und IoT-Daten nach dem OGC-SensorThings-Standard. Datenquellen oder Node-RED erzeugen Things, Datastreams und Observations über die freigegebenen Schnittstellen. FROST hält sowohl die fachlichen Beziehungen als auch die zeitlich geordneten Messwerte; QuantumLeap wird für diesen Datenpfad nicht benötigt.

Die HTTP-, Schreib- und Löschrouten werden über APISIX veröffentlicht und geschützt. PostgreSQL mit PostGIS persistiert SensorThings-Ressourcen und Geometrien. Ist MQTT aktiviert, betreibt die UDSP zusätzlich das FROST-MQTT-Modul. Mosquitto dient dabei ausschließlich als interner Message Bus zwischen den getrennten FROST-Laufzeitmodulen und ist kein allgemeiner MQTT-Broker der Plattform.

Technische Abhängigkeiten

FROST wird mit einer eigenen Geodatenbank bereitgestellt. API-Schutz und der optionale interne MQTT-Pfad ergänzen diesen Kern.

PostgreSQL
Stackeigene Geodatenbank · PostgreSQL 14 · PostGIS 3.2

PostgreSQL

Persistiert SensorThings-Ressourcen, Beobachtungen, Zeitbezüge und Geometrien.

Komponente öffnen
APISIX
Gemeinsamer API-Zugang · 3.13.0

APISIX

Veröffentlicht und schützt die HTTP-, Schreib-, Lösch- und WebSocket-Routen der SensorThings API.

Komponente öffnen
Keycloak
Gemeinsamer Identitätsdienst · 26.6.3

Keycloak

Stellt Token und API-Scopes für die über APISIX veröffentlichten FROST-Routen bereit.

Komponente öffnen
Optionaler interner Message Bus · 1.4.12

Eclipse Mosquitto

Vermittelt MQTT-Nachrichten ausschließlich zwischen den aktivierten FROST-Laufzeitmodulen.

Interner Message Bus mit Mosquitto

Mosquitto ist ein leichtgewichtiger Open-Source-Broker für MQTT. Publisher schreiben Nachrichten unter hierarchischen Topics, während Subscriber passende Topic-Filter abonnieren. Der von FROST bereitgestellte externe MQTT-Zugang ist von diesem internen Broker zu unterscheiden: Anwendungen verwenden die SensorThings-Schnittstelle und erhalten keinen direkten Mosquitto-Zugang.

Konfiguration und Deployment

FROST wird mandantenbezogen mit einer eigenen PostgreSQL-/PostGIS-Datenbank bereitgestellt. Im Inventory wird festgelegt, ob die Komponente aktiviert ist, ob das MQTT-Modul ausgerollt wird und ob die Datenbank am global konfigurierten logischen Backup teilnimmt.

Die verfügbaren Inventory-Felder und Voraussetzungen sind unter Mandanten konfigurieren: FROST-Server beschrieben. HTTP- und MQTT-Zugänge werden unter SensorThings-Schnittstelle eingeordnet.

Rollen und Rechte

Für die über APISIX veröffentlichten SensorThings-Routen gelten dieselben zentralen API-Rollen wie für Stellio:

API-Access-Rolle

dataConsumer

Erhält api:read und darf SensorThings-Ressourcen und Observations lesen.

API-Access-Rolle

dataProducer

Erhält api:read und api:write und darf Ressourcen lesen sowie über die veröffentlichte POST-Route neu anlegen.

API-Access-Rolle

dataAdmin

Erhält zusätzlich api:delete und darf SensorThings-Ressourcen vollständig verwalten.

Beim Rollout erzeugt die UDSP außerdem die FROST-Client-Rollen read, create, update, delete und admin. Der aktuelle Plattformstand betreibt FROST jedoch mit authenticateOnly: true: FROST authentifiziert das weitergereichte Token, führt anhand dieser eigenen Rollen aber keine zusätzliche Autorisierung durch. Für den veröffentlichten Plattformzugang sind deshalb die oben dargestellten api-access-Rollen und die von APISIX geprüften Scopes maßgeblich.

Referenzen