Weatherstation Compass needle

Hello, can someone tell me how I can point the compass needle in the correct wind direction?

What I have as a data point is the degree number via MQTT (e.g. 243).

So far I’m only showing one picture:

     lambda: | -

       // NEEDLE COMPASS
       it.image (176, 325, id (needle));

But I have no idea what the code should look like.
Something with transform, probably. No idea.
Hope someone can give me the YAML for it.

Thanks very much.

2 Likes

I think you should decide how many directions you want to identify, 16 is probably enough at that scale.

Then have 16 images like needle-N, needle-NNE, needle-NE.

Then a series of If/Then to choose which needle to display.

I don’t think ESP-Home can rotate an image.
I think you need to create n number of images that you display depending on the direction.
8 or 16 is probably good enough

1 Like

If you do:

round(direction / 22.5) * 22.5 then you will get the rounded to the closest 16 part of 360 degrees.

So… round(243/22.5)*22.5 = 247.5

If you now replace . with nothing then you will get 2475, and that is what I would name the image (and .png) to display

The hard part is probably to make sure it rotates around the center of the image and not top left as “usual”.

Unrelated, but neat hardware. What is it?

1 Like

I think not quite.

Take the example of when it should point to N (north). It should point to N when the direction is betweeen 348.75 deg (or -11.25deg) and 11.25 deg.

It’s a Waveshare epaper 7.5 display and a Waveshare Universal e-Paper Driver Board. The frame is built by yourself.

1 Like

Something like this?

When you get it all working to your satisfaction please post your YAML - thanks.

That is what it does(?)

See this Excel calculation:

image

The only thing that perhaps should be added to the calculation is a modulo 360 to make sure it gives 0 instead of 360.

Yes, exactly. I use the driver board from Waveshare. So you don’t need the HAT.
Yes, I can share the YAML :slight_smile:
Except for the compass, everything is already running :wink:

Then I will now solve that with the “16 Pics” and “if/then queries”. Thanks very much :slight_smile:

Complete :slight_smile: And it works. This is the YAML and the pictures.

esphome:
  name: wohnzimmer-wetterdisplay
  platform: ESP32
  board: esp32dev
  
  on_boot:
    priority: -10
    then:
      - delay: 7s
      - component.update: epaper
  
<<: !include secrets.yaml

mqtt:
  broker: 192.168.X.X
  username: XXXXX
  password: XXXXXXX
  
  # OTA MODUS
  on_message:
    - topic: ADMINESP/OTA/Wetterdisplay_Wohnzimmer
      payload: 'ON'
      then:
        - deep_sleep.prevent: deep_sleep_1
    - topic: ADMINESP/DEEPSLEEP/Wetterdisplay_Wohnzimmer
      payload: 'ON'
      then:
        - deep_sleep.enter: deep_sleep_1
  
api:
    password: 'XXXXXX'
  
ota:
  password: "XXXXXXXX"
  
logger:

##############

captive_portal:

font:
  # Schrift für Kästchenbeschriftung z.B. Innen
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
    id: VerdanaBold24
    size: 24
    # Schrift für Wertebezeichnungen z.B. MAX TEMPERATUR
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/Verdana.ttf"
    id: Verdana20
    size: 20
    # Schrift für Werte z.B. MAX TEMPERATUR
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
    id: VerdanaBold20
    size: 20
    # Schrift für Trend Temperatur Werte
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/Materialdesignicons-Webfont.ttf"
    id: Icons30
    size: 30
    glyphs:
    - "\U000F005E" # Pfeil oben
    - "\U000F0046" # Pfeil unten
    - "\U000F0055" # Pfeil gleich
    # Schrift für Zentrale Wichtige Werte z.B. Temperatur Innen
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
    id: VerdanaBold32
    size: 32
  # Schrift für ORTE WIND
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
    id: VerdanaBold14
    size: 14
    # Schrift für Trend Tage
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
    id: VerdanaBold15
    size: 15
    # Schrift für Trend Werte
  - file: "/opt/iobroker/iobroker-data/esphome.0/Fonts/VerdanaBold.ttf"
    id: VerdanaBold17
    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/Wetter/VISWeather.png"
    id: VISWeather
    resize: 800x480
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/N-Nadel.png"
    id: N_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/NNE-Nadel.png"
    id: NNE_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/NE-Nadel.png"
    id: NE_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/ENE-Nadel.png"
    id: ENE_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/E-Nadel.png"
    id: E_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/ESE-Nadel.png"
    id: ESE_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/SE-Nadel.png"
    id: SE_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/SSE-Nadel.png"
    id: SSE_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/S-Nadel.png"
    id: S_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/SSW-Nadel.png"
    id: SSW_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/SW-Nadel.png"
    id: SW_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/WSW-Nadel.png"
    id: WSW_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/W-Nadel.png"
    id: W_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/WNW-Nadel.png"
    id: WNW_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/NW-Nadel.png"
    id: NW_Nadel
    resize: 95x95
  - file: "/opt/iobroker/iobroker-data/esphome.0/Pictures/Wetter/Compassnadel/NNW-Nadel.png"
    id: NNW_Nadel
    resize: 95x95
    
