REST API¶
Die REST-API ist die primäre Schnittstelle zwischen den Oberflächen und dem Backend. Während die Geräte selbst über MQTT angebunden sind, kommuniziert das Web-Dashboard und die Mobile App über HTTP mit der Plattform: Sie fragen Geräte und Telemetrie ab, senden Befehle und verwalten Automationsregeln. Für Live-Aktualisierungen ohne Polling ergänzt die WebSocket-Schnittstelle die REST-API.
Authentifizierung¶
Damit keine unbefugten Anfragen das System erreichen sind alle schreibenden POST-Endpunkte über einen API-Key geschützt. Somit können nur offizielle Frontends wie die Website und Apps Commands an Geräte senden.
Geräte¶
Die Geräte-Endpunkte liefern die registrierten Geräte inklusive ihres aktuellen Verbindungsstatus. Mit einzelnen UUIDs lassen sich auch die vollständigen Thing Models abrufen. Dies ist der zentrale Einstiegspunkt für Oberflächen um die registrierten Geräte nachzuschlagen sowie ausgewählte in die Oberfläche anzuzeigen.
| Methode & Pfad | Beschreibung |
|---|---|
GET /devices |
Liste aller registrierten Geräte |
POST /devices/batch |
Mehrere Geräte in einer Anfrage abrufen |
GET /devices/:uuid |
Einzelnes Gerät inklusive vollständigem Thing Model |
Commands¶
Über Commands steuert eine Oberfläche ein Gerät. Der Endpunkt nimmt einen Befehl für eine Capability entgegen, das Backend leitet ihn anschließend per MQTT an das Gerät weiter (siehe MQTT – Command-Daten).
| Methode & Pfad | Beschreibung |
|---|---|
POST /devices/:uuid/command |
Befehl an ein Gerät senden |
Ein Befehl besteht aus der zu steuernden Capability und dem einzustellenden Wert:
Fehlt capability oder value, gibt das Backend einen 400 Bad Request-Fehler zurück.
Optional kann ein Client direkt eine eigene command_id mitschicken, um sicherzustellen, dass derselbe Befehl nicht mehrfach verarbeitet wird. Andernfalls vergibt das Backend eine.
Telemetrie¶
Die Telemetrie-Endpunkte geben die von den Geräten gemeldeten Messwerte zurück. Für die Darstellung in einem Diagramm mit mehreren Datenpunkten als nur dem letzten Wert lässt sich der Zeitraum eingrenzen. Für einfache Statusanzeigen sowie beim Abrufen der Telemetrie beim Aufbau der Oberfläche genügt der jeweils letzte Wert.
| Methode & Pfad | Beschreibung |
|---|---|
GET /devices/:uuid/telemetry |
Telemetrie-Verlauf eines Geräts |
GET /devices/:uuid/telemetry/latest |
Nur der zuletzt gemeldete Datenpunkt |
Der Verlauf lässt sich über Query-Parameter eingrenzen: timespan (Zeitfenster,
Standard 24 hours), alternativ start_date und end_date für einen festen
Bereich sowie limit für die maximale Anzahl Datenpunkte mit einem Limit von 100 Datenpunkten.
Regeln¶
Die Automationen bzw. Regeln werden ebenfalls über die REST-API verwaltet. Um die Regeln abzurufen, zu erstellen, zu ändern, löschen, deaktivieren oder zu testen bietet die API folgende Endpunkte:
| Methode & Pfad | Beschreibung |
|---|---|
GET /rules |
Alle Regeln auflisten |
POST /rules |
Neue Regel anlegen |
GET /rules/:id |
Einzelne Regel abrufen |
PUT /rules/:id |
Regel vollständig aktualisieren |
PATCH /rules/:id/toggle |
Regel aktivieren oder deaktivieren |
DELETE /rules/:id |
Regel löschen |
POST /rules/:id/trigger |
Regel manuell auslösen |
Swagger API-Dokumentation¶
Als weiterführende Dokumentation der REST-API steht über die OpenAPI Docstrings eine interaktive Dokumentation zur Verfügung: