Einfach mal dauerhaft sehen wie der "heiß"geliebte Raspberry PI 4 sich so schlägt? Kein Problem. In diesem unterhaltsamen Beispiel installieren wir influxDB (auf Timeseries spezialisierte Open-Source Datenbank) und Grafana (eine Open-Source BI/Dashboard Lösung).

Ich nutze einen Raspberry PI 4 mit folgender Ausstattung:

Raspberry PI 4 mit Metall Gehäuse und Lüfter

Wir werden alle notwendigen Schritte in diesem Tutorial Schritt für Schritt durchgehen, sodass ihr wirklich 1:1 alles nachbauen könnt.

Lasst uns starten!

influxDB auf Raspberry PI 4 installieren

Wir können influxDB ganz einfach über den Paketmanager installieren, wenn wir die influxDB-Sourcelist hinzufügen.

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Um influxDB installieren zu können müssen wir einmal die interne Paket-Datenbank mit folgendem Befehl aktualisieren.

apt update

Alles ist bereit zum Installieren. Nun können wir wie gewohnt unseren innigen Wunsch, aus dem Paketmanager installieren, erfüllen.

apt install influxdb

influxDB als Service einrichten

Damit wir die influxDB nicht bei jedem Neustart per Hand starten müssen, erstellen wir ein Service.

sudo systemctl unmask influxdb.service
sudo systemctl start influxdb
sudo systemctl enable influxdb.service

Installieren von Grafana

Selbes Spiel wie mit der influxDB. Erst holen wir uns die Grafana-Sourcelist und installieren Grafana dann bequem über unseren Paketmanager.

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

Um Grafana installieren zu können müssen wir einmal die interne Paket-Datenbank mit folgendem Befehl aktualisieren.

apt update

Jetzt sind wir auch bereit Grafana zu installieren. Mit folgendem Befehl installieren wir Grafana über unseren Paketmanager.

apt install grafana

Grafana als Service einrichten

Ebenso wie influxDB richten wir Grafana als Service ein, damit Grafana bei jedem neuen Boot uns zur Verfügung steht.

sudo systemctl unmask grafana-server.service
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service

Grafana testen

Um Grafana zu testen tippen wir in den Browser den folgenden Link ein.

http://<eureip>:3000
Grafana Loginmaske

Ihr werdet dazu aufgefordert ein Benutzernamen und ein Passwort einzugeben.
Dieser ist im Standard:

username: admin
pw: admin

Direkt nach dem Login dürft ihr euer Passwort wählen für den admin-Account.

influxDB einrichten

Bevor wir endlich endlich unsere Temperaturdaten sammeln können brauchen wir noch eine Datenbank und einen Benutzer, damit wir Daten sammeln und auswerten können.

Dazu tippe ich in die Shell den folgenden Befehl.

influx

Wir sind nun in der Admin-Shell der influxDB. Mit dem Befehl CREATE DATABASE <databasename> erstellen wir eine Datenbank. Wir erstellen eine Datenbank mit dem Namen heatcollect.

$ influx
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> CREATE DATABASE heatcollect;

Mit dem Befehl SHOW DATABASES könnt ihr schauen, ob eure Datenbank angelegt wurde.

> SHOW DATABASES
name: databases
name
----
_internal
heatcollect

Wie wir sehen ist unsere Datenbank mit dem Namen heatcollect vorhanden.

Jetzt noch einen Benutzer für die Datenbank und dann sind wir auch an diesem Punkt schon fertig. Wir wechseln mit USE heatcollect in den Kontext der Datenbank und legen einen neuen Benutzer heat mit dem Passwort heat123 an.

Der Benutzer heat bekommt alle Rechte.

> USE heatcollect
Using database heatcollect
> create user heat with password 'heat123' with all privileges;
> grant all privileges on heatcollect to heat

Mit dem Befehl SHOW USERS können wir unsere Arbeit überprüfen.

> show users;
user admin
---- -----
heat true

