Simplifying IoT development with Eclipse IoT
Kai Hudalla has been working at Bosch on solutions for the Internet of Things in application domains like smart home, energy management, e-mobility, and automotive long before the term reached its recent popularity and ubiquity. He is an active committer on several Eclipse IoT projects, one of which is the Eclipse Hono project, aiming at providing an integration platform for connecting millions of devices to the cloud. Kai is a regular speaker at conferences and enjoys cooking and golfing whenever weather conditions permit.
Connecting devices to IoT applications, managing digital twins, and handling software update processes, are three key capabilities being addressed by various vendors in their proprietary IoT service offerings. In our view, there is also a real need to provide these functionalities in an open source context.
This is based on the simple fact that companies don’t want to rely exclusively on a single vendor, or to be dependent on proprietary third-party platforms. What’s more, they might want to make use of IoT cloud services within their own infrastructure. In that regard, leveraging open source projects for IoT solutions is the best way to go.
Taking a look at Eclipse IoT projects, it is clear that they already cover device connectivity, digital twins, and software rollouts from a technical perspective. But these projects exist independently of each other, and integrating them involves a great deal of effort on the part of the users. The barrier to entry is relatively high.
We are creating a pre-integrated, coherent IoT package to alleviate this problem, by bringing together Eclipse Hono, Eclipse Ditto and Eclipse hawkBit. Thanks to its pre-configured format, developers need no longer worry about integrating the different open source projects. This lowers the barrier to entry and makes it easier to leverage these Eclipse IoT projects for IoT solutions, allowing users to get started more quickly and to better address the requirements of common IoT scenarios.
An integrated IoT package
The goal is to create a cloud-based IoT package based on Eclipse Hono, Eclipse Ditto and Eclipse hawkBit that can be easily deployed and used in Kubernetes based environments.
Eclipse Hono: A service for interacting with connected devices
Eclipse Hono provides remote service interfaces for connecting large numbers of IoT devices to a back end and interacting with them in a uniform way – regardless of the device communication protocol. It supports devices communicating via common IoT protocols like HTTP, MQTT and AMQP out of the box. It also provides APIs for important IoT communication patterns: telemetry and event messages can be used by devices to report sensor readings; applications can use command & control to trigger operations on devices.
Thomas Jäckle is a software developer and has been working at Bosch since 2010. Since 2015 he holds the position of lead software developer of the Bosch IoT Things cloud service, and since 2017 he is committer and project lead of the Eclipse Ditto project. He is passionate about software craftsmanship; continuous learning drives his motivation. Thomas holds a Bachelor’s degree in computer science and a Master’s degree in application architecture, both from the Hochschule Furtwangen University in Germany.
Eclipse Ditto: Managing digital twins
Eclipse Ditto is where IoT devices and their digital twins get together. This framework enables you to manage the state of digital twins. By providing a search functionality on meta data and state data, Eclipse Ditto also allows you to organize your set of digital twins, building a bridge between real-world IoT devices via their digital representations and applications. In doing so, it leverages various protocols like AMQP 1.0, AMQP 0.9.1, MQTT, Apache Kafka or HTTP/WebSockets.
Eclipse hawkBit: Managing and controlling software updates
Eclipse hawkBit is a domain-independent back-end framework for rolling out software updates to less powerful edge devices as well as higher performance controllers and gateways connected to IP based networking infrastructure. This allows you to keep the firmware, software, and applications on your devices up-to-date and secure, while opening up new revenue streams, such as the monetization of feature extensions.
High-level architecture of the IoT package
Jeroen Laverman has been working with Bosch since 2015. Starting in the field of device abstraction and semantics, he moved to the realm of software updates. In 2018, he became product owner of Bosch IoT Rollouts and project lead of the Eclipse hawkBit project. Jeroen holds a Bachelor’s degree in computer engineering from Hochschule Furtwangen University and a Master’s degree in information science from Pforzheim University Business School.
Eclipse Hono includes a set of Protocol Adapters that allow devices to connect to Hono using popular communication protocols like MQTT, HTTP, AMQP and CoAP. Devices can upload telemetry data and events that are forwarded to applications connected to Hono’s north bound, AMQP 1.0 based APIs. Applications can use these APIs to send commands to connected devices and receive responses. The package will also include a production-ready device registry for managing device identities and credentials. It will employ enMasse to provide scalable routing and brokering of messages between devices and applications.
Eclipse Ditto utilizes Eclipse Hono’s northbound API, processing telemetry messages and events, and sending commands to connected devices. Thus, it provides an abstraction layer, representing devices as digital twins. The twins reflect the last known state of the devices as reported via Eclipse Hono telemetry messages. Commands aimed at connected devices may also be invoked by addressing the API of the corresponding digital twin. IoT applications may either directly interact with the connected devices via the Eclipse Hono integration, or may query the last reported state via their twin API. Additionally, applications can be notified about changes, using a protocol of their choice amongst the protocols AMQP 1.0, AMQP 0.9.1, MQTT, Apache Kafka or HTTP.
Eclipse hawkBit comes into play when firmware or software on devices is to be updated or when applications are to be deployed. IoT applications are able to interact with Eclipse hawkBit using its RESTful management API. Eclipse hawkBit will make use of Eclipse Ditto as its device inventory. Users are able to filter and group their devices based on the properties and state stored there. This facilitates a structured update process, a cascaded start for deployment groups, and – in addition – an emergency shutdown in case error thresholds are exceeded.
Who is working on this IoT Package?
Red Hat and Bosch are already using and contributing to Eclipse Hono and have a common interest in improving developer experience when utilizing Eclipse IoT technology. We are actively driving the development of this cloud stack package and welcome any interested party to join us in the realization of this project. So if you are interested in running Hono, Ditto and hawkBit on your own infrastructure and are willing to give us a hand, please get in touch either by mail or GitHub.
The IoT cloud package based on Eclipse Hono, Eclipse Ditto and Eclipse hawkBit will be developed in the context of the Eclipse IoT Packages project. This project is all about combining and integrating existing Eclipse IoT projects with each other. The Eclipse IoT Packages project will provide deployment instructions and scripts for deploying packages of Eclipse IoT projects to Kubernetes based platforms using Helm charts.