NEWS
ePaper Statusdisplay Hausflur
-
So, auch ich bin mit meinem Projekt fertig
Wie es so ist, hat sich die Aufgabenstellung im Projektverlauf geändert, sodass ich einiges anders gemacht habe als ursprünglich geplant. Andere Daten, anderer Standort, etc..
Ich aktualisiere das Display alle 15 Minuten und zusätzlich kann man es über einen kleinen Taster oben rechts im Rahmen aktualisieren.
Auf die Batterie habe ich auch verzichtet, weil am neuen Standort eine Steckdose vorhanden ist.
Vielleicht für den ein oder anderen noch interessant; Aus Interesse habe ich die Leistungsaufnahme gemessen => im Schnitt 0.8W (über USB Netzteil versorgt).Alles in allem ein sehr gelungenes Projekt und eine super Anwendung. Danke nochmal an @draexler , für die Unterstützung!
-
@doho gefällt mir sehr gut Gute idee mit dem Knopf. Vielleicht setze ich das auch noch um. Muss dann schauen wie ich das mit WakeUp mit Deep Sleep mache.
-
@doho super schön realisiert, würdest du allenfass den Code zur Verfügung stellen?
Besten Dank und Gruss -
@appi, klar.
esphome: name: e-paper friendly_name: E-Paper esp32: board: esp32dev framework: type: arduino # Enable logging logger: level: INFO # Enable Home Assistant API ota: password: "1097d7787d8aa56c814fc456ac0d4bdf" # Enable wifi wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "E-Paper Fallback Hotspot" password: "7vHBNRjddp61" # Enable MQTT mqtt: broker: 192.168.10.40 username: ESP password: !secret mqtt client_id: e-paper topic_prefix: esphome/e-paper on_message: - topic: subscribe_text_sensor/E-Paper/Trigger then: - component.update: epaper # Konfiguration ESP32 captive_portal: spi: clk_pin: 5 mosi_pin: 19 binary_sensor: - platform: gpio pin: number: 32 mode: input: true pulldown: true name: "Taster" on_press: then: # - component.update: epaper # Schriftarten font: - file: 'fonts/Lato-Regular.ttf' id: font1 glyphs: ['&', '@', '!', ',', '.', '?', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','å', 'Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü', '/', 'ß'] size: 23 - file: 'fonts/Lato-Regular.ttf' id: font2 glyphs: ['&', '@', '!', ',', '.', '?', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','å', 'Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü', '/', 'ß'] size: 40 - file: 'fonts/Lato-Regular.ttf' id: font3 glyphs: ['&', '@', '!', ',', '.', '?', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','å', 'Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü', '/', 'ß'] size: 20 - file: 'fonts/Lato-Regular.ttf' id: font4 glyphs: ['&', '@', '!', ',', '.', '?', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','å', 'Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü', '/', 'ß'] size: 23 # Variablen globals: - id: photovoltaik_symbols_x_int type: int restore_value: no initial_value: '0' - id: photovoltaik_symbols_y_int type: int restore_value: no initial_value: '0' - id: photovoltaik_data_x_int type: int restore_value: no initial_value: '0' - id: photovoltaik_data_y_int type: int restore_value: no initial_value: '0' - id: icon_heute_x_int type: int restore_value: no initial_value: '0' - id: icon_heute_y_int type: int restore_value: no initial_value: '0' - id: icon_morgen_x_int type: int restore_value: no initial_value: '0' - id: icon_morgen_y_int type: int restore_value: no initial_value: '0' - id: icon_uebermorgen_x_int type: int restore_value: no initial_value: '0' - id: icon_uebermorgen_y_int type: int restore_value: no initial_value: '0' - id: muell_x_int type: int restore_value: no initial_value: '0' - id: muell_y_int type: int restore_value: no initial_value: '0' - id: icons_x_int type: int restore_value: no initial_value: '0' - id: icons_y_int type: int restore_value: no initial_value: '0' # MQTT Variablen ioBroker => E-Paper text_sensor: # Allgemein - platform: mqtt_subscribe id: Datum topic: subscribe_text_sensor/E-Paper/Allgemein/Datum - platform: mqtt_subscribe id: Tag_morgen topic: subscribe_text_sensor/E-Paper/Allgemein/Tag_morgen - platform: mqtt_subscribe id: Tag_uebermorgen topic: subscribe_text_sensor/E-Paper/Allgemein/Tag_uebermorgen - platform: mqtt_subscribe id: Foto topic: subscribe_text_sensor/E-Paper/Allgemein/Foto # Photovoltaik - platform: mqtt_subscribe id: Momentanleistung topic: subscribe_text_sensor/E-Paper/Photovoltaik/Momentanleistung - platform: mqtt_subscribe id: Hausverbrauch topic: subscribe_text_sensor/E-Paper/Photovoltaik/Hausverbrauch - platform: mqtt_subscribe id: Einspeisung_Bezug topic: subscribe_text_sensor/E-Paper/Photovoltaik/Einspeisung_Bezug - platform: mqtt_subscribe id: Einspeisung_Heute topic: subscribe_text_sensor/E-Paper/Photovoltaik/Einspeisung_Heute - platform: mqtt_subscribe id: Ertrag_Heute topic: subscribe_text_sensor/E-Paper/Photovoltaik/Ertrag_Heute - platform: mqtt_subscribe id: Eigenverbrauch_Heute topic: subscribe_text_sensor/E-Paper/Photovoltaik/Eigenverbrauch_Heute - platform: mqtt_subscribe id: Eigenverbrauch_Heute_Prozent topic: subscribe_text_sensor/E-Paper/Photovoltaik/Eigenverbrauch_Heute_Prozent - platform: mqtt_subscribe id: Netzbezug_Heute topic: subscribe_text_sensor/E-Paper/Photovoltaik/Netzbezug_Heute - platform: mqtt_subscribe id: Deckungsgrad_Heute topic: subscribe_text_sensor/E-Paper/Photovoltaik/Deckungsgrad_Heute - platform: mqtt_subscribe id: Pfeil_PV_Netz topic: subscribe_text_sensor/E-Paper/Photovoltaik/Pfeil_PV_Netz - platform: mqtt_subscribe id: Pfeil_PV_Haus topic: subscribe_text_sensor/E-Paper/Photovoltaik/Pfeil_PV_Haus - platform: mqtt_subscribe id: Pfeil_Netz_Haus topic: subscribe_text_sensor/E-Paper/Photovoltaik/Pfeil_Netz_Haus # Wetter heute - platform: mqtt_subscribe id: Wettericon_now topic: subscribe_text_sensor/E-Paper/Wetter/Wettericon_now - platform: mqtt_subscribe id: Actual_Temp topic: subscribe_text_sensor/E-Paper/Wetter/Actual_Temp - platform: mqtt_subscribe id: MinMax_Temp_Heute topic: subscribe_text_sensor/E-Paper/Wetter/MinMax_Temp_Heute - platform: mqtt_subscribe id: Regen_Heute topic: subscribe_text_sensor/E-Paper/Wetter/Regen_Heute - platform: mqtt_subscribe id: Unwetter topic: subscribe_text_sensor/E-Paper/Wetter/Unwetter # Wetter morgen - platform: mqtt_subscribe id: Wettericon_morgen topic: subscribe_text_sensor/E-Paper/Wetter/Wettericon_morgen - platform: mqtt_subscribe id: MinMax_Temp_morgen topic: subscribe_text_sensor/E-Paper/Wetter/MinMax_Temp_morgen - platform: mqtt_subscribe id: Regen_morgen topic: subscribe_text_sensor/E-Paper/Wetter/Regen_morgen # Wetter uebermorgen - platform: mqtt_subscribe id: Wettericon_uebermorgen topic: subscribe_text_sensor/E-Paper/Wetter/Wettericon_uebermorgen - platform: mqtt_subscribe id: MinMax_Temp_uebermorgen topic: subscribe_text_sensor/E-Paper/Wetter/MinMax_Temp_uebermorgen - platform: mqtt_subscribe id: Regen_uebermorgen topic: subscribe_text_sensor/E-Paper/Wetter/Regen_uebermorgen # Muell - platform: mqtt_subscribe id: Termin_Restmuell topic: subscribe_text_sensor/E-Paper/Muell/Termin_Restmuell - platform: mqtt_subscribe id: Termin_Papier topic: subscribe_text_sensor/E-Paper/Muell/Termin_Papier - platform: mqtt_subscribe id: Termin_Gruenabfall topic: subscribe_text_sensor/E-Paper/Muell/Termin_Gruenabfall - platform: mqtt_subscribe id: Termin_Sperrmuell topic: subscribe_text_sensor/E-Paper/Muell/Termin_Sperrmuell - platform: mqtt_subscribe id: Termin_Gruen_Sperr topic: subscribe_text_sensor/E-Paper/Muell/Termin_Gruen_Sperr - platform: mqtt_subscribe id: Tage_bis_Restmuell topic: subscribe_text_sensor/E-Paper/Muell/Tage_bis_Restmuell - platform: mqtt_subscribe id: Tage_bis_Papier topic: subscribe_text_sensor/E-Paper/Muell/Tage_bis_Papier - platform: mqtt_subscribe id: Tage_bis_Gruenabfall topic: subscribe_text_sensor/E-Paper/Muell/Tage_bis_Gruenabfall - platform: mqtt_subscribe id: Tage_bis_Sperrmuell topic: subscribe_text_sensor/E-Paper/Muell/Tage_bis_Sperrmuell # Bilder image: # Foto - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_farbig.jpg" resize: 800x480 id: Bild # Photovoltaik - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Photovoltaik.png" resize: 120x73 id: Bild_Photovoltaik - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Haus.png" resize: 100x98 id: Bild_Haus - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Strommast.png" resize: 60x96 id: Bild_Strommast - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Pfeil_rechts.png" resize: 98x30 id: Bild_Pfeil_rechts - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Pfeil_rechts_unten.png" resize: 70x70 id: Bild_Pfeil_rechts_unten - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Pfeil_links_unten.png" resize: 70x70 id: Bild_Pfeil_links_unten # Wetter - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Tropfen.png" resize: 18x18 id: Bild_Tropfen - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Ausrufezeichen.png" resize: 50x50 id: Bild_Ausrufezeichen - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne.png" resize: 150x150 id: Bild_Sonne - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Gewitter.png" resize: 150x150 id: Bild_Sonne_Gewitter - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Regen.png" resize: 150x150 id: Bild_Sonne_Regen - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Schnee.png" resize: 150x150 id: Bild_Sonne_Schnee - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Wolken.png" resize: 150x150 id: Bild_Sonne_Wolken - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond.png" resize: 110x110 id: Bild_Mond - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Gewitter.png" resize: 150x150 id: Bild_Mond_Gewitter - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Regen.png" resize: 150x150 id: Bild_Mond_Regen - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Schnee.png" resize: 150x150 id: Bild_Mond_Schnee - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Wolken.png" resize: 150x150 id: Bild_Mond_Wolken - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Gewitter.png" resize: 120x120 id: Bild_Gewitter - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Regen.png" resize: 135x135 id: Bild_Regen - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Schnee.png" resize: 135x135 id: Bild_Schnee - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Wolke.png" resize: 150x150 id: Bild_Wolke - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Wolken.png" resize: 150x150 id: Bild_Wolken # Wetter-Vorhersage - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne.png" resize: 55x55 id: Bild_Sonne_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Gewitter.png" resize: 75x75 id: Bild_Sonne_Gewitter_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Regen.png" resize: 65x65 id: Bild_Sonne_Regen_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Schnee.png" resize: 75x75 id: Bild_Sonne_Schnee_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Sonne+Wolken.png" resize: 75x75 id: Bild_Sonne_Wolken_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond.png" resize: 47x47 id: Bild_Mond_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Gewitter.png" resize: 75x75 id: Bild_Mond_Gewitter_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Regen.png" resize: 65x65 id: Bild_Mond_Regen_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Schnee.png" resize: 75x75 id: Bild_Mond_Schnee_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Mond+Wolken.png" resize: 60x60 id: Bild_Mond_Wolken_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Gewitter.png" resize: 55x55 id: Bild_Gewitter_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Regen.png" resize: 55x55 id: Bild_Regen_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Schnee.png" resize: 57x57 id: Bild_Schnee_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Wolke.png" resize: 71x71 id: Bild_Wolke_klein - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Wolken.png" resize: 75x75 id: Bild_Wolken_klein # Muell - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Muelltonne.png" resize: 75x75 id: Bild_Muelltonne_gross - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Bild_Muelltonne.png" resize: 57x57 id: Bild_Muelltonne_klein # Display x-, y- display: - platform: waveshare_epaper id: epaper cs_pin: 20 busy_pin: 39 reset_pin: 14 dc_pin: 22 model: 7.50inV2 update_interval: never reset_duration: 2ms lambda: |- if (id(Foto).state != "1") { //Photovoltaik it.image((id(photovoltaik_symbols_x_int)+400), (id(photovoltaik_symbols_y_int)+85), id(Bild_Photovoltaik)); it.printf((id(photovoltaik_symbols_x_int)+455), (id(photovoltaik_symbols_y_int)+45), id(font1),TextAlign::TOP_CENTER,"%s", id(Momentanleistung).state.c_str()); it.image((id(photovoltaik_symbols_x_int)+550), (id(photovoltaik_symbols_y_int)+171), id(Bild_Haus)); it.printf((id(photovoltaik_symbols_x_int)+601), (id(photovoltaik_symbols_y_int)+263), id(font1),TextAlign::TOP_CENTER,"%s", id(Hausverbrauch).state.c_str()); it.image((id(photovoltaik_symbols_x_int)+692), (id(photovoltaik_symbols_y_int)+78), id(Bild_Strommast)); it.printf((id(photovoltaik_symbols_x_int)+723), (id(photovoltaik_symbols_y_int)+45), id(font1),TextAlign::TOP_CENTER,"%s", id(Einspeisung_Bezug).state.c_str()); if (id(Pfeil_PV_Netz).state == "1") { it.image((id(photovoltaik_symbols_x_int)+554), (id(photovoltaik_symbols_y_int)+115), id(Bild_Pfeil_rechts));} if (id(Pfeil_PV_Haus).state == "1") { it.image((id(photovoltaik_symbols_x_int)+448), (id(photovoltaik_symbols_y_int)+185), id(Bild_Pfeil_rechts_unten));} if (id(Pfeil_Netz_Haus).state == "1") { it.image((id(photovoltaik_symbols_x_int)+680), (id(photovoltaik_symbols_y_int)+185), id(Bild_Pfeil_links_unten));} it.printf((id(photovoltaik_data_x_int)+470), (id(photovoltaik_data_y_int)+320), id(font1),TextAlign::TOP_LEFT, "Tagesertrag: %s", id(Ertrag_Heute).state.c_str()); it.printf((id(photovoltaik_data_x_int)+470), (id(photovoltaik_data_y_int)+350), id(font1),TextAlign::TOP_LEFT, "Eigenv.: %s", id(Eigenverbrauch_Heute).state.c_str()); it.printf((id(photovoltaik_data_x_int)+470), (id(photovoltaik_data_y_int)+380), id(font1),TextAlign::TOP_LEFT, "Netzbezug: %s", id(Netzbezug_Heute).state.c_str()); it.printf((id(photovoltaik_data_x_int)+470), (id(photovoltaik_data_y_int)+410), id(font1),TextAlign::TOP_LEFT, "Deckungsgrad: %s", id(Deckungsgrad_Heute).state.c_str()); //Unwetter if (id(Unwetter).state != "0") { id(icon_heute_y_int) = 0; id(icon_morgen_y_int) = 60; id(icon_uebermorgen_y_int) = 60; it.printf((id(icon_heute_x_int)+125), (id(icon_heute_y_int)+155), id(font1),TextAlign::TOP_LEFT, "%s", id(Unwetter).state.c_str()); it.image((id(icon_heute_x_int)+60), (id(icon_heute_y_int)+148), id(Bild_Ausrufezeichen));} else { id(icon_heute_y_int) = 10; id(icon_morgen_y_int) = 20; id(icon_uebermorgen_y_int) = 20;} //Wetter heute if (id(Wettericon_now).state == "01d") { it.image((id(icon_heute_x_int)+40), (id(icon_heute_y_int)+0), id(Bild_Sonne));} if (id(Wettericon_now).state == "01n") { it.image((id(icon_heute_x_int)+60), (id(icon_heute_y_int)+15), id(Bild_Mond));} if (id(Wettericon_now).state == "02d") { it.image((id(icon_heute_x_int)+40), (id(icon_heute_y_int)-25), id(Bild_Sonne_Wolken));} if (id(Wettericon_now).state == "02n") { it.image((id(icon_heute_x_int)+40), (id(icon_heute_y_int)-10), id(Bild_Mond_Wolken));} if (id(Wettericon_now).state == "03dn") { it.image((id(icon_heute_x_int)+43), (id(icon_heute_y_int)-20), id(Bild_Wolke));} if (id(Wettericon_now).state == "04dn") { it.image((id(icon_heute_x_int)+50), (id(icon_heute_y_int)-30), id(Bild_Wolken));} if (id(Wettericon_now).state == "09dn") { it.image((id(icon_heute_x_int)+50), (id(icon_heute_y_int)+10), id(Bild_Regen));} if (id(Wettericon_now).state == "10d") { it.image((id(icon_heute_x_int)+45), (id(icon_heute_y_int)-5), id(Bild_Sonne_Regen));} if (id(Wettericon_now).state == "10n") { it.image((id(icon_heute_x_int)+45), (id(icon_heute_y_int)-5), id(Bild_Mond_Regen));} if (id(Wettericon_now).state == "11dn") { it.image((id(icon_heute_x_int)+65), (id(icon_heute_y_int)+20), id(Bild_Gewitter));} if (id(Wettericon_now).state == "13dn") { it.image((id(icon_heute_x_int)+55), (id(icon_heute_y_int)+10), id(Bild_Schnee));} if (id(Wettericon_now).state == "50dn") { it.image((id(icon_heute_x_int)+45), (id(icon_heute_y_int)-30), id(Bild_Wolken));} it.printf((id(icon_heute_x_int)+210), (id(icon_heute_y_int)+33), id(font2),TextAlign::TOP_LEFT, "%s", id(Actual_Temp).state.c_str()); it.printf((id(icon_heute_x_int)+210), (id(icon_heute_y_int)+78), id(font3),TextAlign::TOP_LEFT, "%s", id(MinMax_Temp_Heute).state.c_str()); it.printf((id(icon_heute_x_int)+230), (id(icon_heute_y_int)+100), id(font3),TextAlign::TOP_LEFT, "%s", id(Regen_Heute).state.c_str()); it.image((id(icon_heute_x_int)+210), (id(icon_heute_y_int)+104), id(Bild_Tropfen)); //Wetter morgen if (id(Wettericon_morgen).state == "01d") { it.image((id(icon_morgen_x_int)+78), (id(icon_morgen_y_int)+178), id(Bild_Sonne_klein));} if (id(Wettericon_morgen).state == "01n") { it.image((id(icon_morgen_x_int)+6), (id(icon_morgen_y_int)+180), id(Bild_Mond_klein));} if (id(Wettericon_morgen).state == "02d") { it.image((id(icon_morgen_x_int)+68), (id(icon_morgen_y_int)+154), id(Bild_Sonne_Wolken_klein));} if (id(Wettericon_morgen).state == "02n") { it.image((id(icon_morgen_x_int)+73), (id(icon_morgen_y_int)+173), id(Bild_Mond_Wolken_klein));} if (id(Wettericon_morgen).state == "03dn") { it.image((id(icon_morgen_x_int)+68), (id(icon_morgen_y_int)+159), id(Bild_Wolke_klein));} if (id(Wettericon_morgen).state == "04dn") { it.image((id(icon_morgen_x_int)+68), (id(icon_morgen_y_int)+152), id(Bild_Wolken_klein));} if (id(Wettericon_morgen).state == "09dn") { it.image((id(icon_morgen_x_int)+75), (id(icon_morgen_y_int)+180), id(Bild_Regen_klein));} if (id(Wettericon_morgen).state == "10d") { it.image((id(icon_morgen_x_int)+70), (id(icon_morgen_y_int)+169), id(Bild_Sonne_Regen_klein));} if (id(Wettericon_morgen).state == "10n") { it.image((id(icon_morgen_x_int)+70), (id(icon_morgen_y_int)+169), id(Bild_Mond_Regen_klein));} if (id(Wettericon_morgen).state == "11dn") { it.image((id(icon_morgen_x_int)+75), (id(icon_morgen_y_int)+181), id(Bild_Gewitter_klein));} if (id(Wettericon_morgen).state == "13dn") { it.image((id(icon_morgen_x_int)+75), (id(icon_morgen_y_int)+177), id(Bild_Schnee_klein));} if (id(Wettericon_morgen).state == "50dn") { it.image(id(icon_morgen_x_int)+68, (id(icon_morgen_y_int)+152), id(Bild_Wolken_klein));} it.printf(id(icon_morgen_x_int)+58, (id(icon_morgen_y_int)+233), id(font3),TextAlign::TOP_LEFT, "%s", id(MinMax_Temp_morgen).state.c_str()); it.printf((id(icon_morgen_x_int)+78), (id(icon_morgen_y_int)+255), id(font3),TextAlign::TOP_LEFT, "%s", id(Regen_morgen).state.c_str()); it.image(id(icon_morgen_x_int)+58, (id(icon_morgen_y_int)+259), id(Bild_Tropfen)); it.printf((id(icon_morgen_x_int)+73), (id(icon_morgen_y_int)+150), id(font3),TextAlign::TOP_LEFT, "%s", id(Tag_morgen).state.c_str()); it.line((id(icon_morgen_x_int)+58), (id(icon_morgen_y_int)+176), (id(icon_morgen_x_int)+158), (id(icon_morgen_y_int)+176)); //Wetter uebermorgen if (id(Wettericon_uebermorgen).state == "01d") { it.image((id(icon_uebermorgen_x_int)+238), (id(icon_uebermorgen_y_int)+178), id(Bild_Sonne_klein));} if (id(Wettericon_uebermorgen).state == "01n") { it.image((id(icon_uebermorgen_x_int)+236), (id(icon_uebermorgen_y_int)+180), id(Bild_Mond_klein));} if (id(Wettericon_uebermorgen).state == "02d") { it.image((id(icon_uebermorgen_x_int)+228), (id(icon_uebermorgen_y_int)+154), id(Bild_Sonne_Wolken_klein));} if (id(Wettericon_uebermorgen).state == "02n") { it.image((id(icon_uebermorgen_x_int)+233), (id(icon_uebermorgen_y_int)+171), id(Bild_Mond_Wolken_klein));} if (id(Wettericon_uebermorgen).state == "03dn") { it.image((id(icon_uebermorgen_x_int)+228), (id(icon_uebermorgen_y_int)+159), id(Bild_Wolke_klein));} if (id(Wettericon_uebermorgen).state == "04dn") { it.image((id(icon_uebermorgen_x_int)+228), (id(icon_uebermorgen_y_int)+152), id(Bild_Wolken_klein));} if (id(Wettericon_uebermorgen).state == "09dn") { it.image((id(icon_uebermorgen_x_int)+235), (id(icon_uebermorgen_y_int)+180), id(Bild_Regen_klein));} if (id(Wettericon_uebermorgen).state == "10d") { it.image((id(icon_uebermorgen_x_int)+230), (id(icon_uebermorgen_y_int)+169), id(Bild_Sonne_Regen_klein));} if (id(Wettericon_uebermorgen).state == "10n") { it.image((id(icon_uebermorgen_x_int)+230), (id(icon_uebermorgen_y_int)+169), id(Bild_Mond_Regen_klein));} if (id(Wettericon_uebermorgen).state == "11dn") { it.image((id(icon_uebermorgen_x_int)+235), (id(icon_uebermorgen_y_int)+181), id(Bild_Gewitter_klein));} if (id(Wettericon_uebermorgen).state == "13dn") { it.image((id(icon_uebermorgen_x_int)+235), (id(icon_uebermorgen_y_int)+177), id(Bild_Schnee_klein));} if (id(Wettericon_uebermorgen).state == "50dn") { it.image((id(icon_uebermorgen_x_int)+228), (id(icon_uebermorgen_y_int)+152), id(Bild_Wolken_klein));} it.printf(id(icon_uebermorgen_x_int)+218, (id(icon_uebermorgen_y_int)+233), id(font3),TextAlign::TOP_LEFT, "%s", id(MinMax_Temp_uebermorgen).state.c_str()); it.printf((id(icon_uebermorgen_x_int)+238), (id(icon_uebermorgen_y_int)+255), id(font3),TextAlign::TOP_LEFT, "%s", id(Regen_uebermorgen).state.c_str()); it.image(id(icon_uebermorgen_x_int)+218, (id(icon_uebermorgen_y_int)+259), id(Bild_Tropfen)); it.printf((id(icon_uebermorgen_x_int)+233), (id(icon_uebermorgen_y_int)+150), id(font3),TextAlign::TOP_LEFT, "%s", id(Tag_uebermorgen).state.c_str()); it.line((id(icon_uebermorgen_x_int)+218), (id(icon_uebermorgen_y_int)+176), (id(icon_uebermorgen_x_int)+318), (id(icon_uebermorgen_y_int)+176)); //Muell //Keine Unwetterwarnung if (id(Unwetter).state == "0") { //Kein Grün- und kein Sperrmüll-Termin if ((id(Termin_Gruenabfall).state == "Grünabfall: Kein Termin") && (id(Termin_Sperrmuell).state == "Sperrmüll: Kein Termin")) { it.image((id(muell_x_int)+63), (id(muell_y_int)+337), id(Bild_Muelltonne_klein)); it.printf((id(muell_x_int)+105), (id(muell_y_int)+335), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Restmuell).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+365), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Papier).state.c_str());} //Nur Grünabfall-Termin else if ((id(Termin_Gruenabfall).state != "Grünabfall: Kein Termin") && (id(Termin_Sperrmuell).state == "Sperrmüll: Kein Termin")) { it.image((id(muell_x_int)+45), (id(muell_y_int)+340), id(Bild_Muelltonne_gross)); it.printf((id(muell_x_int)+105), (id(muell_y_int)+335), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Restmuell).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+365), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Papier).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+395), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Gruenabfall).state.c_str());} //Nur Sperrmüll-Termin else if ((id(Termin_Gruenabfall).state == "Grünabfall: Kein Termin") && (id(Termin_Sperrmuell).state != "Sperrmüll: Kein Termin")) { it.image((id(muell_x_int)+45), (id(muell_y_int)+340), id(Bild_Muelltonne_gross)); it.printf((id(muell_x_int)+105), (id(muell_y_int)+335), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Restmuell).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+365), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Papier).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+395), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Sperrmuell).state.c_str());} //Grün- und Sperrmüll-Termine else if ((id(Termin_Gruenabfall).state != "Grünabfall: Kein Termin") && (id(Termin_Sperrmuell).state != "Sperrmüll: Kein Termin")) { it.image((id(muell_x_int)+45), (id(muell_y_int)+340), id(Bild_Muelltonne_gross)); it.printf((id(muell_x_int)+105), (id(muell_y_int)+320), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Restmuell).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+350), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Papier).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+380), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Gruenabfall).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+410), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Sperrmuell).state.c_str());}} //Unwetterwarnung aktiv else { //Nur Rest- und Papiermüll-Termine if (id(Termin_Gruen_Sperr).state == "Kein Termin") { it.image((id(muell_x_int)+63), (id(muell_y_int)+367), id(Bild_Muelltonne_klein)); it.printf((id(muell_x_int)+105), (id(muell_y_int)+365), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Restmuell).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+395), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Papier).state.c_str());} else { ////Rest-, Papier-, Grün- und/oder Sperrmüll-Termine it.image((id(muell_x_int)+45), (id(muell_y_int)+357), id(Bild_Muelltonne_gross)); it.printf((id(muell_x_int)+105), (id(muell_y_int)+350), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Restmuell).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+380), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Papier).state.c_str()); it.printf((id(muell_x_int)+105), (id(muell_y_int)+410), id(font4),TextAlign::TOP_LEFT, "%s", id(Termin_Gruen_Sperr).state.c_str());}}} else {it.image(75, 0, id(Bild));}
-
@doho besten Dank, sind die PNG's als Standart verfügbar oder selber gezeichnet?
-
Die Bilder hab ich von freepik.com
-
Hallo Zusammen,
Mein Display macht seit einiger Zeit Probleme und ich komme nicht dahinter, was es ist.
Über den Tag hinweg, verliert das Display seinen Kontrast. Morgens ist der Kontrast ok und Abends ist das Display unscharf. Update Intervall 15 Minuten tagsüber. Nachts (22:30 Uhr bis 06:00 Uhr) keine Refresh’s.Verkabelung und Software habe ich geprüft und scheint ok zu sein. Direkt nach dem Refresh ist das Display für wenige ms scharf und wird dann schlagartig „unscharf“. Darum denke ich, es ist ein Konfigurationsthema.
Kennst Du das Phänomen vielleicht @draexler? Oder evtl. sonst jemand?Vielen Dank vorab!
-
@doho Ja, das tritt bei meinen Geräten auf, auf denen kein DeepSleep verwendet wird.
Fehler ist bekannt und wird mit einer der nächsten Version gefixt.
Aktuell musst du auf die 2023.7.0 esphome Version updaten -> Dazu musst du den ioBroker Adapter deinstallieren und wieder installieren. Keine Angst die YAMLS sind danach noch da. Aber trotzdem vielleicht sichern.Anschließen ergänzt du in der YAML folgendes:
# Interim solution until solution comes centrally external_components: - source: type: git url: https://github.com/prapador/esphome_waveshare_fix ref: dev components: [ waveshare_epaper ]
Und als Display Version verwendest du folgendes:
model: 7.50inV2alt
Damit sollte das Problem behoben. Es kommt aber irgendwann ein Update. Ein Pull Request dazu läuft schon.
-
Danke für den Hinweis @draexler. Laut changelog müsste es mit der neusten Version 2023.7.1 behoben sein. Ich werde es ausprobieren
-
@doho Ah, sehr gut. Ging also doch schneller als gedacht. Dann einfach nur den Adapter deinstallieren und installieren, damit die neueste Version installiert wird und die ESPs neu flashen, aber trotzdem den Modelnamen ändern:
model: 7.50inV2alt
ohne "alt" hatte es bei mir keine Auswirkung.
-
Stimmt. Ich muss auch den Modelnamen auf:
model: 7.50inV2alt
ändern. Woher wusstest du das mit dem esphome update?
-
@doho Du ich bin Recherche mäßig ab und zu in dem ESPHOME GITHUB Projekt unterwegs und dabe ich den Issue gesehen.
-
@draexler auf jeden Fall nochmal vielen Dank! Ich hätte erstmal weiterhin meine Konfiguration in Frage gestellt.
-
Vielen Dank für den Hinweis, nach dem Update sieht es nun endlich wieder viel besser aus
-
@draexler
morgen
cooles Projekt, bin auch am rumspielen mit E-Paper und hab vieles von dir übernommen.
würdest du ev. Datein für den 3D Druck für das Gehäuse zur Verfügungstellen? Würde mich freuen. -
Hej.
Da hast Du genau das umgesetzt, wonach ich schon seit ein paar Wochen das Netz durchforste.
Ich biege gerade die mqtt-topics um.Welchen Adapter verwendest Du für die Wetterprognose?
Würdest Du neben der yaml für espHome (danke dafür) auch die PNGs teilen?LG,
Stefan -
da schließe ich mich an, habe gerade erstmal alles zum laufen gebracht. das display in version 2.3 hat mich erstmal nerven gekostet. aber jetzt klappt es erstmal:
Das mit den Images un den vielen Zeichenkonvertierungen sieht nach unglaublich viel arbeit aus...
-
@draexler hallo gibt es für das Case zufällig eine Druckdatei oder einen Link?