Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. ePaper Statusdisplay Hausflur

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ePaper Statusdisplay Hausflur

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bimmi @draexler last edited by bimmi

      Sehr schön.

      Ich bin da im Moment an was ähnlichem dran jedoch mit elektronischen Preisschildern.

      Ich habe einen Schwung von eBay ergattert und versuche seit ein paar Tagen das ganze zum laufen zu bringen mit

      https://github.com/atc1441/E-Paper_Pricetags

      IMG_20220924_184443.jpg

      IMG_20220924_184453.jpg

      Jedoch scheitert es bei mir in der Übertragung.

      Edit: vielleicht magst du ein paar mehr Informationen dazu Preis geben wie zum Beispiel welche Software du nutzt, wie schickst du deine generierten Bilder an den eingebauten esp und wie läuft das mit dem deepsleep... Läuft da eine rtc mit dazu die den Display aufweckt.... Würde mich freuen!

      draexler 1 Reply Last reply Reply Quote 0
      • draexler
        draexler @bimmi last edited by

        @bimmi Hi, gerne 🙂

        also zwecks Software:

        • ioBroker 😉
        • espHome Adapter (hier ist die Komplette Unterstützung der Waveshare Displays bereits integriert und die Doku ist TOP) und die ganze compilirerei der YAML wird dort auch für dich gemacht. OTA Updates sind auch möglich.
        • MQTT Adapter
        • Javascript Adapter

        Hardware:

        • ESP: Also entweder direkt von Waveshare die ePaper Driver Boards (das erspart einiges an Kabelei, da das Flachband vom Display direkt auf das Board gesteckt wird oder meine Empfehlung das Adafruit HUZZAH32 – ESP32 Feather Board.
          Damit habe ich die beste Erfahrung gemacht und ich habe einige ESP ausprobiert. Und hier kannst du auch direkt den LIPO Akku anstecken.
        • ePaper: Einfach in der ESPHOME Doku nachsehen welche Display Größen unterstützt werden.
        • Wenn Batterie Betrieb. LIPO Akku in deiner größe.

        BILDER:
        Die Bilder liegen im ersten Step in einen Verzeichnis auf deinem ioBroker. In der YAML gibts du dazu den Pfad an.

        z.B:

        image:
          - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_0.png"
            id: Oeltank_0
            resize: 95x95
        

        und dann im Lambda Bereich
        z.B.

            lambda: |-
              // HINTERGRUNDBILD
              it.image(115, 270, id(Oeltank_0));
        

        DEEP SLEEP:

        Du kann die ESP entweder zu einen bestimmten Zeitpunkt aufwecken oder auch per Taster
        In meine Fall habe ich es simpler gemacht und aktualisiere jede Stunde einmal:

        deep_sleep:
          id: deep_sleep_1
          run_duration: 35s
          sleep_duration: 60min
        
        draexler T 2 Replies Last reply Reply Quote 2
        • draexler
          draexler @draexler last edited by

          Ansonsten kann ich gerne auch die gesamt YAML mal posten:

          esphome:
            name: TEST
              
            on_boot:
              priority: -100
              then:
                - delay: 1s
                - component.update: current_time
                # Give some time to get the rest of the mqtt data
                - component.update: epaper_display
                # Wait for display update cycle
              
          esp32:
            board: featheresp32
          
          # Enable logging
          logger:
            level: DEBUG
          
          # Enable Home Assistant API
          api:
            password: !secret api_password
          
          # OTA
          ota:
            password: "DeinPasswort"
            
          # Enable MQTT 
          mqtt:
            broker: 192.168.x.xx
            username: xxx
            password: !secret mqtt_password
            client_id: Test
            topic_prefix: esphome/Test
            
          # OTA MODUS
            on_message:
              - topic: esphome.Test.ota
                payload: 'ON'
                then:
                  - deep_sleep.prevent: deep_sleep_1
              - topic: esphome.Test.deepsleep
                payload: 'ON'
                then:
                  - deep_sleep.enter: deep_sleep_1
          
          # Epaper display doesn't turn back on after deep sleep while on lipo powerunless this switch is defined. Not sure why!
          switch:
            - platform: gpio
              pin:
                number: 21
                inverted: yes
              id: Display_Reset
              internal: true
              name: "Display Reset"
          
          # Enable WIFI
          wifi:
            ssid: !secret wifi_ssid
            password: !secret wifi_password
            fast_connect: True
            
          # Enable fallback hotspot (captive portal) in case wifi connection fails
            ap:
              ssid: "Test"
              password: "password"
              
          ##############
          
          captive_portal:
          
          font:
            # Schrift für Kästchenbeschriftung z.B. Innen
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
              id: VerdanaBold24
              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: 24
            # Schrift für Wertebezeichnungen z.B. MAX TEMPERATUR
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/Verdana.ttf"
              id: Verdana20
              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
              # Schrift für Zentrale Wichtige Werte z.B. Temperatur Innen
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
              id: VerdanaBold32
              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: 32
              # Schrift für Werte z.B. MAX TEMPERATUR
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
              id: VerdanaBold20
              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
              # Schrift für Trend Tage
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
              id: VerdanaBold15
              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: 15
              # Schrift für Trend Werte
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
              id: VerdanaBold17
              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: 17
              # Schrift für Wettersymbole
            - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/Materialdesignicons-Webfont.ttf"
              id: Icons60
              size: 60
              glyphs:
              - "\U000F0599" # Sonne,
              - "\U000F0595" # Sonne bewölkt, Sonne stark bewölkt
              - "\U000F0590" # bewölkt		
              - "\U000F0597" # Sonne bewölkt leichter Regen, Sonne stark bewölkt leichter Regen, bewölkt leichter Regen
              - "\U000F0596" # Sonne bewölkt starker Regen, Sonne stark bewölkt starker Regen, stark bewölkt starker Regen
              - "\U000F0593" # Sonne bewölkt Unwetter, Sonne stark bewölkt Unwetter, stark bewölkt Unwetter
              - "\U000F0592" # Sonne bewölkt Eisregen, Sonne stark bewölkt Eisregen, stark bewölkt Eisregen, Sonne bewölkt Schneeregen, Sonne stark bewölkt Schneeregen, stark bewölkt Schneeregen
              - "\U000F0598" # Sonne bewölkt Schnee, Sonne stark bewölkt Schnee, stark bewölkt Schnee
              
          image:
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/VISStatus.png"
              id: VISStatus
              resize: 800x480
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_0.png"
              id: Oeltank_0
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_10.png"
              id: Oeltank_10
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_20.png"
              id: Oeltank_20
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_30.png"
              id: Oeltank_30
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_40.png"
              id: Oeltank_40
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_50.png"
              id: Oeltank_50
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_60.png"
              id: Oeltank_60
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_70.png"
              id: Oeltank_70
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_80.png"
              id: Oeltank_80
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_90.png"
              id: Oeltank_90
              resize: 95x95
            - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Status/Oeltank/Oeltank_100.png"
              id: Oeltank_100
              resize: 95x95
              
          text_sensor:
              #MQTT SENSOR HEUTE DATUM LANG
            - platform: mqtt_subscribe
              id: HeuteDatumLang
              topic: subscribe_text_sensor/Kalender/Heute/DatumLang
              #MQTT SENSOR TEMPERATUR AUSSEN
            - platform: mqtt_subscribe
              id: TemperaturAussen
              topic: subscribe_text_sensor/Wetter/Aussen/Temperatur
              #MQTT SENSOR LUFTFEUCHTIGKEIT AUSSEN
            - platform: mqtt_subscribe
              id: LuftfeuchtigkeitAussen
              topic: subscribe_text_sensor/Wetter/Aussen/Luftfeuchtigkeit
              #MQTT SENSOR MAX TEMPERATUR AUSSEN
            - platform: mqtt_subscribe
              id: MaxTemperaturAussen
              topic: subscribe_text_sensor/Wetter/Aussen/MaxTemp
              #MQTT SENSOR MIN TEMPERATUR AUSSEN
            - platform: mqtt_subscribe
              id: MinTemperaturAussen
              topic: subscribe_text_sensor/Wetter/Aussen/MinTemp
              #MQTT SENSOR TAG MORGEN
            - platform: mqtt_subscribe
              id: TagMorgen
              topic: subscribe_text_sensor/Wetter/Trend/Tag/Morgen
              #MQTT SENSOR TAG ÜBERMORGEN
            - platform: mqtt_subscribe
              id: TagUEbermorgen
              topic: subscribe_text_sensor/Wetter/Trend/Tag/UeMorgen
              #MQTT SENSOR TAG ÜBER-ÜBERMORGEN
            - platform: mqtt_subscribe
              id: TagUEberUebermorgen
              topic: subscribe_text_sensor/Wetter/Trend/Tag/UeUeMorgen
              #MQTT SENSOR WETTERSYMBOL MORGEN
            - platform: mqtt_subscribe
              id: WettersymbolMorgen
              topic: subscribe_text_sensor/Wetter/Trend/Symbol/Morgen
              #MQTT SENSOR WETTERSYMBOL ÜBERMORGEN
            - platform: mqtt_subscribe
              id: WettersymbolUEbermorgen
              topic: subscribe_text_sensor/Wetter/Trend/Symbol/UeMorgen
              #MQTT SENSOR WETTERSYMBOL ÜBER-ÜBERMORGEN
            - platform: mqtt_subscribe
              id: WettersymbolUEberUebermorgen
              topic: subscribe_text_sensor/Wetter/Trend/Symbol/UeUeMorgen
              #MQTT SENSOR TEMPERATUR MAX MORGEN
            - platform: mqtt_subscribe
              id: MaxTempMorgen
              topic: subscribe_text_sensor/Wetter/Trend/MaxTemp/Morgen
              #MQTT SENSOR TEMPERATUR MIN MORGEN
            - platform: mqtt_subscribe
              id: MinTempMorgen
              topic: subscribe_text_sensor/Wetter/Trend/MinTemp/Morgen
              #MQTT SENSOR TEMPERATUR MAX ÜBERMORGEN
            - platform: mqtt_subscribe
              id: MaxTempUEbermorgen
              topic: subscribe_text_sensor/Wetter/Trend/MaxTemp/UeMorgen
              #MQTT SENSOR TEMPERATUR MIN ÜBERMORGEN
            - platform: mqtt_subscribe
              id: MinTempUEbermorgen
              topic: subscribe_text_sensor/Wetter/Trend/MinTemp/UeMorgen
              #MQTT SENSOR TEMPERATUR MAX ÜBER-ÜBERMORGEN
            - platform: mqtt_subscribe
              id: MaxTempUEberUebermorgen
              topic: subscribe_text_sensor/Wetter/Trend/MaxTemp/UeUeMorgen
              #MQTT SENSOR TEMPERATUR MIN ÜBER-ÜBERMORGEN
            - platform: mqtt_subscribe
              id: MinTempUEberUebermorgen
              topic: subscribe_text_sensor/Wetter/Trend/MinTemp/UeUeMorgen
              #MQTT SENSOR PHOTOVOLTAIK HAUSVERBRAUCH
            - platform: mqtt_subscribe
              id: PhotovoltaikHausverbrauch
              topic: subscribe_text_sensor/Photovoltaik/Hausverbrauch
              #MQTT SENSOR PHOTOVOLTAIK ERZEUGUNG
            - platform: mqtt_subscribe
              id: PhotovoltaikErzeugung
              topic: subscribe_text_sensor/Photovoltaik/Erzeugung
              #MQTT SENSOR PHOTOVOLTAIK BEZUG
            - platform: mqtt_subscribe
              id: PhotovoltaikBezug
              topic: subscribe_text_sensor/Photovoltaik/Bezug
              #MQTT SENSOR PHOTOVOLTAIK EINSPEISUNG
            - platform: mqtt_subscribe
              id: PhotovoltaikEinspeisung
              topic: subscribe_text_sensor/Photovoltaik/Einspeisung
              #MQTT SENSOR ÖLTANK RESTMENGE   
            - platform: mqtt_subscribe
              id: OeltankRestmenge
              topic: subscribe_text_sensor/Oeltank/Restmenge
              #MQTT SENSOR ÖLTANK RESTLITER   
            - platform: mqtt_subscribe
              id: OeltankRestliter
              topic: subscribe_text_sensor/Oeltank/Restliter
              #MQTT SENSOR ÖLTANK ENDDATUM   
            - platform: mqtt_subscribe
              id: OeltankEnddatum
              topic: subscribe_text_sensor/Oeltank/Enddatum
              #MQTT SENSOR ÖLTANK SYMBOL   
            - platform: mqtt_subscribe
              id: OeltankSymbol
              topic: subscribe_text_sensor/Oeltank/Symbol
              #MQTT SENSOR HAUSARBEIT WISCHEN KALENDERWOCHE
            - platform: mqtt_subscribe
              id: HausarbeitWischenKalenderwoche
              topic: subscribe_text_sensor/Hausarbeit/Wischen/Kalenderwoche
              #MQTT SENSOR HAUSARBEIT WISCHEN NAME
            - platform: mqtt_subscribe
              id: HausarbeitWischenName
              topic: subscribe_text_sensor/Hausarbeit/Wischen/Name
              #MQTT SENSOR MÜLL RESTMUELL DATUM
            - platform: mqtt_subscribe
              id: MuellRestmuellDatum
              topic: subscribe_text_sensor/Muell/Restmuell/Datum
              #MQTT SENSOR MÜLL RESTMUELL RESTTAGE
            - platform: mqtt_subscribe
              id: MuellRestmuellResttage
              topic: subscribe_text_sensor/Muell/Restmuell/Resttage
              #MQTT SENSOR MÜLL PAPIERTONNE DATUM
            - platform: mqtt_subscribe
              id: MuellPapiertonneDatum
              topic: subscribe_text_sensor/Muell/Papiertonne/Datum
              #MQTT SENSOR MÜLL PAPIERTONNE RESTTAGE
            - platform: mqtt_subscribe
              id: MuellPapiertonneResttage
              topic: subscribe_text_sensor/Muell/Papiertonne/Resttage
              #MQTT SENSOR ENERGIE ZÄHLER STROMBEZUG
            - platform: mqtt_subscribe
              id: EnergieZaehlerStrombezug
              topic: subscribe_text_sensor/Energie/Zaehler/Strombezug
              #MQTT SENSOR ENERGIE ZÄHLER STROMEINSPEISUNG
            - platform: mqtt_subscribe
              id: EnergieZaehlerStromeinspeisung
              topic: subscribe_text_sensor/Energie/Zaehler/Stromeinspeisung
              #MQTT SENSOR ENERGIE ZÄHLER WASSER
            - platform: mqtt_subscribe
              id: EnergieZaehlerWasser
              topic: subscribe_text_sensor/Energie/Zaehler/Wasser
              
          time:
           - platform: sntp
             id: current_time
             timezone: Europe/Berlin
             servers : ptbtime1.ptb.de
             
          deep_sleep:
            id: deep_sleep_1
            run_duration: 35s
            sleep_duration: 60min
             
          spi:
            clk_pin: 5
            mosi_pin: 18
            id: epaper_spi
          
          display:
            - platform: waveshare_epaper
              id: epaper_display
              cs_pin: 22
              dc_pin: 23
              busy_pin: 39
              reset_pin: 21
              model: 7.50inV2
              spi_id: epaper_spi
              update_interval: never
              reset_duration: 2ms
              
              lambda: |-
                // HINTERGRUNDBILD
                it.image(0, 0, id(VISStatus));
                
                //ÜBERSCHRIFTEN
                //WETTER
                it.print(87, 15, id(VerdanaBold24), TextAlign::TOP_CENTER, "WETTER");
                //TREND
                it.print(87, 158, id(VerdanaBold24), TextAlign::TOP_CENTER, "TREND");
                //PV KWH
                it.print(87, 294, id(VerdanaBold24), TextAlign::TOP_CENTER, "PV KWH");
                //ÖLTANK
                it.print(473, 15, id(VerdanaBold24), TextAlign::TOP_CENTER, "ÖLTANK");
                //WISCHEN
                it.print(473, 153, id(VerdanaBold24), TextAlign::TOP_CENTER, "WISCHEN");
                //MÜLL
                it.print(473, 225, id(VerdanaBold24), TextAlign::TOP_CENTER, "MÜLL");
                //ZÄHLER
                it.print(473, 340, id(VerdanaBold24), TextAlign::TOP_CENTER, "ZÄHLER");
                
                //DATUM
                it.printf(688, 17, id(VerdanaBold24), TextAlign::TOP_CENTER, "%s", id(HeuteDatumLang).state.c_str());
                
                //AUSSEN WERTEBEZEICHNUNGEN
                //TEMPERATUR
                it.print(26, 48, id(Verdana20), "Temperatur");
                //LUFTFEUCHTIGKEIT
                it.print(26, 75, id(Verdana20), "Luftfeuchtigkeit");
                //MAX TEMPERATUR
                it.print(26, 102, id(Verdana20), "MAX Temperatur");
                //MIN TEMPERATUR
                it.print(26, 130, id(Verdana20), "MIN Temperatur");
                
                //AUSSEN WERTE
                //Temperatur
                it.printf(374, 38, id(VerdanaBold32), TextAlign::TOP_RIGHT, "%s", id(TemperaturAussen).state.c_str());
                //LUFTFEUCHTIKEIT
                it.printf(374, 75, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(LuftfeuchtigkeitAussen).state.c_str());
                //MAX TEMPERATUR
                it.printf(374, 102, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(MaxTemperaturAussen).state.c_str());
                //MIN TEMPERATUR
                it.printf(374, 130, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(MinTemperaturAussen).state.c_str());
                
                //TREND TAGE WERTE
                //MORGEN TAG
                it.printf(84, 268, id(VerdanaBold15), TextAlign::TOP_CENTER, "%s", id(TagMorgen).state.c_str());
                //ÜBERMORGEN TAG
                it.printf(205, 268, id(VerdanaBold15), TextAlign::TOP_CENTER, "%s", id(TagUEbermorgen).state.c_str());
                //ÜBER-ÜBERMORGEN TAG
                it.printf(323, 268, id(VerdanaBold15), TextAlign::TOP_CENTER, "%s", id(TagUEberUebermorgen).state.c_str());
          
                //TREND SYMBOL WERTE
                //SYMBOL MORGEN STATE 1
                if (id(WettersymbolMorgen).state == "1") {
                it.print(55, 194, id(Icons60), "\U000F0599");}
                //SYMBOL MORGEN STATE 2
                if (id(WettersymbolMorgen).state == "2") {
                it.print(55, 194, id(Icons60), "\U000F0595");}
                //SYMBOL MORGEN STATE 3
                if (id(WettersymbolMorgen).state == "3") {
                it.print(55, 194, id(Icons60), "\U000F0590");}
                //SYMBOL MORGEN STATE 4
                if (id(WettersymbolMorgen).state == "4") {
                it.print(55, 194, id(Icons60), "\U000F0597");}
                //SYMBOL MORGEN STATE 5
                if (id(WettersymbolMorgen).state == "5") {
                it.print(55, 194, id(Icons60), "\U000F0596");}
                //SYMBOL MORGEN STATE 6
                if (id(WettersymbolMorgen).state == "6") {
                it.print(55, 194, id(Icons60), "\U000F0593");}
                //SYMBOL MORGEN STATE 7
                if (id(WettersymbolMorgen).state == "7") {
                it.print(55, 194, id(Icons60), "\U000F0592");}
                //SYMBOL MORGEN STATE 8
                if (id(WettersymbolMorgen).state == "8") {
                it.print(55, 194, id(Icons60), "\U000F0598");}
                //TREND SYMBOL ÜBERMORGEN
                //SYMBOL ÜBERMORGEN STATE 1
                if (id(WettersymbolUEbermorgen).state == "1") {
                it.print(175, 194, id(Icons60), "\U000F0599");}
                //SYMBOL ÜBERMORGEN STATE 2
                if (id(WettersymbolUEbermorgen).state == "2") {
                it.print(175, 194, id(Icons60), "\U000F0595");}
                //SYMBOL ÜBERMORGEN STATE 3
                if (id(WettersymbolUEbermorgen).state == "3") {
                it.print(175, 194, id(Icons60), "\U000F0590");}
                //SYMBOL ÜBERMORGEN STATE 4
                if (id(WettersymbolUEbermorgen).state == "4") {
                it.print(175, 194, id(Icons60), "\U000F0597");}
                //SYMBOL ÜBERMORGEN STATE 5
                if (id(WettersymbolUEbermorgen).state == "5") {
                it.print(175, 194, id(Icons60), "\U000F0596");}
                //SYMBOL ÜBERMORGEN STATE 6
                if (id(WettersymbolUEbermorgen).state == "6") {
                it.print(175, 194, id(Icons60), "\U000F0593");}
                //SYMBOL ÜBERMORGEN STATE 7
                if (id(WettersymbolUEbermorgen).state == "7") {
                it.print(175, 194, id(Icons60), "\U000F0592");}
                //SYMBOL ÜBERMORGEN STATE 8
                if (id(WettersymbolUEbermorgen).state == "8") {
                it.print(175, 194, id(Icons60), "\U000F0598");}
                //TREND SYMBOL ÜBER-ÜBERMORGEN
                //SYMBOL ÜBER-ÜBERMORGEN STATE 1
                if (id(WettersymbolUEberUebermorgen).state == "1") {
                it.print(295, 194, id(Icons60), "\U000F0599");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 2
                if (id(WettersymbolUEberUebermorgen).state == "2") {
                it.print(295, 194, id(Icons60), "\U000F0595");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 3
                if (id(WettersymbolUEberUebermorgen).state == "3") {
                it.print(295, 194, id(Icons60), "\U000F0590");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 4
                if (id(WettersymbolUEberUebermorgen).state == "4") {
                it.print(295, 194, id(Icons60), "\U000F0597");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 5
                if (id(WettersymbolUEberUebermorgen).state == "5") {
                it.print(295, 194, id(Icons60), "\U000F0596");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 6
                if (id(WettersymbolUEberUebermorgen).state == "6") {
                it.print(295, 194, id(Icons60), "\U000F0593");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 7
                if (id(WettersymbolUEberUebermorgen).state == "7") {
                it.print(295, 194, id(Icons60), "\U000F0592");}
                //SYMBOL ÜBER-ÜBERMORGEN STATE 8
                if (id(WettersymbolUEberUebermorgen).state == "8") {
                it.print(295, 194, id(Icons60), "\U000F0598");}
          
                //TREND TAGE TEMPERATUR
                //MORGEN MAX TEMPERATUR
                it.printf(61, 248, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MaxTempMorgen).state.c_str());
                //MORGEN MIN TEMPERATUR
                it.printf(107, 248, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MinTempMorgen).state.c_str());
                //ÜBERMORGEN MAX TEMPERATUR
                it.printf(181, 248, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MaxTempUEbermorgen).state.c_str());
                //ÜBERMORGEN MIN TEMPERATUR
                it.printf(227, 248, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MinTempUEbermorgen).state.c_str());
                //ÜBER-ÜBERMORGEN MAX TEMPERATUR
                it.printf(302, 248, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MaxTempUEberUebermorgen).state.c_str());
                //ÜBER-ÜBERMORGEN MIN TEMPERATUR
                it.printf(348, 248, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MinTempUEberUebermorgen).state.c_str());
                
                //PV kW/h
                //HAUSVERBRAUCH
                it.printf(138, 414, id(VerdanaBold20), TextAlign::TOP_CENTER, "%s", id(PhotovoltaikHausverbrauch).state.c_str());
                //ERZEUGUNG
                it.printf(138, 351, id(VerdanaBold20), TextAlign::TOP_CENTER, "%s", id(PhotovoltaikErzeugung).state.c_str());
                //BEZUG
                it.printf(271, 351, id(VerdanaBold20), TextAlign::TOP_CENTER, "%s", id(PhotovoltaikBezug).state.c_str());
                //EINSPEISUNG
                it.printf(271, 414, id(VerdanaBold20), TextAlign::TOP_CENTER, "%s", id(PhotovoltaikEinspeisung).state.c_str());
                
                //OELTANK WERTEBEZEICHNUNGEN
                //RESTMENGE
                it.print(504, 68, id(Verdana20), "Restmenge");
                //RESTLITER
                it.print(504, 94, id(Verdana20), "Restliter");
                //ENDDATUM
                it.print(504, 120, id(Verdana20), "Enddatum");
                
                //OELTANK WERTE
                //RESTMENGE
                it.printf(760, 68, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(OeltankRestmenge).state.c_str());
                //RESTLITER
                it.printf(760, 94, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(OeltankRestliter).state.c_str());
                //ENDDATUM
                it.printf(760, 120, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(OeltankEnddatum).state.c_str());
                
                //Oeltank SYMBOL
                //Oeltank 0%
                if (id(OeltankSymbol).state == "0") {
                it.image(405, 50, id(Oeltank_0));}
                //Oeltank 10%
                if (id(OeltankSymbol).state == "1") {
                it.image(405, 50, id(Oeltank_10));}
                //Oeltank 20%
                if (id(OeltankSymbol).state == "2") {
                it.image(405, 50, id(Oeltank_20));}
                //Oeltank 30%
                if (id(OeltankSymbol).state == "3") {
                it.image(405, 50, id(Oeltank_30));}
                //Oeltank 40%
                if (id(OeltankSymbol).state == "4") {
                it.image(405, 50, id(Oeltank_40));}
                //Oeltank 50%
                if (id(OeltankSymbol).state == "5") {
                it.image(405, 50, id(Oeltank_50));}
                //Oeltank 60%
                if (id(OeltankSymbol).state == "6") {
                it.image(405, 50, id(Oeltank_60));}
                //Oeltank 70%
                if (id(OeltankSymbol).state == "7") {
                it.image(405, 50, id(Oeltank_70));}
                //Oeltank 80%
                if (id(OeltankSymbol).state == "8") {
                it.image(405, 50, id(Oeltank_80));}
                //Oeltank 90%
                if (id(OeltankSymbol).state == "9") {
                it.image(405, 50, id(Oeltank_90));}
                //Oeltank 100%
                if (id(OeltankSymbol).state == "10") {
                it.image(405, 50, id(Oeltank_100));}
                
                //HAUSARBEIT WISCHEN
                //KALENDERWOCHE
                it.printf(412, 191, id(Verdana20), "%s", id(HausarbeitWischenKalenderwoche).state.c_str());
                //NAME
                it.printf(760, 191, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(HausarbeitWischenName).state.c_str());
                
                //MUELL WERTEBEZEICHNUNGEN
                //RESTMUELLTONNE
                it.print(476, 275, id(Verdana20), "Restmüll");
                //PAPIERTONNE
                it.print(646, 275, id(Verdana20), "Papiertonne");
                
                //MUELL WERTE
                //RESTMUELL DATUM
                it.printf(476, 301, id(VerdanaBold20), "%s", id(MuellRestmuellDatum).state.c_str());
                //RESTMUELL TAGE
                it.printf(443, 286, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MuellRestmuellResttage).state.c_str());
                //PAPIERTONNE DATUM
                it.printf(646, 301, id(VerdanaBold20), "%s", id(MuellPapiertonneDatum).state.c_str());
                //PAPIERTONNE TAGE
                it.printf(614, 286, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MuellPapiertonneResttage).state.c_str());
                
                //ZAEHLER WERTEBEZEICHNUNGEN
                //STROMBEZUG
                it.printf(412, 380, id(Verdana20), "Strom Bezug");
                //STROMEINSPEISUNG
                it.printf(412, 406, id(Verdana20), "Strom Einspeisung");
                //WASSER
                it.printf(412, 432, id(Verdana20), "Wasser");
                
                //ZAEHLER WERTE
                //STROMBEZUG
                it.printf(760, 380, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(EnergieZaehlerStrombezug).state.c_str());
                //STROMEINSPEISUNG
                it.printf(760, 406, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(EnergieZaehlerStromeinspeisung).state.c_str());
                //WASSER
                it.printf(760, 432, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(EnergieZaehlerWasser).state.c_str());
          
          B 1 Reply Last reply Reply Quote 2
          • B
            bimmi @draexler last edited by

            @draexler wow. Vielen Dank für die ausführlichen Informationen über das Projekt.

            Da setze ich mich doch gleich ran und versuche mein Glück 😬👍

            1 Reply Last reply Reply Quote 0
            • T
              thomassch @draexler last edited by thomassch

              Hallo @draexler,

              Super Projekt, gefällt mir.
              Damit ich das Bild nicht vorher designen muss und nur werte Anzeige, würde ich gerne ein gerendertes Bild vom Iobroker auf dem epaper darstellen, hast du eine Idee wie das ginge oder wo ich suchen könnte?
              Damit könnte ich dann zb. Grafana Bilder darstellen.

              Gruß
              Thomas

              draexler 1 Reply Last reply Reply Quote 0
              • draexler
                draexler @thomassch last edited by

                @thomassch Freut mich wenn es dir gefällt 🙂

                Also mit Bilder nachladen auf dem ESP wird's vermutlich nix werden... Da ist ein ESP zu schwach auf der Brust was ich so recherchiert habe, das er das ON THE FLY könnte. Die müssen immer neu drauf geflasht werden.
                Wobei esphome schon sehr einfache Graphen abbilden könnte. Einfach mal in die Doku von ESPhome schauen.
                In der Verbindung mit einem Raspberry würde es aber schon gehen. Das habe ich sogar auch schon mal umgesetzt. Siehe https://forum.iobroker.net/topic/46943/gelöst-wetter-display/19
                Da kannst du dann einfach eine Screenshot von einer VIS etc. mit Puppetier auf dein ePaper zaubern lassen 😉
                Ein Batteriebetrieb ist dann aber nicht mehr so einfach möglich.

                JLeg 1 Reply Last reply Reply Quote 0
                • T
                  thomassch last edited by

                  Hallo @draexler ,
                  schade aber ok, dachte mir schon das der ESP32 hier eventuell zu wenig Dampf hat.

                  Gruss
                  Thomas

                  1 Reply Last reply Reply Quote 0
                  • JLeg
                    JLeg @draexler last edited by

                    @draexler sagte in ePaper Statusdisplay Hausflur:

                    Also mit Bilder nachladen auf dem ESP wird's vermutlich nix werden... Da ist ein ESP zu schwach auf der Brust was ich so recherchiert habe, das er das ON THE FLY könnte.

                    hm, was meinst du mit "on the fly" hier genau? Ich hab' z.B. ein Waveshare-e-ink an einem Feather-S2 (mit einem Feather-Friends-Shield, hiess das glaube ich), und der holt sich jede paar Minuten ein neues Bild von der auf dem Shield befindlichen SD-Card. Dorthin zwischendurch per POST einen Upload draufladen sollte eigentlich funktionieren?

                    draexler 1 Reply Last reply Reply Quote 0
                    • draexler
                      draexler @JLeg last edited by

                      @jleg Hi 🙂 Das der ESP das Bild im laufenden Betrieb holt.
                      Mhh... Sehr interessant wenn es anscheinend doch geht. Wobei meine Recherchen immer in Verbindung mit ESPHome stehen und da wurden mir in den einschlägigen Foren (esphome Community HomeAsisst etc.) gesagt das es nicht gehen würde.
                      Auf welcher Basis (Software) hast du das realisiert? Auch mit ESPhome oder mit einen Ardoino etc. Projekt?
                      Was natürlich bei mir auch ganz wichtig ist, das ein Batteriebetrieb möglich ist und da zählt jede Sekunde im Deepsleep die ich runterschrauben kann bzw. der ESP auch allgemein sparsam ist.

                      draexler 1 Reply Last reply Reply Quote 0
                      • draexler
                        draexler @draexler last edited by

                        @draexler sagte in ePaper Statusdisplay Hausflur:

                        @jleg Hi 🙂 Das der ESP das Bild im laufenden Betrieb holt.
                        Mhh... Sehr interessant wenn es anscheinend doch geht. Wobei meine Recherchen immer in Verbindung mit ESPHome stehen und da wurden mir in den einschlägigen Foren (esphome Community HomeAsisst etc.) gesagt das es nicht gehen würde.
                        Auf welcher Basis (Software) hast du das realisiert? Auch mit ESPhome oder mit einen Ardoino etc. Projekt?
                        Was natürlich bei mir auch ganz wichtig ist, das ein Batteriebetrieb möglich ist und da zählt jede Sekunde im Deepsleep die ich runterschrauben kann bzw. der ESP auch allgemein sparsam ist.

                        Laut Adafruit Spec ist aber bei dem „Friends“ bei 4,2Zoll (300x400) Schluss, oder?

                        JLeg 1 Reply Last reply Reply Quote 0
                        • JLeg
                          JLeg @draexler last edited by JLeg

                          @draexler
                          Ist ein 5,65‘‘ Display, 600 × 448 Pixel, 7 Farben 😏

                          Und ja, läuft als Arduinoprojekt, und einer fertigen Lib für das Display…

                          Edit: ja, die 32k vom Friendsshield sind natürlich viel zu klein, daher der FeatherS2 - der hat 8MB PSRAM für den Bildspeicher.

                          draexler 1 Reply Last reply Reply Quote 0
                          • draexler
                            draexler @JLeg last edited by draexler

                            Hab dem ganzen jetzt nochmal ein "Upgrade" unterzogen...
                            Problem war das die Lipo Akkus einen ziemlichen schnellen Spannungsabfall haben und ziemlich viel Kapazität deswegen nicht genutzt werden kann.
                            Des weiteren ist mit aufgefallen das die eingebaute WLAN Antenne in meinem Fall zu "schwach" auf der Brust ist.
                            Ich habe nun Lithium AA Akkus genommen mit 2200 mAh und 1,5V. Einmal in Reihe und einmal Parallel habe ich nun 3V und 4400mAh und die halten die Spannung auch ziemlich bis zum Schluss laut Datenblatt.
                            Den ESP32 habe ich ausgetauscht gegen den Adafruit ESP32 Feather V2 mit externen Antenne.

                            Bis jetzt läuft es super. Ich berichte weiter 🙂
                            IMG_7318.jpeg

                            1 Reply Last reply Reply Quote 4
                            • D
                              DoHo last edited by

                              Hallo @draexler,

                              Großes Lob für die Visualisierung! Ich bin einfach nur begeistert und würde sie gerne nachbauen, um unsere Photovoltaik-Daten anzuzeigen. Als Hardware möchte ich ebenfalls den Adafruit ESP 32 Feather V2 und ein Waveshare e Paper verwenden. Allerdings ein 5.83 inch Display.
                              Darf ich fragen, wie lange die Akkus halten? sleep_duration: 60min noch korrekt?

                              draexler 1 Reply Last reply Reply Quote 0
                              • draexler
                                draexler @DoHo last edited by draexler

                                @doho Hi, freut mich mega das es dir so gut gefällt 🙂

                                Wie lange die Akkus halten kann ich noch nicht sagen, da ich das Design mit den Lithium AA Akkus am 04. Februar in Betrieb genommen habe und diese immer noch laufen mit dieser Konfiguration 😉

                                deep_sleep:
                                  id: deep_sleep_1
                                  run_duration: 15s
                                  sleep_duration: 60min
                                

                                Wichtig ist das der Feather V2 eine externe Antenne braucht. Aufpassen beim bestellen der Antenne, die hat einen besonderen Anschluss.

                                Werde die Restlichen ESP´s die ich auf Akku laufen habe jetzt auf die Lithium AA Akkus umrüsten.

                                Edit: Gerade gesehen das es den Feather V2 mit und ohne Antenne gibt. Aber würde trotzdem auf eine externe Antenne setzen. Einfach bessere Werte,

                                D 1 Reply Last reply Reply Quote 0
                                • D
                                  DoHo @draexler last edited by

                                  Danke für den Hinweis. Ich werde jetzt mal die Hardware bestellen und dann bestimmt auf dich zurückkommen. Für den Ein oder Anderen vielleicht hilfreich, hier meine Hardware zusammengefasst:

                                  • Feather ESP32 V2 (Adafruit 5438)
                                  • Antenne (Adafruit 5445)
                                  • ePaper display (bei mir 5.83" e-Paper von Waveshare)
                                  • Treiber Platine für Display
                                  • 4 AA-Akkus
                                  • Gehäuse individuell 🙂

                                  @draexler bitte korrigier mich, wenn ich etwas vergessen haben sollte. Danke!

                                  draexler 1 Reply Last reply Reply Quote 0
                                  • draexler
                                    draexler @DoHo last edited by

                                    @doho Soweit alles korrekt, nur zu den Akkus die Ergänzung: AA Akku 1,5V 3300 mWh. Auf meinen Bild sollte erkennen zu sein welche ich genommen habe 😉 Da der ESP 3V benötigt -> einmal in Reihe und einmal Parallel sind das dann 3V und 4400mAh

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      smarthome2020 last edited by smarthome2020

                                      @draexler Das Projekt sieht richtig gut aus . Ich habe auch Interesse , aber noch einige Fragen:

                                      1. Was kostet das Projekt ca?
                                      2. Druckt ihr die Gehäuse selber oder gibt es auch fertig zu Kaufende (habe keinen entsprechenden Drucker) ? Das von @draexler verwendete Gehäuse wäre optimal für mich.
                                      draexler 1 Reply Last reply Reply Quote 0
                                      • draexler
                                        draexler @smarthome2020 last edited by

                                        @smarthome2020
                                        Alles circa Angaben
                                        Display inkl. Treiberplatine -> 70€
                                        ESP -> 20€
                                        Antenne -> 5€
                                        Akkus -> 30€
                                        Kleinigkeiten z.B. LIPO Batteriestecker, Batteriesilberdraht, Schraubklemmen für ESP -> 10€

                                        Also rund ca 130€ bis 150€

                                        Das Gehäuse ist selbstgedruckt... Das kriegt man also nirgends so zum kaufen.

                                        D A 2 Replies Last reply Reply Quote 0
                                        • D
                                          DoHo @draexler last edited by

                                          afa2be90-badb-4c83-8c5e-a27daa3991ae-grafik.png

                                          1 Reply Last reply Reply Quote 0
                                          • O
                                            oxident last edited by

                                            Möchte den Thread ungerne "hijacken", aber ich versuche mich gerade daran, das mit einem M5Paper zu realisieren. Kostenpunkt: 80 EUR inkl. Gehäuse

                                            draexler 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            903
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            15
                                            55
                                            11222
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo