This is a E-ink dashboard that provides real-time information pulled from API using a Raspberry Pi Zero.
I've always been interested in projects that provide you real-time information from selected sources, seeing people doing smart mirror projects made me want to do one for myself, one of the biggest reasons that I ended up doing this project was to help my partner in life in her mornings, she uses transit to go to work and this dashboard would provide her information of coming buses to our closest stops and what the current weather would be at the moment.
I opted to use an e-paper display instead of an LCD due low power consumption, I've seen a lot of projects that provide you things like the weather, calendars or a task list that use a normal raspberry pi, I wanted something that could be hanged in the wall and possibly hidden within the frame, the raspberry pi zero w was a pretty good option.
I had some knowledge of python from my work but still wanted to improve and learn more, this project helped me improve greatly on it, reading the instructions from the e-paper hat and seeing how other projects worked they provided me a great example.
The way it works its pretty simple, you register on the site where you want to pull the information for an API key, then using the requests library to provide you a JSON list, once you have the information you are looking for you only need to format it to your liking, render it into a PNG with the PIL library and send it to the e-paper display.
The first version I created, got the modules for transit (4 stops with 2 times each), the weather (current and 2 days forecast) and regular monthly calendar.
I kept looking what else to add and posted it in a couple raspberry pi facebook groups for feedback, they did seemed to like it and they told me a couple more modules that be interested seeing as well, I myself got quite interested in a e-ink project that was used as a shopping list using google sheets, so I decided to investigate about it on how to apply something similar to the project.
After some time of learning, trial and error I finally got the task list module ready, getting you credentials/API key from google cloud platform felt like quite a journey, I'm glad there are tutorials that can point you where to go step by step.
Once I had the grasp of how things work I moved on making more modules, version 2.0 ended up with the next new modules.
- Currency module (5 currencies of your choice converted to your local currency), including bitcoin and Ethereum information
- Stocks module (5 stocks of your choice converted to your local currency)
- The news (provides you 5 news titles from your country and 5 from selected sources, they change between each other every 15 minutes)
- Google meetings: provide you the events from your google calendar
I wanted to create an easy way for me and the people that get to use the code in their projects to modify the settings values without having to go everytime into the code, I already made the code to read the settings values from a centralized JSON file but still wanted something simpler, like a web page.
So I decided to research how to do web development, at first I was thinking of doing PHP for my forms but once again the great people of the facebook group recommended me to learn flask since I was already into python, looking at tutorials I wasted no time in making the webform, making sure that the saved values in the form are saved properly in my JSON file.
Once I had that working I only needed to setup gunicorn as my application server and nginx as my reverse proxy, the results are encouraging and I'm happy with them.
Source: E-ink Dashboard