
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
Persistiert SensorThings-Ressourcen, Beobachtungen, Zeitbezüge und Geometrien.
Komponente öffnen
APISIX
Veröffentlicht und schützt die HTTP-, Schreib-, Lösch- und WebSocket-Routen der SensorThings API.
Komponente öffnenKeycloak
Stellt Token und API-Scopes für die über APISIX veröffentlichten FROST-Routen bereit.
Komponente öffnenEclipse 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:
dataConsumer
Erhält api:read und darf SensorThings-Ressourcen und Observations lesen.
dataProducer
Erhält api:read und api:write und darf Ressourcen lesen sowie über die veröffentlichte POST-Route neu anlegen.
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.