This project consists of a dashboard displayed on an E-Paper screen, showing the most important information of the day: weather conditions, rain probability, bus stops (in this case, using GTT stops), and a special calendar synchronization between two different calendars. The calendars can belong to the same person or two individuals who want to share their tasks quickly and efficiently on a daily basis.
The electronics, HTTP server, and HTTP client are implemented in C and C++, while the frontend of the configuration website is written in HTML, CSS, and JavaScript.
The tasks are managed using a multithreading approach with FreeRTOS.
TODO
- ESP-IDF installed and properly configured
- ESP32 toolchain
- Python
- An ngrok account with a static domain configured
- A Google Calendar account with API access enabled
- A static IP configured for the ESP32 in the router
- A Google account with a valid email and Google Calendar API enabled
- Rename
.env.example
to.env
andstart_ngrok.sh.example
tostart_ngrok.sh
- Run
fetch.py
, and in a separate shell, execute./start_ngrok.sh
- Place a
cacert.pem
file containing the necessary SSL certificates in thespiffs
directory to enable HTTPS communication
To compile and flash the firmware:
idf.py build
idf.py flash
idf.py monitor
TODO
The project is structured as follow:
components/
Adafruit-GFX/
- A graphics library used for drawing on displays. GithubCalEPD/
- A library for controlling e-paper displays. Githubclient/
- Manages communication with external APIs, including HTTPS requests and OAuth2 authentication.env_var/
- Handles environment variables from a.env
fileperipherals/
- TODO, handles sensorsscreen/
- Manages the display logic, including rendering the timeline and updating visuals.server/
- Implements the embedded HTTP server for handling requestsutils/
- Utility functions and helper modules used throughout the project.
main/
- Entry pointspiffs/
- Stores files in the SPIFFS (SPI Flash File System), used for configuration and assetspartitions.csv
- Defines the partition table for the firmware..env.example
- Example of.env
feth.py
- Converts.env
into a header filestart_ngrok.sh.example
- Performs port forwarding to obtain the redirect code from the Google API
A special thanks to:
- madbob for the GTT API
- martinberlin for the e-paper utilities
- zsegre for the JSON parser
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
You are free to use, modify, and distribute this software, but any modifications must also be released under the same license.
See the LICENSE file for more details.