The idea for Morning Dash came about as a way to simplify my morning routine. I wanted to automate away the repetitive tasks that I was doing every morning. This included seeing what the high and low temperatures were for the day and if there was a chance of rain. I would then check my reminders and calendar to see what I needed to get done for the day. Instead of doing this and going to three or more different apps, I wanted all of this information available at a single glance as I get ready, and Morning Dash was born.
Each category is broken up into its own module where the desired data is fetched, formatted, and loaded into memory from the corresponding API. Pictured here is the Dark Sky module where I get the weather conditions for the current location. After parsing out the relevant details from the ocean of data that is passed back, it connects the current weather condition with a relevant icon to visually display to the user.
Extra Features
As I was building the app I realized that I had a lot of extra space for more information. I decided to add a list of my top ten most played songs and top five most played albums over the past 7 days. Of course, what is music without the album art, so with each song/album title is the artist and album art. Finally in the bottom right of the screen I display the song that is currently playing (or was last played) on Spotify.
The music data isn't just as simple as the LastFM API fetching the top charts and the Spotify API fetching the currently playing music. The LastFM API actually will only return the song title and artist. To get the album art, the LastFM module will actually use the Spotify API to search for the corresponding album art. Although not 100% accurate all the time, it does always find some art relevant to the given artist if not the specific album or song.
To complete the original objective, the application needs to automatically be displayed in the morning when I wake up. To do this I loaded the program onto a Raspberry Pi and attached a monitor (turned vertical). Then created a simple script to wake the display and launch the app one minute before my alarm to give it time to load the data.
As this project came to an end it got me thinking about more data that I look at in them morning and even throughout the day and week. I have a watch that already tracks my sleep, it would be nice to see how much sleep I got the previous night up on the dashboard as well. Also if the data was stored it could be displayed with a chart of sleep duration for the past week. This data could then be accumulated to find trends in sleep such as average duration over the weekend vs week days (and so on and so forth).
So why stop at just sleep... This completes this project but also opens up possibilities for (several) more projects to come.