IoT App on Heroku Orchestrates the Connected Home by Syncing Home Devices and Wearables
Yonomi connects otherwise incompatible connected devices through a single mobile app and cloud service.
A smart house is like a symphony of connected devices. Each adds their unique talents to create a fluid melody that makes home life smoother and easier. But being the maestro that keeps them all in sync isn’t so easy. Programming each device separately and building a harmonious flow is cumbersome and time consuming. And what if your routine changes? Forget it – who wants to schedule time to re-program it all over again?
In 2014, Yonomi debuted to help users orchestrate their connected home. The company’s mission is to simplify the process through a single mobile app and cloud service that enables previously siloed connected devices to work together. Users create custom action flows, or “Routines” that map out a sequence of device actions that support their particular lifestyle. For example, your “Wake Up” routine may cue your Nest Thermostat to heat up the house, Sonos to switch on the news, Jawbone to report your sleep stats, and Mr. Coffee to brew a pot—all before you even step out of bed. Your “I’m Home” routine may flip on the Philips Hue lights, fire up jazz on Sonos, and trigger Schlage Connect to lock up for the night.
The maestro magic behind the Yonomi app is all software. Previously, such coordination of IoT devices required a physical “hub.” Yonomi has developed an innovative approach to device discovery and connectivity that leverages the user’s mobile phone or tablet as the communications hub. Because the Yonomi system is so flexible, users are free to choose whatever devices are right for their home.
Yonomi’s cloud hub on Heroku
From the beginning, Yonomi chose the Heroku platform to build out their vision. Running their service on Heroku allowed the team to concentrate on developing a rich feature set and expanding device compatibility without spending valuable resources on infrastructure.
With Heroku, we don’t have to worry about provisioning and managing servers. Heroku allows us to focus our resources on delivering value to our customers.” Garett Madole, Co-Founder, Yonomi
Heroku’s Common Runtime runs Yonomi’s applications in isolated, lightweight Linux-based containers that are automatically provisioned and fully managed. Heroku’s Common Runtime runs on trusted Amazon Web Services infrastructure.
On the client side, the team chose to build their Android app first. They found that the Android platform allowed them to move faster, get a minimum viable product built quickly, and demonstrate as much value as possible early in their product development cycle. It also allowed them to develop some unique features, such as the ability to pause music on Sonos when a phone call comes in. Once they built a solid Android app, the team then focused on creating an iOS version.
Yonomi currently runs numerous apps on Heroku, all built in Node.js. They run one main API and take a microservices approach to their various backend services, such as third party device connections, data ingestion, database storage, and a rules service that executes a user’s preferred Routines.
Splitting out the device connection service into its own app has proven especially beneficial. Yonomi doesn’t poll services but uses callbacks or web socket streams to push event data. So if there’s more traffic from a Nest thermostat than an August lock, they can easily spin up more dynos to service the Nest integration specifically. This allows them to fine-tune their dyno usage and keep their entire service running smoothly. When Yonomi announced support for several new devices at a SXSW conference, they experienced an immediate flood of new users. They simply moved the dyno slider in their Heroku Dashboard from “1” to “2,” and the Yonomi service kept on ticking without a hitch.
Heroku makes it super easy for us to scale any number of device integrations individually. We can simply provision more dynos to handle increased traffic coming in from a specific device. Garett Madole, Co-Founder, Yonomi
In terms of third party services, Yonomi uses MongoDB as their data store and AMQP as their message bus to tie all their apps together. They use a CI server for their iOS and Android builds, Fabric for error tracking, and Loggly for backend logging aggregation. Several Heroku Add-ons extend their implementation, including: Deploy Hooks for deployment alerts, New Relic APM for performance monitoring, and Heroku Scheduler to run scheduled tasks.
One of our favorite Heroku Add-ons is Heroku Scheduler. It helps us manage database objects and monitor our app by running metrics on an hourly basis.” Garett Madole, Co-Founder, Yonomi
As the IoT landscape is so new, there’s constant change and influx of new players entering the market. Yonomi currently writes all their third party integrations themselves, starting with the most well-known products in their space. However, they plan to eventually open up their platform to developers and provide an API for other devices manufacturers to integrate with Yonomi at the device level.
Currently, Yonomi plays well with more than 60 of the most popular home devices and wearables, with many more integrations on the way. Whenever a hot new product hits the market, the team can spin up a new integration on Heroku quickly, allowing the company to keep pace with growing user demand.
App experience
Onboarding with Yonomi is simple and streamlined. When users first sign up for a Yonomi account, the system initiates device discovery and scans the user’s network, apps, and devices. It presents log in screens for each or automatically connects to those devices. Based on the user’s device portfolio, Yonomi will automatically map out suggested Routines that utilize these devices so new users don’t have to think about what a typical daily flow might look like.
Yonomi’s primary focus is to design for the user rather than the device. Although Yonomi provides access to a few basic manual controls for individual devices, the service is not intended to replace a device’s own branded app. Instead, Yonomi adds a unique layer of value by allowing users to string the controls together to create their own personal Routines. Users can bubble up favorites Routines to the widget or home screen of their iOS device, to the Yonomi app’s home screen, or to external services like Alexa for Amazon Echo.
Ultimately, Yonomi is focused on nurturing and growing the emerging connected home category. As consumers learn to adapt to a richer experience of their home devices, Yonomi is there to help them take this step seamlessly, without having to retrain all their behavior patterns.
Being the maestro of your own smart home has never been easier.
More case studies
In the spotlight
- View all
- Code[ish] podcasts
- •
- Blog posts
- •
- Community stories