Mir wird der Benutzer heat als admin korrekt angezeigt. Wir verlassen die Shell mit folgendem Befehl.

quit

In die influexDB die Hitze loggen

Endlich können wir beginnen die Temperatur des Raspberry PI 4 auszulesen und zu protokollieren.

Die Temperatur auszulesen ist ziemlich einfach mit folgendem Befehl.

vcgencmd measure_temp

Damit wir nur die Gradzahl als Zahl bekommen, müssen wir die unnötigen Zeichen rausschneiden. Dafür ist uns grep hilfreich.

vcgencmd measure_temp | grep -Po '[\d.]+'

Nach dem wir die Temperatur ausgelesen haben, müssen wir diese in regelmäßigen Abständen an unsere influxDB senden.

Dazu erstellen wir folgendes Bash-Script mit dem Namen logHeat.sh, um die Temperatur auszulesen und an die influxDB zu senden.

#!/bin/bash

# Username und Passwort unser angelegten influxDB
username="heat";
password="heat123";

# Datenbankname unser angelegten influxDB
database="heatcollect";

# Name des Measure unter dem influxDB die Daten speichern soll
measure="raspberry_heat";

# Temperatur auslesen
temp=$(vcgencmd measure_temp | grep -Po '[\d.]+');

# Hostname auslesen
server=$(hostname);

# Debug Ausgabe der Daten
echo "$temp C° logged for $server";

# Daten aus die infuxDB senden.
curl -s -i -XPOST "http://localhost:8086/write?db=${database}" --header "Authorization: Token ${username}:${password}" --data-raw "${measure},host=${server} value=${temp}" > /dev/null

Dieses Script stellen wir jetzt so ein, dass es alle 30 Sekunden an die InfluxDB die Temperatur übermittelt. Dazu nutzen wir am besten Cronjobs.

crontab -e

Wir fügen folgende Zeile ein, damit unser Temperaturlog alle 30 Sekunden ausgeführt wird.

* * * * * sleep 30; /home/pi/logHeat.sh

Visualisierung in Grafana einrichten

Damit wir unsere Daten in Grafana auswerten können müssen wir im Webinterface die Datenbank als Quelle einrichten. Dazu gehen wir auf die folgende Webadresse.

http://<eureip>:3000

Wir melden uns mit unseren Daten an und klicken dann auf der linken Seite auf das Zahnrad-Icon und dann auf den Menüpunkt Data Sources.

Unsere Datenbank können wir über die Schaltfläche Add data source einrichten.

Ich wähle in der Liste mit Möglichkeiten unsere influxDB aus in die wir unsere Daten speichern.

Ich befülle das dargestellte Formular mit den jeweiligen Daten unser Datenbank.

Wir bestätigen das Formular mit dem Button Save & Test. Wenn ich alles richtig gemacht habe, wird mir eine grüne Meldung angezeigt.

Endlich sind wir startklar unsere Visualisierung zu erstellen. Wir klicken dafür auf das vier kleine Kästchen-Icon auf der linken Seite und folge dem Menü-Punkt Manage.

Wir erstellen ein neues Dashboard über die Schaltfläche New Dashboard.

Auf der erscheinen Seite drücke ich nun auf Add a Panel, um unsere erste Visualisierung hinzuzufügen.

Als nächstes konfigurieren wir im unteren Teil der Webseite unser Query.

Das fertige Query sollte so oder so ähnlich aussehen.

Als nächstes Drücken wir ganz oben rechts auf die Schaltfläche Apply und bestätigen somit unsere Einstellung. Wenn wir alles richtig gemacht haben, dann sehen wir jetzt unsere Temperatur-Kurve.

Mit dem Disketten Symbol im oberen rechten Bereich können wir das Dashboard speichern und jederzeit wieder aufrufen.

Und schon sind wir fertig! Ich hoffe es half euch als Einführung und so bleibt mir nur noch zu sagen: Wünsche euch viele schöne Visualisierungen.

Cheers Jörg