- Python 89%
- Shell 11%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .idea | ||
| Bilder | ||
| .gitignore | ||
| down.py | ||
| install.sh | ||
| LICENSE | ||
| README.md | ||
| README_old.md | ||
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.
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
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
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.
| 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.



