Zum Hauptinhalt springen

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.

    Systemarchitektur

Hinweis: Für Netzwerkprobleme oder um die IP-Adresse deines RevPi zu ermitteln, konsultiere den Getting Started-Leitfaden.

Übersicht

  1. Setup und Installation
    • Einrichten des RevPi4 und der Erweiterungsmodule (RevPi DIO, RevPi AIO)
    • Installation von InfluxDB2
    • Installation von Grafana
    • Konfiguration von InfluxDB2 und Grafana
  2. 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
  3. 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

Starte PiCtory.

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.

Webstatus Login

▷ Klicke auf „Werkzeuge - Treiber zurücksetzen“, um deine Konfiguration zu aktivieren.

Webstatus Login

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.

Webstatus Login

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.

Webstatus Login

Webstatus Login

Webstatus Login

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.

Webstatus Login

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.

Webstatus Login

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:

Webstatus Login

Webstatus Login 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.

Webstatus Login

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.

Webstatus Login

Webstatus Login

Webstatus Login

Webstatus Login

Webstatus Login

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.

Webstatus Login

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.

Webstatus Login

Webstatus Login

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!