340 lines
5.5 KiB
Markdown
340 lines
5.5 KiB
Markdown
# Speedtest_Display_Rasberry_Pi
|
||
|
||
<img src="Bilder/IMG_0144.jpeg" width="500">
|
||
|
||
|
||
## 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
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt full-upgrade -y
|
||
sudo reboot
|
||
```
|
||
|
||
---
|
||
|
||
## 3. SPI aktivieren
|
||
|
||
```bash
|
||
sudo raspi-config
|
||
```
|
||
|
||
Dann:
|
||
|
||
```text
|
||
Interface Options
|
||
→ SPI
|
||
→ Enable
|
||
```
|
||
|
||
Neustarten:
|
||
|
||
```bash
|
||
sudo reboot
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Prüfen ob SPI aktiv ist
|
||
|
||
```bash
|
||
ls /dev/spi*
|
||
```
|
||
|
||
Erwartet:
|
||
|
||
```text
|
||
/dev/spidev0.0
|
||
/dev/spidev0.1
|
||
```
|
||
|
||
---
|
||
|
||
## 5. TFT-Display aktivieren
|
||
|
||
Datei öffnen:
|
||
|
||
```bash
|
||
sudo nano /boot/firmware/config.txt
|
||
```
|
||
|
||
Ganz unten ergänzen:
|
||
|
||
```ini
|
||
dtparam=spi=on
|
||
|
||
dtoverlay=piscreen,speed=16000000,rotate=270
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Framebuffer aktivieren
|
||
|
||
Neustart:
|
||
|
||
```bash
|
||
sudo reboot
|
||
```
|
||
|
||
Danach prüfen:
|
||
|
||
```bash
|
||
ls /dev/fb*
|
||
```
|
||
|
||
Erwartet:
|
||
|
||
```text
|
||
/dev/fb0
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Testbild auf Framebuffer
|
||
|
||
```bash
|
||
sudo apt install -y fbi
|
||
```
|
||
|
||
Test:
|
||
|
||
```bash
|
||
sudo fbi -T 1 -d /dev/fb0 -noverbose test.jpg
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Python installieren
|
||
|
||
```bash
|
||
sudo apt install -y python3 python3-pip python3-pil python3-numpy
|
||
```
|
||
|
||
---
|
||
|
||
## 9. DejaVu Fonts installieren
|
||
|
||
```bash
|
||
sudo apt install -y fonts-dejavu-core
|
||
```
|
||
|
||
Prüfen:
|
||
|
||
```bash
|
||
ls /usr/share/fonts/truetype/dejavu/
|
||
```
|
||
|
||
---
|
||
|
||
## 10. InfluxDB Python Client installieren
|
||
|
||
```bash
|
||
pip3 install --break-system-packages influxdb-client
|
||
```
|
||
|
||
---
|
||
|
||
## 11. Python-Datei anlegen
|
||
|
||
```bash
|
||
nano /home/hubobel/down.py
|
||
```
|
||
|
||
Python-Code einfügen und speichern.
|
||
|
||
---
|
||
|
||
## 12. Testlauf
|
||
|
||
```bash
|
||
python3 /home/hubobel/down.py
|
||
```
|
||
|
||
Jetzt sollte sichtbar sein:
|
||
|
||
- Downloadrate
|
||
- Uploadrate
|
||
- Ping
|
||
- WLAN-IP
|
||
- WAN-IP
|
||
- Verlaufsgrafik
|
||
|
||
---
|
||
|
||
## 13. systemd Service anlegen
|
||
|
||
```bash
|
||
sudo nano /etc/systemd/system/down.service
|
||
```
|
||
|
||
Inhalt:
|
||
|
||
```ini
|
||
[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
|
||
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable down.service
|
||
sudo systemctl start down.service
|
||
```
|
||
|
||
---
|
||
|
||
## 15. Status prüfen
|
||
|
||
```bash
|
||
systemctl status down.service
|
||
```
|
||
|
||
Live-Log:
|
||
|
||
```bash
|
||
journalctl -u down.service -f
|
||
```
|
||
|
||
---
|
||
|
||
## 16. Nach Reboot testen
|
||
|
||
```bash
|
||
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.
|
||
|
||
<img src="Bilder/Schema_GPIO.png" width="500">
|
||
|
||
### 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:
|
||
|
||
```text
|
||
javascript.0.Variablen.Server_Display
|
||
```
|
||
|
||
Mögliche Werte:
|
||
|
||
- `true` → Dashboard aktiv
|
||
- `false` → 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
|
||
|
||
<img src="Bilder/Dashboard_2.png" width="500">
|
||
|
||
|
||
## 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
|
||
|
||
<img src="Bilder/Dashboard_3.png" width="500">
|
||
|
||
## Lizenz
|
||
|
||
Dieses Projekt steht unter der MIT-Lizenz. Details siehe Datei `LICENSE`.
|
||
|
||
|
||
|