Der Ruuvi Gateway Router lässt sich sofort nahtlos in Ruuvi Sensorprodukte integrieren und gewährleistet eine optimale und einfache Einrichtung, insbesondere in Kombination mit einem Ruuvi Cloud Abonnement.
Wie jedoch in diesem Artikel erwähnt, kann Ruuvi Gateway in einer komplexeren IoT-Umgebung, die aus Sensorprodukten besteht, die nicht von Ruuvi hergestellt werden, eine zentrale Rolle einnehmen. Dieser Support-Artikel beschreibt den Konfigurationsprozess des Ruuvi Gateway, um Bluetooth LE-Werbedaten von Drittanbieter-Sensoren zu übertragen und einen einfachen HTTP/HTTPS-Server mit Python zu konfigurieren.
Es ist auch möglich, einen MQTT-Server als Ziel zu verwenden, um Daten von Drittanbieter-Sensoren zu empfangen. Lies unseren Support-Artikel, wenn du stattdessen ein MQTT-Ziel konfigurieren möchtest. Bitte beachte, dass Ruuvi Cloud keine Drittanbieter-Sensordaten unterstützt.
Drittanbieter-Bluetooth LE-Werbedaten mit Ruuvi Gateway abhören
Dein Ruuvi Gateway verfügt über eine integrierte Funktion, um alle Bluetooth LE-kompatiblen Broadcasts abzuhören, was die Erweiterung deines Setups um Ruuvi- und Nicht-Ruuvi-Beacon-Geräte vereinfacht. In Kombination mit der Fähigkeit, Werbedaten an HTTP(S)- und/oder MQTT(S)-Server zu übertragen, erweitert dies die Möglichkeiten, das Ruuvi Gateway als Gateway-Komponente in deinem IoT-Ökosystem zu nutzen.
Lass uns diese Funktion mit dem Ruuvi Gateway Einrichtungsassistenten aktivieren. Zuerst suchst du die Lochtaste unter dem Stromanschluss deines Ruuvi Gateway Geräts und drückst die Taste kurz mit einer Büroklammer, um den integrierten Wi-Fi-Hotspot zu aktivieren. Sobald der Hotspot aktiv ist, verbindest du dich auf deinem Gerät damit, indem du „Ruuvi Gateway XXXX konfigurieren“ aus den verfügbaren Wi-Fi-Netzwerken auswählst. Eine detaillierte Anleitung zum Verbinden mit dem Ruuvi Gateway Wi-Fi-Hotspot und zum Öffnen des Ruuvi Gateway Einrichtungsassistenten auf deinem Gerät findest du hier.
Wähle im Einrichtungsassistenten „Weiter“, bis du die Seite „Cloud-Optionen“ erreichst, und wähle „Ruuvi Cloud und/oder einen benutzerdefinierten Server verwenden“ und konfiguriere andere erweiterte Einstellungen unter „Erweitert“. Du kannst die Konfiguration von HTTP(S) und MQTT(S) zu diesem Zeitpunkt überspringen und einfach zweimal auf „Weiter“ tippen, um die Seite „Bluetooth-Scanning“ zu erreichen.
Als Nächstes suchst du die Option „Alle Bluetooth-Beacon-Nachrichten abhören (nicht nur Ruuvi-Sensoren)“ unter „Erweiterte Einstellungen“ und wählst diese Option aus, um das Ruuvi Gateway zu aktivieren, alle Bluetooth Low Energy-Werbedaten in seiner Nähe abzuhören, nicht nur Ruuvi-Sensoren.
Protokoll und Kanäle auswählen
Wähle anschließend „1 MBit/s-Werbedaten abhören“ aus der Liste der verfügbaren Protokolle aus. Standardmäßig sind die Kanäle 37, 38 und 39 ausgewählt; du kannst beide Einstellungen unverändert lassen. Wähle „Weiter“, um die Konfiguration abzuschließen.
Konfiguriere deinen HTTP(S)-Server mit Python
In den nächsten Schritten werden wir Python einrichten und konfigurieren, um es als HTTP(S)-Server in unserem lokalen Netzwerk mit einem Mac-Computer zu betreiben.
Wenn Python noch nicht auf deinem Mac installiert ist, lade es hier herunter und installiere es:
https://www.python.org/downloads/
Ruuvi Gateway verwendet POST-Anfragen, um Daten an einen HTTP-Server zu senden. Damit der Python HTTP-Server mit POST-Befehlen funktioniert, müssen wir ein Skript aus unserem Ruuvi GitHub-Repository herunterladen:
https://github.com/ruuvi/ruuvi.gwui.html/blob/master/scripts/http_server_auth.py
Erstelle einen neuen Ordner mit dem Namen „Ruuvi“, lade dann die obige Datei herunter und verschiebe sie in diesen neu erstellten Ordner. In meinem Fall habe ich den Ordner in meinen Downloads erstellt.
Öffne als Nächstes das Terminal aus deinen Mac-Anwendungen -> Dienstprogramme.
Virtuelle Umgebung erstellen und ausführen, pip aktualisieren und pycryptodome installieren
- Gehe im Terminal zum Ruuvi-Ordner
cd /Users/[yourusername]/Downloads/Ruuvi/- venv erstellen
python3 -m venv .venvNach diesem Schritt solltest du überprüfen, ob der Ordner .venv tatsächlich erstellt wurde. Suche und öffne im Finder den Ruuvi-Ordner. Drücke Befehl+Umschalt+Punkt. Deine versteckten Dateien werden sichtbar und der .venv-Ordner sollte dort sein.
- venv aktivieren
source scripts/.venv/bin/activate- pip aktualisieren (optional)
pip3 install --upgrade pip- pycryptodome installieren
pip3 install pycryptodomeJetzt sind wir bereit, unseren Python-Server zu starten. Du kannst entweder einen HTTP- oder HTTPS-Server ausführen, folge einfach Option 1 oder Option 2, je nach deiner Präferenz.
Option 1: Einen HTTP-Server ausführen
- Gehe im Terminal zum Ruuvi-Ordner
cd /Users/[yourusername]/Downloads/Ruuvi/- Den HTTP-Server starten
python3 http_server_auth.py --port 8001Option 2: SSL-Zertifikate generieren und einen HTTPS-Server ausführen
Um Zertifikate zu generieren, müssen wir den Hostnamen und den Clientnamen kennen.
Um diese zu finden, gehen wir wie folgt vor:
Gib im Mac OS Terminal ein:
hostnameIn meinem Fall ist der Hostname `markos-MacBook-Pro.local`
Der Clientname, der der lokale Netzwerkname deines Ruuvi Gateway Routers in Mac OS ist, kann wie folgt gefunden werden:
Gib im Mac OS Terminal ein:
dns-sd -BIn meinem Fall ist der Instanzname RuuviGateway5FC4.local
In meinem Fall ist der Instanzname RuuviGateway5FC4.local
Als Nächstes generieren wir die erforderlichen SSL-Zertifikate, die sowohl auf Client- als auch auf Serverseite verwendet werden sollen. Dazu verwenden wir den OpenSSL-Befehl im Terminalfenster. Beachte, dass die Zertifikatsdateien in dem Ordner generiert werden, auf den mein Terminal derzeit zeigt. In meinem Fall ist dies der Ordner „User/username/Downloads/Ruuvi/“
- Gehe im Terminal zum Ruuvi-Ordner
cd /Users/[yourusername]/Downloads/Ruuvi/Server-Zertifikate generieren (SSL)
Zuerst generieren wir selbstsignierte 2048-Bit-Server-Zertifikate. Befolge die folgenden Schritte der Reihe nach.
- Einen privaten Schlüssel generieren
openssl genrsa -out server_key.pem 2048- Eine Zertifikatsanforderung (CSR) erstellen
openssl req -new -key server_key.pem -out server_csr.pem- Das selbstsignierte Client-Zertifikat generieren
openssl x509 -req -in server_csr.pem -signkey server_key.pem -out server_cert.pem -days 365Um das Zertifikat in Schritt 3 zu generieren, werden einige zusätzliche Fragen gestellt und benötigt. Andere können übersprungen werden. Ich habe Folgendes ausgefüllt:
Ländercode (2 Buchstaben): `FI`
Allgemeiner Name: `markos-MacBook-Pro.local`
Nach Abschluss dieser Schritte befinden sich die serverseitigen Zertifikatsdateien im Ruuvi-Ordner.
Client-Zertifikate generieren (SSL)
Als Nächstes generieren wir ein Zertifikat und einen privaten Schlüssel für den Client (2048-Bit RSA-Schlüssel). Befolge die folgenden Schritte der Reihe nach.
- Einen privaten Schlüssel generieren
openssl genrsa -out client_key.pem 2048- Eine Zertifikatsanforderung (CSR) erstellen
openssl req -new -key client_key.pem -out client_csr.pem- Das Client-Zertifikat generieren
openssl x509 -req -in client_csr.pem -signkey client_key.pem -out client_cert.pem -days 365Um das Zertifikat in Schritt 3 zu generieren, werden einige zusätzliche Fragen gestellt und benötigt. Andere können übersprungen werden. Ich habe Folgendes ausgefüllt:
Ländercode (2 Buchstaben): `FI`
Allgemeiner Name: `RuuviGateway5FC4.local`
Nach Abschluss dieser Schritte befinden sich die clientseitigen Zertifikatsdateien im Ruuvi-Ordner.
Den HTTPS-Server ausführen
- Gehe im Terminal zum Ruuvi-Ordner
cd /Users/[yourusername]/Downloads/Ruuvi/- Starte den HTTPS-Server mit dem folgenden Befehl:
python3 http_server_auth.py --port 8001 --ssl_cert=./server_cert.pem --ssl_key=./server_key.pem --ca_cert=./client_cert.pemRuuvi Gateway einrichten, um Werbedaten an einen HTTP-Server weiterzuleiten
Ruuvi Gateway kann Drittanbieter-Sensordaten an HTTP(S)- und/oder MQTT(S)-Server weiterleiten. Dieses Mal werden wir ein HTTP(S)-Serverziel konfigurieren und verwenden. Wenn du eine Anleitung zur Konfiguration eines MQTT-Ziels suchst, findest du diese hier.
Um mit der Konfiguration zu beginnen, suchst du die Lochtaste unter dem Stromanschluss deines Ruuvi Gateway Geräts und drückst die Taste kurz mit einer Büroklammer, um den integrierten Wi-Fi-Hotspot zu aktivieren. Sobald der Hotspot aktiv ist, verbindest du dich auf deinem Gerät damit, indem du „Ruuvi Gateway XXXX konfigurieren“ aus den verfügbaren Wi-Fi-Netzwerken auswählst.
Sobald der Einrichtungsassistent geöffnet ist, tippe auf „Weiter“, bis du die Seite „Cloud-Optionen“ erreichst. Dort wählst du „Ruuvi Cloud und/oder einen benutzerdefinierten Server verwenden“ und konfigurierst andere erweiterte Einstellungen, wählst „Weiter“ und aktivierst auf der Seite „Benutzerdefinierter Server“ die Option HTTP(S). Dadurch können wir die HTTP-Einstellungen konfigurieren.
Als Nächstes müssen wir die IP-Adresse oder den lokalen Hostnamen für den Computer finden, der als Localhost läuft.
Entweder
IP in den Mac OS Einstellungen -> Netzwerk überprüfen.
In meiner Wi-Fi-Verbindung wird die IP 192.168.1.8 angezeigt.
Oder
Alternativ kannst du bei Mac-Computern auch einen lokalen Hostnamen verwenden. Um deinen Hostnamen zu finden,
Gib im Mac OS Terminal ein:
hostnameIn meinem Fall ist der Hostname `markos-MacBook-Pro.local`
Im Ruuvi Gateway Einrichtungsassistenten fügen wir nun das Serverziel hinzu, je nach deiner zuvor ausgewählten Option (HTTP- oder HTTPS-Server).
HTTP-Serverkonfiguration im Ruuvi Gateway Einrichtungsassistenten einstellen (Option 1)
Der HTTP-Server wird eine unkomplizierte Konfiguration sein, da es nicht viele Parameter zu kennen gibt.
- Füge die URL-Adresse für den Computer hinzu, der deinen HTTP-Server ausführt. In meinem Fall werde ich den lokalen Hostnamen verwenden. Der Port wurde zuvor bei der Konfiguration des HTTP-Servers definiert.
- Das Datenformat für unseren Drittanbieter-Sensor ist unbekannt und kann vom Ruuvi Gateway nicht dekodiert werden, daher ist das Senden im Rohformat die einzige Option.
- Das Sendeintervall ist derzeit auf 10 Sekunden eingestellt, um häufige Updates zu erhalten.
- Überprüfe die Konfiguration mit der Schaltfläche „Prüfen“. Wenn keine Fehler auftreten, tippe auf „Weiter“, bis du die letzte Seite erreichst, die bestätigt, dass die Einrichtung abgeschlossen ist.
HTTPS-Serverkonfiguration im Ruuvi Gateway Einrichtungsassistenten einstellen (Option 2)
Die Konfiguration eines HTTPS-Servers erfordert einen weiteren Schritt mit SSL-Zertifikaten, ist aber ebenfalls recht unkompliziert.
1. Füge die URL-Adresse für den Computer hinzu, der deinen HTTPS-Server ausführt.
In meinem Fall werde ich den lokalen Hostnamen verwenden. Der Port wurde zuvor bei der Konfiguration des HTTPS-Servers definiert.
2. Das Datenformat für unseren Drittanbieter-Sensor ist unbekannt und kann vom Ruuvi Gateway nicht dekodiert werden, daher ist das Senden im Rohformat die einzige Option.
3. Das Sendeintervall ist derzeit auf 10 Sekunden eingestellt, um häufige Updates zu erhalten.
4. Unter der Einstellung für das Sendeintervall findest du die SSL-Zertifikatsoptionen. Wähle „Verwenden“ für beide Client- und benutzerdefinierten SSL-Zertifikatsoptionen. In meinem Fall habe ich ein Client-Zertifikat und einen Schlüssel für das Client-SSL-Zertifikat und ein Server-Zertifikat für das benutzerdefinierte SSL hochgeladen.
5. Überprüfe die Konfiguration mit der Schaltfläche „Prüfen“. Wenn keine Fehler auftreten, tippe auf „Weiter“, bis du die letzte Seite erreichst, die bestätigt, dass die Einrichtung abgeschlossen ist.
Die Konfiguration testen
Nachdem der Server und Ruuvi Gateway konfiguriert wurden, ist es an der Zeit, endlich zu überprüfen, ob Sensordaten vom Ruuvi Gateway gesendet und vom HTTP(S)-Server empfangen werden.
Notiere die IP-Adresse, die deinem Ruuvi Gateway auf der letzten Seite des Ruuvi Gateway Einrichtungsassistenten zugewiesen wurde. In meinem Fall ist diese IP 192.168.1.8.
Öffne als Nächstes die folgende Seite in einem Browserfenster.
http://[yourgatewayip]/historyDiese Seite meldet alle Sensoren, die Ruuvi Gateway derzeit sendet. Diese Daten sollten Details zu deinem Drittanbieter-Sensor enthalten.
Drittanbieter-Sensordaten werden vom Ruuvi Gateway gesendet.
Zuletzt überprüfen wir, ob dieselben Daten auf der HTTP(S)-Serverseite empfangen werden. Dazu genügt ein kurzer Blick in das MacOS Terminal, das den Python-Server ausführt, um zu bestätigen, dass diese Sensordaten tatsächlich empfangen werden.
Fazit
In diesem How-To-Artikel haben wir die nahtlose Integration von Drittanbieter-Sensordaten mit dem Ruuvi Gateway Router untersucht und seine Funktionalität über Ruuvi-Sensorprodukte hinaus erweitert.
Durch die Konfiguration des Ruuvi Gateway zum Abhören von Bluetooth LE-Werbedaten von Nicht-Ruuvi-Sensoren und die Einrichtung eines HTTP(S)-Servers können Benutzer Daten in ihrem IoT-Ökosystem effizient weiterleiten und verarbeiten.