Inspired by Weatherman Dashboard for ESPHome. Implemented Partial display refresh for nicer appearance and Deep Sleep for longer battery life time.
- Waveshare 13187 7.5inch e-Paper link
- Waveshare 14138 e-Paper ESP8266 Driver Board link
- IKEA Ribba frame link
- TC4056A charging board link
- 2500mAH Lithium-Polymer battery link
Arduino
GxEPD2
for controllling and drawing on the ePaperArduinoJson
for decoding the response from Home AssistantRTCMemory
for storing a counter and determine when to perform a full display refresh- fonctconvert from AdafruitGFX to convert fonts to header files
rsvg-convert
to convert Material Icons svg to png (withfind . -type f -name "*.svg" -exec bash -c 'rsvg-convert -h 512 "$0" > "$0".png' {} \;
)- image2cpp for converting the created png files to header files with bitmaps
After boot, the ESP8288 makes a request to http_endpoint
(Home Assistant sensor endpoint for the custom epaper_esp8266_data
sensor) and retrieves all needed attributes as JSON. Afterwards, it renders the data to the ePaper display and goes to deep sleep for 10 minutes.
cp src/secrets.h.template src/secrets.h
and fill out credentials (get the HA token from your Home Assistant profile page)- add
home-assistant/espdata.yml
to your Home Assistantconfiguration.yml
and reload the configuration - open in VSCode with
PlatformIO
extension installed - Connect the ES8266, Build, Upload
- Connect
D0/GPIO16
to theRTS
pin in order to get the deep-sleep working (afterwards, resetting and holding the flash button is needed for flashing) - Don't connect USB and battery at the same time
- fontconvert: if the degree symbol should be included, define the right end character. I.e.
./fontconvert GothamRounded-Bold.otf 48 32 177
- Battery level indicator (similar to here
- OTA Updates via HTTP server
- Presence: show people present/away
(soldering + the mount on the back could be improved 😅)