2017-05-06 09:30 to 2017-05-06 10:30

Experience level


Session Track


Own Your Home: Private IoT devices with resinOS

This talk will take a look at how the open-source tools ResinOS and Docker can be combined with community open-source projects to enable hardware hackers to securely and reliably deploy home-automation services in their own homes. We'll start by exploring some of the security risks associated with inviting 3rd party IoT devices into the home and onto private networks, and then move on to take a look at ResinOS and it's accompanying management tools in resin-cli. The talk will conclude with an overview/example of deploying a real-life home automation project, using resin-cli to build and push the project to a ResinOS device running on the local network.

Participants should be familiar with Docker, git, and the concept of embedded devices. No experience is necessary with embedded development, IoT, or security.

Detailed Description

As the number of connected devices in the world, and in our homes, continues to grow, their associated risks rise as well. More and more devices are released with serious security vulnerabilities, and many companies fail to plan for rapid security patching as part of their go-to-market strategy. Additionally, big data continues to drive business decisions and provide lucrative demographic data for targeted performance marketing. Most consumer IoT devices have become sophisticated, poorly secured exfiltration devices running inside our homes, with access to our most personal yet unsecured data (especially for the average homeowner).

What do we do about that? Obviously, work needs to be done at the industry level to ensure companies producing IoT devices take greater responsibilty for releasing secured products. However, we, as technically capable people, are in a unique position to own our own devices. Deploying your own IoT devices/services comes with two primary challenges: 1) running code on an embedded device and 2) updating that code in a convenient, safe, and reliable manner to iterate on features and patch security vulnerabilites. As the IoT ecosystem continues to flourish (the early stages of which we're currently in), we're starting to see more and more tools made available to developers for embedded work. These in turn enable developers who have not traditionally worked in the embedded space to become productive.

ResinOS unites Docker (linux containerization which has been sweeping the web development community) and the embedded world. With support for over 20 devices, it unlocks rapid local development and can transition seamlessly to production environments. It's based on the Yocto Project, a build system for creating targeted Linux distributions, and contains the minimal required features to run Docker on small linux computers. resin.io, the company behind the project, has also released the ResinOS development toolbox (rdt), a CLI allowing users to auto-discover ResinOS devices on their local network and build and deploy code to those devices. This provides a 100% open-source toolchain (potentially run on top of open-source hardware like the BeageBone boards) you can trust inside your home.

We'll take a walk through the feature set of ResinOS, look at what all is available on it, and how it works with rdt. Finally, the talk will conclude with a basic demonstration illustrating how to deploy a basic home-automation IoT project to a ResinOS device on the local network, with the ability to push software updates straight to the device from the developer's workstation. The project will implement a simple switch for controlling Philips Hue lights, demonstrating the potential to create more sophisticated, connected IoT applications.

At the conclusion of the talk, participants should have a solid grasp of some of the challenges facing connected embedded development, a reasonable understanding what ResinOS is and when and how you might want to use it. Additionally, every participant should feel confident and empowered to go out and write their own IoT application or deploy an open-source project on their own network.

Relevant links