We were inspired by a desire to make use of the large screens in everyone’s homes to view the day and control their smart homes. The goal is to make life easier and more comfortable for anyone with an Apple TV.
What it does
HomeLife is a beautiful home dashboard for your Apple TV where people can get a quick overview of their day, and easily control their homes. It gives users a quick glance at their day, showing items such as upcoming weather or calendar events in a timeline view. These timeline views pull historical and future events from various data sources, and then display it intuitively. Users can also get quick access to their smart home via mood buttons. The mood widget interacts with SmartThings to quickly set the right mood in your home. It can adjust lights, music, locks and more to just the right settings. Switch into away mode when you’re on the way out, and it can turn off all lights. Switch into romance mood to dim the lights and play some Marvin Gaye. All of this works already in our prototype. Eventually, users would be able to add, delete, and rearrange their widgets to make it feel just right in their home.
How I built it
To build HomeLife, we started off with a top level design split into two sections. One for time based information, like weather, calendar events and security cameras, and the other for quick access to the things that we like to do often, such as controlling our music and setting the mood in our smart homes. Both of these sections would eventually have a large selection of potential “widgets”, so that every HomeLife is perfectly customized for it’s users. In the timeline, we have so far implemented weather, which pulls real data from the web and draws a nice line chart, and a camera module which shows a live feed as well as snapshots for the past. In the quick access section, we’ve integrated with SmartThings to enable setting modes in the smart home, allowing users to control lights, music, locks, and more.
Challenges I ran into
We ran into several challenges during this work. Anthony had not used Swift in a project before this work, but decided to take this chance to learn and become more comfortable with it. Both of us are new to developing on the Apple TV, so we had to learn about the new user interface elements and some differences from other iOS development. Integrating with SmartThings added another level of complexity. This required writing SmartApps to run in the SmartThings cloud to which HomeLife sends commands and requests. It took some extra effort to make sure all communication happened as expected. The other major issue that we have run into this morning is that the API we were depending on for weather data is now failing when we request the historical temperatures. We tried to work around this last minute, but were unable to come up with a solution in time.
Accomplishments that I'm proud of
We are proud of the high-level design that we built. This design will allow us to easily add new widgets in the future with minimal changes to the existing programming. Creating a strong infrastructure will allow us to concentrate more on making additional widgets and on making them beautiful.
What I learned
Both of us gained experience in developing on the Apple TV. Brice learned good practices in design and implementation from Anthony’s professional experience. Anthony gained a lot of experience in Swift and is looking forward to using it more in the future.
What's next for TV Dashboard
Going forward, we will continue to work on HomeLife. First, we will have to do some clean up on the last-minute rushed parts of the existing code. After that, we have several ideas for additional useful widgets to expand on this initial idea. When it’s ready, we may pursue sale of HomeLife on the App Store.
HomeLife was built with Swift in Xcode. The interface for SmartThings was built in Groovy.