WeatherFlow ESPHome LILYGO T5-4.7 inch E-Paper Display Project

Hello Community!! I had some time to finish up my current set of ESPHome E Ink display screens. These are made for the LILYGO T5-4.7 inch E-Paper Ink Screen display with excellent guidance and community help! I’ve included a few pictures from the screens here:

WeatherFlow 4-Day Overview:

WeatherFlow 24-Hour Precipitation Forecast with 9-Room Temperature & Humidity:

WeatherFlow 3-Day Overview with 24-Hour Precipitation Forecast

Clock:

More details can be found on my ESPHome E Ink blog pages:

https://labs.lux4rd0.com/home-assistant/esphome/e-ink-display/

The example YAML files can be found on my GitHub:

It uses a few scripts in Home Assistant to gather weather and forecast details from your WeatherFlow device. They can be found on my Github as well:

Enjoy!! And thanks again for such a great community!!

10 Likes

Thanks a lot for sharing!

Something I’m stuck on is your YAML for the clock, you’re using “on_value” for a binary sensor from Home Assistant however EspHome doesn’t allow for on_value for a binary sensor and will give you an error, suggesting you use on_state. Am I missing something? How were you able to make that work?

Thanks!

@beacher - yeah - you got me on that! I noticed it when I was messing around with an update. I peeled off that screen from a group of screens that uses a “Page” string sensor to do an update and you’re right - it doesn’t support on_value - but on_state. However, when I tested that, it didn’t update since the state doesn’t actually change. Let me look at a better way to do that and I’ll post an update. Thanks for the catch!!

Awesome, thanks! :slight_smile:

@beacher - I’ve been working on updating this for you - I spent a fair amount of time testing MQTT vs. the ESPHome API and some other tweaks to see if I could get the battery usage down. Ultimately, it’s hard to tell where the improvements came from (if at all). I got it most reliable, down to 4 seconds awake and 54 seconds asleep. But there are still some times when it stays awake for 15 seconds every hour. And so I’m wondering if it makes sense to switch it back to just using the API, so there’s no additional dependency for MQTT. It changes the display refresh on which way I go. Sorry about that! Hope to have it updated soon!

In the short term - close to getting this iOS-inspired Weather screen finished up soon!

I’m looking to find or create a 3D printable vertical-orientated case for it… stay tuned!

Loving this idea! I’ve been using this display since reading some reddit posts a while back. @Lux4rd0 any reason to not use the data available from the Weatherflow Weather HACS integration? I already use that in HA for other things so trying to limit the API calls to WeatherFlow. Looks like all the needed data should be there?

@jmoflhrc - I started with that HACS integration, but I found that I needed to manipulate more of the original data to get the icons and graphical details that I wanted. Also, things like time and date and such made a little more sense for me at the time to just pull it myself exactly the way I needed to use it. My C++ skills are hacky and non-existent and there’s no way to easily manipulate the JSON data that’s stored by that integration in ESPHome. There’s probably a way to simplify my screen drawing code - but - yeah :slight_smile:

I may revisit it again if there’s interest. Others that don’t have a WeatherFlow have also asked about alternatives. :slight_smile:

Hi @Lux4rd0 and community, Thanks for sharing very nice code!
I am trying to implement your Clock code: homeassistant/lilygo_t5_clock.yaml at 8bb102e0926db8f70f2ae2315b5b27283c0ded46 · lux4rd0/homeassistant · GitHub
I manage to compile and integrate in HA, however the display on the device never get updated.
I have used the device before with code developed in PlatformIO so the HW should be OK.
Has anyone had a similar experience and solved the issue?
It seems to be related to the display update, when changing the statement

 update_interval: never

to

 update_interval: 60s

it works. I think it is related to the binary sensor ‘${devicename}_prevent_deep_sleep’ as it does not appear in HA as the GPIOs.

Did anyone find a solution to the issue when using on_state instead of on_value?