text_sensor:
    #MQTT SENSOR HEUTE DATUM
  - platform: mqtt_subscribe
    name: "Heute-Datum"
    id: HeuteDatum
    topic: Kalender/Heute/Datum
    #MQTT SENSOR ASTRO SONNENAUFGANG
  - platform: mqtt_subscribe
    name: "Astro-Sonnenaufgang"
    id: AstroSonnenaufgang
    topic: Astro/Sonnenaufgang
    #MQTT SENSOR ASTRO SONNENUNTERGANG
  - platform: mqtt_subscribe
    name: "Astro-Sonnenuntergang"
    id: AstroSonnenuntergang
    topic: Astro/Sonnenuntergang
    #MQTT SENSOR TEMPERATUR INNEN
  - platform: mqtt_subscribe
    name: "Innen-Temperatur"
    id: TemperaturInnen
    topic: Wetter/Innen/Temperatur
    #MQTT SENSOR TEMPERATURTREND INNEN
  - platform: mqtt_subscribe
    name: "Innen-TemperaturTrend"
    id: TemperaturtrendInnen
    topic: Wetter/Innen/Trend
    #MQTT SENSOR LUFTFEUCHTIGKEIT INNEN
  - platform: mqtt_subscribe
    name: "Innen-Luftfeuchtigkeit"
    id: LuftfeuchtigkeitInnen
    topic: Wetter/Innen/Luftfeuchtigkeit
    #MQTT SENSOR LUFTDRUCK INNEN
  - platform: mqtt_subscribe
    name: "Innen-Luftdruck"
    id: LuftdruckInnen
    topic: Wetter/Innen/Luftdruck
    #MQTT SENSOR CO2 INNEN
  - platform: mqtt_subscribe
    name: "Innen-CO2"
    id: CO2Innen
    topic: Wetter/Innen/CO2
    #MQTT SENSOR MAX TEMPERATUR INNEN
  - platform: mqtt_subscribe
    name: "Innen-MaxTemperatur"
    id: MaxTemperaturInnen
    topic: Wetter/Innen/MaxTemperatur
    #MQTT SENSOR MIN TEMPERATUR INNEN
  - platform: mqtt_subscribe
    name: "Innen-MinTemperatur"
    id: MinTemperaturInnen
    topic: Wetter/Innen/MinTemperatur
    #MQTT SENSOR TEMPERATUR AUSSEN
  - platform: mqtt_subscribe
    name: "Aussen-Temperatur"
    id: TemperaturAussen
    topic: Wetter/Aussen/Temperatur
    #MQTT SENSOR TEMPERATURTREND AUSSEN
  - platform: mqtt_subscribe
    name: "Aussen-TemperaturTrend"
    id: TemperaturtrendAussen
    topic: Wetter/Aussen/Trend
    #MQTT SENSOR LUFTFEUCHTIGKEIT AUSSEN
  - platform: mqtt_subscribe
    name: "Aussen-Luftfeuchtigkeit"
    id: LuftfeuchtigkeitAussen
    topic: Wetter/Aussen/Luftfeuchtigkeit
    #MQTT SENSOR MAX TEMPERATUR AUSSEN
  - platform: mqtt_subscribe
    name: "Aussen-MaxTemperatur"
    id: MaxTemperaturAussen
    topic: Wetter/Aussen/MaxTemperatur
    #MQTT SENSOR MIN TEMPERATUR AUSSEN
  - platform: mqtt_subscribe
    name: "Aussen-MinTemperatur"
    id: MinTemperaturAussen
    topic: Wetter/Aussen/MinTemperatur
    #MQTT SENSOR NIEDERSCHLAG STUNDE AUSSEN
  - platform: mqtt_subscribe
    name: "Regen-Stunde"
    id: RegenStundeAussen
    topic: Wetter/Regen/Stunde
    #MQTT SENSOR NIEDERSCHLAG HEUTE AUSSEN
  - platform: mqtt_subscribe
    name: "Regen-Heute"
    id: RegenHeuteAussen
    topic: Wetter/Regen/Heute
    #MQTT SENSOR WINDRICHTUNG AUSSEN
  - platform: mqtt_subscribe
    name: "Wind-Richtung"
    id: WindRichtungAussen
    topic: Wetter/Wind/Richtung
    #MQTT SENSOR WINDGESCHWINDIGKEIT AUSSEN
  - platform: mqtt_subscribe
    name: "Wind-Geschwindikgeit"
    id: WindGeschwindikgeitAussen
    topic: Wetter/Wind/Geschwindikgeit
    #MQTT SENSOR TAG MORGEN
  - platform: mqtt_subscribe
    name: "Trend-Tag-Morgen"
    id: TagMorgen
    topic: Wetter/Trend/Tag/Morgen
    #MQTT SENSOR TAG ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-Tag-UEbermorgen"
    id: TagUEbermorgen
    topic: Wetter/Trend/Tag/Uebermorgen
    #MQTT SENSOR TAG ÜBER-ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-Tag-UEberUebermorgen"
    id: TagUEberUebermorgen
    topic: Wetter/Trend/Tag/UEberUebermorgen
    #MQTT SENSOR WETTERSYMBOL MORGEN
  - platform: mqtt_subscribe
    name: "Trend-Wettersymbol-Morgen"
    id: WettersymbolMorgen
    topic: Wetter/Trend/Wettersymbol/Morgen
    #MQTT SENSOR WETTERSYMBOL ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-Wettersymbol-UEbermorgen"
    id: WettersymbolUEbermorgen
    topic: Wetter/Trend/Wettersymbol/Uebermorgen
    #MQTT SENSOR WETTERSYMBOL ÜBER-ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-Wettersymbol-UEberUebermorgen"
    id: WettersymbolUEberUebermorgen
    topic: Wetter/Trend/Wettersymbol/UEberUebermorgen
    #MQTT SENSOR TEMPERATUR MAX MORGEN
  - platform: mqtt_subscribe
    name: "Trend-MaxTemperatur-Morgen"
    id: MaxTempMorgen
    topic: Wetter/Trend/MaxTemperatur/Morgen
    #MQTT SENSOR TEMPERATUR MIN MORGEN
  - platform: mqtt_subscribe
    name: "Trend-MinTemperatur-Morgen"
    id: MinTempMorgen
    topic: Wetter/Trend/MinTemperatur/Morgen
    #MQTT SENSOR TEMPERATUR MAX ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-MaxTemperatur-UEbermorgen"
    id: MaxTempUEbermorgen
    topic: Wetter/Trend/MaxTemperatur/UEbermorgen
    #MQTT SENSOR TEMPERATUR MIN ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-MinTemperatur-UEbermorgen"
    id: MinTempUEbermorgen
    topic: Wetter/Trend/MinTemperatur/UEbermorgen
    #MQTT SENSOR TEMPERATUR MAX ÜBER-ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-MaxTemperatur-UEberUebermorgen"
    id: MaxTempUEberUebermorgen
    topic: Wetter/Trend/MaxTemperatur/UEberUebermorgen
    #MQTT SENSOR TEMPERATUR MIN ÜBER-ÜBERMORGEN
  - platform: mqtt_subscribe
    name: "Trend-MinTemperatur-UEberUebermorgen"
    id: MinTempUEberUebermorgen
    topic: Wetter/Trend/MinTemperatur/UEberUebermorgen
    
