NEWS
Vorstellung: e-Ink display für Hausstatus
-
Hallo,
Ich würde euch gerne mein kleines Projekt vorstellen. Ich habe mir ein Display gebaut, welches ich an der Haustüre innen verbauen will, so dass ich auf einen Blick sehe ob z.B. noch Fenster offen sind. Ausserdem habe ich gleich noch eine Anwesenheitserkennung mit aufgebaut.
Eingesetzt habe ich:
- Olimex ESP32-POE-ISO Board: Bluetooth Low Energy Scanner und Ansteuerung für das Display
- Waveshare 400x300, 4.2inch E-Ink raw display (Artikelnr. 13186)
- Waveshare 4.2inch e-Paper Raw Panel Case (Artikelnr. 16116
- Waveshare Universal e-Paper Raw Panel Driver HAT (Artikelnr 13512)
- Gigaset G-Tag Bluetooth Low Energy beacons
Das Setup ist folgendes:
Das ESP32 Board habe ich mit ESPHome programmiert. Die Verbindung zum iobroker geht über mqtt. Das ESP32 Board wird über POE mit Strom und LAN versorgt. Am Ende wird das in eine Unterputz-Installationsdose versenkt und das Display auf einer Blindabdeckung auf dem Schalterrahmen befestigt.
Hier der relevante Code:
Die yaml-Datei für ESPhome:
Das spannende (aber dann doch triviale - man kann hier recht frei entscheiden) war hier die HW Verkabelung. Diese ist im yaml dokumentiert. die GPIO Pins stehen im Plan auf der Olimex-Seite.
Auf dem iobroker habe ich ein Javascript um per mqtt die entsprechenden Werte zu liefern:
Das ganze sieht dann so aus:
Aktuell habe ich nur noch das Problem, dass ich kein OTA Update auf dem ESP32 machen kann, da das abbricht. Per USB lässt er sich aber problemlos flashen.
In Summe hat die Hardware ca. 70 EUR gekostet (30 EUR für das ESP Board und 37 EUR für das Display mit Versand)
Viel Spass beim nachmachen, es war einfacher als befürchtet:-)
Alexander
-
Hi,
Da ich gerade eine Frage zu dem Projekt bekommen habe, hier ein kleines Update wie das ganze im eingebauten Zustand aussieht :
Unter der Blindabdeckung ist eine EDV Dose in der das ESP32 Modul mit PoE angeschlossen ist. Die obere Dose ist bis auf das kleine Board für die Displaysteuerung leer und hat auch eine Blindabdeckung an der mit einem Klebeband das Display befestigt ist. In der mittleren Dose ist ein haus-bus.de Multitaster (tolle Schalter!) .
Die EDV Dose war recht knapp, da das Cat6 Kabel mit Ethernet-Stecker etwas unflexibel ist, aber es hat gepasst.
-
@lxs sagte in Vorstellung: e-Ink display für Hausstatus:
Die Verbindung zum iobroker geht über mqtt.
Vielleicht magst du mal testen:
Es gibt mittlerweile einen ESPhome Adapter zwar noch alpha...
Nutzt die API, also kein MQTT nötig. Habe ihn installiert und er läuft.
https://github.com/iobroker-community-adapters/ioBroker.esphome -
@lxs
hallo , gibts ne step by step anleitung ???
schaffe es leider nicht auch nicht mit hilfe von google....
kommt immer error mapping bei spi definitionapping values are not allowed here in "/config/esphome/esphome-web-8c4680.yaml", line 146, column 11: cs_pin: 16
Mit freundlichen Grüßen
mikewolf -
@mikewolf Hi, ich hab einen ESP8266 verwendet. Dabei hab ich festgestellt, dass die EPaper Displays etwas sensibel mit den verwendeten Pins sind. Ich hab es so verbunden:
Display -> ESP8266
Busy -> D2
Reset -> D1
DC -> D4
CS -> D8
CLK -> D5
Din -> D7
GND -> GND (Masse)
Vcc -> 3.3V am ESP8266VORSICHT1: In der YAML-Datei wird statt z.B. "D4" die GPIO-Nummer angegeben. D4 ist z.B. GPIO2
VORSICHT2: Man muss die Font-Datei, die in der YAML angegeben ist auf den IOBroker hoch laden. Bei mir ist es die arial.ttf und hat die ID: font1. Wohin hochladen? Hier hin: /opt/iobroker/iobroker-data/esphome.0
Hier meine YAML:
esphome: name: 42display platform: ESP8266 board: esp01_1m # Enable logging logger: # Enable Home Assistant API api: ota: password: "ist-geheim" wifi: ssid: "Ich-hoere-euch-beim-Sex" password: "auch-geheim" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "42Display Fallback Hotspot" password: "jajaja" captive_portal: spi: clk_pin: GPIO14 mosi_pin: GPIO13 font: - file: "arial.ttf" id: font1 size: 12 mqtt: broker: Die-IP-deine-MQTT/IOBroker #username: #wie in iobroker mqtt adapter #password: #wie in iobroker mqtt adapter client_id: 42Display # log_topic: bt_eingang/log/ on_message: # Manueller refresh des Displays bei Änderung topic: 42Display/display/refresh payload: "ON" then: - component.update: my_display text_sensor: - platform: mqtt_subscribe name: "Bio-Muell" id: bio_muell topic: 42Display/display/bio - platform: mqtt_subscribe name: "papier" id: papier topic: 42Display/display/papier display: - platform: waveshare_epaper cs_pin: GPIO15 dc_pin: GPIO2 busy_pin: GPIO4 reset_pin: GPIO5 model: 4.20in update_interval: 300s #Displayrefresh flickert bei dem Display leider id: my_display lambda: |- it.print(0, 0, id(font1), "Hello World!"); it.printf(10,20, id(font1), "Bio-Muell: %s", id(bio_muell).state.c_str()); it.printf(10,35, id(font1), "Papier: %s", id(papier).state.c_str());