Use ESPHome with e-ink Displays to blend in with your home decor!

Sure. You will need just to add next code to yours:

Code
external_components:
  - source:
      type: git
      url: https://github.com/guardmedia/esphome.git
      ref: waveshare-color-7
    components: [ waveshare_epaper, display ]

# Pins for Waveshare ePaper ESP Board
color:
  - id: color_black
    red: 0%
    green: 0%
    blue: 0%
  - id: color_white
    red: 100%
    green: 100%
    blue: 100%
  - id: COLOR_RED
    red: 100%
    green: 0%
    blue: 0%

But at the moment I do not use this solution, because with the latest updates of the ESPHome, the firmware is not flashing with it.

2 Likes

I have the exact same issue with showing the temperature! (And the same error codes “[W][font:129]: Encountered character without representation in font: ‘n’” etc.) - did you manage to get it right?

Hey Frederik, could you post a photo of your E-Ink display so I can see what is exactly wrong? For example, are all of the temperatures broken or just the biggest one?

After more than a month I was FINALLY able to get this up and running, huzzah!

The final hurdle is that the display does not seem to like Fahrenheit. Given that all of the forecast temperatures get along nicely I am not sure what the header does not want to display the letter F given that it is in fonts. The only change I made from the original code was changing the letter C to F which works for all of the other temperatures.

// Weather Section

        // it.image(0, 88, id(title_weather));

        it.printf(240, 84, id(font_title), color_text, TextAlign::TOP_CENTER, "WEATHER");

        it.printf(100, 158, id(font_mdi_large), color_text, TextAlign::TOP_CENTER, "%s", weather_icon_map[id(weather_condition_now).state.c_str()].c_str());

        it.printf(300, 158, id(font_large_bold), color_text, TextAlign::TOP_CENTER, "%2.0f°F", id(weather_temperature).state);

        it.printf(105, 282, id(font_small_book), color_text, TextAlign::TOP_CENTER, "%s", id(weather_timestamp_0).state.c_str());

        it.printf(105, 306, id(font_mdi_medium), color_text, TextAlign::TOP_CENTER, "%s", weather_icon_map[id(weather_condition_0).state.c_str()].c_str());

        it.printf(105, 354, id(font_small_bold), color_text, TextAlign::TOP_CENTER, "%2.0f°F", id(weather_temperature_0).state);

        it.printf(195, 282, id(font_small_book), color_text, TextAlign::TOP_CENTER, "%s", id(weather_timestamp_1).state.c_str());


I think you did not include F in the glyphs definition of font_small_bold.

1 Like

Thanks for the guides, got mine up and running a few days ago after spending a good chunk of time customising it. It’s my first foray into esphome and I’m loving it!

2 Likes

Would love to get your code!

That looks amazing! Would you mind to share the code?

My greatest thanks to @madelena for doing the legwork of finding the frames, screens, and ESP modules that made getting started so easy! I also appreciate you sharing your code us to get me up and running with a few things I was not sure how to do in ESPHome. Even with that I still learned quite a bit more (always learning…).

I’m not a big “screens” person when it comes to home automation. I believe that the home should be as passive as possible for the user and just react when it can without needing the user to do something. These screens fit in with that philosophy perfectly since they are not lit and therefore not demanding your attention. So far, this is the most excited I’ve been about deploying a home automation device. I now have 6 of them spread throughout the house. Data is beautiful!

The image above is my take on what data I want displayed in the home. Just sharing to inspire others who are also interested. (Some of the data is mocked up since it’s the weekend and not much was going on.)

  • Upper left – time, date, and day
  • Upper right – current weather temperature and condition
    • The feels like temperature is tucked in below the large º symbol. It only shows up when there is a difference of 2 degrees or more (blank otherwise).
    • Small horizontal line:
      • Above the line I have local weather warning icons (showing Air quality warning and UV above 5 warning icons). This is based on live sensor readings around the house.
      • Below the line you’ll see similar icons for alerts issued by the National Weather Service.
  • Upper middle – 4 day weather forecast
  • Lower middle – calendar events (or other house events like no internet, flood leak)
  • Large bottom section – commuting times based on Waze for next calendar entry
  • Bottom icons row – shows various icons of the state of the home and HA (door unlock, garage or window open, thermostat mode, internet down, home in maintenance bypass mode, etc.)

Thanks again to those who have already walked this path and then took the time to share it with others!

4 Likes

looking for a solution, to add my calendar events to esphome. has anyone a code-snippet?

regard

1 Like

I did this using automation, which exports the description of the event in input text.

samples please :slight_smile:

How are you guys getting the hourly weather forecast. I only get a weather entity but not the hourly ?!

It depends on which weather service integration you are using. I’m using met.no and it has 2 entities, one for daily forecast and one for hourly.

I also use met.no and only get 1 entity ?

That’s strange, I don’t remember anything special to get the hourly entity. Is it by any chance disabled by default and needs to be enabled? Or anything to do with location (I’m in Sweden).

Here are good examples on how to do that:

i tried this (see #94) in your link. at the moment it doesnt work for me.

I tried to remove and re-install it a few times but nothing. The strange thing is that I get the hourly forecast when I click on the entity in the entity explorer. But I have not found a way to actually access this data.

Yeah I have that to, but also a separate entity with just the hourly forecast.

I see now that when I add another I only get the one entity:

So my original integration “Home” has 2 separate entities, where I can use the hourly entity to get forecast for my display. The test “Work” does not. Something must have changed with the integration since I set up my original one.