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

1.9 KiB

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.