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:
- Metall-Gehäuse (Geekworm) für den Raspberry PI 4, damit wenn er dauerhaft testet nicht zu heiß läuft.
- Flacher Aktiver Kühler (60x60x10mm) für das Metall-Gehäuse und noch ein USB-to-3Pin-Kabel, um den Lüfter anzuschließen.

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

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