IoT device startup creates customizable sensors

Learn how Notion, an Internet of Things startup, built a sophisticated tier of server applications to empower a new generation of customizable sensors.

Early Internet of Things (IoT) applications often have attempted to incorporate complex functionality into the sensors and devices themselves, such as refrigerators, thermostats and gateways. In the long run, this could prove costly given the sheer number of devices expected to be deployed. One promising approach being adopted by IoT device startup Notion is embedding a thin layer of intelligence in the devices, and then developing a more sophisticated server tier on the back end for alerting, analytics, and integration with other services and devices.

The Denver-based startup has developed a single multipurpose sensor that can track temperature, moisture, sound, vibration and more. The sensor can be used for applications such as alarms for water leaks, smoke alarm alerts and burglar alarms. "We removed technology from the buying decision for the user," said Ryan Margoles, CTO at Notion. "They don't have to decide what they need for the sensors before they pick an individual one."

This approach has led to one of the most successful Kickstarter campaigns to date; it raised $280,000 in just 30 days last year. Most recently, top tier investors have noticed Notion's potential, with $2 million in investment capital from Draper Nexus Ventures, Gabriel Investments, Galvanize Ventures, Foundry Group Angels, Tech Stars and DreamFunded. "Notion provides home security and peace of mind for homeowners, but I really admire Notion's founders and their vision for the future of connected homes," said Manny Fernandez, CEO of DreamFunded.

A key element of the company's success has been the implementation of a solid application development process for the server application and associated infrastructure. Some of these key ingredients include:

  • A scalable architecture for transforming raw data into events on an IoT device to minimize battery and network usage
  • An Agile development process that leverages microservices to make it easy to update applications for new use cases
  • Leveraging a wide variety of cloud services for the IoT server infrastructure
  • A rich set of development tools to improve development, testing and deployment
  • A philosophy of working with users to identify new use cases and application features

Keeping the architecture simple and flexible

The most significant elements of Notion's architecture have been the implementation of tiers that include programmable sensor nodes, end-to-end encryption, simple wireless gateways and a server tier for aggregating data, doing analytics, sending alerts, and allowing integration with other IoT services.

The first thing to make sure of is that you are working with reputable companies, that you know where they have been and where they are going.

Jordan Stone,
chief software architect, Notion

Each IoT device is an all-in-one sensor package for many things someone would need to track around the home. For example, one sensor can tell if the doorbell rings or if a door is opened. There are all sorts of programmable thresholds for determining when an event has occurred, and if it has information about the event, it is encrypted and then passed through the gateway to the cloud application tier.

The sensors collect data and do some fairly complex math to convert that raw data into events. These are encrypted with AES 256 encryption and sent to the server, which converts events into actionable insights. "We are not just showing you accelerometer data, temperature data and sound data, we are turning it into something that is meaningful for people," Margoles explained.

For example, a user might not want to track if the front door opens during the day, but he might be interested in receiving an alert if it opens at night. The sensor captures that information and the back-end software can alert accordingly.

The sensors are optimized to send only important information in order to optimize battery power. This allows each IoT device to get about two years of battery life, depending on the use case. The use of encryption means that the sensor data and controls can be sent via the closest gateway, even if it happens to be at a neighbor's house. The data rate sent by a collection of five sensors is less than 100,000 kilobytes per day.

This approach provides high flexibility and could also make it easier to scale up the infrastructure across a larger area such as a business complex. The current architecture can support nodes of up to 1,200 sensors. Notion is also looking at supporting businesses and B2B and B2C applications for insurance and properties businesses.

Using microservices to separate development and deployment

The application infrastructure itself is built across a series of microservices responsible for different parts of the data lifecycle. Docker is used as a container for each microservice. For example, one application gets event data from sensors and sends it to another app for determining that a smoke alarm went off. Similar microservices are used for determining if motion data needs to be analyzed. This can tell you if a door opened or closed, or if someone knocks on a door.

