Der Ruuvi-Gateway-Router ermöglicht es Nutzern, Messhistorie und Metriken über dedizierte Endpunkte im Polling-Modus zu erfassen, wenn er mit einem lokalen Netzwerk verbunden ist. Der Zugriff auf diese lokalen Endpunkte lässt sich in den Ruuvi-Gateway-Einstellungen einfach konfigurieren, sodass du je nach Anwendungsfall auch verschiedene Authentifizierungsmethoden nutzen kannst.
In dieser Anleitung zeigen wir dir, wie du den Zugriff auf Endpunkte konfigurierst und mit cURL Messdaten abrufst und speicherst.
Weitere Beispiele zur Nutzung des Polling-Modus findest du hier.
Was ist Polling?
Polling ist ein Verfahren, bei dem ein Computer oder ein Steuergerät auf ein externes Gerät wartet, um dessen Bereitschaft oder Zustand abzufragen. Der Polling-Modus kann von Servern, Nodes und verschiedenen Anwendungen genutzt werden, um Werte abzurufen und beim Empfang von Eingaben Aktionen auszulösen.
Mit dem Ruuvi Gateway kann Polling genutzt werden, um Messdaten und Metrik-Informationen von dedizierten API-Endpunkten abzurufen, die vom Gateway bereitgestellt werden. So ist eine sichere und zuverlässige Datenerfassung möglich, ohne dass Daten das lokale Netzwerk verlassen müssen.
Der Metrics-Endpunkt bietet Zugriff auf detaillierte interne Informationen zum aktuellen Status des Ruuvi Gateway, was für Netzwerkadministratoren wertvoll sein kann.
Was ist cURL?
cURL ist ein Kommandozeilen-Tool zum Übertragen von Daten zu oder von einem Server über verschiedene Protokolle wie HTTP, FTP und SMTP. Es wird häufig für Aufgaben wie das Senden von HTTP-Anfragen, das Herunterladen von Dateien und die Interaktion mit APIs verwendet und ist damit ein leistungsstarkes Werkzeug für Entwickler und Systemadministratoren, um Netzwerkinteraktionen zu automatisieren und zu testen.
cURL bietet eine einfache Möglichkeit, Messdaten vom Ruuvi Gateway mit wenigen Parametern abzurufen und zu speichern.
Zugriff auf Endpunkte des Ruuvi-Gateway-Routers
Standardmäßig sind die History- und Metrics-Endpunkte deines Ruuvi-Gateway-Routers aktiviert, aber nur innerhalb des lokalen Netzwerks zugänglich, wenn die richtigen Zugriffsrechte konfiguriert sind.
Du kannst diese Einstellungen auf der Seite „Remote Access Settings“ im Gateway Setup Wizard konfigurieren.
Verfügbare Optionen sind:
Passwortgeschützt mit dem Standardpasswort
Geschützt mit einem benutzerdefinierten Passwort
Nicht per Remote-Verbindung konfigurierbar
Per Remote konfigurierbar ohne Passwort
Wenn „Per Remote konfigurierbar ohne Passwort“ ausgewählt ist, sind diese Endpunkte ohne Authentifizierung erreichbar. Für die Optionen „Passwortgeschützt“ oder „Nicht per Remote-Verbindung konfigurierbar“ wird empfohlen, den API-Zugriff über ein Bearer-Token zu konfigurieren.
Bei Verwendung eines API-Schlüssels (Bearer-Token) kannst du zwischen diesen beiden Optionen wählen:
Nur-Lesezugriff (zum Abrufen von Daten im Polling-Modus über den /history-Endpunkt)
Lese-/Schreibzugriff (zum Lesen beliebiger Daten oder zum Ändern der Konfiguration)
In unseren Beispielen zeigen wir ein paar der oben genannten Konfigurationen, aber du kannst deine bevorzugte Methode im Ruuvi Gateway Setup Wizard ganz einfach einrichten.
Was du brauchst
Damit Polling bei dir funktioniert, brauchst du ein paar Dinge.
cURL installieren
Da ich einen macOS-Computer verwende, ist cURL bei mir bereits installiert. Falls das bei dir nicht der Fall ist, lade es hier herunter und installiere es.
Lokalen Client-Namen des Ruuvi Gateway im Terminal finden
Als Nächstes findest du den lokalen Namen unseres Ruuvi-Gateway-Routers, der später in unserem Bash-Skript verwendet wird. Der lokale Name ist macOS-spezifisch; wenn du Windows verwendest, nutze stattdessen die lokale IP-Adresse, die deinem Ruuvi Gateway zugewiesen ist.
Gib im macOS-Terminal Folgendes ein:
dns-sd -BOrdner zum Speichern von Skripten und Logs erstellen
Da wir im Verlauf einige Bash-Skripte erstellen und Logs speichern, legen wir zuerst einen neuen Ordner namens Ruuvi in deinem Downloads-Ordner an und wechseln dann in diesen Ordner, in dem wir später unsere Dateien speichern.
Gib im macOS-Terminal Folgendes ein:
mkdir /Users/[yourusername]/Downloads/Ruuvi/
cd /Users/[yourusername]/Downloads/Ruuvi/Beispiel 1: Messdaten im 60-Sekunden-Intervall mit cURL lesen (keine Authentifizierung)
In diesem ersten Beispiel sammeln wir einfach Sensormessdaten vom /history-Endpunkt des Ruuvi Gateway in einem 60-Sekunden-Intervall ohne Authentifizierung. Das ist für die Datenerfassung innerhalb eines lokalen Netzwerks, z. B. zu Hause, sicher und lässt sich für eine schnelle Datenerfassung leicht über ein Terminal-Fenster einrichten.
Ruuvi-Gateway-Router so konfigurieren, dass API-Zugriff ohne Authentifizierung erlaubt ist
Zu Beginn möchten wir die Ruuvi-Gateway-Endpunkte so konfigurieren, dass sie im lokalen Netzwerk ohne Authentifizierung erreichbar sind. Öffne dazu den Ruuvi Gateway Setup Wizard, gehe zur Seite „Remote Access Settings“ und wähle „Per Remote konfigurierbar ohne Passwort“.
Tippe nach der Änderung auf „Next“, bis die Konfiguration abgeschlossen ist. Der Ruuvi Gateway Setup Wizard kann dann geschlossen werden.
Bash-Skript erstellen und ausführbar machen
Öffne als Nächstes einen Texteditor mit einer leeren Seite und schreibe die folgenden Zeilen. Ersetze dabei den lokalen Namen deines Gateway zwischen den eckigen Klammern []. Wenn du Windows verwendest, nutze stattdessen die lokale IP-Adresse deines Gateway.
#!/bin/bash
while true
do
curl http://[yourgateway.local]/history
sleep 60
doneSpeichere diese Datei in deinem Ruuvi-Ordner unter dem Dateinamen example1.sh.
Zum Schluss machen wir diese Bash-Datei im Terminal ausführbar.
cd /Users/[yourusername]/Downloads/Ruuvi/
chmod +x example1.shSkript im Terminal ausführen
Jetzt können wir dieses Skript im selben Terminal-Fenster mit folgendem Befehl ausführen:
./example1.shDas war’s! Messdaten werden vom /history-Endpunkt deines Gateway gelesen und im 60-Sekunden-Intervall im Terminal-Fenster ausgegeben.
Beispiel 2: Messdaten mit cURL in eine .json-Datei sammeln (Bearer-Authentifizierung)
In unserem zweiten Beispiel sammeln wir Sensormessdaten vom /history-Endpunkt des Ruuvi Gateway, wenn der Zugriff auf die Gateway-Web-UI passwortgeschützt ist und der Lese-Endpunkt über ein Bearer-Token authentifiziert wird. Anschließend speichern wir die erfassten Messwerte in einer .json-Datei.
Ruuvi-Gateway-Router so konfigurieren, dass er passwortgeschützt ist, aber zur Authentifizierung einen API-Schlüssel (Bearer-Token) nutzt
Zuerst möchten wir den Zugriff auf die Ruuvi-Gateway-Web-UI mit einem Passwort schützen, aber die Endpunkte gleichzeitig so konfigurieren, dass sie über ein Bearer-Token lesbar sind.
Öffne dazu den Ruuvi Gateway Setup Wizard, gehe zur Seite „Remote Access Settings“ und wähle „Passwortgeschützt mit dem Standardpasswort“. Aktiviere dann unter „Advanced settings“ die Option „Enable read-only access to „/history“ using API key“.
Ein eindeutiger Schlüssel wird automatisch für dich generiert.
Kopiere diesen Schlüssel in deinen Texteditor, bevor du auf „Next“ tippst, bis deine Konfiguration gespeichert ist.
Bash-Skript erstellen und ausführbar machen
Öffne als Nächstes eine leere Seite im Texteditor und schreibe die folgenden Zeilen. Ersetze dabei den lokalen Namen deines Gateway und das Bearer-Token zwischen den eckigen Klammern []. Wenn du Windows nutzt, verwende stattdessen die lokale IP-Adresse deines Gateway.
#!/bin/bash
while true
do
curl http://[yourgateway.local]/history -H "Authorization: Bearer [yourbearertoken]" -o history.json
sleep 60
doneSpeichere diese Datei in deinem Ruuvi-Ordner unter dem Dateinamen example2.sh.
Zum Schluss machen wir diese Bash-Datei im Terminal ausführbar.
cd /Users/[yourusername]/Downloads/Ruuvi/
chmod +x example2.shSkript im Terminal ausführen
Jetzt können wir dieses Skript im selben Terminal-Fenster mit folgendem Befehl ausführen:
./example2.shDas war’s! Messdaten werden vom /history-Endpunkt deines Gateway mit API-Schlüssel gelesen und im 60-Sekunden-Intervall in einer history.json-Datei gespeichert, die sich im Ruuvi-Ordner befindet.
Alternative Methoden zum Sammeln von Messdaten vom Ruuvi Gateway
Polling ist nur eine Möglichkeit, Messdaten von deinem Ruuvi Gateway zu erfassen. Wenn du einen bestimmten Server zum Sammeln der Messdaten verwenden möchtest, bietet Ruuvi Gateway auch eine einfache Möglichkeit, Daten an einen HTTP(S)– oder MQTT(S)-Server weiterzuleiten.
Polling kann jedoch eine unkomplizierte Möglichkeit sein, Messwerte von deinem Ruuvi-Gateway-Router innerhalb deines lokalen Netzwerks nur mit deinem Terminal-Fenster zu erfassen, ohne dafür einen komplizierten Server konfigurieren zu müssen.