Epaper Display für die Heimautomatisierung

Auf dem Projektradar hier mal ein etwas anderes Projekt. Ein Farb-ePaper-Display zur Benutzung mit Home Assistant. Das Projekt nutzt dafür esphome und das seeedstudio E1002 color ePaper Display.

Ziel: Übersicht für zu Hause

Die Idee ist, ein paar wichtige Informationen auf einen Blick anzuzeigen:

  • Aktuelles Wetter
  • Wetterwarnungen (gerade ist keine aktiv)
  • Nächster Müllabfuhrtermin
  • Zustand des Elektroautos
  • Statuszeile mit Akku, internen Sensoren, letztes Update und Debug-Informationen, warum das letzte Update gemacht wurde (in diesem Fall hat sich das Wetter von „cloudy“ auf „rainy“ geändert)

Arbeitsweise

Die ganze Logik ist mit esphome programmiert und folgt dem folgenden Ablauf:

  • Aufwachen vom Deep Sleep bzw. ganz normales Booten.
  • Warten, bis die Sensordaten verfügbar sind.
  • Das Skript get_data_then_refresh_screen wird aufgerufen:
    • Falls neue Daten verfügbar sind, wird noch 10 Sekunden extra gewartet, um evtl. mehrere Änderungen auf einmal anzuzeigen.
    • Das ePaper Display wird aktualisiert.
    • Da das Aktualisieren im Hintergrund passiert und länger dauern kann, wird noch 40 Sekunden gewartet, um dem Vorgang genug Zeit zu geben.
  • Das Skript deep_sleep_evaluation wird aufgerufen:
    • Normalerweise wird der esp32 für 15 Minuten in den deep sleep geschickt.
    • Wenn deep_sleep_disable_ha in Home Assisstant gesetzt ist, bleibt das ePaper Display an, um das Aufspielen neuer Software zu vereinfachen.
  • Wenn der esp32 wieder aus dem deep sleep aufwacht, geht das Ganze von vorne los.

Vermeiden von unnötigen Aktualisierungen

Da die ePaper-Aktualisierung recht batterie-intensiv ist und häufige Aktualisierungen auch optisch stören, versucht das Programm, die Aktualisierungen auf ein Minimum zu reduzieren.

Der esp32 verliert seinen Zustand und den Inhalt des Arbeitsspeichers, wenn die CPU in den Deep Sleep geschickt wird. Um trotzdem zu erkennen, ob sich etwas geändert hat, nutzen wir hier globals, die das Flag restore_value: True gesetzt haben. Die werden nach dem Aufwachen vom Deep Sleep wieder hergestellt und können so überprüfen, ob sich der Wert geändert hat, wenn ein Sensor aktualisiert wird. Und nur wenn dieser Wert sich ändert, setzen wir die Variable data_updated, um dem Skript get_data_then_refresh_screen mitzuteilen, dass eine Aktualisierung ansteht.

Den Quellcode des Projektes gibt es auf https://github.com/schwabe/reterminal.

Initiale Firmware

Initiales Aufspielen der Firmware: Bei mir wollte das Flashen der esphome Firmware erst nicht. Es gibt aber einen versteckten Reset Button (links neben dem Schriftzug seeed studio), den man findet, wenn man die Rückseite des Gerätes entfernt. Diesen kurz vor dem Flash-Versuch über USB zu drücken hat bei mir geholfen.

Noch einiges an hin und her, weil die alten Anweisungen im seeedstudio Wiki zur Konfiguration nicht mehr mit esphome 2025.11 funktionierten (ist mittlerweile behoben).

Nach knapp drei Wochen im Produktiveinsatz sieht der Akkuverlauf recht gut aus. Nach dem aktuellen Stand sieht es so aus, dass der Akku auch 1-2 Monate durchhält pro Aufladen.

Das E-paper Display hängt nun im Flur und hat bisher gute Dienste verrichtet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.