No description
  • Python 89%
  • Shell 11%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-16 17:21:21 +02:00
.idea .gitignore 2026-08-16 17:11:20 +02:00
Bilder Readme.md und Fotos ergänzt 2026-06-02 16:50:11 +02:00
.gitignore Add .gitignore and remove ignored files 2026-06-06 15:45:56 +02:00
down.py .gitignore 2026-08-16 17:11:07 +02:00
install.sh .gitignore 2026-08-16 17:11:07 +02:00
LICENSE Initial commit 2026-05-25 15:16:21 +02:00
README.md Install Script 2026-08-16 17:17:15 +02:00
README_old.md Install Script 2026-08-16 17:21:21 +02:00

Speedtest Display für Raspberry Pi

Ein kompaktes Status-Dashboard für ein SPI-TFT-Display am Raspberry Pi. Die Anwendung schreibt direkt in den Linux-Framebuffer und benötigt keine Desktop-Umgebung.

Speedtest Display am Raspberry Pi

Funktionen

  • Download- und Uploadrate
  • Ping sowie lokale und öffentliche IP-Adresse
  • grafischer Verlauf der Speedtests
  • UniFi-Netzwerkübersicht
  • Proxmox-Systemüberwachung
  • drei per GPIO auswählbare Dashboards
  • Displaysteuerung über ioBroker
  • automatischer Start über systemd
  • ressourcenschonender Betrieb ohne Desktop

Voraussetzungen

Hardware

  • Raspberry Pi, beispielsweise Raspberry Pi 3 Model B+
  • kompatibles SPI-TFT-Display mit piscreen-Overlay
  • microSD-Karte oder USB-Laufwerk
  • geeignetes Raspberry-Pi-Netzteil
  • optional zwei GPIO-Taster

Software

Empfohlen wird Raspberry Pi OS Lite mit:

  • aktivierter SSH-Verbindung
  • funktionierender Netzwerkverbindung
  • vorhandenen ioBroker- und/oder InfluxDB-Datenquellen

Die Anwendung führt selbst keinen Speedtest durch. Sie visualisiert bereits vorhandene Messwerte.

Raspberry Pi OS installieren

Raspberry Pi OS Lite mit dem Raspberry Pi Imager auf eine microSD-Karte oder ein USB-Laufwerk schreiben.

In den Einstellungen des Imagers sollten direkt konfiguriert werden:

  • Hostname
  • Benutzername und Passwort
  • WLAN
  • Zeitzone
  • SSH-Zugang

Der Raspberry Pi 3 Model B+ unterstützt USB-Boot ab Werk.

Projekt herunterladen

cd ~
git clone https://git.hintergasse.de/hubobel/Speedtest_Display_Rasberry_Pi.git
cd Speedtest_Display_Rasberry_Pi

Anwendung konfigurieren

Vor der Installation müssen in down.py die eigenen Verbindungsdaten und Datenpunkte eingetragen werden:

nano down.py

Anzupassen sind insbesondere:

  • InfluxDB-Adresse
  • InfluxDB-Organisation
  • InfluxDB-Bucket
  • InfluxDB-Token
  • ioBroker-Adresse
  • verwendete Measurements und Datenpunkte
  • Datenpunkt für die Displaysteuerung

Zugangsdaten und Tokens sollten nicht in ein öffentliches Repository eingecheckt werden. Verwende dafür möglichst Umgebungsvariablen oder eine separate, nicht versionierte Konfigurationsdatei.

Automatische Installation

Das Installationsskript richtet SPI, Display, Abhängigkeiten und Autostart ein:

chmod +x install.sh
sudo ./install.sh

Anschließend den Raspberry Pi neu starten:

sudo reboot

Das Skript übernimmt:

  • Systemaktualisierung
  • Aktivierung der SPI-Schnittstelle
  • Eintrag des Display-Overlays
  • Installation der benötigten Pakete
  • Installation des InfluxDB-Python-Clients
  • Installation von down.py
  • Einrichtung des systemd-Dienstes
  • Aktivierung des automatischen Starts

Status prüfen

Nach dem Neustart:

systemctl status down.service

Live-Protokoll anzeigen:

journalctl -u down.service -f

Dienst neu starten:

sudo systemctl restart down.service

Dienst anhalten:

sudo systemctl stop down.service

Display-Konfiguration

Das Installationsskript ergänzt die Raspberry-Pi-Bootkonfiguration um:

dtparam=spi=on
dtoverlay=piscreen,speed=16000000,rotate=270

Je nach Raspberry-Pi-OS-Version befindet sich die Datei unter:

/boot/firmware/config.txt

oder:

/boot/config.txt

Nach dem Neustart können SPI und Framebuffer geprüft werden:

ls -l /dev/spidev*
ls -l /dev/fb*

Erwartet werden unter anderem:

/dev/spidev0.0
/dev/spidev0.1
/dev/fb0

Manueller Displaytest

