Datenvisualisierung mit Grafana und InfluxDB2
Einführung
Dieser schnelle Leitfaden führt dich durch den Prozess der Visualisierung von Temperatur- und induktiven Sensordaten in Grafana unter Verwendung von InfluxDB2. Die Sensoren sind an die RevPi AIO- und RevPi DIO-Module angeschlossen. Mit der Python-Bibliothek Revpimodio können die Module einfach in Python programmiert werden, um Daten erfolgreich an InfluxDB2 zu übertragen. Folge den untenstehenden Schritten, um deine Daten effektiv zu sammeln, zu speichern und in Grafana zu visualisieren.
Hintergrund
Die Integration von InfluxDB und Grafana auf einem RevPi4-System ermöglicht die Echtzeitüberwachung von Daten, um wichtige Einblicke in Umweltdaten zu gewinnen.
InfluxDB und das Grafana-Frontend laufen auf einem RevPi4. Die Sensoren sind an die RevPi AIO- und RevPi DIO-Module angeschlossen. Mit der Python-Bibliothek „Revpimodio“ können Sensorwerte von den Modulen ausgelesen und an ein InfluxDB-Bucket gesendet werden. In diesem Fall wird InfluxDB Version 2 verwendet.
In InfluxDB 2 werden statt Datenbanken sogenannte Buckets verwendet. Ein Bucket ist ein Container für Zeitreihendaten, der eine Organisation und Isolierung der Daten ermöglicht. Diese Buckets werden verwendet, um die gesammelten Daten zu speichern.
Grafana hingegen ist ein Web-Frontend zur Erstellung von Daten-Dashboards und wird häufig für die Echtzeitanalyse von Servern genutzt. Es kann eine Vielzahl von Datenquellen verwenden, funktioniert jedoch besonders gut mit InfluxDB.
Voraussetzungen
Hardware
-
RevPi Connect 4
-
RevPi DIO Modul
-
RevPi AIO Modul
-
Induktiver Näherungssensor (3 Drähte, PNP)
-
PT-1000 Temperatursensor (4 Drähte)
-
Verbindungskabel (zum Verdrahten des DIO und LED).
Software
- InfluxDB2
- Grafana
Systemkonfiguration
Folge diesen Schritten, um dein System zu konfigurieren. Eine detaillierte Anleitung findest du im Getting Started-Leitfaden.
-
Starte den RevPi Connect 4
▷ Schließe den RevPi Connect 4 an eine Stromquelle an.
▷ Stelle sicher, dass er mit deinem lokalen Netzwerk verbunden ist, um darauf zugreifen zu können.
-
Starte das RevPi DIO und RevPi AIO Modul
▷ Schalte das RevPi DIO-Modul ein.
▷ Schalte das RevPi AIO-Modul ein.
-
Überprüfe die Verbindungen
▷ Stelle sicher, dass der Induktive Näherungssensor richtig mit dem RevPi DIO verbunden ist.
▷ Überprüfe, dass das RevPi DIO und RevPi AIO Modul sicher mit dem RevPi Connect 4 über die PiBridge-Schnittstelle verbunden sind.
▷ Verbinde den PT-1000 mit dem RTD-Kanal 1 des RevPi AIO.
-
Greife auf die RevPi-Oberfläche zu
▷ Öffne einen Webbrowser auf einem Gerät, das mit demselben Netzwerk verbunden ist.
▷ Greife auf das RevPi-System über die IP-Adresse zu.
Hinweis: Für Netzwerkprobleme oder um die IP-Adresse deines RevPi zu ermitteln, konsultiere den Getting Started-Leitfaden.
Übersicht
- Setup und Installation
- Einrichten des RevPi4 und der Erweiterungsmodule (RevPi DIO, RevPi AIO)
- Installation von InfluxDB2
- Installation von Grafana
- Konfiguration von InfluxDB2 und Grafana
- Daten im InfluxDB2-Datenbank loggen
- Einrichten der Datenbank und Buckets in InfluxDB2
- Konfiguration des Python-Skripts zum Erfassen und Übertragen von Daten von den Sensoren an InfluxDB2
- Visualisierung von Temperatur- und Induktivsensorstatus mit InfluxDB2 und Grafana
- Integration von InfluxDB2 in Grafana
- Erstellen von Dashboards in Grafana zur Visualisierung von Temperatur- und Sensordaten
- Anpassen und Optimieren von Dashboards für eine klare Datenpräsentation
Schritt 1: Einrichten des RevPi4 und der Erweiterungsmodule (RevPi DIO, RevPi AIO)
Verwende für diese Demo ein 64-Bit RevPi-Image, da InfluxDB2 nur mit einem 64-Bit-Betriebssystem kompatibel ist. Die Images sind auf unserer Download-Seite verfügbar: Downloads | Industrial Raspberry Pi - Revolution Pi
▷ Füge das RevPi DIO Modul zu deiner Konfiguration hinzu.
▷ Füge das RevPi AIO Modul zu deiner Konfiguration hinzu.
▷ Weise passende I/O-Namen für eine leichtere Referenz zu, z.B. Input1_Proximity_sensor, RTD_channel_1.
▷ Speichere die Konfiguration und starte den Treiber neu, um die Änderungen anzuwenden.
Schritt 2: Konfiguriere dein RevPi AIO Modul.
Dein AIO-Modul hat 2 RTD-Kanäle. Du kannst diese verwenden, um die Temperatur der angeschlossenen PT-100 und PT-1000-Sensoren zu bestimmen. Weitere Informationen findest du hier: RevPi AIO RTD
▷ Klicke auf „Datei - Als Start-Konfiguration speichern“, um die Datei zu speichern.
▷ Klicke auf „Werkzeuge - Treiber zurücksetzen“, um deine Konfiguration zu aktivieren.
Schritt 3: Installation von InfluxDB2
Öffne ein Terminal auf deinem Computer und verbinde dich über SSH mit deinem frisch gebooteten RevPi, indem du den Hostnamen oder die IP-Adresse deines RevPi verwendest.
ssh pi@deine-revpi-ip-adresse
oder
ssh pi@dein-revpi-name
Nachdem du das SSH-Passwort eingegeben hast, solltest du mit deinem RevPi verbunden sein. Um die neuesten Änderungen an den Paketen deines RevPi vor der Installation von InfluxDB2 anzuwenden, gib die folgenden Befehle ein:
sudo apt update
Sobald dies abgeschlossen ist, füge den Schlüssel für InfluxDB hinzu und installiere es:
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
sudo apt update && sudo apt install -y influxdb2
Starte InfluxDB als Dienst (d.h. es wird beim Booten gestartet und neu gestartet, wenn es abstürzt) mit den folgenden Befehlen:
sudo systemctl unmask influxdb.service
sudo systemctl start influxdb
sudo systemctl enable influxdb.service
InfluxDB2 sollte standardmäßig konfiguriert sein. Während der Installation von InfluxDB2 wird das influxdb2-cli-Paket verwendet, um InfluxDB2 zu konfigurieren und zu verwalten. Wenn das Paket nicht installiert ist, kannst du es mit folgendem Befehl installieren:
sudo apt install influxdb2-cli
Das influxdb2-cli
-Paket stellt Befehle zur Verfügung, mit denen du die InfluxDB2-Instanz konfigurieren, Datenbanken und Buckets verwalten sowie Benutzer und Berechtigungen einrichten kannst. Mit diesem Tool kannst du die gesamte Konfiguration von InfluxDB2 bequem über die Befehlszeile durchführen und deine Zeitreihendatenbank einfach verwalten.
Gib folgendes im Terminal deines RevPi über SSH ein, um InfluxDB2 zu konfigurieren:
influx setup
Du wirst aufgefordert, folgende Informationen einzugeben:
- Benutzername
- Passwort
- Organisationsname
- Bucket-Name
Alternativ kannst du InfluxDB2 beim ersten Login über den Webbrowser konfigurieren. Der Login erfolgt durch Eingabe der IP-Adresse deines RevPi zusammen mit Port 8086 im Webbrowser. Beispiel: 192.168.1.214:8086
Info: Ein Token wird dir nach dem ersten Login in InfluxDB angezeigt. Kopiere es und speichere es an einem sicheren Ort auf deinem Computer, damit du es nicht verlierst.
Schritt 4: Installation von Grafana
Gib die folgenden Befehle im Terminal deines RevPi über SSH ein, um den Grafana-GPG-Schlüssel herunterzuladen, zu installieren und als Dienst auszuführen:
wget -O- https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/grafana-archive-keyring.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install -y grafana
sudo systemctl unmask grafana-server.service
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service
Dein Grafana-Server sollte nun laufen und über einen Webbrowser zugänglich sein. Gib die IP-Adresse (http://deine-revpi-ip-adresse:3000
) oder den Hostnamen (http://RevPi99920:3000
) deines RevPi in die Adresszeile deines Webbrowser ein. Logge dich mit dem Benutzernamen „admin“ und dem Passwort „admin“ ein und ändere das Passwort auf ein neues, wenn du dazu aufgefordert wirst.
Nachdem du dich eingeloggt hast, klicke im linken Menü auf „Home“ und wähle dann „Data Sources“ aus dem Dropdown-Menü „Connections“. Auf der Seite „Data Sources“ klicke auf „Add new data source“ und suche nach „InfluxDB“, wähle es aus. Dadurch gelangst du zu einer Seite, auf der du deine InfluxDB-Datenquelle konfigurieren kannst.
Im Feld „Query language“ wähle die Option „Flux“. Im Abschnitt „HTTP“ gib die URL im entsprechenden Feld ein, z.B. http://192.168.1.214:8086
.
Im Abschnitt „Basic Auth Details“ gib die Authentifizierungsinformationen für InfluxDB ein, einschließlich des Benutzernamens und des Passworts, die du zuvor bei der Konfiguration von InfluxDB festgelegt hast.
Weiter unten auf der Seite, im Abschnitt „InfluxDB Details“, gib die zusätzlichen Authentifizierungsinformationen für InfluxDB ein, einschließlich der Organisation, des Tokens und des Standard-Buckets, die du zuvor eingerichtet hast.
Klicke abschließend auf „Save and Test“ und stelle sicher, dass „Data source is working. 3 buckets found“ angezeigt wird.
Schritt 5: Installation der InfluxDB Python-Bibliotheken
Um
Sensordaten von den Modulen zu lesen und sie in InfluxDB zu speichern, muss die Python-InfluxDB-Bibliothek installiert werden. Verwende pip, um diese Bibliothek zu installieren:
pip install influxdb-client
Schritt 6: Python-Skript zur Datenerfassung und zum Senden an InfluxDB
Erstelle ein Python-Skript, das die Sensordaten ausliest und in InfluxDB speichert. Ein einfaches Beispiel-Skript könnte folgendermaßen aussehen:
from influxdb_client import InfluxDBClient, Point, WritePrecision
import time
import revpimodio2
# Verbindung zu InfluxDB
client = InfluxDBClient(url="http://192.168.1.214:8086", token="your-token", org="your-org")
write_api = client.write_api(write_options=SYNCHRONOUS)
# RevPi Module initialisieren
revpi = revpimodio2.RevPiModIO()
# Sensor auslesen
def read_sensor_data():
proximity_sensor = revpi.io['Input1_Proximity_sensor'].value
temperature = revpi.io['RTD_channel_1'].value
# Daten in InfluxDB schreiben
point = Point("sensor_data") \
.tag("sensor", "proximity") \
.field("value", proximity_sensor) \
.time(time.time(), WritePrecision.NS)
point_temp = Point("sensor_data") \
.tag("sensor", "temperature") \
.field("value", temperature) \
.time(time.time(), WritePrecision.NS)
write_api.write(bucket="your-bucket", record=point)
write_api.write(bucket="your-bucket", record=point_temp)
while True:
read_sensor_data()
time.sleep(10)
Schritt 7: Erstellen eines Dashboards in InfluxDB2 und Grafana zur Anzeige der Daten
Während das Programm läuft, öffne InfluxDB. Klicke im linken Menü auf „Data Explorer“ und richte ein Dashboard wie folgt ein:
Die obigen Bilder zeigen, wie man ein Dashboard erstellt, um die Temperaturwerte des PT-1000 anzuzeigen. Um dieses Dashboard auch in Grafana zu haben, musst du auf „SCRIPT EDITOR“ klicken und das Flux-Skript kopieren, dann in Grafana verwenden.
Im Grafana-Menü klicke auf „Dashboards“, dann auf „New“ und anschließend auf „New Dashboard“. Auf der Seite „New Dashboard“ klicke auf „Add visualization“. Ein neues Fenster mit „InfluxDB“ als Standard-Datenquelle erscheint. Klicke auf InfluxDB und füge dann den kopierten Flux-Code in das Abfrage-Terminal ein. Die folgenden Bilder führen dich durch den Prozess, ein Dashboard in Grafana zu erstellen.
Auf der rechten Seite findest du alle Werkzeuge, um das Dashboard zu verschönern und zu beschriften. Nach jeder Änderung kannst du das Dashboard benennen und es speichern, indem du auf „Save“ und dann auf „Apply“ klickst.
Du hast nun erfolgreich die Temperatur des PT-1000-Sensors über das RevPi AIO-Modul visualisiert. Die Visualisierung des Status des induktiven Näherungssensors über das RevPi DIO-Modul in InfluxDB und Grafana ist etwas komplexer. In Flux gibt es keine spezielle Funktion zum Filtern von booleschen Werten. Daher ist es ratsam, alternative Methoden zu erkunden, um boolesche Werte zu aggregieren und zu visualisieren.
Hoffentlich weißt du jetzt, wie du Daten an deine InfluxDB-Datenbank sendest und diese Daten auf einem Grafana-Dashboard anzeigst. Wenn du wie ich bist, wird dies nur der Anfang sein, und du wirst immer mehr Sensoren hinzufügen, um mehr Daten zu sammeln!