The Internet of Things (IoT) is transforming how individuals and organizations connect with customers, suppliers, partners, and other individuals. IoT is all about connecting sensors, actuators, and devices to a network and enabling the collection, exchange, and analysis of generated information.
Hardware innovations, like the Raspberry Pi, are making it easier, faster and cheaper to develop new devices. Networking standards for low power networks, like LoRaWAN or NB-IOT, create new opportunities for connecting very small devices to a network. New standards are being developed specifically for IoT use cases, like MQTT for messaging, OMA Lightweight M2M for device management, or W3C Web of Things and oneM2M for service interoperability. And finally, significant improvements in data storage, data analysis, and event processing are making it possible to support the amount of data generated in large-scale IoT deployments.
In parallel to the emerging IoT industry, the general software industry has moved towards open source as being a key supplier of critical software components. The phrase “software is eating the world” reflects the importance of software in general, but in reality the software industry is now dominated by open source. This is true for key software categories, including Operating Systems (Linux), Big Data (Apache Hadoop, Apache Cassandra), Middleware (Apache HTTP Server, Apache Tomcat, Eclipse Jetty), Cloud (OpenStack, Cloud Foundry, Kubernetes), and Microservices (Docker).
The purpose of this white paper is to look at the new technology requirements and architectures required for IoT solutions. It will identify three stacks of software required by any IoT solution, and finally present how open source communities, such as the Eclipse IoT community, are already supplying the critical software technology needed by IoT solution providers. Similar to how the LAMP (Linux/Apache HTTP Server/MySQL/PHP) stack has dominated the web infrastructures, it is believed a similar open source stack will dominate IoT deployments.
A typical IoT solution is characterized by many devices (i.e. things) that may use some form of gateway to communicate through a network to an enterprise back-end server that is running an IoT platform that helps integrate the IoT information into the existing enterprise. The roles of the devices, gateways, and cloud platform are well defined, and each of them provides specific features and functionality required by any robust IoT solution.
The “Thing” in the IoT is the starting point for an IoT solution. It is typically the originator of the data, and it interacts with the physical world. Things are often very constrained in terms of size or power supply; therefore, they are often programmed using microcontrollers (MCU) that have very limited capabilities. The microcontrollers powering IoT devices are specialized for a specific task and are designed for mass production and low cost.
The software running on MCU-based devices aims at supporting specific tasks. The key features of the software stack running on a device may include
The IoT gateway acts as the aggregation point for a group of sensors and actuators to coordinate the connectivity of these devices to each other and to an external network. An IoT gateway can be a physical piece of hardware or functionality that is incorporated into a larger “Thing” that is connected to the network. For example, an industrial machine might act like a gateway, and so might a connected automobile or a home automation appliance.
An IoT gateway will often offer processing of the data “at the edge” and storage capabilities to deal with network latency and reliability. For device to device connectivity, an IoT gateway deals with the interoperability issues between incompatible devices. A typical IoT architecture would have many IoT gateways supporting masses of devices.
IoT gateways are becoming increasingly dependant on software to implement the core functionality. The key features of a gateway software stack include
The IoT Cloud Platform represents the software infrastructure and services required to enable an IoT solution. An IoT Cloud Platform typically operates on a cloud infrastructure (e.g. OpenShift, AWS, Microsoft Azure, Cloud Foundry) or inside an enterprise data center and is expected to scale both horizontally, to support the large number of devices connected, as well as vertically to address the variety of IoT solutions. The IoT Cloud Platform will facilitate the interoperability of the IoT solution with existing enterprise applications and other IoT solutions.
The core features of an IoT Cloud Platform include
Across the different stacks of an IoT solution are a number of features that need to be considered for any IoT architecture, including
Loosely coupled - Three IoT stacks have been defined but it is important that each stack can be used independently of the other stacks. It should be possible to use an IoT Cloud Platform from one supplier with an IoT gateway from another supplier and a third supplier for the device stack.
Modular - Each stack should allow for the features to be sourced from different suppliers.
Platform-independent - Each stack should be independent of the host hardware and cloud infrastructure. For instance, the device stack should be available on multiple MCUs and the IoT Cloud Platform should run on different Cloud PaaS.
Based on open standards - Communication between the stacks should be based on open standards to ensure interoperability.
Defined APIs - Each stack should have defined APIs that allow for easy integration with existing applications and integration with other IoT solutions.
The open source community has become an active producer of technology for IoT solutions. Like the LAMP stack for websites, there are a set of open source projects that can be used as the building blocks for an IoT solution architecture.
The Eclipse IoT community is very active in providing the technology that can be used in each stack of an IoT solution. Eclipse IoT has 26 different open source projects that address different features of the IoT stacks. In addition to the Eclipse IoT projects, there are other open source projects that are also relevant to an IoT stack. The next few pages provide a brief summary of how Eclipse IoT as well as other open source projects can be used to implement IoT stacks.
Eclipse IoT provides a set of libraries that can be deployed on a constrained embedded device to provide a complete IoT development stack.
Within the Eclipse IoT community there are a variety of projects that work to provide the capabilities that an IoT gateway requires.
Eclipse Kura provides a general purpose middleware and application container for IoT gateway services. An IoT gateway stack based on Eclipse Kura would include the following:
Eclipse SmartHome provides an IoT gateway platform that is specifically focused on the home automation domain. An Eclipse SmartHome stack would including the following:
Eclipse 4DIAC provides an industrial-grade open source infrastructure for distributed industrial process measurement and control systems based on the IEC 61499 standard. 4DIAC is ideally suited for Industrie 4.0 and Industrial IoT applications in a manufacturing setting.
The IEC 61499 standard defines a domain specific modeling language for developing distributed industrial control solutions by providing a vendor independent format and for simplifying support for controller to controller communication.
The Eclipse IoT Community has a number of projects that are focused on providing the functionality required for IoT cloud platforms.
Eclipse Kapua is a modular platform providing the services required to manage IoT gateways and smart edge devices. Kapua provides a core integration framework and an initial set of core IoT services including a device registry, device management services, messaging services, data management, and application enablement.
The goal of Eclipse Kapua is to create a growing ecosystem of micro services through the extensions provided by other Eclipse IoT projects and organizations.
Eclipse OM2M is an IoT Platform specific for the telecommunication industry, based on the oneM2M specification.
It provides a horizontal Common Service Entity (CSE) that can be deployed in an M2M server, a gateway, or a device. Each CSE provides Application Enablement, Security, Triggering, Notification, Persistency, Device Interworking, Device Management.
The Eclipse IoT community also has a number of standalone projects that provide functionality to address key features required for an IoT cloud platform. These projects can be used independently of Eclipse Kapua and over time some may be integrated into Kapua.
An IoT Solution requires substantial amount of technology in the form of software, hardware, and networking.
In this white paper we have defined the software requirements across three different stacks. For the IoT industry to be successful, it needs to enable more than a succession of independent silos designed by one vendor that address just one business case at the same time. As examples, a connected car comprises MCUs from many different vendors, and a smart city or a smart factory will have a wide variety of sensors and gateways, and an even wider variety of companies looking at building end applications, etc.
The last twenty years have proven that open source software and open source communities are key providers of technology for the software industry. The Internet of Things is following a similar trend, and it is expected that more and more IoT solutions will be built on open source software.
For the past six years, the Eclipse IoT community has been very active in building a portfolio of open source projects that companies and individuals use today to build their IoT solutions.
If you are interested in participating, please join us and visit https://iot.eclipse.org .