I started this project with the goal of having a dedicated screen to show whatever was most important to me; a customizable display of highly currated information in a format that was easy to digest, and running on a platform that was always on. I wanted an alternative to checking my phone to get that information, whether it was the weather or my emails. Today it's come a long way but it still has far to go.

Home Dashboard Screenshot

This all runs on a Raspberry Pi, an original Model B, connected to a 24 inch monitor hanging on the wall above my desk. It's configured in portrait mode and it shows me the date, the current time and of course, the weather.

The app is built with Python and Pygame and runs in a headless Linux-based OS. Weather data is retrieved every 5 minutes using the free Open Weather Map API. Even though the display doesn't have nearly as much information as the default weather app on my iPhone, I find it's good enough to shut down the urge to grab my phone whenever I want to know how hot or cold it is outside or what time it is. The screen tells me the current oustide temperature and gives a 5 day forecast complete with highs and lows and an icon to indicate if it's going to be sunny, cloudy or rainy.

Beyond the current functionality, what's left to accomplish my original vision is to have something to help inform me of incoming emails. I plan to build something that will monitor my Gmail inbox and show a notification when I have an important email. This would be better than relying on my phone. I don't always keep my phone next to me and I wouldn't have as much control over what triggers the notification.

Introducing notifications brings with it a new problem - managing notifications. This isn't as difficult when you are building an app for a modern mobile device or a computer with a keyboard and mouse as it is for a device that doesn't have any inputs.

When dealing with notifications, the ability to manage them is key otherwise they can quickly become less convenience and more of a source of irritation. How do I deal with multiple notifications? How do I acknowledge a notification so it goes away?

One possible solution is to provide physical inputs in the form of buttons connected via the Pi's GPIO pins. These could be discreetly wired and mounted in a place that is accessible while sitting or standing. The buttons could also be used for other purposes such as navigating a menu or rotating through a series of security camera feeds.

Another solution could be to have some kind of sensor that can detect gestures so that I could wave my hand to acknowledge a notification. This could probably be done with OpenCV and a ESP32-Cam.

I could also make it so that no input is required and that notifications just expire after an amount of time. Or maybe in the case of emails, just marking an email as read when I'm in my inbox will cause the notification to disappear. Until I actually check my inbox I can just ignore the notification unless it's urgent. If I think about it, needing to clear notifications before they expire may be the edge case.

One feature I am currently working on which may help with this is a web-based interface hosted on the Pi that gives me access through the browser on any device connected to my network. What I have have currently as of version 0.5.0 is a control panel that allows me to change settings like the screen resolution and frequency for sending requests to the weather API. It also lets me restart the web server and display whenever certain changes are made.

Home Dashboard Control Panel

I think the control panel is the key to making this whole system easier to work with, customize and manage, for myself and especially for others, so I'm excited about the new possibilities it brings.

With the control panel in place, notifications might be something I try to tackle in the next couple of weeks.