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.
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.pybzw..../epd2in13_V3.py - Commit:
85802dee4b938212b0ae069a34492c54a3d99878(2023-02-15), abgerufen am 2026-09-13 pergit log --followauf 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.