Dieser 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 Erweiterungsmodule RevPi AIO und RevPi DIO angeschlossen. Mit der Python-Bibliothek Revpimodio können die Erweiterungsmodule 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 RevPi Connect 4 ermöglicht die Echtzeitüberwachung von Daten, um wichtige Einblicke in Umweltdaten zu gewinnen.

InfluxDB und das Grafana-Frontend laufen auf einem RevPi Connect 4. Die Sensoren sind an die Erweiterungsmodule RevPi AIO und RevPi DIO angeschlossen. Mit der Python-Bibliothek „Revpimodio" können Sensorwerte von den Erweiterungsmodule 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 #

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 die Erweiterungsmodule RevPi DIO und RevPi AIO

    ▷ Schalte das RevPi DIO ein.

    ▷ Schalte das RevPi AIO ein.

  • Überprüfe die Verbindungen

    ▷ Stelle sicher, dass der Induktive Näherungssensor richtig mit dem RevPi DIO verbunden ist.

    ▷ Überprüfe, ob RevPi DIO und RevPi AIO 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 Revolution Pi System über die IP-Adresse zu.

    Systemarchitektur
Note

Für Netzwerkprobleme oder um die IP-Adresse deines RevPi zu ermitteln, siehe Netzwerkverbindung herstellen.

Übersicht #

  1. Setup und Installation

    • Einrichten des RevPi Connect 4 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 RevPi Connect 4 und der Erweiterungsmodule (RevPi DIO, RevPi AIO) #

Schritt 2: Konfiguriere das RevPi AIO #

Das RevPi AIO hat 2 RTD-Kanäle. Du kannst diese verwenden, um die Temperatur der angeschlossenen PT-100 und PT-1000-Sensoren zu bestimmen, siehe RevPi AIO RTD-Kanäle

▷ 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

Note

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 Erweiterungsmodulen 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 visualisiert. Die Visualisierung des Status des induktiven Näherungssensors über das RevPi DIO 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!