homee Status ePaper Display mit ESP32

Die Idee
Sind alle Fenster geschlossen? Was ist der derzeitige homee Modus? Wie warm ist es draußen? Ein Status Display muss her. Nach einigem Lesen der hier im Forum beschriebenen Tablet Lösungen war mir klar, dass dies keine Lösung für mich ist. Mich störte insbesondere das aufleuchtende Display. Da das Status Display im Flur hängen soll (und ein zweites im Schlafzimmer, und ein drittes im Wohnzimmer, …), wollte ich gern eine ePaper Lösung realisieren. Die Vorteile sind für mich klar: Gute Lesbarkeit, geringer Stromverbrauch (nur beim Updaten des Displays benötigt es Strom) und keine aufleuchtende Hintergrundbeleuchtung.
Als technische Basis wollte ich ebenfalls eine schlanke Lösung einsetzen (kein großes Betriebssystem und geringer Stromverbrauch, geeignet für den Batterieeinsatz), so dass die Lösung auf einen ESP32 fiel.

Die Umsetzung

  • Erste challenge: Wie komme ich an die Daten? Mit Hilfe von homeeToMqtt (homee in Verbindung mit MQTT: homeeToMqtt) werden aktuelle Statusmeldungen auf einem Mosquitto Broker bereitgestellt. Genial! Dank dem fantastischen homeean Build script ist das Aufsetzen und Konfigurieren ein Kinderspiel und war innerhalb von weniger als einer Stunde erledigt.

  • Entwickelt in Arduino nutzt die Lösung die Basecamp Library von c‘t. Damit ist die Konfiguration per WLAN Hotspot out of the box möglich und der notwendige MQTT Client steht auch schon bereit.

  • Der ESP32 subscribed die relevanten Topics der zu überwachenden Sensoren am homee und steuert ein ePaper Display an. Da homeeToMqtt alle drei Minuten (anpassbar, habe es auf fünf Minuten reduziert) den aktuellen Status aller Geräte published, sind auch nach einem (Neu-) Start des ESP32 die Infos sehr zeitnah aktualisiert. Andere Änderungen werden neartime gepushed. Öffnet man eine Tür, aktualisiert sich in der gleichen Sekunde das Display. Da die ePaper Displays für die Aktualsierung des Displays etwa drei Sekundne benötigen (ihr kennt es von eReadern), gibt es einige Mechanismen, um optimiert Updates des Displays zu gruppieren.

  • Als Displays nutze ich Waveshare ePaper Displays. Die Ansteuerung über die verfügbaren Libraries gestaltet sich einfach und die Displays machen einen wertigen Eindruck. Aktuell im Einsatz ist ein 4.2 Inch Display. Für den Flur wird aber ein 7.5 Inch Display zum Einsatz kommen.

  • Es können alle Werte angezeigt werden, die homee erfasst. In der Konfiguration kann der Datentyp und seine Darstellung konfiguriert werden: Bool oder Value, Pre- und Postfix.

Aktueller Stand
Momentan ist die Lösung als Proof of Concept implementiert. Ich wollte erstmal sehen, ob sich die Idee umsetzen lässt. D.h. Werte werden einfach nur angezeigt. Das Display ist provisorisch verkabelt, ein Gehäuse gibt es noch nicht. Die Lösung läuft seit drei Wochen stabil. Und so sieht es aus:


Pläne
Auf meiner Liste stehen einige Tasks:

  • Exceptions Anzeige neben Status: Momentan werden alle abonnierten Status angezeigt. Das ist für die Temperatur sinnvoll, aber den Hinweis auf eine Exception wie ein offenes Fenster möchte ich nur sehen, wenn sie eingetreten ist. Ich werde also die Anzeige aufteilen in statische Werte wie Temperaturen und dynamische Werte, die nur bei Abweichung vom Default zur Anzeige kommen. Sozusagen eine Liste, die vor dem Haus verlassen noch „abgearbeitet“ werden muss.

  • Unterstützung von zweifarbigen ePaper Displays: Es gibt ePaper Displays, die neben schwarz auch z.B. rot darstellen können. Ideal um Abweichungen hervorzuheben.

  • Batteriebetrieb: An den Aufstellorten gibt es eine Steckdose, aber ich würde gern die Nutzung eines Akkus testen. Der Stromverbrauch von ESP32 und ePaper sollte dies zulassen, allerdings werde ich wohl den Deep sleep vom ESP32 nutzen müssen. D.h. die Aktualisierung wird verzögert sein, mal sehen was sich hier als praktikabel erweist.

  • Ein Gehäuse: Vermutlich muss man sowas 3D drücken. Da habe ich bisher keine Erfahrungen, aber das ansonsten ist der WAF gleich auf Null.

  • Den Code veröffentlichen oder eben auch nicht. Deshalb dieser Post. Was denkt ihr? Eine interessante Lösung auch für andere? Dann würde ich den Quellcode veröffentlichungsfähig machen; ihr wisst, dass da dann immer noch einiges zu tun ist. Natürlich gilt es vorher die todo Liste abzuarbeiten.

