Files
ninlight-w600/tools/station/display/HERKUNFT.md
Michael Sauer 4a029a5d1c feat(station): E-Paper-Anzeige fuer Modus, Lampe und Auslieferungen
render.lines() zerlegt den zusammengefuehrten Zustand (status.json + control.json +
SSID aus der Konfigurationsdatei) in Textzeilen, ohne Pillow und ohne Hardware zu
brauchen - render.compose() importiert Pillow erst innerhalb der Funktion. epdconfig.py
ist eine eigene GPIO/SPI-Schicht auf gpiozero/spidev, weil RPi.GPIO auf Debian 13 mit
Python 3.13 nicht mehr traegt; epd2in13_V2.py/epd2in13_V3.py sind unveraendert aus dem
Waveshare-Repository uebernommen (siehe HERKUNFT.md), nur der epdconfig-Import zeigt auf
unser Modul. display.py laeuft als eigener systemd-Dienst (Wants=, Restart=on-failure),
fehlendes Panel/SPI/Bibliothek beendet ihn sauber mit sys.exit(0) statt einer
Neustartschleife - eine Migration darf davon nie abhaengen.

Verdrahtung in setup_pi.sh/deploy.sh/ninlight-station folgt in einem eigenen Durchgang.
2026-09-13 20:44:02 +02:00

47 lines
1.9 KiB
Markdown

# Herkunft der Panel-Treiber
`epd2in13_V2.py` und `epd2in13_V3.py` sind unveraendert aus dem offiziellen
Waveshare-Repository uebernommen:
- Quelle: https://github.com/waveshareteam/e-Paper
- Pfad: `RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13_V2.py` bzw.
`.../epd2in13_V3.py`
- Commit: `85802dee4b938212b0ae069a34492c54a3d99878` (2023-02-15), abgerufen am
2026-09-13 per `git log --follow` auf diesen beiden Dateien im Repository.
- `epd2in13_V2.py`: Treiber-Version laut Dateikopf V4.0 (2019-06-20).
- `epd2in13_V3.py`: Treiber-Version laut Dateikopf V1.2 (2022-08-09).
## Was geaendert wurde
Ausschliesslich die Importzeile:
```
from . import epdconfig
```
wurde zu
```
import epdconfig
```
weil `display/` in diesem Repository kein Python-Package ist (kein `__init__.py`,
`sys.path`-Import wie bei `products.py` in `server.py`), sondern flach importiert wird -
sowohl von `display.py` als auch von `tools/station/tests/test_render.py`. Ein relativer
Import wuerde in dieser Umgebung mit `ImportError: attempted relative import with no known
parent package` fehlschlagen.
Init-Sequenz, LUT-Tabellen, Timings und der Urheberrechtsvermerk der Originaldateien
bleiben unangetastet. Ein kurzer Herkunftsvermerk mit denselben Angaben wie oben steht
zusaetzlich im Kopf jeder der beiden Dateien.
## Was NICHT uebernommen wurde
`epdconfig.py` in diesem Verzeichnis ist eine eigene Neuimplementierung (siehe deren
Modul-Docstring), keine Uebernahme aus dem Waveshare-Repository: Waveshares eigenes
`epdconfig.py` fuer den Raspberry Pi setzt `RPi.GPIO` voraus, das auf Debian 13 (trixie)
mit Python 3.13 nicht mehr baut/importiert. Unser `epdconfig.py` implementiert dieselbe
von den beiden Treibern erwartete Schnittstelle (Pin-Konstanten, `digital_write`,
`digital_read`, `delay_ms`, `spi_writebyte`, `spi_writebyte2`, `module_init`,
`module_exit`) gegen `gpiozero`/`spidev`, die auf dem Ziel-Pi vorhanden sind.