Wie finden Sie diesen Artikel? Helfen Sie uns, bessere Inhalte für Sie bereitzustellen.
Vielen Dank! Ihr Feedback ist eingegangen.
There was a problem submitting your feedback, please try again later.
Was denken Sie über diesen Artikel?
Dieses Projekt setzt unsere Reihe der Aufstellung von ROCK-Boards in einem industriellen Kontext fort und präsentiert innovative IIoT-Lösungen, die sich in bestehende Infrastrukturen für industrielle Automatisierung, intelligente Landwirtschaft und Gebäudemanagement integrieren lassen oder die Bausteine für neue Lösungen bilden.
Wir erweitern einen bestehenden ROCK 4SE MQTT-Server um Datenbankfunktionen, indem wir InfluxDB und Telegraf verwenden, die wir in einem früheren Projekt erstellt haben. Dadurch können Sensordaten erfasst und gespeichert und über das Netzwerk für andere Clients verfügbar gemacht werden.
Wir führen außerdem einen neuen Netzwerkknoten auf der Basis des ROCK 3A mit einem 7-Zoll-Touchscreen-Display von Raspberry Pi ein, der Grafana verwendet, um nützliche und ansprechende Dashboards für die Analyse und Präsentation von Sensordaten für Benutzer zu erstellen.
Schwierigkeit: Fortgeschritten | Zeit: 6 Hrs | Schritte: 16 | Credits: None | License: Various |
Parts Needed
Part | Description | RS Stock Number |
---|---|---|
ROCK 3A | Okdo ROCK 3 Model A 2GB Single Board Computer | (256-3910) |
7 inch LCD Touch Screen | Raspberry Pi LCD Touch Screen with 7in Capacitive Touch Screen | (899-7466) |
QC Power Supply | Okdo 36 W PD + QC Multihead PSU Plug In Power Supply 5→20V dc Output, 1.75→3A Output | (243-6356) |
USB-C Cable | Deltaco USB 2.0 Cable USB C to USB C Cable, 2M | (276-7734) |
SD Card | Sandisk 32 GB MicroSDHC Micro SD Card | (283-6581) |
Screen Case | Raspberry Pi 4 Touchscreen Display Case | |
Host PC | Linux / Mac / Windows Host computer | |
Internet / Router | Internet connection |
Schritt 1: Systemübersicht
Dieses Projekt besteht aus zwei Systemkomponenten.
Die erste ist der MQTT-Server, der einen Mosquitto-MQTT-Dienst, eine InfluxDB-Datenbank und ein Telegraf-Plug-in hostet, die alle in separaten Systemprozessen auf einer ROCK 4SE-Platine ausgeführt werden. Diese Komponente sammelt Daten von Sensoren mithilfe des MQTT-Protokolls und speichert die Messwerte in der Datenbank. Auf die Datenbank kann über das Netzwerk zugegriffen werden.
Die zweite Komponente ist der Display-Client, der eine Grafana-Instanz hostet, um Dashboards für die Anzeige der gespeicherten Sensordaten auf einem Touchscreen zu erstellen. Ein ROCK 3A-Board, das mit einem Raspberry Pi 7-Zoll-Touchscreen verbunden ist, übernimmt diese Aufgabe.
Mit diesem Ansatz wäre es möglich, je nach Bedarf mehrere Displays mit derselben zentralen Datenbank zu verbinden.
Da mehrere Softwarekomponenten eingerichtet werden müssen, wird jeder Schritt mit einem Test abgeschlossen, um zu bestätigen, dass er erfolgreich durchgeführt wurde. Am Ende sollte also ein funktionierendes System stehen.
Schritt 2: Hardware anzeigen
Für dieses Projekt können Sie je nach den Anforderungen an die Netzwerkkonnektivität entweder die ROCK 3A- oder die ROCK 3C-Boards verwenden. Der ROCK 3A bietet eine bessere Leistung, da er mit 4 GB RAM erhältlich ist und mit einer höheren Taktfrequenz läuft als der ROCK 3C.
Ich habe den ROCK 3A mit 2 GB RAM getestet. Dieser basiert auf dem Rockchip RK3568 SoC, einer 64-Bit-Quad-Core-Armv8.2-A-Cortex®-A55-CPU mit 2,0 GHz.
Beide Platinen haben einen kleinen Formfaktor, Gigabit-Netzwerkdurchsatz und mehr als genug CPU- und Speicherressourcen für diese Anwendung und unterstützen SD-Karten- oder eMMC-Speicher.
Sowohl der ROCK 3A als auch der ROCK 3C passen gut in das Gehäuse des 7-Zoll-Touchscreen-Displays von Raspberry Pi, wobei nur geringfügige Änderungen erforderlich sind, sodass sie einfach eingesetzt werden können.
Dieser Guide zeigt, wie man Touchscreens zum ROCK board hinzufügt: How to add a Raspberry Pi 7-inch display to Radxa ROCK Single Board Computers
Testen Sie, ob Sie den Xfce-Desktop auf dem Display ausführen können, und verbinden Sie den ROCK über Ethernet mit Ihrem Netzwerk. Überprüfen Sie, ob Sie über Ihren bevorzugten Terminalemulator SSH-Zugriff haben. Unter Linux verwende ich Terminal und unter Windows können Sie CMD verwenden (Sie benötigen Putty nicht mehr).
ssh radxa@rock-3a
Schritt 3: MQTT-Server
Um Daten von Sensoren zu sammeln, die über das MQTT-Protokoll mit dem Netzwerk verbunden sind, benötigen wir einen MQTT-Server. In diesem Projekt haben wir gezeigt, wie der Mosquitto MQTT-Server auf einem ROCK 4SE aufgebaut wird: Radxa ROCK Secure MQTT Edge Gateway
Hier ist der ROCK 4SE-Server, der über Ethernet mit dem Netzwerk verbunden ist:
Konfigurieren Sie den MQTT-Server so, dass er anonyme Verbindungen von Localhost in /etc/mosquitto/conf.d/broker.conf wie folgt akzeptiert:
sudo vi /etc/mosquitto/conf.d/broker.conf
Mit diesem Content:
# Enable settings by listener
per_listener_settings true
# Allow anonymous access on port 1883
listener 1883 localhost
allow_anonymous true
Starten Sie Mosquitto service neu und checken Sie, ob es da ist
sudo systemctl restart mosquitto.service
sudo systemctl status mosquitto.service
Schritt 4: Scheinsensoren
Um das Testen zu vereinfachen, habe ich ein Bash-Skript geschrieben, das Temperatursensordaten vortäuscht und über MQTT sendet. Natürlich können Sie auch echte Sensoren verwenden.
Erstellen Sie auf dem ROCK 4SE das untenstehende Skript mit dem Namen random-temp.sh. Es generiert zwei zufällige Temperaturen und veröffentlicht sie alle 10 Sekunden im CSV-Format auf separaten Themen:
vi random-temp.sh
Bash script…
#!/bin/bash
# Publish random temperature values between 0 & 19.9 over MQTT
while true; do
a=0; b=20
t1=$((a+RANDOM%(b-a))).$((RANDOM%9)); echo "T1: $t1"
t2=$((a+RANDOM%(b-a))).$((RANDOM%9)); echo "T2: $t2"
mosquitto_pub -h localhost -t test/t1 -m "$t1"
mosquitto_pub -h localhost -t test/t2 -m "$t2"
sleep 10
done
Installieren Sie das mosquitto-clients-Paket auf dem ROCK 4SE, machen Sie das Skript ausführbar und führen Sie es aus – die formatierte Ausgabe wird an stdout
sudo apt install mosquitto-clients
chmod +x random-temp.sh
./random-temp.sh
Schritt 5: InfluxDB-Installation
Nachdem unser MQTT-Server nun eingerichtet ist und Testdaten veröffentlicht werden, können wir uns der Einrichtung der InfluxDB-Datenbank zuwenden. Diese wird ebenfalls auf dem ROCK 4SE installiert und als separater Systemprozess ausgeführt.
Eine ausführliche Anleitung hierzu finden Sie auf Influxdata.com unter:
Öffnen Sie eine Terminalsitzung auf dem ROCK 4SE und laden Sie das Linux-Paket für Ubuntu/Debian ARM64 herunter. Installieren Sie es, starten Sie es und überprüfen Sie, ob es ausgeführt wird:
Hinweis: Die aktuelle InfluxDB2-Version ist 2.7.X. Dies wird sich ändern, sodass die Befehle mit der neuesten Version übereinstimmen müssen.
cd ~/
curl -LO https://download.influxdata.com/influxdb/releases/influxdb2_2.7.10-1_arm64.deb
sudo dpkg -i influxdb2_2.7.10-1_arm64.deb
sudo systemctl start influxdb.service
systemctl status influxdb.service
Schritt 6: InfluxDB CLI
InfluxDB CLI ist ein separates Paket, das alle erforderlichen Tools enthält, um die Datenbank und die Benutzer über die Befehlszeile zu verwalten. Wir werden es verwenden, um Benutzer für unsere verschiedenen Anwendungen einzurichten und unsere Datenbanken zu verwalten.
Auch hier gibt es eine hervorragende Dokumentation:
Installieren Sie es über eine Terminal-Sitzung auf dem ROCK 4SE. Laden Sie den CLI-Client für Arm64 herunter, extrahieren Sie die Binärdatei und kopieren Sie den Client in das lokale bin-Verzeichnis:
cd ~/
wget https://download.influxdata.com/influxdb/releases/influxdb2-client-2.7.5-linux-arm64.tar.gz
mkdir influxdb-client
tar xvzf influxdb2-client-2.7.5-linux-arm64.tar.gz -C influxdb-client
sudo cp influxdb-client/influx /usr/local/bin/
Jetzt kann InfluxDB initialisiert werden. Dies erfolgt durch die Erstellung eines Admin-Benutzers, die Eingabe von Parametern für das Passwort, den Namen der Organisation (von Ihnen definiert, um eine übergeordnete Gruppierung von Datenbanken widerzuspiegeln) und einen primären Bucket-Namen. In Buckets werden im InfluxDB-Jargon bestimmte Datentypen gespeichert. Eine Organisation kann viele Buckets enthalten:
influx setup \
--username 'influx-admin' \
--password '123456-xyz' \
--org 'okdo-projects' \
--bucket 'sensors' \
--force
Dadurch wird ein API-Token für den Admin-Benutzer generiert, der in ~/.influxdbv2/configs gespeichert ist, und dieses Token wird für diesen Benutzer verfügbar gemacht, wenn der CLI-Client ausgeführt wird.
Bei der Erstellung von InfluxDB-Benutzern sollten wir separate Benutzer für die Telegraf- und Grafana-Anwendungen erstellen, die wir in Kürze installieren werden. Jeder dieser Benutzer verfügt je nach Rolle über einen leicht unterschiedlichen Satz von Datenbankberechtigungen.
Erstellen Sie einen Benutzer zur Verwaltung des Telegraf-Agenten. Dieser Benutzer hat Lese-/Schreibzugriff auf alle Daten-Buckets und kann Telegraf-Transaktionen lesen und schreiben:
influx user create -n 'telegraf' -p '123456-xyz' -o 'okdo-projects'
influx auth create \
--org 'okdo-projects' \
--user 'telegraf' \
--read-buckets \
--write-buckets \
--read-telegrafs \
--write-telegrafs
Erstellen Sie schließlich einen Grafana-Benutzer – dieser kann nur Datenpakete lesen, sonst nichts:
influx user create -n 'grafana' -p '123456-xyz' -o 'okdo-projects'
influx auth create \
--org 'okdo-projects' \
--user 'grafana' \
--read-buckets
Schritt 7: Buckets
Da unsere Datenbankbenutzer nun eingerichtet sind, müssen wir die InfluxDB-Buckets für unsere Daten einrichten.
Zu Testzwecken erstellen wir einen separaten Bucket für Testdaten. Die Daten müssen nicht lange gespeichert werden, daher erstellt dieser Befehl einen neuen Bucket mit dem Namen test:
influx bucket create --name "test" --org "okdo-projects" --retention 72h
Grafana folgt den InfluxDB 1.x-Konventionen, um InfluxDB 2.7-Buckets abzufragen, sodass wir eine DBRP-Zuordnung (Data Base Retention Policy) für das Test-Bucket erstellen müssen.
Ermitteln Sie die Bucket-ID für das Test-Bucket mit dem folgenden Befehl:
influx bucket list
Hier ist die test bucket ID efa827c8dd4bec4e
Erstellen Sie nun die DBRP-Zuordnung für den Test-Bucket, bei dem der Name test-rp zugeordnet wird, was der Name für den Bucket ist, auf den sich Grafana beziehen wird. Überprüfen Sie dann, ob die Zuordnung vorhanden ist, indem Sie den Befehl dbrp list verwenden:
influx v1 dbrp create \
--db test \
--rp test-rp \
--bucket-id efa827c8dd4bec4e \
--default
influx v1 dbrp list
Schritt 8: Telegraf Installation
Telegraf ist ein Open-Source-Software-Agent, der das Lesen und Schreiben von Daten in InfluxDB aus vielen verschiedenen Anwendungen, einschließlich MQTT, erleichtert.
Wir werden es auf dem ROCK 4SE installieren und es verwenden, um die Sensordaten, die an den MQTT-Broker veröffentlicht werden, in InfluxDB zu erfassen.
Besuchen Sie die Telegraf-Homepage und klicken Sie auf die Schaltfläche „Download“, um die URL der neuesten Version für Linux auf ARMv8 zu erhalten:
Laden Sie in einer Terminal-Sitzung auf dem ROCK 4SE den neuesten Tarball herunter, überprüfen Sie die Verzeichnisstruktur und extrahieren Sie das Archiv in das Stammverzeichnis, indem Sie die ersten beiden führenden Verzeichnisse aus dem Archivpfad entfernen. Überprüfen Sie abschließend, ob sich die ausführbare Telegraf-Datei im Pfad befindet:
Hinweis: Überprüfen Sie vor der Ausführung des Befehls „tar xzvf“ die Tarball-Struktur, falls sie sich in zukünftigen Versionen geändert hat.
cd ~/
wget https://download.influxdata.com/telegraf/releases/telegraf-1.31.3_linux_arm64.tar.gz
tar tf telegraf-1.31.3_linux_arm64.tar.gz
sudo tar xzvf telegraf-1.31.3_linux_arm64.tar.gz --strip-components=2 -C /
which telegraf
Schritt 9: Telegraf-Konfiguration
Nach der Installation können wir Telegraf und seine Plugins konfigurieren, was eine etwas dunkle Kunst ist. Hier sind einige Beispiele dokumentiert:
Die Plugin-Datenformate sind hier dokumentiert:
Erstellen Sie eine Telegraf-Konfiguration in /etc/telegraf/telegraf.d/test.conf, die Einträge für ein Input-Plug-in zum Konsumieren von MQTT-Daten im CSV-Format und ein Output-Plug-in zum Speichern der Daten im Test-Bucket in InfluxDB enthält:
sudo vi /etc/telegraf/telegraf.d/test.conf
hier ist der Content der Datei
[agent]
interval = "5s"
[[inputs.mqtt_consumer]]
servers = ["tcp://localhost:1883"]
topics = [
"test/t1",
"test/t2"
]
data_format = "csv"
csv_header_row_count = 0
csv_column_names = ["temperature"]
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "${INFLUX_TOKEN}"
organization = "okdo-projects"
bucket = "test"
So funktioniert es:
Dateien in /etc/telegraf/telegraf.d/ überschreiben alle Einstellungen in der Standardkonfiguration, die sich in /etc/telegraf/telegraf.conf befindet
Der Abschnitt „Agent“ legt lediglich fest, wie oft Daten in InfluxDB geschrieben werden.
Der Abschnitt inputs.mqtt_consumer definiert den Host und die Themen von MQTT, die überwacht werden sollen. Außerdem wird das Datenformat CSV angegeben und darauf hingewiesen, dass die Daten keine Kopfzeile enthalten. Unsere Testdaten bestehen nur aus einem einzigen Feld, das dem Namen „temperature“ zugeordnet ist. Dadurch wird die Bezeichnung für die im Bucket gespeicherten Werte erstellt.
Der Abschnitt outputs.influxdb_v2 gibt das Format InfluxDB V2 zusammen mit der URL und dem Port des Hosts an, auf dem InfluxDB ausgeführt wird (in diesem Fall auf demselben Host). Das Zugriffstoken für den Telegraf-Benutzer wird aus der Umgebung und der Organisation und dem Bucket gelesen, in dem die Daten landen sollen.
Schritt 10: Telegraf-Start
Es ist noch etwas Arbeit erforderlich, damit Telegraf beim Hochfahren startet und sich mit InfluxDB verbindet.
Um die Sicherheit zu gewährleisten, fügen wir einen Telegraf-Systembenutzer hinzu, der über ein nologin-Konto auf Betriebssystemebene verfügt. Dann können wir das InfluxDB-Zugriffstoken für den Telegraf-Datenbankbenutzer in einer Umgebungsvariablen speichern, damit die systemd-Start-Units darauf zugreifen können. Schließlich ändern und installieren wir die bereitgestellte systemd
sudo useradd -r -s /sbin/nologin telegraf
Listen Sie die InfluxDB-Berechtigungen auf und kopieren Sie das Token des Telegraf-Datenbankbenutzers in die Zwischenablage:
influx auth list
Erstellen Sie die Umgebungsdatei in /etc/telegraf/telegraf.d/telegraf-token.txt und setzen Sie die Umgebungsvariable INFLUX_TOKEN auf das Token des Telegraf-Datenbankbenutzers:
sudo vi /etc/telegraf/telegraf.d/telegraf-token.txt
INFLUX_TOKEN="m3i1NGxoZ2k5cWxHs4BL6kjUnWOXFlhlGa-jom95VpFM8i9qq3Dk57UX12C_XpPMAAmMGdFgmGwYOAIK9bt8RQ=="
Ändern Sie die Eigentümerschaft der Token-Datei und machen Sie sie nur für telegraf les- und schreibbar:
sudo chown telegraf:telegraf /etc/telegraf/telegraf.d/telegraf-token.txt
sudo chmod 600 /etc/telegraf/telegraf.d/telegraf-token.txt
Kopieren Sie die Telegraf-Service-Unit-Datei, damit systemd sie lesen kann, und ersetzen Sie dann den darin enthaltenen Verweis auf „EnvironmentFile“, sodass er auf die soeben erstellte Umgebungsvariable verweist:
sudo cp /usr/lib/telegraf/scripts/telegraf.service /etc/systemd/system/
sudo vi /etc/systemd/system/telegraf.service
die finalen content von telegraf.service:
[Unit]
Description=Telegraf
Documentation=https://github.com/influxdata/telegraf
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/etc/telegraf/telegraf.d/telegraf-token.txt
User=telegraf
ImportCredential=telegraf.*
ExecStart=/usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d $TELEGRAF_OPTS
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartForceExitStatus=SIGPIPE
KillMode=mixed
LimitMEMLOCK=8M:8M
PrivateMounts=true
[Install]
WantedBy=multi-user.target
Stellen Sie sicher, dass der MQTT-Broker ausgeführt wird und anonymen Zugriff auf Localhost auf Port 1883 zulässt.
Aktivieren Sie nun den Dienst, starten Sie ihn und überprüfen Sie, ob er wie erwartet ausgeführt wird. Eventuelle Probleme werden in der Statusansicht angezeigt:
sudo systemctl enable telegraf.service
sudo systemctl daemon-reload
sudo systemctl start telegraf.service
sudo systemctl status telegraf.service
so sollte es aussehen:
Wenn Sie es schaffen, Telegraf zum Laufen zu bringen, ist einer der kniffligsten Teile geschafft. Wenn nicht, sehen Sie sich die Tipps zur Fehlerbehebung am Ende an.
Step 11: InfluxDB Testing
Lassen Sie uns kurz überprüfen, ob wir Daten in InfluxDB empfangen.
Angenommen, Ihr MQTT-Broker läuft zusammen mit InfluxDB, Telegraf und dem Mock-Test-Skript, führen Sie in einem Terminal auf dem ROCK 4SE die folgenden Befehle über die Influx-CLI aus:
Wenn sich die Shell öffnet, geben Sie den Namen des Eimers an der Eingabeaufforderung ein und drücken Sie die Eingabetaste. Fügen Sie dann die Abfrage select hinzu und drücken Sie die Eingabetaste. Sie sollten dann die Ergebnisse der Abfrage sehen. Drücken Sie q, um zur Eingabeaufforderung zurückzukehren, und geben Sie dann exit ein, um die Sitzung zu beenden:
influx v1 shell
> use "test"
> select * from "mqtt_consumer"
> exit
die Session sollte so aussehen nach dem exit
Die Abfrageergebnisse für den Test-Bucket sollten wie folgt aussehen, wobei Sie den Spaltennamen „Temperatur“ sehen können, der automatisch von Telegraf hinzugefügt wurde, und den Zeitstempel, der von InfluxDB zu den über MQTT gesendeten Werten hinzugefügt wurde:
Fantastisch, jetzt können Sie also jede Art von Daten, die auf Ihrem MQTT-Server veröffentlicht werden, sammeln und in InfluxDB speichern!
In den nächsten Schritten zeigen wir, wie Sie diese gespeicherten Daten für die Analyse und Anzeige in Grafana verwenden können, damit sie nützlich werden.
Schritt 12: Grafana Installation
Jetzt wenden wir uns dem ROCK 3A zu, auf dem Grafana OSS installiert ist, eine vielseitige Open-Source-Anzeige- und Analyseanwendung. Es ist relativ einfach, in einem browserbasierten Terminal ausgefallene Dashboard-Anzeigen mit nützlichen Analysen zu erstellen. Die Anwendung ist außerdem sehr gut dokumentiert und wird durch Online-Video-Tutorials unterstützt.
In unserem Beispiel wird Grafana seine Daten aus InfluxDB beziehen, das auf dem ROCK 4SE läuft, und die Sensordaten sowohl als aktuellen Wert als auch als Zeitreihe anzeigen. Wir werden die Software so automatisieren, dass sie beim Hochfahren auf dem angeschlossenen Touchscreen-Display angezeigt wird.
Das Dashboard kann auch von anderen Hosts im Netzwerk über den Browser aufgerufen werden.
Installieren Sie Grafana, indem Sie die Download-Seite besuchen, um die URL für die neueste Version für Debian auf Arm64 zu erhalten:
Die Anweisungen finden Sie auf der Seite, aber hier sind sie (das Upgrade dauert eine Weile!):
sudo apt update
sudo apt upgrade
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/oss/release/grafana_11.2.0_arm64.deb
sudo dpkg -i grafana_11.2.0_arm64.deb
Grafana aktivieren, den Dienst starten und dann überprüfen, ob er läuft:
sudo systemctl daemon-reload
sudo systemctl enable grafana-server.service
sudo systemctl start grafana-server.service
systemctl status grafana-server.service
Schritt 13: Grafana Konfiguration
Grafana läuft als Web-Interface. Öffnen Sie also die folgende URL im Browser Ihres Hosts, melden Sie sich mit admin/admin an und ändern Sie dann das Passwort: http://rock-3a:3000/
Hinweis: Wenn der Hostname nicht gefunden wird, verwenden Sie stattdessen die IP-Adresse des ROCK 3As
Sie werden zum Grafana-Begrüßungsbildschirm weitergeleitet, wo Sie eine Datenquelle hinzufügen können:
Wie zu erwarten, definiert eine Grafana-Datenquelle, woher die zu verwendenden Daten stammen. Sie verwaltet auch alle Autorisierungen für diese Quelle, in unserem Fall die InfluxDB, die auf dem ROCK 4SE läuft, unter Verwendung des Tokens unseres Grafana-Benutzers.
Wenn die Einrichtung erfolgreich ist, kann dieselbe Datenquelle in vielen verschiedenen Dashboards verwendet werden.
- Klicken Sie auf „Data Sources“, um eine Liste aller möglichen Datenquellen anzuzeigen, die Grafana unterstützt
- Fügen Sie die Datenquelle InfluxDB hinzu
Füllen Sie dann den oberen Teil des Formulars wie folgt aus:
- Geben Sie der Datenquelle einen Namen – wir haben unsere InfluxDB-test genannt
- Stellen Sie die Abfragesprache auf InfluxQL und die URL der InfluxDB ein, unsere lautet http://rock-4se:8086
Belassen Sie alle anderen Einstellungen auf den Standardwerten. Hier ist ein Screenshot des oberen Teils des Formulars:
Füllen Sie das Formular unten wie folgt aus:
- Klicken Sie auf die Schaltfläche „Add header“ und geben Sie im Feld „Header“ „Authorization“ ein.
- Geben Sie im Feld „Value“ „Token“ ein, dann ein Leerzeichen, gefolgt vom Token des InfluxDB-Grafana-Benutzers, wie folgt (alles in einer Zeile):
Token ..J5fy-yge6FDc9zSmqYmuO0EnTu2biUgrp3gKfvU2niEpRUBnqAVKoSZS6tmAg==
Hinweis: Um den Token zu erhalten, führen Sie diesen Befehl auf dem ROCK 4SE aus:
influx auth list
-
- Legen Sie den Datenbanknamen auf „Test“ (in diesem Fall der Bucket-Name) und die HTTP-Methode auf „GET“ fest.
Es ist kein Benutzer und kein Passwort erforderlich, da die Autorisierung über das Token erfolgt. Wenn Sie auf die Schaltfläche „Speichern und testen“ klicken, sollte ein grünes Häkchen angezeigt werden, um zu bestätigen, dass alles funktioniert.
Wenn Sie Probleme haben, finden Sie Hilfe hier
Schritt 14: Dashboards
Sobald eine Datenquelle definiert ist, können Sie einige ausgefallene Dashboards erstellen.
- Wählen Sie im Burger-Menü Dashboards und Visualisierung hinzufügen aus
- Wählen Sie in der rechten Seitenleiste Messgerät als Visualisierungstyp aus
Im Reiter „Abfrageinspektor“:
- Legen Sie InfluxDB-test als Datenquelle fest.
- Legen Sie die Abfrage so fest, dass sie Folgendes liest (test-rp ist diesmal der Name des zugeordneten Buckets, was etwas verwirrend ist):
FROM test-rp mqtt_consumer WHER Topic::tag = test/t1
SELECT field(temperature) mean()
GROUP BY time($_interval) fill(linear)
- Lassen Sie alle anderen Einstellungen auf Standardwerten.
- Im Abschnitt „Eigenschaften“ im rechten Fensterbereich können Sie die Messanzeige nach Ihren Wünschen einrichten, indem Sie mit den Einstellungen experimentieren.
- Klicken Sie auf „Übernehmen“, um die Änderungen zu speichern.
Sie können etwas Ähnliches für eine Zeitreihen-Anzeige tun. Verwenden Sie dieselben Abfrageeinstellungen wie oben für FROM, SELECT und GROUP BY. Experimentieren Sie erneut mit dem Bereich „Eigenschaften“, um das gewünschte Aussehen zu erzielen.
Schritt 15: Automatisierung
Sobald alle Anzeigeelemente an ihrem Platz sind und das Dashboard eingerichtet ist, schließen Sie eine Tastatur und eine Maus an den ROCK 3A an, melden sich an und starten Chromium auf dem Touchscreen und melden sich bei Grafana an: http://localhost:3000
Möglicherweise müssen Sie das Dashboard ein wenig anpassen, damit es auf diesem kleineren Bildschirm richtig angezeigt wird.
Wenn Sie möchten, dass das Grafana-Dashboard beim Hochfahren automatisch auf dem ROCK 3A angezeigt wird, gibt es ein paar Tricks, mit denen das möglich ist.
Richten Sie zunächst die automatische Anmeldung im Display-Manager für den Radxa-Benutzer ein, damit der Desktop beim Hochfahren geladen wird, ohne dass eine Anmeldung erforderlich ist:
sudo vi /etc/lightdm/lightdm.conf
Bearbeiten Sie diese Zeile im Abschnitt [Seat:*], sodass sie auf den Radxa-Benutzer verweist:
autologin-user=radxa
Erstellen Sie nun eine Desktop-Datei ~/.config/autoconfig/chromium.desktop für den Radxa-Benutzer mit folgendem Inhalt. Sie führt beim Laden des Desktops ein Bash-Skript aus:
Tipp: Bevor Sie diesen Teil ausführen, stellen Sie sicher, dass Sie sich per SSH in Ihren ROCK 3A einloggen können, da es sonst schwierig werden kann, den Kiosk-Modus zu verlassen!
cd ~
mkdir -p .config/autostart
vi .config/autostart/chromium.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Chromium
Exec=/home/radxa/start.sh
TryExec=/home/radxa/start.sh
Erstellen Sie das Bash-Skript, um Chromium im Kiosk-Modus zu laden – es muss eine Verzögerung geben, damit der Grafana-Dienst zuerst gestartet werden kann:
vi start.sh
#!/bin/bash
sleep 20
/usr/bin/chromium localhost:3000 --kiosk
machen Sie es ausführbar
chmod +x start.sh
Starten Sie nun neu. Melden Sie sich beim ersten Start von Grafana mit dem Benutzernamen und dem Passwort des Grafana-Administrators an. Wenn Sie dies getan haben, wird das Gerät beim nächsten Neustart automatisch angemeldet, sodass Sie die Tastatur entfernen können.
Wählen Sie in den Chromium-Einstellungen die Option „Weiter, wo Sie aufgehört haben“ aus.
Öffnen Sie in Grafana das von Ihnen erstellte Dashboard und schalten Sie es über das Monitorsymbol in der Titelleiste in den Kiosk-Modus.
Verwenden Sie die Ein-/Aus-Taste am ROCK 3A, um ihn sicher herunterzufahren und neu zu starten
Beim Neustart des ROCK 3A wird Chromium im Kiosk-Modus geladen, wodurch wiederum Grafana mit Ihrem Standard-Dashboard geladen wird!
Wenn Sie einen nicht privilegierten Benutzer in Grafana einrichten, können Sie ihm einen schreibgeschützten Zugang geben, damit niemand Ihre Arbeit manipulieren kann!
Hier ist ein Dashboard, das ich zuvor auf dem ROCK 3A mit dem 7-Zoll-Raspberry-Pi-
Schritt 16: Fehlerbehebung
Bei diesem Projekt gibt es viele bewegliche Teile, sodass leicht ein Schritt schiefgehen kann.
1. Versuchen Sie zunächst, es aus- und wieder einzuschalten
2. Vergewissern Sie sich, dass jeder der Dienste tatsächlich ausgeführt wird, indem Sie seinen Status in systemctl überprüfen. Auf dem ROCK 4SE sollten Mosquitto, InfluxDB und Telegraf sowie das Mock-Data-Skript ausgeführt werden.
Auf dem ROCK 3A sollte Grafana ausgeführt werden.
Sie können beispielsweise mit folgendem Befehl überprüfen, ob InfluxDB ausgeführt wird:
systemctl status influxd.service
3. Überprüfen Sie, ob InfluxDB tatsächlich Daten in den Bucket empfängt, indem Sie den Test in Schritt 11: InfluxDB-Test wiederholen.
4. Überprüfen Sie, ob Sie die richtigen InfluxDB-Token verwenden und ob diese über ausreichende Zugriffsrechte verfügen. Sie können Token löschen und neue erstellen – siehe die InfluxDB-Dokumentation.
In unserem Setup wird das Token des telegraf-Benutzers in der Datei /etc/telegraf/telegraf.d/telegraf-token.txt gespeichert, um die Umgebungsvariable INFLUX_TOKEN für die telegraf.service-Einheit zu konfigurieren.
Zur Konfiguration der Grafana-Datenquelle haben wir das Token des InfluxDB-Grafana-Benutzers verwendet. Dieses muss im Setup-Formular im folgenden Format eingegeben werden:
Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Token können auf dem ROCK 4SE über die Influx-Befehlszeilenschnittstelle mit folgendem Befehl angezeigt werden:
influx auth list
5. Überprüfen Sie die Verzeichnis- und Dateiberechtigungen von Konfigurationsdateien und -verzeichnissen, um sicherzustellen, dass der jeweilige Benutzer über die erforderlichen Zugriffsrechte verfügt.
6. Überprüfen Sie die Protokolle in /var/log/<app_name>
/var/log/<app_name>
7. Durchsuchen Sie ChatGPT mit einer beliebigen Fehlermeldung, um zu sehen, ob es Lösungsvorschläge gibt.
Fazit
In diesem Projekt haben wir gezeigt, wie man über das MQTT-Protokoll Scheinsensordaten von Remote-Geräten im IoT-Netzwerk erfasst und die Informationen mithilfe von InfluxDB und Telegraf in einer zentralen Datenbank speichert.
Mit diesen beiden Open-Source-Anwendungen sollte es möglich sein, viele Szenarien zur Sensorerfassung von mehreren verteilten Geräten zu bewältigen, die je nach Bedarf skaliert werden können und alle auf stromsparenden ROCK-Servern laufen.
Anschließend zeigten wir, wie die Informationen als Datenquelle für Grafana-Dashboards zu Analyse- und Darstellungszwecken verwendet werden können. Im Beispiel wurde ein Dashboard mithilfe eines ROCK 3A in Verbindung mit einem Touchscreen-Display automatisiert.
Quellen
InfluxDB: https://www.influxdata.com/products/influxdb/
Telegraf: https://www.influxdata.com/time-series-platform/telegraf/
Grafana OSS: https://grafana.com/oss/grafana/
Kommentare