This is a demo project made with the intention to learn more about C++ and ESP-IDF framework and about epaper partial refresh. Check a small demo of how it updates:
ESP-IDF is a great framework to build small embedded devices. This project does not use Arduino-esp32 framework but only Espressif IoT framework. As a pre-requisite to compile this you should be familiar with ESP-IDF framework and know how to use the idf.py tool to build and flash your ESP32 board.
Disclaimer: Because of the nature of ESP32 deepsleep this clock it's not precise. It may differ 4 or 5 minutes a day, depending on temperature and other factors that are deeply out of my understanding. That's precisely why is cool to research and use this concepts for other Internet of the Things applications.
The idea is to have fun making an over-engineered, imprecise, and cool ESP32 digital epaper clock that is fully customizable. Along the journey you can gain experience with many Espressif things, like NVS key-value storage, epaper displays and using C++ in ESP-IDF.
It's a nice example to learn how to store values in Non Volatile Storage of the ESP32 where you can store value types like integers and \0 terminated strings in a way that is persisted even if the chip is powered off. I call \0 terminated strings char arrays but I'm not sure if that is the best denomination. Is also interesting to practice doing short internet queries and to learn how to do it in Espressif's own IoT development framework without any Arduino boilerplate functions on top.