Ich freue mich auf euer Feedback und Ideen.

MFV

49 „Gefällt mir“

Super Idee. Kalkulier mal bitte einen Preis für die ready to use Variante. Ich bin interessiert :wink:

2 „Gefällt mir“

Geile Idee.

Klasse, wenn Du dann auch nich eine Bastelanleitung schreibst brauchst Du auch keine Bestellungen abwickeln :wink:

Ich hab bisher keine ESP-Erfahrung (so wird es einigen gehen), das Designziel sollte also sein, dass das Teil einfach konfigurieren zu können.

Das ist cool. Muss ich gleich mal ausprobieren. Hab noch nen esp da den ich mit der Fritzbox Library für die Anwesenheitserkennung nutze. Das Problem was ich da immer hatte war die Abfrage der Stati vom homee. Das setzen habe ich über Webhooks gemacht.

Super Display , das hatte ich noch nicht gefunden.
Ich habe das mit dem LCD mal umgesetzt auch mit dem mqtt,

Da die esp bei mir auch mit MQTT laufen ist das ne schöne Sache.

Da muss ich mir auch mal das Display zulegen.
:grinning:

VG

@MFV … Warum hast dz nicht gleich einen MQTT Server auf dem ESP integriert? So kommt man dann ohne PI aus? Das würde für mich in Frage kommen.

Sag mal Micha, kann ich auch per MQTT in Richtung homee arbeiten wie z.B. Anwesenheitsstatus setzen oder so?

Hab ich noch nicht gemacht @Stev.
Aber möglich ist es ja auf bestimmt.
Ich habe homeetomqtt nicht am Start, bei mir geht das alles über homeeup.

Also die Signale vom esp werden an MQTT übergeben und entsprechend kannst du es von dort weiter verarbeiten.

VG

Auch wenn kein Homee mehr verwendet, würde mich das Projekt (Gerade wenn im Batterie betreib) interessieren.

@MFV

Ich versuche mich jetzt schon ne ganze Weile mit diesem Teufels-Display. Ich habe große Probleme mit den Bibliotheken.

Vielleicht ist es auch nur ein Verständnisproblem.

Für die Displays gibt es einmal die libs von ZingJM oder die Adafruit libs. Ich kann ja nur eins von beiden installieren.

Wenn ich nur die ZingJM lib installiere, meckert er das die Adafruit_gfx fehlt.
Wenn ich die aber auch installiere meckert über multiple definitions.

Welche libs hast du verwendet.

Habe auch einen ESP32 und ein WS 4.2 + einen BME280

Ich nutze ZingJM (https://github.com/ZinggJM/GxEPD).

Aber dort steht ja auch im readme: " The E-Paper display base class is a subclass of Adafruit_GFX, to have graphics and text rendering.".

D.h. du musst es separat installieren.

Danke für den Tipp.

In wie weit hast du dich nun entschieden dein Projekt zu teilen. @micha und ich kämpfen gerade mit nem ähnlichen Setup.

Grüße.

Ich versuche mal am Wochenende eine erste Version bereitzustellen. Muss noch bisschen dokumentieren.

Das Exception Handling funktioniert mittlerweile ganz gut:

7 „Gefällt mir“

Für mich und @chrisLE musst du da nichts dokumentieren😀

Habe jetzt den mqtt soweit stabil aber da muss noch ein anderer her.
Welche MQTT Lib hast du drauf.

VG Micha

1 „Gefällt mir“

Moin zusammen,
ein Freund hat das ganze bei FHEM umgesetzt und ich bin da schon leicht neidisch geworden.
Wenn ihr den Code veröffentlicht kann ich mich auch dran trauen.
Würde mich sehr freuen!

Gruß
Simon

Ich habe das jetzt mal mit nem http request aufgesetzt, da dieser stabiler läuft als der MQTT.
Jetzt muss nur noch das Layout erstellt werden und schön ist es.

Ich kann jetzt einen webhook an die jeweilige box auf dem Display.
Jedoch bevorzuge ich da lieber Node Red.

Ich kann Gerne mal ein einfaches Beispiel Einstellen.

Dank des http request benötigt man keinen Raspi oder anderen Rechner.

VG Micha

2 „Gefällt mir“

Kannst du mir mal nen Tipp geben wie du die Rahmen erzeugt hast :see_no_evil: da stehe ich gerade auf dem Schlauch.

VG Micha

Okay habe das mit den Rahmen hinbekommen😀

@chrisLE hat mich gerade aufgeklärt das das Display ein Updatezyklus von Max 1000000 hat.
Damit ist das Projekt für mich gestorben.
Wenn ich Status Meldungen von homee anzeigen mag ist das eindeutig zu wenig.
:disappointed::see_no_evil:.

Aber ein schönes Projekt.