Docker allows developers to leverage the tooling that exists around maintaining, monitoring and coordinating containers. "One of the benefits of using Docker is that we have been able to remove the platform dependencies from our development, so we can push new versions of software out with more confidence," said Jordan Stone, chief software architect at Notion.

Notion's development team started with Ruby on Rails, which was built as one massive application. The team still uses Ruby and Ruby on Rails for many of the services. R is used for statistical modeling. The team also uses Postgres for the user account database.

Taking advantage of IoT back-end services

The Notion development team made extensive use of cloud integrations so they could focus most of their development efforts on adding value rather than reinventing the wheel. "Integrations are the way to be part of the connected landscape for a long time," Stone said. "The first thing to make sure of is that you are working with reputable companies, that you know where they have been and where they are going."

Notion chose a third-party sensor database called TempoIQ because it is optimized for storing sensor data at scale. Leveraging this database allows Notion to build the product much faster. "We are not a database company," Stone said. "Aside from the technical challenges, there is a lot of cost in building a database application for IoT applications."

An embedded device crash reporting service called Crashlytics gathers data about problems with the sensor nodes. Crowsnest helps diagnose these problems. The back end was deployed on the Digital Ocean cloud because of its low cost and high performance. "This lets us performance scale for less than other cloud providers," Stone said.

Back-end integrations have also been developed with the Nest, Home Kit and IFTT platforms to enable the development of hybrid applications built on these ecosystems. "We integrate platforms like Nest, in which the feature development is done by us," Stone said. "There is also supporting integration with other clouds through our own API that is OAuth protected. If someone is compromised and that integration is from them to us, we can revoke their access to our clouds."

Accelerating development with cloud services

The whole software development delivery process is automated with delivery controls. The development team uses a series of environments to give them a local development environment and user acceptance testing environment that runs at scale. Jira provides much of the software development functionality to support Agile, sprints, backlogs and new features. Trello is used to support new feature requests.

Once new code has been completed, it is pushed to GitHub; if the unit tests pass, it is pushed out to, a service for managing private Docker repositories. Then all the servers running that Docker image are notified to pull down the image with the updated code using Codeship, a continuous integration and delivery service. New code can be pushed out to the largest app in about four minutes, and to other microservices in about 60 seconds. Currently, Notion pushes out anywhere from one to five new updates of delivered code to the production or UAT environment per day.

Getting feedback from users

A key element of Notion's vision is to leverage users and developers extensively to add support for new applications and services. For mobile apps, a major focus of the team has been user tests to ensure that the applications provide the appropriate functionality. "All of us have been working on this for too long to know everything that should be built in. It would be self-centered of us to imagine we fully understood the landscape and what people really want," Margoles said.

"Our goal is to be platform agnostic," he added. "Notion wants the platform to expand and allow integrations with other devices and services that may exist in the home. Our stance is that the landscape is crowded. We are not trying to be the platform that controls everything. We want to provide the sensors that provide you the information you need."

Next Steps:
IoT devices challenge data center security
IoT devices improve productivity

SAP IoT HANA application keeps the trucks rolling in India
As the second-largest commercial vehicle manufacturer in India, with over 700,000 trucks on the road and 70 million passengers relying on its busses, Ashok Leyland faces considerable challenges managing and maintaining its vehicle fleet. The Chennai-based company has recently implemented an SAP HANA Internet of Things application developed by Hinduja Tech and the SAP Co-innovation Lab to increase vehicle uptime, reduce fuel costs and improve driver performance.

In this video, Ajay Kumar, Hinduja Tech's project manager and SAP business analyst, and Prasan Ramachandra, senior vice president and head of global operations, explain how the IoT application, called Fleet Analytics Mobile Enabled, allows Ashok Leyland to manage its vehicle fleet. The two spoke at the SAPPHIRE Now 2015 conference held recently in Orlando, Fla.

Dig Deeper on Core Java APIs and programming techniques

App Architecture
Software Quality
Cloud Computing