feat(station): Anzeige ausliefern, Migrationsprofil, display-Befehle

Schritt 8 des Plans: die fertige E-Paper-Anzeige wird endlich ausgeliefert
und verdrahtet, dazu zwei liegengebliebene Dinge.

- deploy.sh/setup_pi.sh uebertragen display/ (mit Panel-Treibern und
  HERKUNFT.md) und ninlight-display.service; setup_pi.sh installiert und
  aktiviert die Unit und zieht python3-pil nach - ohne Pillow beendet sich
  der Anzeigedienst still mit 0, das faellt sonst nirgends auf.
- setup_pi.sh legt auch das Profil fuer den Migrations-Zugangspunkt an
  (qconnex-firmware, von der alten Klyqa-Firmware fest vorgegeben, gleiche
  Adresse wie das Rettungsprofil). Ohne das scheiterte "migrate on" auf
  einem frisch eingerichteten Pi an need_profile. Bestehende Profile
  bleiben unangetastet.
- "ninlight-station display test|clear|off"; der Hilfetext erklaert die
  Revisionsbestimmung, denn EPD_REVISION laesst sich nur am Testbild
  bestimmen.
- "off" nimmt die Anzeige mit: erst Dienst stoppen, dann Panel leeren
  (sonst schreibt der Daemon binnen 5 s sein altes Bild zurueck) und beides
  vor ap_switch, das bei haengendem NetworkManager abbricht. Ein
  stehengebliebenes "MIGRATION" wuerde einen Betriebszustand behaupten, den
  es nicht mehr gibt.
- test_host.sh sammelt tools/mkimage als Ganzes ein: die 19 Tests in
  test_nl_mkimage.py liefen in keiner Suite mehr mit, darunter die Wache
  fuer die Python-3.8-Randbedingung des Build-Containers. Ein neuer Test
  haelt die Regel fest, dass keine Testdatei mehr herausfallen kann.
- Nebenbei: die Temp-Datei mit dem WLAN-Passwort wird wieder zuverlaessig
  aufgeraeumt, und leere Konfigurationswerte legen kein kaputtes Profil an.
This commit is contained in:
Michael Sauer
2026-09-13 23:19:14 +02:00
parent 22f92988dd
commit cc398ef57a
8 changed files with 795 additions and 54 deletions
+13 -1
View File
@@ -7,9 +7,21 @@ cmake --build "$ROOT/build/host"
ctest --test-dir "$ROOT/build/host" --output-on-failure "$@"
if python3 -c 'import pytest' 2>/dev/null; then
python3 -m pytest "$ROOT/tools/mkimage/tests" "$ROOT/tools/station/tests" -q
# tools/mkimage als GANZES Verzeichnis, nicht nur tools/mkimage/tests: die 19 Tests in
# tools/mkimage/test_nl_mkimage.py liegen direkt daneben und liefen sonst in keiner
# Suite mit - darunter test_stays_python38_compatible, die Wache fuer die bindende
# 3.8-Randbedingung des Docker-Build-Containers.
#
# Diese Wache braucht das Paket "vermin" und schlaegt ohne es HART fehl (kein Skip):
# eine Wache, die sich beim Fehlen ihres Werkzeugs stillschweigend abschaltet, haette
# den Build-Bruch von damals genauso durchgelassen wie gar kein Test. Fehlt vermin,
# nachinstallieren:
# pip install vermin (oder: pip3 install --user vermin)
python3 -m pytest "$ROOT/tools/mkimage" "$ROOT/tools/station/tests" -q
else
echo "Hinweis: pytest fehlt - Python-Tests uebersprungen" >&2
echo " Installation: pip install pytest vermin (vermin braucht" >&2
echo " tools/mkimage/test_nl_mkimage.py::test_stays_python38_compatible)" >&2
fi
"$ROOT/tools/station/tests/test_cli.sh"