E-Ink-Dashboard-Integration für Home Assistant

Release early, release often!

Hallo,

ich habe gerade erst mit Home Assistant angefangen. Ich bin noch in der
Evaluierungsphase und überlege, was ich damit eigentlich machen möchte. Eines
der ersten Dinge, die ich haben wollte, war ein „Glance-Dashboard". Sprich etwas,
das ich vor dem Verlassen des Hauses kurz checken kann. Ist noch ein Fenster
offen? Wie ist das Wetter? Ist morgen Müllabfuhr oder steht der Keller unter
Wasser?

Die Lösungen, welche ich gefunden habe, haben mich nicht überzeugt. Entweder wurde ein
Headless-Browser für Screenshots verwendet oder sie waren irgendwie zusammengeschustert. Home Assistant verwendet bereits Pillow für die Bildverarbeitung, und SVG eignet sich hervorragend für strukturierte Layouts mit Text und Icons. Alle nötigen Bausteine sind also vorhanden und keine externen Server Komponenten wirklich erforderlich.

Also habe ich angefangen, eine neue Integration zu entwickeln.

Die Hardware-Geschichte

Ich habe mir kürzlich ein TRMNL-Gerät zugelegt. Das ist ein schickes kleines
E-Ink-Display, das genau für solche Informationen gemacht ist. Aber
nachdem ich es eingerichtet hatte, fiel mir ein, dass ich alte Kindle-E-Reader
herumliegen habe, die ich durch neuere Modelle ersetzt habe. Die Kindle
Geräte lagen einfach im Schrank.
Mein alter Kindle Paperwhite 2 hat sogar ein besseres Display als das
TRMNL OG – 758×1024 bei 16 Graustufen gegenüber 800×480 Schwarz-weiß.

Nach etwas Recherche fand ich heraus, dass man einen “gejailbreakten” Kindle als Always-on-Display umfunktionieren kann. Es gibt zwar einen Online-Screensaver, der ist aber veraltet und nicht besonders energieeffizient entwickelt worden.

Also startete ich ein neues Projekt: kndl-online-screensaver

Ein moderner Ersatz für die alten Online-Screensaver-Projekte, mit
Tests abgedeckt.

Es hat mich eine Weile gekostet herauszufinden, warum der Online-Screensaver
die FAT-Partition beschädigt, aber das ist eine andere Geschichte ;-).

Jetzt hatte ich also zwei verschiedene Geräte, die beide Bilder von Home
Assistant empfangen oder abrufen mussten.

Was macht die Integration?

Die HA Integration rendert das Dashboard-Layout direkt in Home Assistant als
PNG-Bild - kein Chromium, kein ImageMagick, kein Node.js, keine weitere
Server-Komponente. Jedes Widget wird durch eine Jinja2-SVG-Vorlage beschrieben,
alle Widgets werden zu einem einzigen SVG zusammengefügt und dieses SVG wird
von resvg in ein PNG gerastert. Pillow übernimmt die Nachbearbeitung: Rotation und E-Ink-Optimierungen. Das Bild wird über eine HA-Image-Entität und einen nicht authentifizierten HTTP-Endpunkt bereitgestellt, den Geräte nach eigenem Zeitplan abrufen können.

Für TRMNL-Geräte kann HA das gerenderte Bild nach jedem Rendervorgang per
Webhook pushen. Für Kindles (und jedes andere Gerät, das eine URL abrufen
kann) zeigt man auf dem Gerät auf den HTTP-Endpunkt und lädt das Bild nach
eigenem Zeitplan herunter. Es werden ETag-Header genutzt, um den Download und die
E-Ink-Aktualisierung zu überspringen, wenn sich nichts geändert hat.

Eine WYSIWYG-Lovelace-Karte ermöglicht das Bearbeiten des Layouts mit einer
Canvas-Vorschau, die den exakten Pixelabmessungen des Geräts entspricht.
Widgets können per Drag-and-Drop verschoben, skaliert und konfiguriert werden,
und das gerenderte Ergebnis ist sofort sichtbar. Ein Klick auf
Gerendertes Bild anzeigen lädt das serverseitig gerenderte PNG für einen
pixelgenauen Vergleich.

Aktueller Stand

Beta-Phase. Kleinere Fehler sind sicher enthalten. Bug Reports erwünscht :slight_smile:

Das Projekt ist hier zu finden: GitHub - cryptomilk/hass-eink-dashboard: This is beta quality, should be mostly stable · GitHub

