Three-part Interview Series
Series 1 – Inspiration and requirements for Internet of Things
Tom Vu (TV): What inspired you to build the IoT Toolkit and educate the IoT community about data models for the Internet of Things?
Michael Koster (MK):
A little over a year ago my partner and I started researching the Internet of Things (IoT), with the idea of creating a system as a sort of “valet” to help manage things in our lives. At the time we lived off the grid, and generated our own energy, maintained our own water system, and spent significant time away from home. We looked at what was available, and there was nothing available in ready-to-use systems that would not require at least a layer of programming to work together in the ways we imagined.
Interoperability between multiple devices is quickly becoming a common feature as people try to build their own ‘Internet of Things’—getting all their smart, devices to be connected to the ‘cloud.’ Once they buy the device on Kickstarter, they can easily enjoy the remote control ability and automation afforded for a while. We found a lot of vendors selling devices that connected to services—services such as the Internet. Some vendors offered open source clients but still tied the devices to their service. We wanted to pull together devices with multiple services, such as combining the home environmental control, energy management, and water, garden, and livestock automation. This requires multiple devices connected together by algorithms, controlling valves, doors, fans, lights, blinds, batteries, etc. Very often, the vertically integrated devices and services didn’t allow all the devices to be connected because they weren’t built on a standard that was interoperable.
Soon they started to think about ideas on how they could create new relationships and interactions between devices and humans by integrating devices from two or three of these systems together. They quickly found out connecting the systems were quite complex.
This is becoming more common as people try to build their own Internet of Things. Once they buy the device on Kickstarter, they enjoy the remote control ability and automation afforded for a while. Soon they start to think up ideas about how they could create new relationships and interactions between things and between themselves and things by integrating devices from 2 or 3 of these systems together. They quickly find out that it’s not straightforward.
There is a service, IFTTT (IF This Then That) which has software connectors that hook up to the APIs of some popular IoT services and provides a rule engine to apply simple logic predicates to conditions and generate actions, if this, then that. All well and a good proof of the need, but not sufficient for the general use case.
We then decided to investigate the DIY approach, and started from the bottom, through online resources like Sparkfun and Evil Mad Science. We also used components like Arduino, many of which are driven by megaAVR (ATmega) or ARM Cortex-M3, both are AVR and ARM microcontrollers with a strong open hardware, IDE and ecosystem tied to it. We put together a few networkable connected sensors, like a weather station, environmental sensors, ambient LED displays, and power monitoring. We found it relatively easy to connect these to Xively formerly Cosm, Pachube, for monitoring and recording, and quickly discovered a number of limitations to what we wanted to accomplish.
We discovered the same situation with the vertically integrated systems, that there was no open, standard way to connect many different devices together and build a larger application to manage things together. Some Platform-As-A-Service vendors run rules engines, similar to IFTTT, and other application logic inside their platform, but we were looking for a way that enabled us to choose where we wanted to run the software, particularly in both the cloud service and in a local hardware gateway. This allowed more embedded devices and connected sensors to potentially grow into a larger system without a central hub, where IoT is being driven.
This is important because our network connection was often impacted by weather and other variables. We realized that everyone would be impacted to some degree, even with DSL or cable service. Our experience with frequent service interruptions taught us the importance of being able to tolerate interruptions in the network connection. Even if the network connection could be made reliable enough, the services are subject to outages and “latency events”, which make them unsuitable for critical services without backup.
After a few months of inquiry and investigation, we decided a robust, common way of interacting between all devices and things was a requirement. It felt like the early days of the Internet. Before the web, before the invention of hyperlinking, HTML and the http protocol, there were no common ways for people to interact within a document, such as creating hyperlinks.
The Internet of Things is at a similar stage of development. IoT needs a standard to interact with other machines; the standard enabling software for easier interaction is essential.
A platform that provides a base set of common tools and services, similar to an operating system, is also a requirement for IoT users. This platform would enable them to get started quickly with their IoT ideas.
Accessibility and interoperability were key to enable a user to start building smart, connected devices in the era of the Internet of Things.
It became clear that if we could find a standard way to do what everyone expects the Internet of Things to do, and make it as easily accessible and usable as the web is today, that we could help enable the Internet of Things to scale and evolve into what conceivably is the next stage of the internet.
We studied a number of IoT use cases, collaborated with the IoT community, and began to map out what was needed in a common set of tools everyone could use, share, contribute, distribute, and enhance. We wanted to take what already existed in standards, infrastructure, and system components, and build an open source platform that we, and others, could use to create our own end-to-end IoT systems and products.
In the platform, we wanted to provide machine to machine (M2M) connections from sensors and devices, along with application software, and re-use common data models that can easily span across devices and other IoT data streams to build out a common language for descriptions and connections.
We started this process with Social Media, reaching out to like-minded people on LinkedIn. During our investigation, we learned that the issues we discovered weren’t widely known and discussed. Many people there were using no common tools for IoT.
We realized community learning was required to an already steep learning curve on some technologies like RDF and Linked Data. This was one of the reasons we started this IoT blog series to educate people about semantic data modeling and Linked Data driven APIs. Around the same time, we started the Open Source Internet of Things Meet Up in Silicon Valley to meet other like-minded people and build the community.
The founding principle is to create a community around Open Source and Internet of Things. The gravitating principles follow two successful fundamentals: community and interoperability. In fact, the very nature of Internet of Things resonates well with Open Source and Conway’s Law. We want to build a system. Create the structure we envision, based on community and sharing.