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
ArduinoGxEPD2for controllling and drawing on the ePaperArduinoJsonfor decoding the response from Home AssistantRTCMemoryfor storing a counter and determine when to perform a full display refresh- fonctconvert from AdafruitGFX to convert fonts to header files
rsvg-convertto 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.hand fill out credentials (get the HA token from your Home Assistant profile page)- add
home-assistant/espdata.ymlto your Home Assistantconfiguration.ymland reload the configuration - open in VSCode with
PlatformIOextension installed - Connect the ES8266, Build, Upload
- Connect
D0/GPIO16to theRTSpin 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 😅)

