| Bilder | ||
| .gitignore | ||
| down.conf | ||
| down.py | ||
| LICENSE | ||
| README.md | ||
Speedtest_Display_Rasberry_Pi
1. Raspberry Pi OS installieren
Empfohlen:
- Raspberry Pi OS Lite (64 Bit)
Mit Raspberry Pi Imager auf die SD-Karte schreiben.
Während des Flashens direkt konfigurieren:
- WLAN
- SSH aktivieren
- Hostname setzen
2. System aktualisieren
sudo apt update
sudo apt full-upgrade -y
sudo reboot
3. SPI aktivieren
sudo raspi-config
Dann:
Interface Options
→ SPI
→ Enable
Neustarten:
sudo reboot
4. Prüfen ob SPI aktiv ist
ls /dev/spi*
Erwartet:
/dev/spidev0.0
/dev/spidev0.1
5. TFT-Display aktivieren
Datei öffnen:
sudo nano /boot/firmware/config.txt
Ganz unten ergänzen:
dtparam=spi=on
dtoverlay=piscreen,speed=16000000,rotate=270
6. Framebuffer aktivieren
Neustart:
sudo reboot
Danach prüfen:
ls /dev/fb*
Erwartet:
/dev/fb0
7. Testbild auf Framebuffer
sudo apt install -y fbi
Test:
sudo fbi -T 1 -d /dev/fb0 -noverbose test.jpg
8. Python installieren
sudo apt install -y python3 python3-pip python3-pil python3-numpy
9. DejaVu Fonts installieren
sudo apt install -y fonts-dejavu-core
Prüfen:
ls /usr/share/fonts/truetype/dejavu/
10. InfluxDB Python Client installieren
pip3 install --break-system-packages influxdb-client
11. Python-Datei anlegen
nano /home/hubobel/down.py
Python-Code einfügen und speichern.
12. Testlauf
python3 /home/hubobel/down.py
Jetzt sollte sichtbar sein:
- Downloadrate
- Uploadrate
- Ping
- WLAN-IP
- WAN-IP
- Verlaufsgrafik
13. systemd Service anlegen
sudo nano /etc/systemd/system/down.service
Inhalt:
[Unit]
Description=Framebuffer Speedtest Display
After=network-online.target
[Service]
Type=simple
User=hubobel
WorkingDirectory=/home/hubobel
ExecStart=/usr/bin/python3 /home/hubobel/down.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
14. Service aktivieren
sudo systemctl daemon-reload
sudo systemctl enable down.service
sudo systemctl start down.service
15. Status prüfen
systemctl status down.service
Live-Log:
journalctl -u down.service -f
16. Nach Reboot testen
sudo reboot
Ergebnis
Das System läuft danach:
- ohne Desktop
- direkt auf
/dev/fb0 - rebootfest über systemd
- ressourcenschonend
- ideal für Embedded-Statusanzeigen
Dashboard-Umschaltung per GPIO-Taster
Das Display unterstützt drei unterschiedliche Dashboards, die direkt über GPIO-Taster am Raspberry Pi ausgewählt werden können.
Verwendete GPIOs
| Funktion | GPIO | Pin |
|---|---|---|
| Dashboard 2 | GPIO5 | Pin 29 |
| Dashboard 3 | GPIO21 | Pin 40 |
| Masse (GND) | — | Pin 39 |
Die Taster werden jeweils zwischen GPIO und GND angeschlossen.
Die internen Pull-Up-Widerstände des Raspberry Pi werden per gpiozero verwendet, daher sind keine zusätzlichen Widerstände notwendig.
Logik
| Zustand | Anzeige |
|---|---|
| kein Taster aktiv | Dashboard 1 |
| GPIO5 gegen GND | Dashboard 2 |
| GPIO21 gegen GND | Dashboard 3 |
Hinweise zur Konfiguration
Die dargestellten Werte werden nicht direkt durch das Projekt ermittelt, sondern aus bereits vorhandenen Datenquellen abgerufen.
Voraussetzung ist, dass die benötigten Messwerte über ioBroker und/oder InfluxDB bereitgestellt werden. Die verwendeten Datenpunkte, Measurements, URLs, Zugangsdaten und Abfragen müssen daher an die jeweilige Umgebung angepasst werden.
Das Projekt dient als Beispiel für die Visualisierung von Infrastruktur-, Netzwerk- und Systemdaten. Welche Werte angezeigt werden, hängt von den in der eigenen Installation verfügbaren Datenquellen ab.
Aktuell werden die Daten unter anderem aus folgenden Quellen bezogen:
- InfluxDB (z. B. Speedtest-, Proxmox- und Sensordaten)
- ioBroker Simple-API (
/getPlainValue/...) - UniFi Controller / UniFi Network über ioBroker
- Linux-Control Adapter für Systemdaten
Vor der Inbetriebnahme müssen die verwendeten Datenpunkte und URLs entsprechend der eigenen Umgebung angepasst werden.
Displaysteuerung
Die Hintergrundbeleuchtung des Displays kann über einen ioBroker-Datenpunkt gesteuert werden:
javascript.0.Variablen.Server_Display
Mögliche Werte:
true→ Dashboard aktivfalse→ Display wird schwarz geschaltet
Bei deaktiviertem Display werden keine Dashboards erzeugt und keine Datenabfragen durchgeführt. Das Skript prüft lediglich in regelmäßigen Abständen den Schaltzustand und aktiviert die Anzeige automatisch wieder, sobald der Datenpunkt auf true gesetzt wird.
Screenshots
Dashboard 2 – Hubobels Netzwerk
Übersicht über die UniFi-Infrastruktur mit:
- Aktive Clients (LAN / WLAN)
- UXG Max CPU- und RAM-Auslastung
- US24 CPU- und RAM-Auslastung
- US24 Temperatur
- Gateway-Uptime
Dashboard 3 – Proxmox Monitoring
Übersicht über den Proxmox-Host mit:
- Aktuelle CPU-Frequenz
- CPU-Auslastung
- Load Average (1 / 5 / 15 Minuten)
- RAM-Auslastung inkl. absolutem Verbrauch
- CPU-Temperatur
- Serverraumtemperatur
Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Details siehe Datei LICENSE.