Funktionen

  • Mehrere E-Ink-Displays – ein separates Dashboard für jedes Gerät mit
    eigenem Layout, eigener Auflösung und eigenem Aktualisierungsintervall
  • Geräte-Voreinstellungen – integrierte Profile für Kindle 4/5,
    Paperwhite 1–4, Oasis 2/3, TRMNL OG/X/RGB oder benutzerdefinierte Auflösung
  • Hoch- und Querformat – die Rotation wird automatisch anhand der
    Gerätevoreinstellung und der gewählten Ausrichtung gehandhabt
  • WYSIWYG-Lovelace-Editor – Widgets per Drag-and-Drop verschieben,
    skalieren und konfigurieren auf einer Canvas-Vorschau in den exakten
    Pixelabmessungen des Geräts
  • Pull- und Push-Zustellung – Geräte können das Bild nach eigenem
    Zeitplan abrufen (Kindle) oder HA pusht es per Webhook (TRMNL)
  • E-Ink-Optimierung – optionale Nachbearbeitungspipeline: Autokontrast,
    Schärfe, Kontrastanpassung und Graustufen-Quantisierung (2/4/16/256 Stufen
    mit Floyd-Steinberg-Dithering)
  • Jinja2-Vorlagen – Header-Widgets unterstützen Home-Assistant-Templates
    (z. B. {{ now().strftime('%H:%M') }})
  • ETag-Unterstützung – bedingte HTTP-Antworten, damit Geräte den Download
    und die E-Ink-Aktualisierung überspringen, wenn sich das Bild nicht geändert
    hat
  • Webhook-Ratenbegrenzung – Push-Ziele werden auf einen Push pro 5
    Minuten bei maximal 5 MB Dateigröße gedrosselt

Mithelfen

Das ist Beta-Software – mit groben Kanten ist zu rechnen!

Wie könnt ihr helfen?

  • Detaillierte Fehlerberichte erstellen, wenn etwas nicht funktioniert
  • Freundlich im Umgang miteinander sein
  • Bei der Verbesserung der Dokumentation helfen
  • Pull Requests einreichen, den Code oder Widget-Designs zu verbessern


OpenDisplay

2 „Gefällt mir“

Das sieht cool aus! Sowas suche ich tatsächlich auch zur einfachen Darstellung von aktueller Temperatur an verschiedenen Orten im und rund ums Haus. Ich habe allerdings GAR KEINE Ahnung von Programmierung etc. Von daher beobachte ich das mal weiter und suche mir ein geeignetes (nicht allzu teures) E-Ink Display. Das mit dem alten Kindle finde ich sehr interessant!

Mir geht es so wie dir :wink: ich wage mich nun auch mal an das Thema und habe mir ein E-Ink-Display von opendisplay geholt und probiere es dann damit mal aus. Kannst dir das ja mal anschauen einfach mal opendisplay googeln :wink: man findet auch schon ein paar youtube videos dazu

Moin

Dafür muss man auch nicht wirklich Ahnung vom progammieren haben. :slightly_smiling_face: Es gibt im I-Net seit Jahren jede Menge ganz unterschiedliche Lösungen und Lösungsansätze wie man irgendwelche E-Paper/E-Link Displays für und mit HA nutzen kann.

Die hier von @punk8bit beschriebene Lösung ist da schon etwas individuell, weil dabei ja das HA Dasboard (nur) als Bild dargestellt wird. Sofern ich das beim überfliegen des Textes richtig verstanden habe. Aber wer so etwas so haben möchte - warum denn nicht.

Also einfach mal per Google nach z.B. e-paper display home assistant (oder Ähnlichen) suchen und man wird “erschlagen” von Infos und Beispielen. :wink:

VG Jim

Ich hab eine neue Version fertig:

[0.5.0] - 2026-06-30

Added

  • Graph widget: time-series line chart for one or more numeric entities,
    with configurable hours_to_show, smoothing, axis labels, grid lines,
    group_by aggregation, extrema markers, min_bound_range, and
    multi-entity overlay support.
  • Bar chart mode for the Graph widget (chart_type: "bar").
  • Color threshold styling for the Graph widget: segments change color
    based on configurable value thresholds.
  • Gauge widget: arc-style gauge for a single numeric entity with
    configurable min, max, and optional color thresholds.
  • Frame widget: decorative card with rounded corners for visual grouping,
    with no entity data of its own.
  • Calendar widget: upcoming-events list sourced from HA calendar entities.
  • Custom sensor overrides for the Weather widget: replace the built-in
    temperature, humidity, or wind sensors with arbitrary entity IDs.
  • hide_icon option on the Entity and Tile widgets to suppress the icon
    circle entirely.
  • hide_fill and hide_state options on the Sensor widget sparkline.
  • Seeed reTerminal E1001 and E1003 device presets in the config flow.

Changed

  • Widget SVG backgrounds are now transparent, enabling correct compositing
    when widgets overlap or when the dashboard background shows through.

Fixed

  • Config flow: grayscale_levels is now coerced to int before validation,
    preventing a type error when the value arrives as a string.

Performance

  • Frontend editor skips redundant SVG renders instead of queuing them,
    reducing unnecessary server round-trips during rapid widget edits.

Und die Integrationen lassen einen Browser laufen der von einem Dashboard einen Screenshot macht und das Bild dann hochläd. Ich weiß net was an meiner Lösung jetzt individuell ist, ich würde sagen die ist richtig, weil ich keinen Browser brauche um ein Bild zu erstellen.

Den Dashboard als Bild ohne viel Umwege zu rendern hört sich gut an.
Hat jemand zufällig eine ESPhome config parat, die den Bild Inhalt vom Server holt und darstellt?