Connectivity is often raised as a key challenge when building IoT applications. Different types of devices will connect to the cloud using different protocols, such as HTTP, MQTT, or CoAP. The challenge for IoT application developers is how to manage the connectivity so that the application doesn’t need to handle each protocol differently.
When we first started the Eclipse Hono project our goal was to help simplify the process of connecting different types of devices to applications running in the cloud. It was clear to us that in the general context of IoT applications, the connectivity aspect was not a huge differentiating factor. The value was in the IoT data that was being sent to the cloud, regardless of protocol. The vision of Hono is to hide the issues of connectivity from the IoT developer and make it easy to transmit the data to the IoT application.
We are now proud to announce Eclipse Hono 1.0.0, an open IoT connectivity platform that provides a unified API for device communications that is payload agnostic and transport independent. Hono handles all the tough issues of device connectivity, such as:
- Scalable and secure data ingestion of telemetry data
- Sending commands to remote devices
- Device provisioning
- Device authentication and access control
The key features of Eclipse Hono
Eclipse Hono is intended for organizations that are building their own IoT platforms and need to support multiple device protocols and multiple use cases. For instance, Bosch IoT Suite is using Hono to provide the connectivity solution for customers connecting with Bosch IoT Suite. Our customers build applications in industries such as building management, agriculture, retail that all have different device manufacturers and protocols. Hono will simplify how Bosch customers can connect with Bosch IoT Suite. We expect other companies that are building their own IoT platform will see similar benefit from using Hono.
We are very excited about the 1.0.0 release of Hono. Here are some of the key features that are included:
Eclipse Hono is a set of microservices packaged as Docker containers. Each protocol adapter can scale out linearly and be deployed using Kubernetes or any other container orchestration system.
Eclipse Hono is multi-tenant so a single Hono system can simultaneously host multiple IoT applications. This is ideal for any organization building an IoT cloud platform that will host different types of IoT applications and connected devices.
Eclipse Hono supports a variety of device authentication protocols, including username/password and client certificate. The CoAP protocol adapter also supports authentication based on pre-shared keys during the DTLS handshake.
Device management integration
Eclipse Hono provides a set of APIs to integrate with different device management systems. This makes it possible to use existing systems-of-record for device identity and credentials management or build a new one for the particular need.
Monitoring and tracing
Eclipse Hono supports operations teams by providing insights into the individual service components and their interactions with each other by means of reporting metrics and tracing the processing of individual messages through the system. Hono uses Micrometer for providing metrics that are usually collected in a time series database, like Prometheus or InfluxDB, and visualized in a dashboard, e.g. using Grafana.
Tracing messages through a distributed IoT system can be very difficult based on timestamps and correlation IDs in log files. Therefore, Hono has instrumented the service components with OpenTracing, and works with a variety of tracer implementations, like Jaeger.
Eclipse Hono optimizes the throughput of telemetry data. IoT business applications and other services use the Telemetry API to receive data published by devices. Telemetry data can be sent with service levels of AT MOST ONCE (default) or AT LEAST ONCE delivery.
Eclipse Hono supports devices sending event messages to IoT business applications. An event message might be used to indicate that a threshold has been exceeded. In case of unreliable connectivity, Hono will persist event messages so that business applications that temporarily lost connection to Hono can retrieve the event once the connection has been re-established. Event messages are always sent with service level AT LEAST ONCE.
Command & control
Eclipse Hono allows for IoT business applications to send commands to a specific device to trigger actions, such as updating a configuration property, triggering a firmware update or switching the state of an actuator. There are two patterns of commands supported by Hono:
- One Way commands that do not expect a response from the device.
- Request/Response commands that expect a response from the device in a blocking or asynchronous manner.
Eclipse Hono can be deployed to a public or private cloud platform of your choice, such as OpenShift, AWS, MS Azure, Google or hosted on-premise. This provides the maximum flexibility for users of Hono to select the hosting environment based on their use case at hand.
The development of Eclipse Hono has been a community effort. 27 individuals have contributed to this project release, including many developers from Bosch and Red Hat.
We would like to invite more individuals and companies to join the project. Please download Eclipse Hono and give it a try. Tell us what you like and what needs to be added. We look forward to your feedback.