time:
 - platform: sntp
   id: current_time
   timezone: Europe/Berlin
   servers : ptbtime1.ptb.de

deep_sleep:
  id: deep_sleep_1
  run_duration: 22s
  sleep_duration: 10min
    
spi:
  clk_pin: 13
  mosi_pin: 14
 
display:
  - platform: waveshare_epaper
    cs_pin: 15
    dc_pin: 27
    busy_pin: 25
    reset_pin: 26
    model: 7.50inv2
    update_interval: never
    id: epaper
 
    lambda: |-
      // HINTERGRUNDBILD
      it.image(0, 0, id(VISWeather));
      
      //ÜBERSCHRIFTEN
      //INNEN
      it.print(31, 15, id(VerdanaBold24), "INNEN");
      //WIND
      it.print(33, 242, id(VerdanaBold24), "WIND");
      //AUSSEN
      it.print(406, 15, id(VerdanaBold24), "AUSSEN");
      //REGEN
      it.print(414, 192, id(VerdanaBold24), "REGEN");
      //TREND
      it.print(414, 327, id(VerdanaBold24), "TREND");
      
      //INNEN WERTEBEZEICHNUNGEN
      //TEMPERATUR
      it.print(26, 49, id(Verdana20), "Temperatur");
      //TEMPERATURTREND
      it.print(26, 76, id(Verdana20), "Temperaturtrend");
      //LUFTFEUCHTIKEIT
      it.print(26, 103, id(Verdana20), "Luftfeuchtigkeit");
      //LUFTDRUCK
      it.print(26, 131, id(Verdana20), "Luftdruck");
      //CO2
      it.print(26, 158, id(Verdana20), "CO2");
      //MAX TEMPERATUR
      it.print(26, 185, id(Verdana20), "MAX Temperatur");
      //MIN TEMPERATUR
      it.print(26, 212, id(Verdana20), "MIN Temperatur");
      
      //AUSSEN WERTEBEZEICHNUNGEN
      //TEMPERATUR
      it.print(412, 49, id(Verdana20), "Temperatur");
      //TEMPERATURTREND
      it.print(412, 76, id(Verdana20), "Temperaturtrend");
      //LUFTFEUCHTIKEIT
      it.print(412, 103, id(Verdana20), "Luftfeuchtigkeit");
      //MAX TEMPERATUR
      it.print(412, 131, id(Verdana20), "MAX Temperatur");
      //MIN TEMPERATUR
      it.print(412, 158, id(Verdana20), "MIN Temperatur");
      
      //REGEN
      //NIEDERSCHLAG LETZTE STUNDE 1 ZEILE
      it.print(412, 227, id(Verdana20), "Niederschlag");
      //NIEDERSCHLAG LETZTE STUNDE 2 ZEILE
      it.print(412, 249, id(Verdana20), "letzte Stunde");
      //NIEDERSCHLAG HEUTE 1 ZEILE
      it.print(412, 276, id(Verdana20), "Niederschlag");
      //NIEDERSCHLAG HEUTE 2 ZEILE
      it.print(412, 297, id(Verdana20), "Heute");
      
      //WIND ORTSBEZEICHNUNGEN
      //BAD ENDORF
      it.print(252, 249, id(VerdanaBold14), "Bad Endorf");
      //ROSENHEIM
      it.print(28, 314, id(VerdanaBold14), "Rosenheim");
      //PRIEN
      it.print(301, 316, id(VerdanaBold14), "Prien");
      //SAMERBERG
      it.print(109, 442, id(VerdanaBold14), "Samerberg");
      
      //INNEN WERTE
      //Temperatur
      it.printf(374, 38, id(VerdanaBold32), TextAlign::TOP_RIGHT, "%s", id(TemperaturInnen).state.c_str());
      //TEMPERATURTREND Stabil
      if (id(TemperaturtrendInnen).state == "Stabil") {
      it.print(352, 74, id(Icons30), "\U000F0055");}
      //TEMPERATURTREND Steigend
      if (id(TemperaturtrendInnen).state == "Steigend") {
      it.print(352, 74, id(Icons30), "\U000F005E");}
      //TEMPERATURTREND Fallend
      if (id(TemperaturtrendInnen).state == "Fallend") {
      it.print(352, 74, id(Icons30), "\U000F0046");}
      //LUFTFEUCHTIKEIT
      it.printf(374, 103, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(LuftfeuchtigkeitInnen).state.c_str());
      //LUFTDRUCK
      it.printf(374, 131, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(LuftdruckInnen).state.c_str());
      //CO2
      it.printf(374, 158, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(CO2Innen).state.c_str());
      //MAX TEMPERATUR
      it.printf(374, 185, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(MaxTemperaturInnen).state.c_str());
      //MIN TEMPERATUR
      it.printf(374, 212, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(MinTemperaturInnen).state.c_str());
      
      //AUSSEN WERTE
      //Temperatur
      it.printf(760, 37, id(VerdanaBold32), TextAlign::TOP_RIGHT, "%s", id(TemperaturAussen).state.c_str());
      //TEMPERATURTREND Stabil
      if (id(TemperaturtrendAussen).state == "Stabil") {
      it.print(738, 73, id(Icons30), "\U000F0055");}
      //TEMPERATURTREND Steigend
      if (id(TemperaturtrendAussen).state == "Steigend") {
      it.print(738, 73, id(Icons30), "\U000F005E");}
      //TEMPERATURTREND Fallend
      if (id(TemperaturtrendAussen).state == "Fallend") {
      it.print(738, 73, id(Icons30), "\U000F0046");}
      //LUFTFEUCHTIKEIT
      it.printf(760, 102, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(LuftfeuchtigkeitAussen).state.c_str());
      //MAX TEMPERATUR
      it.printf(760, 130, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(MaxTemperaturAussen).state.c_str());
      //MIN TEMPERATUR
      it.printf(760, 157, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(MinTemperaturAussen).state.c_str());
      
      //REGEN WERTE
      //REGEN STUNDE
      it.printf(760, 236, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(RegenStundeAussen).state.c_str());
      //REGEN HEUTE
      it.printf(760, 286, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(RegenHeuteAussen).state.c_str());
      
      //WIND NADEL SYMBOL
      //WIND NADEL N
      if (id(WindRichtungAussen).state == "N") {
      it.image(176, 325, id(N_Nadel));}
      //WIND NADEL NNE
      if (id(WindRichtungAussen).state == "NNE") {
      it.image(176, 325, id(NNE_Nadel));}
      //WIND NADEL NE
      if (id(WindRichtungAussen).state == "NE") {
      it.image(176, 325, id(NE_Nadel));}
      //WIND NADEL ENE
      if (id(WindRichtungAussen).state == "ENE") {
      it.image(176, 325, id(ENE_Nadel));}
      //WIND NADEL E
      if (id(WindRichtungAussen).state == "E") {
      it.image(176, 325, id(E_Nadel));}
      //WIND NADEL ESE
      if (id(WindRichtungAussen).state == "ESE") {
      it.image(176, 325, id(ESE_Nadel));}
      //WIND NADEL SE
      if (id(WindRichtungAussen).state == "SE") {
      it.image(176, 325, id(SE_Nadel));}
      //WIND NADEL SSE
      if (id(WindRichtungAussen).state == "SSE") {
      it.image(176, 325, id(SSE_Nadel));}
      //WIND NADEL S
      if (id(WindRichtungAussen).state == "S") {
      it.image(176, 325, id(S_Nadel));}
      //WIND NADEL SSW
      if (id(WindRichtungAussen).state == "SSW") {
      it.image(176, 325, id(SSW_Nadel));}
      //WIND NADEL SW
      if (id(WindRichtungAussen).state == "SW") {
      it.image(176, 325, id(SW_Nadel));}
      //WIND NADEL WSW
      if (id(WindRichtungAussen).state == "WSW") {
      it.image(176, 325, id(WSW_Nadel));}
      //WIND NADEL W
      if (id(WindRichtungAussen).state == "W") {
      it.image(176, 325, id(W_Nadel));}
      //WIND NADEL WNW
      if (id(WindRichtungAussen).state == "WNW") {
      it.image(176, 325, id(WNW_Nadel));}
      //WIND NADEL NW
      if (id(WindRichtungAussen).state == "NW") {
      it.image(176, 325, id(NW_Nadel));}
      //WIND NADEL NNW
      if (id(WindRichtungAussen).state == "NNW") {
      it.image(176, 325, id(NNW_Nadel));}
  
      //WIND WERTE
      //WINDGESCHWINDIGKEIT
      it.printf(380, 433, id(VerdanaBold20), TextAlign::TOP_RIGHT, "%s", id(WindGeschwindikgeitAussen).state.c_str());
      
      //TREND TAGE WERTE
      //MORGEN TAG
      it.printf(469, 439, id(VerdanaBold15), TextAlign::TOP_CENTER, "%s", id(TagMorgen).state.c_str());
      //ÜBERMORGEN TAG
      it.printf(590, 439, id(VerdanaBold15), TextAlign::TOP_CENTER, "%s", id(TagUEbermorgen).state.c_str());
      //ÜBER-ÜBERMORGEN TAG
      it.printf(708, 439, 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(440, 364, id(Icons60), "\U000F0599");}
      //SYMBOL MORGEN STATE 2
      if (id(WettersymbolMorgen).state == "2") {
      it.print(440, 364, id(Icons60), "\U000F0595");}
      //SYMBOL MORGEN STATE 3
      if (id(WettersymbolMorgen).state == "3") {
      it.print(440, 364, id(Icons60), "\U000F0590");}
      //SYMBOL MORGEN STATE 4
      if (id(WettersymbolMorgen).state == "4") {
      it.print(440, 364, id(Icons60), "\U000F0597");}
      //SYMBOL MORGEN STATE 5
      if (id(WettersymbolMorgen).state == "5") {
      it.print(440, 364, id(Icons60), "\U000F0596");}
      //SYMBOL MORGEN STATE 6
      if (id(WettersymbolMorgen).state == "6") {
      it.print(440, 364, id(Icons60), "\U000F0593");}
      //SYMBOL MORGEN STATE 7
      if (id(WettersymbolMorgen).state == "7") {
      it.print(440, 364, id(Icons60), "\U000F0592");}
      //SYMBOL MORGEN STATE 8
      if (id(WettersymbolMorgen).state == "8") {
      it.print(440, 364, id(Icons60), "\U000F0598");}
      //TREND SYMBOL ÜBERMORGEN
      //SYMBOL ÜBERMORGEN STATE 1
      if (id(WettersymbolUEbermorgen).state == "1") {
      it.print(560, 364, id(Icons60), "\U000F0599");}
      //SYMBOL ÜBERMORGEN STATE 2
      if (id(WettersymbolUEbermorgen).state == "2") {
      it.print(560, 364, id(Icons60), "\U000F0595");}
      //SYMBOL ÜBERMORGEN STATE 3
      if (id(WettersymbolUEbermorgen).state == "3") {
      it.print(560, 364, id(Icons60), "\U000F0590");}
      //SYMBOL ÜBERMORGEN STATE 4
      if (id(WettersymbolUEbermorgen).state == "4") {
      it.print(560, 364, id(Icons60), "\U000F0597");}
      //SYMBOL ÜBERMORGEN STATE 5
      if (id(WettersymbolUEbermorgen).state == "5") {
      it.print(560, 364, id(Icons60), "\U000F0596");}
      //SYMBOL ÜBERMORGEN STATE 6
      if (id(WettersymbolUEbermorgen).state == "6") {
      it.print(560, 364, id(Icons60), "\U000F0593");}
      //SYMBOL ÜBERMORGEN STATE 7
      if (id(WettersymbolUEbermorgen).state == "7") {
      it.print(560, 364, id(Icons60), "\U000F0592");}
      //SYMBOL ÜBERMORGEN STATE 8
      if (id(WettersymbolUEbermorgen).state == "8") {
      it.print(560, 364, id(Icons60), "\U000F0598");}
      //TREND SYMBOL ÜBER-ÜBERMORGEN
      //SYMBOL ÜBER-ÜBERMORGEN STATE 1
      if (id(WettersymbolUEberUebermorgen).state == "1") {
      it.print(680, 364, id(Icons60), "\U000F0599");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 2
      if (id(WettersymbolUEberUebermorgen).state == "2") {
      it.print(680, 364, id(Icons60), "\U000F0595");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 3
      if (id(WettersymbolUEberUebermorgen).state == "3") {
      it.print(680, 364, id(Icons60), "\U000F0590");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 4
      if (id(WettersymbolUEberUebermorgen).state == "4") {
      it.print(680, 364, id(Icons60), "\U000F0597");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 5
      if (id(WettersymbolUEberUebermorgen).state == "5") {
      it.print(680, 364, id(Icons60), "\U000F0596");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 6
      if (id(WettersymbolUEberUebermorgen).state == "6") {
      it.print(680, 364, id(Icons60), "\U000F0593");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 7
      if (id(WettersymbolUEberUebermorgen).state == "7") {
      it.print(680, 364, id(Icons60), "\U000F0592");}
      //SYMBOL ÜBER-ÜBERMORGEN STATE 8
      if (id(WettersymbolUEberUebermorgen).state == "8") {
      it.print(680, 364, id(Icons60), "\U000F0598");}

      //TREND TAGE TEMPERATUR
      //MORGEN MAX TEMPERATUR
      it.printf(446, 419, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MaxTempMorgen).state.c_str());
      //MORGEN MIN TEMPERATUR
      it.printf(492, 419, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MinTempMorgen).state.c_str());
      //ÜBERMORGEN MAX TEMPERATUR
      it.printf(566, 419, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MaxTempUEbermorgen).state.c_str());
      //ÜBERMORGEN MIN TEMPERATUR
      it.printf(612, 419, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MinTempUEbermorgen).state.c_str());
      //ÜBER-ÜBERMORGEN MAX TEMPERATUR
      it.printf(687, 419, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MaxTempUEberUebermorgen).state.c_str());
      //ÜBER-ÜBERMORGEN MIN TEMPERATUR
      it.printf(733, 419, id(VerdanaBold17), TextAlign::TOP_CENTER, "%s", id(MinTempUEberUebermorgen).state.c_str());


E-Nadel
ENE-Nadel
ESE-Nadel
N-Nadel
NE-Nadel
NNE-Nadel
NNW-Nadel
NW-Nadel
S-Nadel
SE-Nadel
SSE-Nadel
SSW-Nadel
SW-Nadel
W-Nadel
WNW-Nadel
WSW-Nadel

6 Likes

Thanks. I assume you are running this from a battery? Just guessing because of the deep sleep commands.

If so - what size battery and how much life do you expect out of it between charges?

So I’ve been running it since Saturday. 4 days later I connected the battery to the charger and it showed 98%. Let’s see what it looks like in a few days or weeks :wink:
This is the specification 18650 Li-Ion 3.7 V 3400 mAh

1 Like

Very cool.
I don’t have experience with ePaper. Isn’t the long, flickering, refreshes I saw on video too much of a distraction?

If you have short refreshes then yes.
But the main goal of ePaper is to display more or less static data.
Having a refresh rate of five minutes is most of the time not an issue (except for time, but even then is five minutes that bad?)

1 Like

I refresh every 10 minutes. You need luck to see that. You don’t look at it all the time :wink: The refresh process takes about 2 seconds

Hi @draexler

I am currently starting with my e-paper display. (battery powered).
I’ve started to read about all this deep sleep stuff. I have mqtt already running on my Home Assistant to include my tasmota devices.

Now… My newbie question:
How do I send these messages from your code below to the ESP?

Thank you!

mqtt:
  broker: 192.168.X.X
  username: XXXXX
  password: XXXXXXX
  
  # OTA MODUS
  on_message:
    - topic: ADMINESP/OTA/Wetterdisplay_Wohnzimmer
      payload: 'ON'
      then:
        - deep_sleep.prevent: deep_sleep_1
    - topic: ADMINESP/DEEPSLEEP/Wetterdisplay_Wohnzimmer
      payload: 'ON'
      then:
        - deep_sleep.enter: deep_sleep_1

Best Regards
sorted