Falls das Dashboard nicht erscheint, kann der Framebuffer unabhängig vom Python-Programm getestet werden:

sudo apt install -y fbi
sudo fbi -T 1 -d /dev/fb0 -noverbose test.jpg

Wird das Testbild angezeigt, funktionieren SPI, Display-Overlay und Framebuffer grundsätzlich.

Dashboards

Dashboard 1 – Speedtest

Die Standardansicht zeigt unter anderem:

  • aktuelle Downloadrate
  • aktuelle Uploadrate
  • Ping
  • WLAN-IP
  • WAN-IP
  • Verlauf der letzten Messungen

Dashboard 2 – Netzwerk

Dashboard 2 – Netzwerkübersicht

Je nach konfigurierten Datenquellen werden dargestellt:

  • aktive LAN- und WLAN-Clients
  • CPU- und RAM-Auslastung des Gateways
  • CPU- und RAM-Auslastung des Switches
  • Switch-Temperatur
  • Gateway-Uptime

Dashboard 3 – Proxmox

Dashboard 3 – Proxmox-Monitoring

Je nach Konfiguration werden dargestellt:

  • aktuelle CPU-Frequenz
  • CPU-Auslastung
  • Load Average
  • RAM-Auslastung
  • CPU-Temperatur
  • Serverraumtemperatur

Dashboard-Umschaltung über GPIO

Zwei optionale Taster wählen Dashboard 2 und Dashboard 3 aus.

GPIO-Anschlussschema

Funktion GPIO Pin
Dashboard 2 GPIO5 29
Dashboard 3 GPIO21 40
Masse GND 39

Die Taster werden jeweils zwischen dem GPIO-Pin und GND angeschlossen. Das Programm verwendet die internen Pull-up-Widerstände des Raspberry Pi. Zusätzliche Widerstände sind daher nicht erforderlich.

Zustand Anzeige
Kein Taster gedrückt Dashboard 1
GPIO5 mit GND verbunden Dashboard 2
GPIO21 mit GND verbunden Dashboard 3

Display über ioBroker steuern

Die Anzeige kann über einen ioBroker-Datenpunkt ein- und ausgeschaltet werden.

Standardmäßig wird folgender Datenpunkt verwendet:

javascript.0.Variablen.Server_Display
Wert Verhalten
true Dashboard wird angezeigt
false Display wird schwarz geschaltet

Bei ausgeschalteter Anzeige werden keine Dashboards erzeugt und keine umfangreichen Datenabfragen durchgeführt. Das Programm prüft regelmäßig den Schaltzustand und aktiviert die Anzeige automatisch wieder.

Wenn das Display beim Programmstart schwarz wird, sollte zuerst der Datenpunkt geprüft werden:

curl -s "http://IOBROKER-ADRESSE:PORT/getPlainValue/javascript.0.Variablen.Server_Display"
echo

Datenquellen

Die Beispielkonfiguration verwendet Daten aus:

  • InfluxDB
  • ioBroker Simple API
  • UniFi Network über ioBroker
  • Linux-Control-Adapter
  • Proxmox-Monitoring

Die in down.py hinterlegten IP-Adressen, URLs, Measurements und Datenpunkte müssen an die eigene Umgebung angepasst werden.

Fehlerbehebung

Display bleibt schwarz

Zuerst prüfen, ob die Displaysteuerung in ioBroker auf true steht. Anschließend das Dienstprotokoll kontrollieren:

journalctl -u down.service -n 100 --no-pager

Framebuffer und SPI-Geräte prüfen:

ls -l /dev/fb*
ls -l /dev/spidev*

Python-Modul fehlt

Installation der Module testen:

python3 -c "import PIL, numpy, gpiozero, influxdb_client; print('Python-Module sind vorhanden')"

InfluxDB-Client bei Bedarf nachinstallieren:

sudo python3 -m pip install --break-system-packages influxdb-client

Dienst startet nicht

sudo systemctl daemon-reload
sudo systemctl restart down.service
systemctl status down.service

Anzeige ist verdreht

Den Wert rotate in der Bootkonfiguration anpassen:

dtoverlay=piscreen,speed=16000000,rotate=270

Mögliche Werte sind – abhängig vom Display – 0, 90, 180 oder 270. Danach neu starten:

sudo reboot

Aktualisierung

cd ~/Speedtest_Display_Rasberry_Pi
git pull
sudo ./install.sh
sudo systemctl restart down.service

Sicherheit

  • Keine Passwörter oder Zugriffstokens in Git einchecken.
  • Bereits veröffentlichte Tokens widerrufen und ersetzen.
  • InfluxDB-Rechte auf das notwendige Minimum begrenzen.
  • ioBroker Simple API nur im vertrauenswürdigen Netzwerk bereitstellen.
  • SSH möglichst mit Schlüsseln absichern.

Lizenz

Dieses Projekt steht unter der MIT-Lizenz. Weitere Informationen befinden sich in der Datei LICENSE.