| <!DOCTYPE html> |
| <html lang="en-us"> |
| |
| <head> |
| <meta charset="utf-8"> |
| <meta name="robots" content="all,follow"> |
| <meta name="googlebot" content="index,follow,snippet,archive"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| |
| <title>What is new & noteworthy in Hono? :: Eclipse Hono™</title> |
| <meta name="author" content="The Eclipse Hono Project" /> |
| |
| |
| |
| |
| |
| <meta name="description" content="Information about changes in recent Hono releases. Includes new features, fixes, enhancements and API changes."> |
| |
| <meta name="generator" content="Hugo 0.81.0" /> |
| |
| |
| <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,500,700,800' rel='stylesheet' type='text/css'> |
| |
| |
| <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.11.2/css/all.css"> |
| <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> |
| |
| |
| <link href="/hono/css/animate.css" rel="stylesheet"> |
| |
| |
| |
| <link href="/hono/css/style.hono.css" rel="stylesheet" id="theme-stylesheet"> |
| |
| |
| |
| <link href="/hono/css/custom.css" rel="stylesheet"> |
| |
| |
| |
| <!--[if lt IE 9]> |
| <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> |
| <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> |
| <![endif]--> |
| |
| |
| |
| <link rel="apple-touch-icon" sizes="180x180" href="/hono/favicon/apple-touch-icon.png"> |
| <link rel="icon" type="image/png" sizes="48x48" href="/hono/favicon/favicon-48x48.png"> |
| <link rel="icon" type="image/png" sizes="32x32" href="/hono/favicon/favicon-32x32.png"> |
| <link rel="icon" type="image/png" sizes="16x16" href="/hono/favicon/favicon-16x16.png"> |
| <link rel="manifest" href="/hono/favicon/site.webmanifest"> |
| <link rel="mask-icon" href="/hono/favicon/safari-pinned-tab.svg" color="#5bbad5"> |
| <link rel="shortcut icon" href="/hono/favicon/favicon.ico"> |
| <meta name="msapplication-TileColor" content="#da532c"> |
| <meta name="msapplication-config" content="/hono/favicon/browserconfig.xml"> |
| <meta name="theme-color" content="#ffffff"> |
| |
| |
| <link href="/hono/css/owl.carousel.css" rel="stylesheet"> |
| <link href="/hono/css/owl.theme.css" rel="stylesheet"> |
| |
| |
| <link rel="alternate" href="/hono/index.xml" type="application/rss+xml" title="Eclipse Hono&trade;"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <meta property="og:locale" content="en_us"> |
| <meta property="og:site_name" content="Eclipse Hono&trade;"> |
| <meta property="og:title" content="What is new & noteworthy in Hono?"> |
| <meta property="og:type" content="website"> |
| <meta property="og:url" content="https://www.eclipse.org/hono/release-notes/" /> |
| <meta property="og:description" content="Information about changes in recent Hono releases. Includes new features, fixes, enhancements and API changes."> |
| <meta property="og:image" content="https://www.eclipse.org/hono/img/sharing-default.png"> |
| <meta property="og:image:type" content="image/png"> |
| |
| |
| |
| <meta property="og:image:width" content="1655"> |
| <meta property="og:image:height" content="827"> |
| |
| |
| |
| |
| |
| |
| <meta name="twitter:card" content="summary"> |
| <meta name="twitter:site" content="@EclipseHono"> |
| <meta name="twitter:title" content="What is new & noteworthy in Hono?"> |
| |
| <meta name="twitter:image" content="https://www.eclipse.org/hono/img/sharing-default.png"> |
| |
| <meta name="twitter:description" content="Information about changes in recent Hono releases. Includes new features, fixes, enhancements and API changes."> |
| |
| |
| </head> |
| |
| |
| <body> |
| |
| <div id="all"> |
| |
| <header> |
| |
| <div class="navbar-affixed-top" data-spy="affix" data-offset-top="200"> |
| |
| <div class="navbar navbar-default yamm" role="navigation" id="navbar"> |
| |
| <div class="container"> |
| <div class="navbar-header"> |
| <a class="navbar-brand home" href="/hono/"> |
| <img src="https://www.eclipse.org/hono/img/HONO-Logo_Bild-Wort_quer-s-310x120px.svg" alt="What is new & noteworthy in Hono? logo" class="logo"> |
| <span class="sr-only">What is new & noteworthy in Hono? - go to homepage</span> |
| </a> |
| <div class="navbar-buttons"> |
| <button type="button" class="navbar-toggle btn-template-main" data-toggle="collapse" data-target="#navigation"> |
| <span class="sr-only">Toggle Navigation</span> |
| <i class="fas fa-align-justify"></i> |
| </button> |
| </div> |
| </div> |
| |
| |
| <div class="navbar-collapse collapse" id="navigation"> |
| <ul class="nav navbar-nav navbar-right"> |
| |
| |
| |
| <li class="dropdown"> |
| |
| <a href="/hono/getting-started/">Getting started</a> |
| |
| </li> |
| |
| |
| <li class="dropdown"> |
| |
| <a href="/hono/docs/">Documentation</a> |
| |
| </li> |
| |
| |
| <li class="dropdown"> |
| |
| <a href="/hono/downloads/">Download</a> |
| |
| </li> |
| |
| |
| <li class="dropdown"> |
| |
| <a href="/hono/sandbox/">Sandbox</a> |
| |
| </li> |
| |
| |
| <li class="dropdown"> |
| |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| |
| <li><a href="/hono/community/contributing/">Contributing</a></li> |
| |
| <li><a href="/hono/community/presentations/">Resources</a></li> |
| |
| <li><a href="/hono/community/get-in-touch/">Get in Touch</a></li> |
| |
| <li><a href="/hono/community/road-map/">Road Map</a></li> |
| |
| <li><a href="/hono/community/thankyou/">Thank you</a></li> |
| |
| </ul> |
| |
| </li> |
| |
| </ul> |
| </div> |
| |
| |
| <div class="collapse clearfix" id="search"> |
| |
| <form class="navbar-form" role="search"> |
| <div class="input-group"> |
| <input type="text" class="form-control" placeholder="Search"> |
| <span class="input-group-btn"> |
| |
| <button type="submit" class="btn btn-template-main"><i class="fas fa-search"></i></button> |
| |
| </span> |
| </div> |
| </form> |
| |
| </div> |
| |
| |
| </div> |
| </div> |
| |
| |
| </div> |
| |
| |
| |
| |
| </header> |
| |
| <div id="heading-breadcrumbs"> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-md-12"> |
| <h1>What is new & noteworthy in Hono?</h1> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div id="content"> |
| |
| |
| <div class="container"> |
| |
| <div class="row"> |
| |
| <div class="col-md-12"> |
| |
| <div> |
| <h2 id="1100">1.10.0</h2> |
| <h3 id="fixes--enhancements">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Quarkus based variants of Hono’s components now support configuring the Hot Rod client with a key and/or |
| trust store in order to enable TLS secured connections to Infinispan servers and to authenticate using a |
| client certificate.</li> |
| <li>The MongoDB based DeviceManagementService erroneously removed the original device registration when trying to |
| register a new device using the existing device’s identifier. This has been fixed.</li> |
| <li>The Mongo DB based registry implementation now uses a proper DB index to find credentials by type and authentication |
| ID. This will speed up query execution significantly when there are a lot of devices registered for a tenant.</li> |
| <li>The JDBC based device registry’s <em>get Credentials</em> operation used by the protocol adapters now also supports |
| matching credentials against a given <em>client context</em>.</li> |
| </ul> |
| <h2 id="190">1.9.0</h2> |
| <h3 id="new-features">New Features</h3> |
| <ul> |
| <li>The Mongo DB based registry now supports enforcement of registration limits configured at the tenant level. |
| In particular, the maximum number of devices and the maximum number of credentials per device can be set in |
| a tenant’s registration-limits property. Please refer to the Mongo DB User Guide for details.</li> |
| <li>Hono now sends a device provisioning notification when a device or a gateway is successfully auto-provisioned.</li> |
| <li>Northbound applications sending request/response Command & Control messages via Kafka will now receive |
| a notification about a failed command delivery via a command response message. See the |
| <a href="https://www.eclipse.org/hono/docs/api/command-and-control-kafka/">Command & Control API for Kafka</a> for details.</li> |
| <li>The Mongo DB based device registry implementation now supports transparent (symmetric) encryption of Pre-Shared Key |
| secrets. Please refer to the user guide for details regarding configuration.</li> |
| </ul> |
| <h3 id="fixes--enhancements-1">Fixes & Enhancements</h3> |
| <ul> |
| <li>The value of the properties <code>auto-provisioned</code> and <code>auto-provisioning-notification-sent</code> had always been <em>false</em> when |
| retrieving device registration information using the MongoDB based registry implementation. This has been fixed.</li> |
| <li>The LoRA protocol adapter will now skip registering itself for receiving commands for a given gateway device if |
| that gateway device has no command endpoint defined. The adapter will now also free command consumer resources when |
| the idle timeout of the corresponding tenant (configured via the <code>hono.lora.tenantIdleTimeout</code> property) has elapsed |
| and the tenant is already removed or disabled.</li> |
| <li>The device registry implementations have already supported the limitation of the body size of requests to the |
| <code>/tenants</code> and <code>/credentials</code> resources of the HTTP based Device Registration Management API. |
| However, the admin guides did not cover the corresponding <code>HONO_REGISTRY_HTTP_MAXPAYLOADSIZE</code> configuration variable |
| yet. The <code>/devices</code> resources have been added to the scope of the feature and the admin guides have been amended |
| accordingly.</li> |
| <li>The protocol adapters now invoke the <em>set last known gateway</em> Command Router service operation a lot less frequently, |
| reducing the load on the Command Router component if gateways send messages on behalf of devices at a high rate. |
| The <em>last known gateway</em> entry for a device is now set with a delay of at most 400ms as part of a batch request.</li> |
| <li>The <code>keyStorePassword</code> and <code>trustStorePassword</code> properties of the Hono clients now also support specifying a file |
| to read the password from. If the property value starts with <code>file:</code> then the value after the prefix is interpreted as |
| as the path to a file to read the password from.</li> |
| <li>The registry implementations failed to reject a request to update a device’s empty set of credentials, e.g. right |
| after the device has been created, if the request contained a secret having an ID. In fact, the registry |
| implementations would have accepted such a request even if the secrets did not contain a password/key/etc at all |
| but only the identifier. This has been fixed.</li> |
| <li>A potential issue processing Command & Control messages from a Kafka cluster while Command Router instances are |
| getting stopped or started has been fixed.</li> |
| <li>The rate at which the Command Router component handles Command & Control messages from a Kafka cluster is now |
| limited to prevent potential memory issues and reduce the load on dependent services. The limit value is adopted from |
| the configured <code>max.poll.records</code> Kafka consumer configuration value.</li> |
| <li>The default properties of the Hono CLI tool have been updated to match typical Hono installations. It provides now |
| 3 types of profiles that need to be combined: 1. select the “mode”: <code>receiver</code> or <code>command</code>; 2. select the “target”: |
| <code>sandbox</code> or <code>local</code> (aims for deployment in Minikube but works for every deployment of the Helm chart); 3. select the |
| “messaging-type”: <code>kafka</code> (if not set, it defaults to AMQP-based messaging). For details refer to the file |
| <code>application.yml</code> of the CLI module.</li> |
| </ul> |
| <h3 id="deprecations">Deprecations</h3> |
| <ul> |
| <li>The file based device registry implementation has been deprecated and will be removed in a future version of Hono. |
| Please use the Mongo DB or JDBC based registry implementations instead. The JDBC based registry can be configured |
| to use an H2 database in either <em>embedded</em> or <em>in-memory</em> mode. The former can be used to persist data to the local |
| file system while the latter keeps all data in memory only.</li> |
| <li>The MongoDB based registry implementation no longer supports the configuration variables for disabling modification |
| of existing data. In real life deployments this feature has no meaning because write access to data will need to |
| be authorized more explicitly anyway, e.g. at the tenant level.</li> |
| </ul> |
| <h2 id="api-changes">API Changes</h2> |
| <ul> |
| <li>The client classes used by the protocol adapters for accessing the device registry, the Command Router |
| and the south bound C&C APIs have been reorganized into dedicated modules. |
| In particular, the <em>adapter</em>, <em>adapter-amqp</em> and <em>adapter-kafka</em> modules have been resolved into modules |
| <em>command</em>, <em>command-amqp</em>, <em>command-kafka</em>, <em>registry</em>, <em>registry-amqp</em>, <em>telemetry</em>, <em>telemetry-amqp</em> and |
| <em>telemetry-kafka</em>. This allows Hono’s components to define more specific dependencies on client classes |
| that they require. This change should have no effect on application clients.</li> |
| <li>The <em>set last known gateway</em> Command Router API operation has been extended to also support setting multiple |
| values in one request.</li> |
| </ul> |
| <h2 id="end-of-life">End of life</h2> |
| <ul> |
| <li>The Maven profiles for compiling in support for exporting metrics to Graphite and InfluxDB have been removed.</li> |
| </ul> |
| <h2 id="182">1.8.2</h2> |
| <h3 id="fixes--enhancements-2">Fixes & Enhancements</h3> |
| <ul> |
| <li>The MQTT adapter didn’t close the CONNECT tracing span and didn’t report metrics on failed connection attempts. This |
| has been fixed.</li> |
| <li>The registry implementations failed to reject a request to update a device’s empty set of credentials, e.g. right |
| after the device has been created, if the request contained a secret having an ID. In fact, the registry |
| implementations would have accepted such a request even if the secrets did not contain a password/key/etc at all |
| but only the identifier. This has been fixed.</li> |
| <li>A potential issue processing Command & Control messages from a Kafka cluster while Command Router instances are |
| getting stopped or started has been fixed.</li> |
| </ul> |
| <h2 id="181">1.8.1</h2> |
| <h3 id="fixes--enhancements-3">Fixes & Enhancements</h3> |
| <ul> |
| <li>Letting the trace sampling settings of the Hono components be defined via sampling strategies served by the Jaeger |
| Collector did not work for components using Quarkus native images. This has been fixed.</li> |
| <li>Command messages with no payload could not be sent to an MQTT device. This has been fixed.</li> |
| <li>The value of the properties <code>auto-provisioned</code> and <code>auto-provisioning-notification-sent</code> are always <em>false</em> while |
| retrieving device registration information using the MongoDB based registry implementation. This has been fixed now.</li> |
| <li>The Command Router service could have gotten into a state of very high CPU utilization when protocol |
| adapters submitted non-existing tenant IDs for which command routing should be re-enabled. This has been fixed.</li> |
| <li>The LoRA protocol adapter will now free command consumer resources when the idle timeout of the corresponding tenant |
| (configured via the <code>hono.lora.tenantIdleTimeout</code> property) has elapsed and the tenant is already removed or disabled.</li> |
| <li>The device registry implementations have already supported the limitation of the body size of requests to the |
| <code>/tenants</code> and <code>/credentials</code> resources of the HTTP based Device Registration Management API. |
| However, the admin guides did not cover the corresponding <code>HONO_REGISTRY_HTTP_MAXPAYLOADSIZE</code> configuration variable |
| yet. The <code>/devices</code> resources have been added to the scope of the feature and the admin guides have been amended |
| accordingly.</li> |
| </ul> |
| <h2 id="180">1.8.0</h2> |
| <h3 id="new-features-1">New Features</h3> |
| <ul> |
| <li>The CoAP adapter now supports authentication of client certificates using ECDSA based cipher suites.</li> |
| <li>The JDBC-based device registry implementation now supports the automatic creation of the database schema, both for |
| device registration and tenant data. This is especially useful for experimental setups where an embedded database, |
| such <a href="http://www.h2database.com/html/features.html#embedded_databases">as H2 provides</a>, is sufficient. To enable |
| automatic schema creation, activate the application profile <code>create-schema</code>.</li> |
| <li>Hono’s components now support configuration of supported TLS cipher suites. The cipher suites can be configured |
| separately for both the endpoints exposed by the components as well as the clients used for accessing service |
| endpoints exposed by other components. Please refer to the corresponding admin guides for details regarding the |
| corresponding configuration variables.</li> |
| <li>Hono now supports <em>auto-provisioning</em> of gateways. For more information please refer to the |
| <a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/#automatic-gateway-provisioning">Gateway Provisioning</a> |
| concept and to the <a href="https://www.eclipse.org/hono/docs/api/management#/tenants/createTenant">Device Registry Management API</a> |
| on how to configure a tenant’s trusted CA authority for that.</li> |
| <li>Now the tenant configuration supports a new property namely <em>auto-provisioning-device-id-template</em> in it’s trusted CA |
| section. During auto-provisioning of devices and gateways, the device identifier is generated based on this template |
| and used for the device registration. For more information please refer to the |
| <a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/">Device Provisioning</a> concept and to the |
| <a href="https://www.eclipse.org/hono/docs/api/management#/tenants/createTenant">Device Registry Management API</a> |
| on how to configure a tenant’s trusted CA authority for that.</li> |
| <li>The Hono CLI supports now Kafka as a messaging system. Please refer to the module’s |
| <a href="https://github.com/eclipse/hono/tree/master/cli">README</a> file for examples of using the CLI to receive events and |
| telemetry data and send commands.</li> |
| <li>The example business application supports now Kafka as a messaging system. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/dev-guide/java_client_consumer/">Developer Guide</a> for details.</li> |
| </ul> |
| <h3 id="fixes--enhancements-4">Fixes & Enhancements</h3> |
| <ul> |
| <li>The CoAP adapter did not correctly track the time it took to forward a command message to a device. This has been fixed.</li> |
| <li>Sending requests using the Hono AMQP request-response client erroneously increased the <code>hono.downstream.timeout</code> metric. |
| This has been fixed.</li> |
| <li>Support for uplink messages from the Embedded LNS on MultiTech gateways.</li> |
| <li>The <em>hono.connections.attempts</em> metric has been extended with a <code>cipher-suite</code> tag which contains the name of the |
| cipher suite that is used in a device’s attempt to establish a TLS based connection to an adapter.</li> |
| <li>The Quarkus based Command Router native image failed to start an embedded cache that was configured to persist data |
| to the local file system. This has been fixed.</li> |
| <li>The delivery of a command message sent to an AMQP device potentially didn’t get settled if the connection to the |
| AMQP device got disconnected. This has been fixed.</li> |
| <li>The Prometheus based resource limit checks' performance has been improved. This should result in considerably less |
| load on the Prometheus server when failing over all of a crashed/stopped adapter instance’s device connections.</li> |
| <li>The Hono component container images now contain the <em>Gson</em> library which is required by the Jaeger client for |
| processing sampling strategy configuration retrieved from the Jaeger Collector.</li> |
| <li>The Kafka based implementation of the north bound application client |
| <code>org.eclipse.hono.application.client.kafka.impl.KafkaApplicationClientImpl</code> now supports sending commands and |
| receiving responses in a <em>request/response</em> fashion.</li> |
| </ul> |
| <h3 id="deprecations-1">Deprecations</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.client.ApplicationClientFactory</code>, <code>org.eclipse.hono.client.AsyncCommandClient</code> and |
| <code>org.eclipse.hono.client.CommandClient</code> classes have been deprecated. Client code should use |
| <code>org.eclipse.hono.application.client.ApplicationClient</code> instead.</li> |
| </ul> |
| <h2 id="174">1.7.4</h2> |
| <h3 id="fixes--enhancements-5">Fixes & Enhancements</h3> |
| <ul> |
| <li>Letting the trace sampling settings of the Hono components be defined via sampling strategies served by the Jaeger |
| Collector did not work for components using Quarkus native images. This has been fixed.</li> |
| <li>Command messages with no payload could not be sent to an MQTT device. This has been fixed.</li> |
| <li>The value of the properties <code>auto-provisioned</code> and <code>auto-provisioning-notification-sent</code> are always <em>false</em> while |
| retrieving device registration information using the MongoDB based registry implementation. This has been fixed now.</li> |
| <li>The Command Router service could have gotten into a state of very high CPU utilization when protocol |
| adapters submitted non-existing tenant IDs for which command routing should be re-enabled. This has been fixed.</li> |
| <li>The LoRA protocol adapter will now free command consumer resources when the idle timeout of the corresponding tenant |
| (configured via the <code>hono.lora.tenantIdleTimeout</code> property) has elapsed and the tenant is already removed or disabled.</li> |
| <li>The device registry implementations have already supported the limitation of the body size of requests to the |
| <code>/tenants</code> and <code>/credentials</code> resources of the HTTP based Device Registration Management API. |
| However, the admin guides did not cover the corresponding <code>HONO_REGISTRY_HTTP_MAXPAYLOADSIZE</code> configuration variable |
| yet. The <code>/devices</code> resources have been added to the scope of the feature and the admin guides have been amended |
| accordingly.</li> |
| </ul> |
| <h2 id="173">1.7.3</h2> |
| <h3 id="fixes--enhancements-6">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Hono component container images now contain the <em>Gson</em> library which is required by the Jaeger client for |
| processing sampling strategy configuration retrieved from the Jaeger Collector.</li> |
| </ul> |
| <h2 id="172">1.7.2</h2> |
| <h3 id="fixes--enhancements-7">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Quarkus based Command Router native image failed to start an embedded cache that was configured to persist data |
| to the local file system. This has been fixed.</li> |
| <li>The delivery of a command message sent to an AMQP device potentially didn’t get settled if the connection to the |
| AMQP device got disconnected. This has been fixed.</li> |
| </ul> |
| <h2 id="171">1.7.1</h2> |
| <h3 id="fixes--enhancements-8">Fixes & Enhancements</h3> |
| <ul> |
| <li>The CoAP adapter did not correctly track the time it took to forward a command message to a device. This has been fixed.</li> |
| <li>The downstream mapping endpoint was not correctly serialized which resulted in not being able to send commands using the downstream mapping endpoint. This has been fixed.</li> |
| <li>When using Kafka as messaging system, the Command Router now creates the internal Command & Control topic with the |
| replication factor defined in the broker <code>default.replication.factor</code> setting.</li> |
| <li>Sending requests using the Hono AMQP request-response client erroneously increased the <code>hono.downstream.timeout</code> metric. |
| This has been fixed.</li> |
| </ul> |
| <h2 id="170">1.7.0</h2> |
| <h3 id="new-features-2">New Features</h3> |
| <ul> |
| <li>Apache Kafka is now supported as a messaging system for command messages. |
| This can be enabled by configuring protocol adapters to use Hono’s new Kafka-based |
| client. Please refer to <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-kafka-client-configuration/">Hono Kafka Client Configuration</a> |
| for details. The new <a href="https://www.eclipse.org/hono/docs/api/command-and-control-kafka/">Command & Control API for Kafka</a> defines |
| how applications can use Apache Kafka to send command messages to devices. |
| Note that support for Kafka based messaging is still considered an <strong>experimental</strong> feature.</li> |
| <li>The Device Registry Management API has been extended now to support an optional unique identifier |
| for trust anchors belonging to a tenant. The file, JDBC and MongoDB based device registries |
| support this feature. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/api/management#/tenants/">Device registry management API</a> for details.</li> |
| <li>The LoraWAN protocol adapter has been extended with support for <em>The Things Stack</em> provider.</li> |
| <li>The LoraWAN protocol adapter now supports command and control for providers <em>Chirpstack</em>, <em>Firefly</em> and <em>Loriot</em>.</li> |
| <li>Added (experimental) Quarkus based variant of the Authentication service.</li> |
| <li>Added (experimental) Quarkus based variant of the CoAP protocol adapter.</li> |
| <li>Added (experimental) Quarkus based variant of the Command Router component.</li> |
| <li>The container images for the (experimental) Quarkus based variant of Hono components are now being published on |
| Docker Hub as well. The JVM based image names contain a <code>-quarkus</code> suffix whereas the native image names contain a |
| <code>-quarkus-native</code> suffix. Note that the Quarkus based protocol adapter images do <strong>not</strong> support using the Device |
| Connection service but require a connection to the Command Router service being configured instead.</li> |
| <li>The MQTT adapter now lets devices subscribe on a new error topic to get informed about errors during the processing |
| of telemetry, event or command response message. With such an error subscription in place, the default behaviour |
| on such errors is now to keep the MQTT connection open. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/#error-reporting-via-error-topic">MQTT Adapter User Guide</a> for details.</li> |
| <li>The MQTT adapter now supports mapping the command payload through an external http service.</li> |
| <li>The Command Router component has been promoted from <em>tech preview</em> to <em>fully supported</em>.</li> |
| <li>The AMQP adapter now closes the network connection to the device if any terminal errors happen. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/user-guide/amqp-adapter/#error-handling">AMQP Adapter User Guide</a> for details.</li> |
| </ul> |
| <h3 id="fixes--enhancements-9">Fixes & Enhancements</h3> |
| <ul> |
| <li>The common configuration property for setting the vert.x instance’s max-event-loop-execute-time had erroneously |
| been documented as <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME_MILLIS</code>, accepting an integer representing the duration as |
| number of milliseconds. However, the correct property is named <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME</code> and accepts an |
| ISO-8601 Duration string instead of an integer.</li> |
| <li>The MQTT adapter failed to handle a command response message if the corresponding tenant object wasn’t available |
| in the cache. This has been fixed.</li> |
| <li>A failed connection attempt in the default <code>org.eclipse.hono.connection.ConnectionFactory</code> implementation could |
| have led to the AMQP connection not getting closed, occupying connection resources. This has been fixed.</li> |
| <li>Validation of MQTT topics containing property bags has been improved, preventing unhandled exceptions.</li> |
| <li>The hugo themes for the Hono website and the documentation have been updated to the latest versions respectively. |
| In order for the site module build to succeed with the <code>hugo</code> binary installed locally, the |
| <code>site/homepage/themes/hugo-universal-theme</code> and <code>site/documentation/themes/hugo-theme-learn</code> folders need to be deleted. |
| They will automatically be (re-)created as part of the build.</li> |
| <li>The Infinispan client used by the protocol adapters, the Device Connection and Command Router services has been |
| updated to version 11.0.9. The syntax of configuration file used for defining an embedded cache in the Device |
| Connection and/or Command Router service has changed as documented |
| <a href="https://infinispan.org/docs/stable/titles/upgrading/upgrading.html#upgrading_from_10_1_to_11_0">in the Infinispan version details</a>.</li> |
| <li>The Command Router no longer uses the <code>embedded-cache</code> <em>Spring profile</em> in order to configure an embedded cache. |
| Instead, the Command Router determines the type of cache (embedded or remote) by means of the |
| <code>HONO_COMMANDROUTER_CACHE_REMOTE_SERVERLIST</code> configuration variable. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/command-router-config/#data-grid-connection-configuration">Command Router Admin Guide</a> |
| for details.</li> |
| <li>The Prometheus based resource limit checks can now be configured with a time out for establishing the TCP connection |
| to the Prometheus server. This is useful to limit the time it takes to invoke the Prometheus Query API. |
| Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/common-config/#resource-limits-checker-configuration">Protocol Adapter Common Configuration guide</a> |
| for details.</li> |
| </ul> |
| <h3 id="api-changes-1">API Changes</h3> |
| <ul> |
| <li>The already deprecated classes <code>org.eclipse.hono.service.cache.SpringBasedExpiringValueCache</code> and |
| <code>org.eclipse.hono.service.cache.SpringCacheProvider</code> have been removed.</li> |
| <li>The <code>org.eclipse.hono.service.AbstractApplication</code> and <code>org.eclipse.hono.service.AbstractBaseApplication</code> classes |
| have been moved to <code>org.eclipse.hono.service.spring.AbstractApplication</code> and <code>org.eclipse.hono.service.spring.AbstractApplication</code> |
| in the newly added <code>service-base-spring</code> module respectively.</li> |
| <li>The existing <code>mapper</code> configuration has been renamed to <code>downstream-message-mapper</code>.</li> |
| <li>The Command Router component now requires the configuration of a tenant service client. Please refer to |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/command-router-config/#tenant-service-connection-configuration">Tenant Service Connection Configuration</a> |
| for details.</li> |
| </ul> |
| <h3 id="end-of-life-1">End of Life</h3> |
| <ul> |
| <li> |
| <p>The <code>build-docker-image</code> build profile is no longer activated automatically if the <em>docker.host</em> Maven property |
| is set. This has been changed in order to prevent the <code>build-docker-image</code> and <code>build-native-image</code> profiles being |
| activated at the same time when running something like</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mvn clean install -Ddocker.host<span style="color:#f92672">=</span>tcp//host:port -Pbuild-native-image |
| </code></pre></div><p>Activating the <code>build-docker-image</code> profile by default can easily be achieved by adding <code>-Pbuild-docker-image</code> to |
| the <em>MAVEN_OPTS</em> environment variable instead.</p> |
| </li> |
| </ul> |
| <h2 id="162">1.6.2</h2> |
| <h3 id="fixes--enhancements-10">Fixes & Enhancements</h3> |
| <ul> |
| <li>The CoAP adapter did not correctly track the time it took to forward a command message to a device. This has been fixed.</li> |
| <li>Sending requests using the Hono AMQP request-response client erroneously increased the <code>hono.downstream.timeout</code> metric. |
| This has been fixed.</li> |
| </ul> |
| <h2 id="161">1.6.1</h2> |
| <h3 id="fixes--enhancements-11">Fixes & Enhancements</h3> |
| <ul> |
| <li>The common configuration property for setting the vert.x instance’s max-event-loop-execute-time had erroneously |
| been documented as <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME_MILLIS</code>, accepting an integer representing the duration as |
| number of milliseconds. However, the correct property is named <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME</code> and accepts an |
| ISO-8601 Duration string instead of an integer.</li> |
| <li>The MQTT adapter failed to handle a command response message if the corresponding tenant object wasn’t available |
| in the cache. This has been fixed.</li> |
| <li>A failed connection attempt in the default <code>org.eclipse.hono.connection.ConnectionFactory</code> implementation could |
| have led to the AMQP connection not getting closed, occupying connection resources. This has been fixed.</li> |
| <li>Validation of MQTT topics containing property bags has been improved, preventing unhandled exceptions.</li> |
| <li>The protocol adapters might have run into a situation where devices connected to adapters did no longer receive |
| commands when using the Command Router service. The problem occurred when a Command Router service instance had been |
| restarted while one or more protocol adapters where connected to it. This has been fixed.</li> |
| </ul> |
| <h2 id="160">1.6.0</h2> |
| <h3 id="new-features-3">New Features</h3> |
| <ul> |
| <li>Apache Kafka is now supported as a messaging system for events and telemetry messages. |
| This can be enabled by configuring protocol adapters to use Hono’s new Kafka-based |
| client. Please refer to <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-kafka-client-configuration/">Hono Kafka Client Configuration</a> |
| for details.</li> |
| <li>New APIs have been added for the Kafka-based messaging. Please refer to |
| <a href="https://www.eclipse.org/hono/docs/api/telemetry-kafka/">Telemetry API for Kafka</a> and |
| <a href="https://www.eclipse.org/hono/docs/api/event-kafka/">Event API for Kafka</a> for the specifications.</li> |
| <li>The MQTT adapter now allows clients to indicate whether they want the target device’s tenant and/or device IDs |
| to be included in the topic used when publishing commands.</li> |
| <li>The caching behavior of the protocol adapters' AMQP based registry clients has been changed. All adapter |
| Verticle instances now share a single cache instance <em>per service</em>. In particular, there is a single cache for |
| all responses returned by the Tenant, Device Registration and Credentials service respectively. |
| In addition, each cache is now being used for all responses to requests regardless of the tenant. Consequently, the |
| service client configurations' <em>responseCacheMinSize</em> and <em>responseCacheMaxSize</em> properties now determine |
| the overall number of responses that can be cached <em>per service</em>. In previous versions the properties determined |
| the number of entries <em>per client instance and tenant</em>. The new approach allows for better control over the maximum |
| amount of memory being used by the cache and should also increase cache hits when deploying multiple adapter |
| Verticle instances. |
| The <code>org.eclipse.hono.adapter.client.registry.amqp.ProtonBasedTenantClient</code> now makes sure that only a single |
| request to the Tenant service is issued when multiple (parallel) <em>get</em> method invocations run into a cache miss. |
| This should reduce the load on the Tenant service significantly in scenarios where devices of the same |
| tenant connect to an adapter at a high rate, e.g. in when re-connecting after one or more adapter pods have |
| crashed.</li> |
| <li>The Device Registry Management API’s <em>update credentials</em> operation has been extended to allow specifying the |
| <em>auth-id</em> and validity period implicitly by means of including a (Base64 encoded) client certificate in the new |
| <em>cert</em> property. This can be used instead of specifying the client certificate’s subject DN and public key’s |
| validity period explicitly in the <em>auth-id</em> and <em>secrets</em> properties. This should make setting the correct <em>auth-id</em> |
| value much less error prone.</li> |
| <li>Hono now supports <em>auto-provisioning</em> of devices that connect via gateway. For more information please refer to the |
| <a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/#gateway-based-auto-provisioning">Device Provisioning</a> concept and to the |
| <a href="https://www.eclipse.org/hono/docs/api/management#/devices/createDeviceRegistration">Device registry management API</a> on how to |
| create a device registration for a gateway which is enabled for auto-provisioning.</li> |
| <li>The Device Registry Management API has been extended now to support searching tenants with optional filters, |
| paging and sorting options. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/api/management#/tenants/searchTenants">Device registry management API</a> for details.</li> |
| <li>The MongoDB based device registry now supports searching tenants with optional filters, paging and sorting options.</li> |
| </ul> |
| <h3 id="fixes--enhancements-12">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Mongo DB based Credentials service implementation failed to return the credentials matching the given |
| <em>type</em> and <em>auth-id</em> if multiple credentials of the same <em>type</em> but with different <em>auth-id</em> values were |
| registered for a device. This has been fixed.</li> |
| <li>The Mongo DB based registry container would have failed to start if the connection to the Mongo DB could not |
| be established quickly enough. This has been fixed by decoupling the creation of indices from the start up process.</li> |
| <li>The protocol adapters erroneously indicated a client related error to devices if the downstream AMQP container |
| rejected a message with an <code>amqp:resource-limit-exceeded</code> error condition. This has been fixed so that the adapters |
| now correctly indicate a server related problem instead.</li> |
| <li>The containers for the Device Registry implementations, the Authentication server, the Device Connection and |
| Command Router services did not shut down gracefully upon receiving a SIGTERM signal. This has been fixed.</li> |
| <li>The LoRA protocol adapter failed to start due to a missing bean declaration. This has been fixed.</li> |
| </ul> |
| <h3 id="deprecations-2">Deprecations</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.service.cache.SpringCacheProvider</code> and <code>org.eclipse.hono.service.cache.SpringBasedExpiringValueCache</code> |
| classes have been deprecated to further reduce the dependency on Spring Boot. Clients should use |
| <code>org.eclipse.hono.service.cache.CaffeineCacheProvider</code> and <code>org.eclipse.hono.service.cache.CaffeineBasedExpiringValueCache</code> |
| instead.</li> |
| <li>Most of the public interfaces of the legacy <code>client</code> module have been deprecated. Client code should be |
| adapted to use the corresponding interfaces and implementations from the <code>clients/adapter</code>, <code>clients/adapter-amqp</code> |
| and <code>clients/application-amqp</code> modules instead.</li> |
| <li>The Authentication server’s <code>HONO_AUTH_SVC_PERMISSIONS_PATH</code> configuration property has been changed to no |
| longer accept generic Spring resource URIs. The value is now required to be a file system path. The path |
| may still contain a <code>file://</code> prefix in order to not break existing configurations. However, users are encouraged |
| to remove the prefix as it will no longer be supported in versions starting with 2.0.0. |
| The default permissions file has been removed from the Authentication server code base. Consequently, |
| permissions can no longer be loaded from the class path using a <code>classpath://</code> URI. In practice this should |
| have no impact because the Hono chart comes with a default permissions file which the Authentication |
| server is pre-configured to load from the file system.</li> |
| </ul> |
| <h2 id="152">1.5.2</h2> |
| <h3 id="fixes--enhancements-13">Fixes & Enhancements</h3> |
| <ul> |
| <li>The protocol adapters erroneously indicated a client related error to devices if the downstream AMQP container |
| rejected a message with an <code>amqp:resource-limit-exceeded</code> error condition. This has been fixed so that the adapters |
| now correctly indicate a server related problem instead.</li> |
| <li>The containers for the Device Registry implementations, the Authentication server, the Device Connection and |
| Command Router services did not shut down gracefully upon receiving a SIGTERM signal. This has been fixed.</li> |
| <li>The LoRA protocol adapter failed to start due to a missing bean declaration. This has been fixed.</li> |
| </ul> |
| <h2 id="151">1.5.1</h2> |
| <h3 id="fixes--enhancements-14">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Mongo DB based Credentials service implementation failed to return the credentials matching the given |
| <em>type</em> and <em>auth-id</em> if multiple credentials of the same <em>type</em> but with different <em>auth-id</em> values were |
| registered for a device. This has been fixed.</li> |
| <li>When using the Command Router or Device Connection service component with an embedded cache, a cache |
| configuration file was required. Now, a default configuration will be used if no configuration file is |
| given.</li> |
| <li>The Mongo DB based registry container would have failed to start if the connection to the Mongo DB could not |
| be established quickly enough. This has been fixed by decoupling the creation of indices from the start up process.</li> |
| <li>The AMQP and MQTT adapters would erroneously forward commands to unauthorized gateway devices under certain |
| conditions. This has been fixed.</li> |
| </ul> |
| <h2 id="150">1.5.0</h2> |
| <h3 id="new-features-4">New Features</h3> |
| <ul> |
| <li>The CoAP adapter has been promoted from <em>experimental</em> to <em>fully supported</em>.</li> |
| <li>The Hono Client now supports several configuration properties that can be used |
| to limit its resource usage. In particular the AMQP connection’s <em>max-frame-size</em>, |
| the AMQP session’s incoming window size and the <em>max-message-size</em> of receiver |
| links can be configured (and thus limited).</li> |
| <li>A new way of routing Command & Control messages from the AMQP messaging network |
| to the target protocol adapters has been introduced. For that, a new |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/command-router-config">Command Router service</a> |
| component is used, receiving command messages and routing them to the appropriate |
| protocol adapters. Protocol adapters supply routing information to the component |
| by means of a new <a href="https://www.eclipse.org/hono/docs/api/command-router/">Command Router API</a>. |
| Protocol adapters can be configured to either use that new API or they can continue |
| using the now deprecated <a href="https://www.eclipse.org/hono/docs/api/device-connection/">Device Connection API</a> |
| instead, meaning command routing will be done without using the Command Router.</li> |
| <li>The pre-built Hono Docker images available from Docker Hub now include the Jaeger |
| OpenTracing client.</li> |
| </ul> |
| <h3 id="fixes--enhancements-15">Fixes & Enhancements</h3> |
| <ul> |
| <li>The file based as well as the MongoDB based registry implementations now remove the shared-key from |
| PSK credentials returned in the response of the Management API’s <em>get credentials</em> operation.</li> |
| <li>The Device Registry Management API erroneously declared the <em>plaintext password</em> conveyed in the |
| <em>update credentials</em> operation’s request payload as a Base64 encoded byte array instead of a |
| plain string. This has been fixed.</li> |
| <li>The file based as well as the Mongo DB based registry implementations had failed to do both |
| updating an existing secret (referred to by ID) and adding a new secret to the same credentials |
| in a single request. This has been fixed.</li> |
| <li>The property names for specifying the patterns for validating Tenant and Device IDs have been fixed |
| in the admin guides for the file based and the Mongo DB based registry implementations.</li> |
| <li>The registry implementations did not accept X.509 credentials in an update Credentials request. |
| They also failed to remove existing credentials of a device if they were not included in an |
| update Credentials request. This has been fixed.</li> |
| <li>The file based device registry also now supports searching devices for a tenant with optional filters, |
| paging and sorting options. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/api/management#/devices/searchDevicesForTenant">Device registry management API</a> |
| for details.</li> |
| <li>The wildcards <code>?</code> and <code>*</code> are now supported by the search devices operation in the MongoDB based device registry. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/api/management#/devices/searchDevicesForTenant">Device registry management API</a> |
| for details.</li> |
| <li>Command messages that have their payload in an AMQP body section whose type isn’t supported in Hono |
| now get rejected, instead of getting forwarded to the device with an empty payload.</li> |
| <li>The authentication providers in Hono use <code>CredentialsObject.getCandidateSecrets</code> to retrieve valid secrets. |
| The secrets are currently filtered based on their validity period regardless of whether the status is enabled |
| or not. This has been fixed now, so that the disabled secrets are filtered out.</li> |
| <li>The MQTT adapter now supports specifying the content-type of a telemetry/event message via a MQTT property bag.</li> |
| <li>The MQTT adapter now sets the MQTT client identifier as <em>client-id</em> in the payload of a Credentials API <em>get</em> |
| operation request also when authenticating a device using the username/password mechanism. Previously that was |
| only done for the client certificate authentication mechanism.</li> |
| <li>The HTTP adapter did not properly forward the QoS level for events when the <em>qos-level</em> header is not set |
| or set to AT_MOST_ONCE. This has been fixed.</li> |
| <li>An HTTP device sending a command response request with no <code>Content-Type</code> header meant that the northbound |
| application received a message with an empty content type. Now, the <code>application/octet-stream</code> |
| content type is set, as it is also done for telemetry/event HTTP requests with no <code>Content-Type</code> header.</li> |
| <li>There were errors sending Connection Events via the Events API if the corresponding tenant didn’t |
| have a non-default <code>max-ttl</code> resource limit configuration. This has been fixed.</li> |
| </ul> |
| <h3 id="api-changes-2">API Changes</h3> |
| <ul> |
| <li>The deprecated configuration property <code>singleTenant</code> of the protocol adapters and the device registry has been removed.</li> |
| <li>The default pattern for valid device identifiers used for the file based and the MongoDB based registry |
| implementations now also contains a colon for compatibility with Eclipse Ditto.</li> |
| </ul> |
| <h3 id="end-of-life-2">End of Life</h3> |
| <ul> |
| <li>The <em>hono-jmeter</em> Maven module along with the JMeter plugin that is contained in it hasn’t been updated for |
| over a year and is also not used in any automated test runs. |
| JMeter has turned out not to be the best choice for conducting load tests of Hono because it is difficult to |
| generate the needed AMQP message load with its (blocking) thread based execution model. |
| The JMeter plugin therefore has been removed.</li> |
| </ul> |
| <h2 id="145">1.4.5</h2> |
| <h3 id="fixes--enhancements-16">Fixes & Enhancements</h3> |
| <ul> |
| <li>The tenant timeout mechanism doesn’t close command consumer resources anymore if there are still active |
| command subscriptions from AMQP or MQTT devices of the corresponding tenant.</li> |
| <li>The Mongo DB based Credentials service implementation failed to return the credentials matching the given |
| <em>type</em> and <em>auth-id</em> if multiple credentials of the same <em>type</em> but with different <em>auth-id</em> values were |
| registered for a device. This has been fixed.</li> |
| <li>The Mongo DB based registry container would have failed to start if the connection to the Mongo DB could not |
| be established quickly enough. This has been fixed by decoupling the creation of indices from the start up process.</li> |
| <li>The AMQP and MQTT adapters would erroneously forward commands to unauthorized gateway devices under certain |
| conditions. This has been fixed.</li> |
| </ul> |
| <h2 id="144">1.4.4</h2> |
| <h3 id="fixes--enhancements-17">Fixes & Enhancements</h3> |
| <ul> |
| <li>The HTTP adapter did not properly forward the QoS level for events when the <em>qos-level</em> header is not set |
| or set to AT_MOST_ONCE. This has been fixed.</li> |
| <li>An HTTP device sending a command response request with no <code>Content-Type</code> header meant that the north bound |
| application received a message with the content type set to an empty string. Now, the content type property |
| isn’t set in this case.</li> |
| <li>There were errors sending Connection Events via the Events API if the corresponding tenant didn’t |
| have a non-default <code>max-ttl</code> resource limit configuration. This has been fixed.</li> |
| </ul> |
| <h2 id="143">1.4.3</h2> |
| <h3 id="fixes--enhancements-18">Fixes & Enhancements</h3> |
| <ul> |
| <li>The file based as well as the Mongo DB based registry implementations now remove the shared-key from |
| PSK credentials returned in the response of the Management API’s <em>get credentials</em> operation.</li> |
| <li>The Device Registry Management API erroneously declared the <em>plain text password</em> conveyed in the |
| <em>update credentials</em> operation’s request payload as a Base64 encoded byte array instead of a |
| plain string. This has been fixed.</li> |
| <li>The file based as well as the Mongo DB based registry implementations had failed to do both |
| updating an existing secret (referred to by ID) and adding a new secret to the same credentials |
| in a single request. This has been fixed.</li> |
| <li>The property names for specifying the patterns for validating Tenant and Device IDs have been fixed |
| in the admin guides for the file based and the Mongo DB based registry implementations.</li> |
| <li>The registry implementations did not accept X.509 credentials in an update Credentials request. |
| They also failed to remove existing credentials of a device if they were not included in an |
| update Credentials request. This has been fixed.</li> |
| <li>The AMQP protocol adapter did accept messages from clients (devices) exceeding the adapter’s configured |
| max-message-size. This has been fixed and the adapter now closes the link to the device in this case.</li> |
| </ul> |
| <h3 id="api-changes-3">API Changes</h3> |
| <ul> |
| <li>The default pattern for valid device identifiers used for the file based and the MongoDB based registry |
| implementations now also contains a colon (<code>:</code>) for compatibility with Eclipse Ditto.</li> |
| </ul> |
| <h2 id="140">1.4.0</h2> |
| <h3 id="new-features-5">New Features</h3> |
| <ul> |
| <li>The protocol adapters now report connection attempts made by devices |
| in a new metric. In particular, the metric includes a tag reflecting the outcome |
| of the attempt to establish a connection and the reason for failure. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/api/metrics">Metrics API</a> for details.</li> |
| <li>A new Quarkus based HTTP protocol adapter is now available. This adapter version provides better memory consumption and |
| startup times comparing to the existing one.</li> |
| <li>The LoraWAN protocol adapter has been extended with support for the <em>Actility Enterprise</em> provider.</li> |
| <li>The LoraWAN protocol adapter has been extended with support for the <em>Orbiwise</em> provider.</li> |
| <li>Added metrics for tracking the RTT between sending an AMQP message to receiving the disposition.</li> |
| <li>The CoAP adapter now supports configuration of the <em>timeoutToAck</em> parameter at the tenant level |
| in addition to the adapter level. If set, the tenant specific value is used for all devices of the |
| particular tenant. If not set, the value defined at the adapter level is used.</li> |
| <li>The Device Registry Management API has been extended now to support searching devices for a tenant |
| with optional filters, paging and sorting options. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/api/management#/devices/searchDevicesForTenant">Device registry management API</a> |
| for details.</li> |
| <li>The MongoDB based device registry now supports searching devices for a tenant with optional filters, |
| paging and sorting options.</li> |
| </ul> |
| <h3 id="fixes--enhancements-19">Fixes & Enhancements</h3> |
| <ul> |
| <li>The MongoDB based device registry now checks for tenant existence during device registration and credentials management operations.</li> |
| </ul> |
| <h3 id="deprecations-3">Deprecations</h3> |
| <ul> |
| <li>The configuration property <code>singleTenant</code> of the protocol adapters and the device registry is now deprecated |
| and planned to be removed in a future release. The use case of a system with just a single tenant should be |
| realized by configuring just one tenant in the device registry.</li> |
| <li>The <code>HONO_REGISTRY_REST_*</code> configuration properties of the file based device registry have been deprecated |
| in favor of corresponding properties with the <code>HONO_REGISTRY_HTTP_</code> prefix.</li> |
| </ul> |
| <h2 id="132">1.3.2</h2> |
| <h3 id="fixes--enhancements-20">Fixes & Enhancements</h3> |
| <ul> |
| <li>The HTTP adapter did not properly forward the QoS level for events when the <em>qos-level</em> header is not set |
| or set to AT_MOST_ONCE. This has been fixed.</li> |
| <li>An HTTP device sending a command response request with no <code>Content-Type</code> header meant that the northbound |
| application received a message with the content type set to an empty string. Now, the content type property |
| isn’t set in this case.</li> |
| <li>There were errors sending Connection Events via the Events API if the corresponding tenant didn’t |
| have a non-default <code>max-ttl</code> resource limit configuration. This has been fixed.</li> |
| </ul> |
| <h2 id="131">1.3.1</h2> |
| <h3 id="fixes--enhancements-21">Fixes & Enhancements</h3> |
| <ul> |
| <li>The file based as well as the Mongo DB based registry implementations now remove the shared-key from |
| PSK credentials returned in the response of the Management API’s <em>get credentials</em> operation.</li> |
| <li>The Device Registry Management API erroneously declared the <em>plain text password</em> conveyed in the |
| <em>update credentials</em> operation’s request payload as a Base64 encoded byte array instead of a |
| plain string. This has been fixed.</li> |
| <li>The file based as well as the Mongo DB based registry implementations had failed to do both |
| updating an existing secret (referred to by ID) and adding a new secret to the same credentials |
| in a single request. This has been fixed.</li> |
| <li>The property names for specifying the patterns for validating Tenant and Device IDs have been fixed |
| in the admin guides for the file based and the Mongo DB based registry implementations.</li> |
| <li>The registry implementations did not accept X.509 credentials in an update Credentials request. |
| They also failed to remove existing credentials of a device if they were not included in an |
| update Credentials request. This has been fixed.</li> |
| <li>The AMQP protocol adapter did accept messages from clients (devices) exceeding the adapter’s configured |
| max-message-size. This has been fixed and the adapter now closes the link to the device in this case.</li> |
| </ul> |
| <h3 id="api-changes-4">API Changes</h3> |
| <ul> |
| <li>The default pattern for valid device identifiers used for the file based and the MongoDB based registry |
| implementations now also contains a colon (<code>:</code>) for compatibility with Eclipse Ditto.</li> |
| </ul> |
| <h2 id="130">1.3.0</h2> |
| <h3 id="new-features-6">New Features</h3> |
| <ul> |
| <li>The LoraWAN protocol adapter has been extended with support for the <em>ChirpStack</em> provider.</li> |
| <li>Hono’s integration tests can now be run with a Jaeger back end in order to collect tracing |
| information.</li> |
| <li>The AMQP 1.0 event message based Connection Event producer now sets a TTL on the event messages |
| it produces. The TTL is the <em>max TTL</em> configured at the tenant level.</li> |
| <li>A new Device Registry implementation based on MongoDB database is now available in Hono. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/user-guide/mongodb-based-device-registry">MongoDB Device Registry User Guide</a> |
| for additional information.</li> |
| <li>Hono protocol adapters can now be configured to use address rewriting when opening AMQP 1.0 links to the messaging network. |
| This allows an easier deployment in multi-tenant messaging environments. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/#address-rewriting">Hono Client Configuration Guide</a> |
| for additional information.</li> |
| </ul> |
| <h3 id="fixes--enhancements-22">Fixes & Enhancements</h3> |
| <ul> |
| <li>An admin guide for the CoAP adapter has been added.</li> |
| <li>The Prometheus based resource limits checker now supports configuring a query timeout. |
| Please refer to <a href="https://www.eclipse.org/hono/docs/admin-guide/common-config/#resource-limits-checker-configuration">Resource Limits Checker Configuration</a> |
| for additional information.</li> |
| <li>When sending a command message to a device, the AMQP adapter now waits for a |
| configurable period of time (default is 1 second) for the acknowledgement from the device. |
| If none is received, the downstream command sender gets back a <code>released</code> outcome. |
| Please refer to the <code>sendMessageToDeviceTimeout</code> property description in the |
| AMQP Adapter admin guide for additional information.</li> |
| <li>The client for storing device connection information to a data grid now supports configuring |
| the name of the cache to store the data in.</li> |
| <li>When the connection to a device is closed or lost, a protocol adapter instance will now |
| stop listening for commands targeted at the device.</li> |
| <li>The AMQP adapter before accepting any connections checks if the connection limit is exceeded |
| or not and if the adapter is enabled or not. These checks are currently done inside the |
| <code>AmqpAdapterSaslAuthenticatorFactory</code>. Thereby, if any of these checks failed, the AMQP adapter |
| reported authentication failure instead of the actual reason. This has been fixed now.</li> |
| <li>The AMQP adapter did not consider the <code>HONO_CONNECTIONEVENTS_PRODUCER</code> configuration variable |
| to set a Connection Event producer. This has been fixed.</li> |
| <li>The <em>logging</em> Connection Event producer now supports configuring the level |
| at which information should be logged. The producer type <em>none</em> has been added to explicitly |
| turn off connection event reporting altogether. |
| Please refer to the <em>Common Configuration</em> admin guide for details.</li> |
| <li>The packages <code>org.eclipse.hono.service.credentials</code>, <code>org.eclipse.hono.service.management</code>, |
| <code>org.eclipse.hono.service.management.credentials</code>, <code>org.eclipse.hono.service.management.device</code>, |
| <code>org.eclipse.hono.service.management.tenant</code>, <code>org.eclipse.hono.service.registration</code> and |
| <code>org.eclipse.hono.service.tenant</code> have been moved from the <em>service-base</em> to the |
| <em>device-registry-base</em> module.</li> |
| <li>The Device Connection service did return a 500 error code if no <em>last known gateway</em> could |
| be found for a device ID. This has been fixed so that the service now returns a 404 in that |
| case as specified by the Device Connection API.</li> |
| <li>The cache based Device Connection service implementation now applies a lifespan of 28 days |
| when setting/updating cache entries containing <em>last known gateway</em> information. This means |
| no global expiration configuration is needed anymore for the cache.</li> |
| <li>Protocol adapters failed to re-establish receiver links for commands to be routed after loss |
| of connection to the AMQP Messaging Network. This has been fixed.</li> |
| <li>The AMQP adapter reported an incorrect number of connections if resource limits had been |
| defined and exceeded. This has been fixed.</li> |
| <li>The device registry management HTTP endpoints now reject requests to register or update objects |
| containing unknown properties. In the past such properties had been simply ignored.</li> |
| <li>The Device Registry Management API has been amended with example messages and more thorough |
| description of operations.</li> |
| <li>The CoAP adapter has been enhanced to asynchronously look up a device’s PSK during the |
| DTLS handshake. This will allow the adapter to handle a lot more handshakes concurrently. |
| The adapter also employs a more efficient message de-duplicator which reduces the adapter’s |
| memory footprint.</li> |
| </ul> |
| <h3 id="api-changes-5">API Changes</h3> |
| <ul> |
| <li>The <code>getRemoteContainer</code> method in <code>org.eclipse.hono.client.HonoConnection</code> has been |
| renamed to <code>getRemoteContainerId</code>.</li> |
| <li>The <code>getName</code> method in <code>org.eclipse.hono.connection.ConnectionFactory</code> has been removed |
| and an additional <code>connect</code> method has been added.</li> |
| <li>The <em>set command-handling protocol adapter instance</em> operation of the <em>Device Connection</em> API |
| has been extended to support an additional parameter which can be used to indicate the |
| maximum amount of time that the given information is to be considered valid.</li> |
| <li>The <code>hono-core</code> module no longer embeds any external classes by default. |
| This includes the <em>OpenTracing API</em> and <em>Spring Crypto</em> classes. You can still |
| embed the classes, as in Hono versions 1.2.x and before, by enabling the |
| Maven profile <code>embed-dependencies</code> (e.g. using the command line switch |
| <code>-Pembed-dependencies</code>). By default this profile is not active.</li> |
| <li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface’s <em>get</em> methods have been removed |
| because the Device Registration API does not define a corresponding operation. |
| Consequently, the C&C functionality of the Kerlink Lora provider which relied on the <em>get</em> |
| method has been removed.</li> |
| <li>Protocol adapters implementing the <code>org.eclipse.hono.service.AbstractAdapterConfig</code> class |
| now need to implement the <code>getAdapterName</code> method. The <code>customizeDownstreamSenderFactoryConfig</code> |
| method has been renamed to <code>getDownstreamSenderFactoryConfigDefaults</code>, while now returning |
| properties instead of working on given ones. The new method name now more accurately conveys |
| what the method is used for. The same change has been applied to the other <code>customize[*]Config</code> |
| methods in the <code>AbstractAdapterConfig</code> class.</li> |
| <li>The file based as well as the MongoDB based device registry implementations now disallow certain |
| special characters in device and tenant identifiers. The configuration properties |
| <code>HONO_REGISTRY_HTTP_TENANT_ID_PATTERN</code> and <code>HONO_REGISTRY_HTTP_DEVICE_ID_PATTERN</code> (and corresponding ones with |
| prefix <code>HONO_REGISTRY_REST</code> for the file based registry) can be used to override the patterns for matching |
| valid identifiers. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/file-based-device-registry-config/#service-configuration">file based registry</a> or |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/mongodb-device-registry-config/#service-configuration">MongoDB based registry</a> |
| configuration guide for details.</li> |
| </ul> |
| <h3 id="deprecations-4">Deprecations</h3> |
| <ul> |
| <li>The configuration property <code>HONO_MQTT_COMMAND_ACK_TIMEOUT</code> of the MQTT adapter is now deprecated |
| and planned to be removed in a future release. Use <code>HONO_MQTT_SEND_MESSAGE_TO_DEVICE_TIMEOUT</code> instead.</li> |
| </ul> |
| <h2 id="124">1.2.4</h2> |
| <h3 id="fixes--enhancements-23">Fixes & Enhancements</h3> |
| <ul> |
| <li>The <code>HonoConnection</code> implementation didn’t use a delay before a reconnect attempt after |
| a certain number of reconnect attempts (58 with the default configuration) had already |
| failed. This has been fixed.</li> |
| <li>An error when freeing Command & Control related resources of an idle tenant has been fixed.</li> |
| <li>The Hotrod based DeviceConnectionClientFactory has been improved to prevent locking of |
| objects in a clustered cache.</li> |
| <li>The AMQP adapter reported an incorrect number of connections if resource limits had been |
| defined and exceeded. This has been fixed.</li> |
| </ul> |
| <h2 id="123">1.2.3</h2> |
| <h3 id="fixes--enhancements-24">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Device Connection service did return a 500 error code if no <em>last known gateway</em> could |
| be found for a device ID. This has been fixed so that the service now returns a 404 |
| in that case as specified by the Device Connection API.</li> |
| <li>The cache based Device Connection service implementation now applies a lifespan of 28 days |
| when setting/updating cache entries containing <em>last known gateway</em> information. This means |
| no global expiration configuration is needed anymore for the cache.</li> |
| <li>Protocol adapters failed to re-establish receiver links for commands to be routed after loss |
| of connection to the AMQP Messaging Network. This has been fixed.</li> |
| </ul> |
| <h3 id="api-changes-6">API Changes</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface’s <em>get</em> methods have been removed |
| because the Device Registration API does not define a corresponding operation. |
| Consequently, the C&C functionality of the Kerlink Lora provider which relied on the <em>get</em> |
| method has been removed.</li> |
| </ul> |
| <h2 id="122">1.2.2</h2> |
| <h3 id="fixes--enhancements-25">Fixes & Enhancements</h3> |
| <ul> |
| <li>Commands might not have been routed to the target device or gateway if multiple |
| Verticle instances were deployed in a protocol adapter instance. This has been fixed.</li> |
| <li>The example registry’s admin guide has been amended with some missing configuration |
| variables.</li> |
| <li>The documentation of the underlying concepts of Hono’s Command & Control functionality |
| has been updated to reflect recent changes.</li> |
| <li>Some dependencies have been updated to more recent versions fixing potential |
| vulnerabilities.</li> |
| </ul> |
| <h2 id="121">1.2.1</h2> |
| <h3 id="fixes--enhancements-26">Fixes & Enhancements</h3> |
| <ul> |
| <li>The AMQP adapter didn’t report any metrics anymore. This has been fixed.</li> |
| <li>The CoAP and HTTP adapters' user guide now correctly documents the 413 status code returned |
| in response to a request that contains a payload exceeding the configured maximum size.</li> |
| </ul> |
| <h2 id="120">1.2.0</h2> |
| <h3 id="new-features-7">New Features</h3> |
| <ul> |
| <li>The protocol adapters can now be configured with a direct connection to a data grid |
| for storing device connection information. |
| This has the advantage of saving the network hop to the Device Connection service. |
| Please refer to the protocol adapter Admin Guides for details.</li> |
| <li>The Prometheus based resource limits check can now be configured with a trust store, key material |
| and/or a username and password in order to be able to connect to a Prometheus server |
| that requires TLS and/or client authentication.</li> |
| <li>A Java client for the communication with the AMQP protocol adapter has been added. |
| It can be used to implement devices, (protocol) gateways and for testing purposes. |
| For more information refer to <a href="https://www.eclipse.org/hono/docs/dev-guide/amqp_adapter_client/">AMQP Adapter Client for Java</a>.</li> |
| <li>Devices can now be configured with <em>groups</em> of gateways that are allowed to act on behalf of the |
| device. This makes it easier to support scenarios in which a device may <em>roam</em> between multiple |
| gateways. The HTTP based management API has been adapted accordingly.</li> |
| <li>The CoAP adapter now supports forwarding commands to devices in the response body of requests for |
| uploading telemetry data and/or events, analogous to the HTTP adapter. |
| Please note that the CoAP adapter is still considered <em>experimental</em> and its device facing API |
| is therefore still subject to change.</li> |
| </ul> |
| <h3 id="fixes--enhancements-27">Fixes & Enhancements</h3> |
| <ul> |
| <li>When a message arrived, the <em>message limit</em> checks failed to calculate the payload size |
| of the incoming message based on the configured <em>minimum message size</em>. Instead, it used the |
| actual payload size to verify if the <em>message limit</em> has been exceeded or not. This has been |
| fixed now.</li> |
| <li>The Command & Control implementation in the protocol adapters has been optimized to use |
| far fewer consumer links to the AMQP Messaging Network, saving up on resources. |
| Before this change, the protocol adapters created a separate receiver link for each device that wanted |
| to receive commands. Now each protocol adapter instance creates only a single receiver link over |
| which all commands for all devices connected to the adapter instance are transmitted.</li> |
| <li>The base classes for implementing a device registry have been moved into their own <code>device-registry-based</code> |
| module.</li> |
| <li>The example device registry’s AMQP and HTTP endpoints do no longer exchange incoming request messages and outgoing |
| response messages with the service implementation verticles over the Vert.x EventBus. This reduces complexity |
| and should improve throughput as messages no longer need to be serialized anymore.</li> |
| <li>A first version of the CoAP User Guide has been added.</li> |
| <li>A concept page explaining the different ways devices can be connected to Hono’s protocol adapters has been |
| added. There is also example code illustrating how a protocol gateway which connects to the AMQP adapter can |
| be implemented.</li> |
| <li>If both AMQP and Kafka messaging systems are configured, then Command & Control messages will be received from |
| both systems. A command response message from a device will by default be forwarded using the messaging system |
| that the corresponding command message was received in.</li> |
| </ul> |
| <h3 id="api-changes-7">API Changes</h3> |
| <ul> |
| <li>The device registry credentials endpoint will no longer hand out sensitive details for hashed-password secrets. |
| <code>pwd-hash</code>, <code>salt</code> and <code>hash-function</code> are stored by the device registry but not returned to the user. |
| Each secret is given an ID which is now returned, along with the other metadata (time validity and optional fields).</li> |
| <li>The <code>tenant</code> and <code>devices</code> endpoints of the management HTTP API now accept creation requests without a body. |
| As there is no mandatory field, having a mandatory body was confusing.</li> |
| <li>The methods of the service base classes <code>CredentialsManagementService</code>, <code>CredentialsService</code>, |
| <code>DeviceConnectionService</code>, <code>DeviceManagementService</code>, <code>RegistrationService</code>, <code>TenantManagementService</code> and |
| <code>TenantService</code> have been refactored to now return a Vert.x Future instead of taking a Handler as an argument.</li> |
| <li>The <code>CommandConsumerFactory</code> interface has been renamed to <code>ProtocolAdapterCommandConsumerFactory</code> and method |
| signatures have been changed slightly. Also, a new <code>initialize</code> method has been added to be called on protocol |
| adapter startup.</li> |
| <li>The AMQP Messaging Network now has to be configured in such a way that protocol adapters can send and |
| receive messages on the <code>command_internal/*</code> instead of the <code>control/*</code> address pattern.</li> |
| <li>The Device Registry Management API has been extended to support the definition of <em>Gateway Groups</em> which |
| can be referenced in a device’s <em>viaGroups</em> property in order to authorize all gateways that are a member |
| of any of the groups to act on behalf of the device.</li> |
| </ul> |
| <h2 id="112">1.1.2</h2> |
| <h3 id="api-changes-8">API Changes</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface’s <em>get</em> methods have been removed |
| because the Device Registration API does not define a corresponding operation. |
| Consequently, the C&C functionality of the Kerlink Lora provider which relied on the <em>get</em> |
| method has been removed.</li> |
| </ul> |
| <h2 id="111">1.1.1</h2> |
| <h3 id="fixes--enhancements-28">Fixes & Enhancements</h3> |
| <ul> |
| <li>The <em>FireFly</em> LoRa adapter now supports mapping of the <em>mic</em> property.</li> |
| <li>A bug preventing the lora and SigFox adapters to start up correctly has been fixed.</li> |
| <li>The MQTT adapter failed to accept command response messages from authenticated gateways that had |
| been published to the <code>command//${device-id}/res/${req-id}/${status}</code> topic. This has been fixed |
| and the adapter now correctly uses the gateway’s tenant in this case.</li> |
| <li>When a north bound application sent a command to a device that is connected via a gateway, the |
| AMQP adapter set the gateway’s ID instead of the device’s ID in the command response forwarded |
| to the application. This has been fixed.</li> |
| </ul> |
| <h2 id="110">1.1.0</h2> |
| <h3 id="new-features-8">New Features</h3> |
| <ul> |
| <li>The Sigfox and LoRaWAN adapters now report metrics analogously to the other protocol |
| adapters.</li> |
| <li>With the release of <a href="https://www.eclipse.org/californium">Eclipse Californium</a> 2.0.0, |
| the CoAP adapter became an official part of the Hono release. The adapter also supports |
| tracking of request processing using OpenTracing but is still considered <em>experimental</em>.</li> |
| <li>A lorawan provider has been added for the <em>loriot</em> network provider.</li> |
| <li>Hono’s protocol adapters now support Server Name Indication in order |
| to allow devices to establish a TLS connection with adapters using a tenant specific |
| server certificate and host name. Please refer to the <em>Secure Communication</em> admin |
| guide for details.</li> |
| <li>Hono now supports <em>auto-provisioning</em> of devices that authenticate with X.509 client certificates. |
| For more information please refer to the <a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/">Device Provisioning</a> |
| concept and for details to the <a href="https://www.eclipse.org/hono/docs/api/tenant/#trusted-ca-format">Tenant API</a> |
| and the <a href="https://www.eclipse.org/hono/docs/api/credentials/#get-credentials">Credentials API</a>.</li> |
| <li>The Hono Auth Server and Device Registry components now support configuring the SASL |
| mechanisms advertised to a client connecting to these components. This can be used to |
| restrict the support to only one of the SASL PLAIN and EXTERNAL mechanisms instead of both.</li> |
| <li>A new metric namely <em>hono.connections.authenticated.duration</em> has been introduced to track the |
| connection duration of the authenticated devices. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/api/metrics/">Metrics API</a> for more details.</li> |
| <li>The protocol adapters that maintain <em>connection state</em> can now be configured to verify the <em>connection |
| duration limit</em> for each tenant before accepting any new connection request from the devices. Please |
| refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/#connection-duration-limit">resource-limits</a> |
| section for more details.</li> |
| <li>Hono’s example device registry now supports configuring a time out for processing requests from clients. |
| This is configured using the property <code>sendTimeOutInMs</code> in <code>org.eclipse.hono.config.ServiceConfigProperties</code>.</li> |
| <li>Hono’s Helm chart is now available from the |
| <a href="https://www.eclipse.org/packages/repository/">Eclipse IoT Packages chart repository</a>. |
| All future development of the chart will be done in the IoT Packages project only. |
| The deployment guide has been adapted accordingly.</li> |
| </ul> |
| <h3 id="fixes--enhancements-29">Fixes & Enhancements</h3> |
| <ul> |
| <li>Hono’s Helm chart now supports configuring resource requests and limits of the container images.</li> |
| <li>The MQTT adapter now includes a device’s MQTT client ID in its request to retrieve the device’s |
| credentials. This additional information can be used by device registry implementations when determining |
| the device identity.</li> |
| <li>The domain name of the <a href="/hono/sandbox/">Hono Sandbox</a> has been changed to |
| <code>hono.eclipseprojects.io</code>. |
| It will still be available at the old domain name for some time as well, though.</li> |
| <li>Hono’s OpenTracing instrumentation has been upgraded to Opentracing 0.33.0. |
| The example deployment now uses the Jaeger Java client in version 0.35.2 and the |
| Jaeger 1.16 agent and back end components.</li> |
| <li>Some of the environment variable names documented in the user guides which can be used for configuring |
| Hono components had not been recognized during start up of the components. |
| In particular, the names for configuring the connection to the Device Connection service |
| and for configuring a heath check server have been fixed.</li> |
| <li>The AMQP adapter now correctly accepts command response messages from devices that do not |
| contain any payload. Such responses are useful to only convey a status code in reply to |
| a command.</li> |
| </ul> |
| <h3 id="api-changes-9">API Changes</h3> |
| <ul> |
| <li>The already deprecated endpoints with the <code>control</code> prefix have been removed. The northbound and southbound |
| Command & Control endpoints can now only be used with the <code>command</code> and <code>command_response</code> prefixes |
| (or the respective shorthand version). Note that the AMQP Messaging Network still needs to be |
| configured in such a way that protocol adapters can send and receive messages on the <code>control/*</code> |
| address pattern. This is now used for internal communication between protocol adapters only.</li> |
| <li>The <code>create</code> method in <code>org.eclipse.hono.client.HonoConnection</code> now requires its Vertx parameter to be not null.</li> |
| </ul> |
| <h2 id="104">1.0.4</h2> |
| <h3 id="api-changes-10">API Changes</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface’s <em>get</em> methods have been removed |
| because the Device Registration API does not define a corresponding operation. |
| Consequently, the C&C functionality of the Kerlink Lora provider which relied on the <em>get</em> |
| method has been removed.</li> |
| </ul> |
| <h2 id="103">1.0.3</h2> |
| <h3 id="fixes--enhancements-30">Fixes & Enhancements</h3> |
| <ul> |
| <li>Hono’s Helm Chart now correctly configures Prometheus based resource limit checks if |
| a Prometheus server is being used for collecting metrics.</li> |
| <li>Some OpenTracing spans used for tracking processing of messages haven’t properly been finished. |
| This has been fixed.</li> |
| <li>Protocol adapters are now able to process messages while still trying to re-establish connections |
| to other services after a connection loss. This might result in fewer messages being rejected |
| in such situations.</li> |
| </ul> |
| <h2 id="102">1.0.2</h2> |
| <h3 id="fixes--enhancements-31">Fixes & Enhancements</h3> |
| <ul> |
| <li>The example deployment now also works with Kubernetes 1.16 using Helm 2.15 and later.</li> |
| <li>The Hono chart can now also be deployed using the recently released Helm 3. In fact, |
| Helm 3 is now the recommended way for deploying Hono as it doesn’t require installation |
| of any Helm specific components to the Kubernetes cluster.</li> |
| <li>The example data grid which can be deployed using the Hono Helm chart can now be scaled |
| out to more than one node.</li> |
| <li>Under rare circumstances an HTTP adapter instance might have gotten into a state where |
| a device’s requests to receive commands could no longer be processed successfully |
| anymore until the adapter instance had been restarted. This has been fixed.</li> |
| <li>A potential issue has been identified where some command messages might not get sent to |
| the corresponding gateway. The scenario here involves the gateway sending event/telemetry |
| messages via HTTP with a <code>hono-ttd</code> header in order to receive commands, and doing so |
| with multiple concurrent requests for <em>different</em> devices. To resolve this issue, the |
| corresponding tenant can be configured with a <code>support-concurrent-gateway-device-command-requests</code> |
| option set to <code>true</code> in the <code>ext</code> field of an <code>adapters</code> entry of type <code>hono-http</code>. |
| Note that with this option it is not supported for the authenticated gateway to send |
| <em>one</em> message with a <code>hono-ttd</code> header and no device id to receive commands for <em>any</em> |
| device that has last sent a telemetry or event message via this gateway.</li> |
| </ul> |
| <h2 id="101">1.0.1</h2> |
| <h3 id="fixes--enhancements-32">Fixes & Enhancements</h3> |
| <ul> |
| <li>The AMQP protocol adapter now requests devices to send traffic periodically in order |
| to prevent a time out of the connection. This way the adapter is able to detect and |
| close stale connections which is important to reliably close the device’s corresponding |
| command consumer. The time period after which the adapter should consider a connection stale |
| can be configured using an environment variable. Please refer to the AMQP adapter’s |
| admin guide for details.</li> |
| <li>The example deployment using the Helm chart correctly creates the <code>DEFAULT_TENANT</code> again.</li> |
| </ul> |
| <h2 id="100">1.0.0</h2> |
| <h3 id="new-features-9">New Features</h3> |
| <ul> |
| <li>A tenant can now be configured with a <em>max-ttl</em> which is used as an upper boundary for default |
| TTL values configured for devices/tenants. Please refer to the <a href="https://www.eclipse.org/hono/docs/api/tenant#resource-limits-configuration-format">Tenant API</a> |
| for details. |
| The AMQP, HTTP, MQTT and Kura protocol adapters consider this property when setting a TTL on |
| downstream event messages.</li> |
| <li>A protocol adapter can now be configured with a timeout for idle tenants. When there has been no |
| communication between a protocol adapter instance and the devices of a tenant, the former one releases |
| allocated resources of the tenant. Currently this means that it closes AMQP links and stops reporting |
| metrics for this tenant. The timeout is configured with the property <code>tenantIdleTimeout</code> for a protocol |
| adapter. Please refer to the protocol adapter <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a> |
| for details.</li> |
| <li>The accounting period for the <em>message limit</em> checks can now be configured as <code>monthly</code>. |
| In this case the data usage for a tenant is calculated from the beginning till the end of the |
| (Gregorian) calendar month. Refer <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> |
| for more information.</li> |
| <li>The devices can now indicate a <em>time-to-live</em> duration for event messages published using |
| the HTTP and MQTT adapters by setting the <em>hono-ttl</em> property in requests explicitly. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/user-guide/http-adapter/#publish-an-event-authenticated-device">HTTP Adapter</a> |
| and <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/#publishing-events">MQTT Adapter</a> for details.</li> |
| <li>The device registry HTTP management API now properly implements <em>cross-origin resource sharing (CORS)</em> support, |
| by allowing the service to be exposed to configured domains (by default, it’s exposed to all domains).</li> |
| <li>The <code>org.eclipse.hono.util.MessageHelper</code> now provides convenience factory methods for creating |
| new downstream messages from basic properties. |
| <code>org.eclipse.hono.service.AbstractProtocolAdapterBase</code> has been adapted to delegate to these |
| new factory methods.</li> |
| <li>Hono’s protocol adapters can now use multiple trusted certificate authorities per tenant to authenticate |
| devices based on client certificates. The list of trusted certificate authorities can be managed at the |
| tenant level using the Device Registry Management API.</li> |
| <li>Authenticated gateway devices can now subscribe to commands for specific devices. Before, gateways |
| could only subscribe to commands directed at any of the devices that the gateway has acted on behalf of. |
| With the new feature of also being able to subscribe to commands for specific devices, northbound |
| applications will get notified of such a subscription along with the specific device id.</li> |
| <li>Now a <em>max-ttd</em> value, which is used as an upper boundary for the <em>hono-ttd</em> value specified by the devices, |
| can be set as an <em>extension</em> property in the adapters section of the tenant configuration.</li> |
| </ul> |
| <h3 id="api-changes-11">API Changes</h3> |
| <ul> |
| <li>The already deprecated <em>legacy metrics</em> support has been removed.</li> |
| <li>The already deprecated <em>legacy device registry</em> and the corresponding base classes, which had been deprecated |
| as well, have been removed.</li> |
| <li>The topic filters used by MQTT devices to subscribe to commands has been changed slightly |
| to better fit the addressing scheme used by the other protocol adapters. |
| The existing topic filters have been deprecated but are still supported. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/#command-control">MQTT adapter user guide</a> |
| for details.</li> |
| <li>The interface <code>ResourceLimitChecks</code> and its implementation classes have been moved to |
| package <code>org.eclipse.hono.service.resourcelimits</code> from <code>org.eclipse.hono.service.plan</code>. |
| Also the configuration parameters for the resource limits were renamed from <code>hono.plan</code> |
| to <code>hono.resourceLimits</code>. Please refer to the protocol adapter <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a> |
| for more information.</li> |
| <li>The response payload of the <em>get Tenant</em> operation of the Tenant API has been changed to contain |
| a list of trusted certificate authorities instead of just a single one. This way, protocol |
| adapters can now authenticate devices based on client certificates signed by one of multiple |
| different trusted root authorities defined for a tenant. |
| All standard protocol adapters have been adapted to this change. |
| The <em>Tenant</em> JSON schema object used in the tenant related resources of the Device Registry Management API |
| has also been adapted to contain a list of trusted authorities instead of a single one.</li> |
| </ul> |
| <h3 id="deprecations-5">Deprecations</h3> |
| <ul> |
| <li>The OpenShift specific source-to-image deployment model has been removed in |
| favor of the Helm charts and the Eclipse IoT Packages project. You can still |
| deploy Hono on OpenShift using the Helm charts.</li> |
| <li>Defining password secrets with user provided password hash, function and salt is deprecated in the device registry management |
| API and will be removed in the upcoming versions. You should use <code>pwd-plain</code> property only going forward.</li> |
| </ul> |
| <h2 id="10-m7">1.0-M7</h2> |
| <h3 id="new-features-10">New Features</h3> |
| <ul> |
| <li>The Hono Helm chart now supports to choose if the example Device Registry, example AMQP Messaging Network |
| and/or the example Jaeger back end should be deployed and used with the Hono components or not. |
| In the latter case, the chart now also supports setting configuration properties for using an already |
| existing AMQP Messaging Network, Device Registry and/or Jaeger back end.</li> |
| <li>A data grid based implementation of the Device Connection API has been added to Hono. This implementation |
| can be used in production environments using a highly scalable data grid for storing device connection |
| information. The service can be used instead of the simple implementation provided by the example Device |
| Registry by means of setting a configuration property when <a href="https://www.eclipse.org/hono/docs/deployment/helm-based-deployment/#using-the-device-connection-service">deploying using the Helm chart</a>.</li> |
| <li>A tenant can now be configured so that <em>all</em> OpenTracing spans created when processing messages for that |
| specific tenant will be recorded in the tracing backend (overriding the default sampling strategy that |
| might only record a certain percentage of traces). See |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#enforcing-the-recording-of-traces-for-a-tenant">Monitoring & Tracing</a> |
| for more details.</li> |
| </ul> |
| <h3 id="api-changes-12">API Changes</h3> |
| <ul> |
| <li>The obsolete method variants of <code>reportTelemetry</code> in <code>org.eclipse.hono.service.metric.Metrics</code> |
| have been removed. The new variants of this method accept an additional parameter of type <code>TenantObject</code>.</li> |
| <li>The already deprecated <code>org.eclipse.hono.service.AbstractProtocolAdapterBase.getRegistrationAssertion</code> |
| method has been removed. The alternate variant of the <code>getRegistrationAssertion</code> method which accepts an |
| additional OpenTracing span parameter should be used.</li> |
| <li>The already deprecated <code>getRegistrationAssertion</code>, <code>getTenantConfiguration</code>, <code>sendConnectedTtdEvent</code>, |
| <code>sendDisconnectedTtdEvent</code> and <code>sendTtdEvent</code> methods in <code>org.eclipse.hono.service.AbstractProtocolAdapterBase</code> |
| have been removed. The alternate variant of these methods which accepts an additional OpenTracing span parameter |
| should be used.</li> |
| </ul> |
| <h3 id="deprecations-6">Deprecations</h3> |
| <ul> |
| <li>The deprecated Kura adapter is no longer deployed by default by the Helm chart. |
| However, it can still be deployed by means of <a href="https://www.eclipse.org/hono/docs/deployment/helm-based-deployment/#deploying-optional-adapters">setting a configuration property</a>.</li> |
| </ul> |
| <h2 id="10-m6">1.0-M6</h2> |
| <h3 id="new-features-11">New Features</h3> |
| <ul> |
| <li>Implementation of the new HTTP management API for tenants, devices and |
| credentials.</li> |
| <li>The health check endpoints of services can now be called securely via TLS. |
| Please refer to the protocol adapter <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a> |
| for the new parameters available.</li> |
| <li>The <a href="https://www.eclipse.org/hono/docs/api/tenant/#resource-limits-configuration-format">Tenant API</a> now optionally allows |
| specifying <em>minimum message size</em>. If it is specified, then the payload size of the incoming telemetry, event |
| and command messages are calculated in accordance with the <em>minimum message size</em> by the AMQP, HTTP and MQTT |
| protocol adapters and then recorded in the metrics system. |
| See <a href="https://www.eclipse.org/hono/docs/api/metrics/#minimum-message-size">Metrics</a> for more details.</li> |
| </ul> |
| <h3 id="fixes--enhancements-33">Fixes & Enhancements</h3> |
| <ul> |
| <li>The automatic reconnect handling of the <code>HonoConnection</code> implementation has been |
| improved and now applies an exponential back-off algorithm. The behavior can be |
| configured using the <code>${PREFIX}_RECONNECT_*</code> configuration variables. Please |
| refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/">Hono Client Configuration guide</a> |
| for details regarding these new variables.</li> |
| <li>The <em>message limit</em> checks is now extended to include command and control messages. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> for details.</li> |
| <li>The health check server endpoint will now bind to a default port value of 8088 if no values |
| are set explicitly in the configuration. It is also possible to start both a secure and an insecure |
| server (using different ports) |
| Refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config">Monitoring configuration guide</a> |
| for details.</li> |
| </ul> |
| <h3 id="api-changes-13">API Changes</h3> |
| <ul> |
| <li>With the implementation of the new HTTP management API for the device registry, |
| the class hierarchy for implementing device registry was significantly |
| refactored. This also includes the deprecation of a list of classes and tests. |
| Also see <a href="#device-registry-changes">Device registry changes</a> for more information.</li> |
| <li>The <em>complete</em> interfaces, and the <em>base</em> and <em>complete</em> implementation |
| classes for services got deprecated, and are planned to be removed in a future |
| release. Also see <a href="#device-registry-changes">Device registry changes</a> for |
| more information.</li> |
| <li>The example Device Registry that comes with Hono now implements the new |
| HTTP management API. Consequently, the URI endpoints for managing the content |
| of the registry have changed accordingly.</li> |
| <li>The configuration parameters for the health check endpoint were moved from |
| <code>hono.app</code> to <code>hono.healthCheck</code> and renamed. <code>hono.app.healthCheckPort</code> is now |
| <code>hono.healthCheck.insecurePort</code> and <code>hono.app.healthCheckBindAddress</code> is now |
| <code>hono.healthCheck.insecurePortBindAdress</code>. Please refer to the protocol adapter |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a> for additional |
| information on the new naming.</li> |
| </ul> |
| <h3 id="device-registry-changes">Device registry changes</h3> |
| <p>The section summarizes changes made for 1.0-M5 in the device registry.</p> |
| <p>During the development of Hono 1.0, we defined a new HTTP API for managing |
| information stored in the device registry. This API replaces the current, |
| provisional API, which was originally intended for tests to manipulate the file |
| based device registry during system tests. The new HTTP based API is intended |
| to replace the existing HTTP API, as well as the management part of the AMQP |
| based API.</p> |
| <p>The first major change is, that all the <em>complete</em> classes got deprecated. As |
| they are based on the services for the protocol adapters. And those services |
| are no longer considered to be used for managing information. The replacement |
| for those classes are the new management APIs.</p> |
| <p>Each of the three APIs got a companion API for <em>management</em>, which are located |
| in the <code>org.eclipse.hono.service.management</code> base package.</p> |
| <p>The class hierarchy was decoupled in order to make it easier to implement those |
| services. The new design only requires to implement a service, which is not |
| based on any other interface. And while your concrete implement still can |
| implement the <code>Verticle</code> interface, this is no longer a requirement.</p> |
| <p>Also the <em>base</em> classes got deprecated. Instead of inheriting the common |
| functionality, to bind to the <em>event bus</em>, that functionality got moved into new |
| <em>event bus adapter</em> classes, which take the reference of a service, and bind |
| this service to the <em>event bus</em> instead of using inheritance. Those change |
| make it possible to re-use much of the functionality, but do not impose the |
| requirement to inherit from either the <em>complete</em> or <em>base</em> classes. And |
| this finally allows your service implementation to be extend your specific |
| base class, and re-use common Hono functionality at the same time. This allows |
| service implementations to implement both the standard API, as well as the |
| management API in the same class. As Java does not allow inheritance |
| from multiple classes, this was not possible before.</p> |
| <p>The new default file based device registry, was modified to use the new class |
| hierarchy and support the new management model.</p> |
| <p>The device registry, which was provided in 1.0-M4 and before, is still part of |
| the source tree, but was moved to <code>services/device-registry-legacy</code>. It is |
| there to show the compatibility with the older class hierarchy, using the, |
| now deprecated, <em>base</em> and <em>complete</em> classes. Newer implementations should not |
| be build on this model.</p> |
| <p>Clients of the <em>base</em> variants of the services, like the protocol adapters, |
| do not need to make any changes.</p> |
| <p>Implementations of the device registry services, using the existing <em>base</em> and |
| <em>complete</em> can re-use that model, but are encouraged to migrate to the new model |
| as soon as possible, as the legacy model is planned to be removed. The only |
| impacting change is that the service interfaces no longer extend from |
| <code>Verticle</code> directly, but that has been moved to the <em>base</em> implementation.</p> |
| <p>Implementations of the services for protocol adapters (the non-management API), |
| can switch to the new class hierarchy by dropping inheritance to the <em>base</em> |
| class, and starting up a new instance of the corresponding <em>event bus adapter</em>, |
| providing a reference to the service. For the <code>RegistrationService</code> it is also |
| possible to inherit common functionality from <code>AbstractRegistrationService</code>.</p> |
| <p>Implementations of the services for management need to simply inherit from the |
| new management interfaces, and set up the <em>event bus adapters</em> the same way.</p> |
| <p>The module <code>device-registry-legacy</code> as well as all classes and interfaces, |
| which got deprecated, are planned to be dropped in 1.1.</p> |
| <h2 id="10-m5">1.0-M5</h2> |
| <h3 id="new-features-12">New Features</h3> |
| <ul> |
| <li>Hono’s protocol adapters and the other components now support using ECC based server certificates. |
| The protocol adapters also support authenticating devices which present an ECC based client certificate. |
| The example configuration now uses ECC based certificates by default.</li> |
| <li>Hono now specifies a <a href="https://www.eclipse.org/hono/docs/api/device-connection/">Device Connection API</a> and |
| contains an exemplary implementation of this API included in the device registry component. The purpose of the API is |
| to be able to set and retrieve information about the connections from devices or gateways to the protocol adapters.</li> |
| <li>This version implements the new HTTP management API for tenants, devices, and credentials.</li> |
| </ul> |
| <h3 id="fixes--enhancements-34">Fixes & Enhancements</h3> |
| <ul> |
| <li>The Hono Sandbox’s protocol adapters support using the gateway mode again.</li> |
| <li>The <a href="/hono/getting-started/">Getting Started</a> guide has been rewritten |
| to use the <a href="/hono/sandbox/">Hono Sandbox</a> or a local Minikube cluster |
| instead of Docker Swarm.</li> |
| <li>The MQTT adapter now closes the network connection to device on publish failures.</li> |
| </ul> |
| <h3 id="api-changes-14">API Changes</h3> |
| <ul> |
| <li>The optional methods of the <a href="https://www.eclipse.org/hono/docs/api/tenant/">Tenant API</a> have been |
| removed. Implementations of the Tenant API are encouraged to expose the <em>tenants</em> endpoint defined by |
| <a href="https://www.eclipse.org/hono/docs/api/management">Hono’s HTTP based management API</a> instead. |
| Several of the formerly mandatory to include properties of the request and response messages have |
| been made optional or removed altogether. Existing clients should not be affected by these changes, though.</li> |
| <li>The optional methods of the |
| <a href="https://www.eclipse.org/hono/docs/api/device-registration/">Device Registration API</a> have been |
| removed. Implementations of the Device Registration API are encouraged to expose the <em>devices</em> endpoint defined by |
| <a href="https://www.eclipse.org/hono/docs/api/management">Hono’s HTTP based management API</a> instead. |
| Several of the formerly mandatory to include properties of the request and response messages have |
| been made optional or removed altogether. Existing clients should not be affected by these changes, though.</li> |
| <li>The response message format of the <em>assert Device Registration</em> operation of the Device Registration API |
| has been changed, replacing the optional <code>gw-supported</code> boolean field with an optional <code>via</code> field. |
| The value of this field contains the list of gateway that may act on behalf of the device on which |
| the operation is invoked.</li> |
| <li>The methods for invoking the optional operations of the Device Registration API have been removed |
| from <code>org.eclipse.hono.client.RegistrationClient</code> and <code>org.eclipse.hono.client.impl.RegistrationClientImpl</code>.</li> |
| <li>The optional methods of the <a href="https://www.eclipse.org/hono/docs/api/credentials/">Credentials API</a> |
| have been removed. Implementations of the Credentials API are encouraged to expose the <em>credentials</em> endpoint defined |
| by <a href="https://www.eclipse.org/hono/docs/api/management">Hono’s HTTP based management API</a> instead. |
| Several of the formerly mandatory to include properties of the request and response messages have |
| been made optional or removed altogether. Existing clients should not be affected by these changes, though.</li> |
| <li>The <code>control</code> prefix in the northbound and southbound Command & Control endpoints has been renamed to <code>command</code>. |
| The endpoint names with the <code>control</code> prefix are still supported but deprecated. The northbound endpoint for |
| <em>business applications</em> to receive command responses has the <code>command_response</code> prefix now. The old <code>control</code> prefix |
| for the receiver address is also still supported but deprecated.</li> |
| <li>The <code>deviceId</code> parameter of the <code>getOrCreateCommandClient</code> and <code>getOrCreateAsyncCommandClient</code> methods of the |
| <code>org.eclipse.hono.client.ApplicationClientFactory</code> interface has been removed. |
| This means that a <code>CommandClient</code> or <code>AsyncCommandClient</code> instance can be used to send commands to arbitrary |
| devices of a tenant now. Accordingly, the <code>CommandClient.sendCommand</code> and <code>AsyncCommandClient.sendAsyncCommand</code> |
| methods now require an additional <code>deviceId</code> parameter.</li> |
| <li>The deprecated methods of <code>org.eclipse.hono.client.HonoConnection</code> have been removed.</li> |
| </ul> |
| <h2 id="10-m4">1.0-M4</h2> |
| <h3 id="new-features-13">New Features</h3> |
| <ul> |
| <li>Default properties can now also be set at the tenant level, affecting all devices |
| belonging to the tenant. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/user-guide/">protocol adapter user guides</a> for details.</li> |
| <li><code>CredentialsClientImpl</code> now supports caching of response data received from a Credentials service based on |
| <em>cache directives</em>. The protocol adapters are now equipped to cache the response from the Credentials Service. |
| The protocol adapters support configuration variables to set the default cache timeout, the minimum |
| and maximum cache sizes for this service.</li> |
| <li>The example device registry’s Credentials service implementation now includes a <em>cache directive</em> |
| in its response to the <em>get Credentials</em> operation which allows clients to cache credentials of |
| type <em>hashed-password</em> and <em>x509-cert</em> for a configurable amount of time. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/device-registry-config/">Device Registry Admin Guide</a> |
| for details regarding the configuration properties to use.</li> |
| <li>There is now an official specification of an HTTP API for managing the content of a device registry. |
| The <a href="https://www.eclipse.org/hono/docs/api/management">HTTP Management API</a> is defined using by |
| means of OpenAPI v3. Note, that the API is not yet implemented by the example device registry that comes with Hono.</li> |
| <li>The Command & Control feature now supports gateway agnostic addressing of devices. This means that applications are |
| able to send commands to devices without knowing the particular gateway they may be connected to.</li> |
| <li>The concept and implementation of <em>message limit</em> have been added. The protocol adapters can be now |
| enabled to verify this <em>message limit</em> for each tenant before accepting any telemetry/event messages. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> for details.</li> |
| <li>A basic Sigfox protocol adapter, for use with the Sigfox backend. Please read |
| the <a href="https://www.eclipse.org/hono/docs/user-guide/sigfox-adapter/">Sigfox protocol adapter</a> |
| documentation to learn more about pre-requisites and limitations.</li> |
| </ul> |
| <h3 id="fixes--enhancements-35">Fixes & Enhancements</h3> |
| <ul> |
| <li>vert.x has been updated to version 3.7.0.</li> |
| </ul> |
| <h3 id="api-changes-15">API Changes</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.util.RegistrationConstants.FIELD_DEFAULTS</code> constant |
| has been renamed to <code>org.eclipse.hono.util.RegistrationConstants.FIELD_PAYLOAD_DEFAULTS</code>.</li> |
| <li>The <code>org.eclipse.hono.service.AbstractProtocolAdapterBase.newMessage</code> and |
| <code>org.eclipse.hono.service.AbstractProtocolAdapterBase.addProperties</code> methods have |
| been changed to accept an additional parameter of type <code>TenantObject</code> which may contain default |
| properties defined for the tenant to be included in downstream messages.</li> |
| <li>The <em>get Registration Information</em> operation of the Device Registration API is not optional anymore, |
| it is now mandatory to implement. For device registry implementations based on the |
| <code>CompleteRegistrationService</code> interface, there is no change needed as the operation is already |
| defined there.</li> |
| <li>The response message of the <em>assert Device Registration</em> operation does not contain an assertion |
| token anymore. The <code>org.eclipse.hono.service.registration.BaseRegistrationService</code> class |
| has been adapted accordingly.</li> |
| <li>The already deprecated <code>org.eclipse.hono.client.CommandConsumerFactory.closeCommandConsumer</code> |
| method has been removed.</li> |
| <li>The response message format of the <em>assert Device Registration</em> operation of the Device Registration API |
| has been changed to include an optional <code>gw-supported</code> boolean field. The value of this field refers to |
| whether the device on which the operation is invoked allows one or more gateways to act on its behalf.</li> |
| <li>The AMQP sender link address to be used by <em>business applications</em> to send commands to devices has been |
| changed from <code>control/${tenant_id}/${device_id}</code> to <code>control/${tenant_id}</code> with command messages requiring |
| the <code>to</code> property to be set to <code>control/${tenant_id}/${device_id}</code>. Using <code>control/${tenant_id}/${device_id}</code> |
| as sender link address is still possible but gateway agnostic addressing of devices is not supported for |
| such command messages.</li> |
| </ul> |
| <h3 id="deprecations-7">Deprecations</h3> |
| <ul> |
| <li>Instructions for script based deployment to Kubernetes have been removed from the deployment guide. |
| Using Helm is now the only supported way of deploying Hono to Kubernetes.</li> |
| </ul> |
| <h2 id="10-m3">1.0-M3</h2> |
| <h3 id="fixes--enhancements-36">Fixes & Enhancements</h3> |
| <ul> |
| <li>The protocol adapters add tracing information about invocations of the Device Registry |
| services again.</li> |
| <li>The example deployment now uses Qpid Dispatch Router 1.6.0.</li> |
| </ul> |
| <h2 id="10-m2">1.0-M2</h2> |
| <h3 id="new-features-14">New Features</h3> |
| <ul> |
| <li>A new <em>experimental</em> LoRa protocol adapter has been added which (so far) supports the reception |
| of telemetry data and events from devices connected to LoRa network providers and/or |
| LoRa gateways. Note that this adapter is <em>not</em> considered production ready yet. |
| Any help in improving and enhancing the adapter is more than welcome.</li> |
| <li>The concept and implementation of <em>resource limits</em> have been added. Now a connection limit to define |
| the maximum number of device connections to be allowed per tenant can be configured. The MQTT and AMQP |
| adapters can be enabled to verify this connection limit before accepting any new connections. Please |
| refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> for details.</li> |
| </ul> |
| <h3 id="fixes--enhancements-37">Fixes & Enhancements</h3> |
| <ul> |
| <li>The base classes for implementing the AMQP and HTTP endpoints for the Credentials, Tenant |
| and Device Registration APIs now create an OpenTracing Span for tracking the |
| processing of requests at a high level.</li> |
| <li>The <code>hono-client</code> and <code>hono-core</code> artifacts use Java 8 level again so that they |
| can be used in applications using Java 8.</li> |
| <li>The protocol adapters now always specify values for the <em>ttd</em> and <em>qos</em> tags when |
| reporting telemetry messages using meter name <em>hono.messages.received</em>. This fixes |
| an issue when using the Prometheus back end where the HTTP adapter failed to report |
| messages that contained a TTD value and others that didn’t.</li> |
| <li>The Helm based deployment of the device registry has been fixed by adding the secret |
| and deployment entries for the <code>device-identities.json</code>.</li> |
| <li>Before uploading command responses, the MQTT and AMQP adapters now check whether the device is |
| registered and also the adapter is enabled for the tenant.</li> |
| </ul> |
| <h3 id="api-changes-16">API Changes</h3> |
| <ul> |
| <li>The <code>hono-client</code> module has undergone several major and incompatible changes. The most |
| important change affects the <code>HonoClient</code> interface which no longer serves as a factory |
| for the arbitrary clients to the Hono service endpoints. |
| It has been renamed to <code>HonoConnection</code> and now only represents the underlying |
| AMQP connection to a peer and provides methods for managing the connection state |
| and registering listeners for arbitrary life-cycle events of the connection. |
| In addition to this, several factory interfaces have been added which can be used |
| to create specific clients to Hono’s arbitrary services. All of the former <code>HonoClient</code> |
| interface’s factory methods have been distributed accordingly to: |
| <ul> |
| <li><code>org.eclipse.hono.client.ApplicationClientFactory</code> for creating clients to |
| Hono’s north bound Telemetry, Event and Command & Control API.</li> |
| <li><code>org.eclipse.hono.client.DownstreamSenderFactory</code> for creating clients to |
| Hono’s south bound Telemetry and Event APIs.</li> |
| <li><code>org.eclipse.hono.client.CommandConsumerFactory</code> for creating clients to |
| Hono’s south bound Command & Control API.</li> |
| <li><code>org.eclipse.hono.client.TenantClientFactory</code> for creating clients to |
| Hono’s Tenant API.</li> |
| <li><code>org.eclipse.hono.client.RegistrationClientFactory</code> for creating clients to |
| Hono’s Device Registration API.</li> |
| <li><code>org.eclipse.hono.client.CredentialsClientFactory</code> for creating clients to |
| Hono’s Credentials API.</li> |
| </ul> |
| </li> |
| <li>In this context the <code>org.eclipse.hono.client.MessageSender</code> interface has been changed as follows: |
| <ul> |
| <li>The <em>send</em> methods have been changed to no longer accept a <em>registration assertion token</em> |
| which became obsolete with the removal of the <em>Hono Messaging</em> component.</li> |
| <li>The <em>isRegistrationAssertionRequired</em> method has been removed from the interface.</li> |
| <li>All <em>send</em> method variants which accept specific message parameters have been moved into |
| the new <code>org.eclipse.hono.client.DownstreamSender</code> interface which extends the existing |
| <code>MessageSender</code>.</li> |
| </ul> |
| </li> |
| <li>Several changes have been made to the <code>org.eclipse.hono.service.AbstractProtocolAdapterBase</code> |
| class: |
| <ul> |
| <li>The <em>newMessage</em> and <em>addProperties</em> methods no longer require a boolean parameter indicating |
| whether to include the assertion token in the message being created/amended. |
| Custom protocol adapters should simply omit the corresponding parameter.</li> |
| <li>The base class now uses <code>org.eclipse.hono.client.CommandConsumerFactory</code> instead of |
| <code>org.eclipse.hono.client.CommandConnection</code> for creating |
| <code>org.eclipse.hono.client.CommandConsumer</code> instances. |
| The <em>setCommandConnection</em> and <em>getCommandConnection</em> methods have been |
| renamed to <em>setCommandConsumerFactory</em> and <em>getCommandConsumerFactory</em> |
| correspondingly.</li> |
| <li>The base class now uses <code>org.eclipse.hono.client.TenantClientFactory</code> instead of |
| <code>org.eclipse.hono.client.HonoClient</code> for creating <code>org.eclipse.hono.client.TenantClient</code> |
| instances. |
| The <em>setTenantServiceClient</em> and <em>getTenantServiceClient</em> methods have been |
| renamed to <em>setTenantClientFactory</em> and <em>getTenantClientFactory</em> correspondingly.</li> |
| <li>The base class now uses <code>org.eclipse.hono.client.RegistrationClientFactory</code> instead of |
| <code>org.eclipse.hono.client.HonoClient</code> for creating |
| <code>org.eclipse.hono.client.RegistrationClient</code> instances. |
| The <em>setRegistrationServiceClient</em> and <em>getRegistrationServiceClient</em> methods have been |
| renamed to <em>setRegistrationClientFactory</em> and <em>getRegistrationClientFactory</em> correspondingly.</li> |
| <li>The base class now uses <code>org.eclipse.hono.client.CredentialsClientFactory</code> instead of |
| <code>org.eclipse.hono.client.HonoClient</code> for creating |
| <code>org.eclipse.hono.client.CredentialsClient</code> instances. |
| The <em>setCredentialsServiceClient</em> and <em>getCredentialsServiceClient</em> methods have been |
| renamed to <em>setCredentialsClientFactory</em> and <em>getCredentialsClientFactory</em> correspondingly.</li> |
| <li>The base class now uses <code>org.eclipse.hono.client.DownstreamSendertFactory</code> instead of |
| <code>org.eclipse.hono.client.HonoClient</code> for creating |
| <code>org.eclipse.hono.client.DownstreamSender</code> instances. |
| The <em>setHonoMessagingClient</em> and <em>getHonoMessagingClient</em> methods have been |
| renamed to <em>setDownstreamSenderFactory</em> and <em>getDownstreamSenderFactory</em> correspondingly.</li> |
| </ul> |
| </li> |
| <li>The <code>org.eclipse.hono.service.auth.device.UsernamePasswordAuthProvider</code> and the |
| <code>org.eclipse.hono.service.auth.device.X509AuthProvider</code> now accept a |
| <code>org.eclipse.hono.client.CredentialsClientFactory</code> instead of a |
| <code>org.eclipse.hono.client.HonoClient</code> in their constructors.</li> |
| <li>The <code>org.eclipse.hono.adapter.http.HonoBasicAuthHandler</code> and |
| <code>org.eclipse.hono.adapter.http.X509AuthHandler</code> classes have been moved to |
| package <code>org.eclipse.hono.service.http</code> in the <em>service-base</em> module for |
| consistency reasons as all other reusable classes for implementing HTTP services/ |
| adapters are located in that package already.</li> |
| <li>The <code>org.eclipse.hono.client.HonoClient</code> class has been renamed to |
| <code>org.eclipse.hono.client.HonoConnection</code> to better reflect its sole responsibility |
| for establishing (and maintaining) the connection to a Hono service endpoint.</li> |
| </ul> |
| <h3 id="deprecations-8">Deprecations</h3> |
| <ul> |
| <li>The optional operations defined by the Tenant, Device Registration and Credentials API |
| have been deprecated. They will be removed from Hono 1.0 altogether. |
| A new HTTP based API will be defined instead which can then be used to <em>manage</em> the content |
| of a device registry.</li> |
| <li><code>org.eclipse.hono.client.HonoConnection</code>’s <em>connect</em> method variants accepting |
| a disconnect handler have been deprecated and will be removed in Hono 1.0. |
| Client code should use one of the other <em>connect</em> methods instead and register a |
| <code>org.eclipse.hono.client.DisconnectListener</code> and/or a |
| <code>org.eclipse.hono.client.ReconnectListener</code> to get notified about life-cycle |
| events of the underlying AMQP connection.</li> |
| </ul> |
| <h2 id="10-m1">1.0-M1</h2> |
| <h3 id="new-features-15">New Features</h3> |
| <ul> |
| <li>The AMQP adapter now supports limiting the number of concurrent connections in order |
| to prevent Out of Memory errors. Please refer to |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/amqp-adapter-config/">AMQP Adapter Configuration</a> for details.</li> |
| <li>The <code>org.eclipse.hono.client.AsyncCommandClient</code> has been added to support the sending of |
| commands to devices and the receiving of responses in an asynchronous way. This can be used |
| to decouple the sender and receiver from each other.</li> |
| <li>The <code>org.eclipse.hono.service.tenant.CompleteBaseTenantService</code> class now rejects malformed |
| encodings of public keys/certificates included in a request to add a trust anchor to a tenant.</li> |
| </ul> |
| <h3 id="deprecations-9">Deprecations</h3> |
| <ul> |
| <li>The <code>HonoClient.closeCommandConsumer()</code> method will be removed in Hono 1.0. |
| The <code>CommandConsumer.close()</code> method should be used instead.</li> |
| </ul> |
| <h2 id="09">0.9</h2> |
| <h3 id="new-features-16">New Features</h3> |
| <ul> |
| <li>The MQTT adapter now supports commands to be published using QoS 1. Please refer to |
| <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/">MQTT adapter User Guide</a> for details.</li> |
| <li>The MQTT adapter now supports limiting the number of concurrent connections in order |
| to prevent running out of resources. Please refer to |
| <a href="https://www.eclipse.org/hono/docs/admin-guide/mqtt-adapter-config/">MQTT Adapter Configuration</a> for details.</li> |
| <li>The new <em>Helm deployment</em> for Kubernetes has been added. Please refer to |
| <a href="https://www.eclipse.org/hono/docs/deployment/helm-based-deployment/">Helm based deployment guide</a> for details.</li> |
| </ul> |
| <h3 id="fixes--enhancements-38">Fixes & Enhancements</h3> |
| <ul> |
| <li><code>org.eclipse.hono.util.RequestResponseResult</code> now provides access to AMQP application-properties conveyed in the |
| response message.</li> |
| <li>The <code>org.eclipse.hono.service.registration.BaseRegistrationService</code> class now supports authorization of gateways |
| (acting on behalf of a device) against a list of gateway identifiers instead of a single identifier only. For that purpose |
| the <code>via</code> property of the device’s registration information may contain either a single string or a JSON array containing |
| multiple strings. Based on this, a device can now be configured to connect via arbitrary gateways instead of just a single |
| one.</li> |
| </ul> |
| <h3 id="api-changes-17">API Changes</h3> |
| <ul> |
| <li>The layout and structure of the metrics reported by Hono have been changed substantially. Many of the existing meters and tags |
| have been changed or replaced in order to provide a more consistent set of metrics and increase the value of the information |
| being reported. The legacy metrics still remain unchanged, though. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/api/metrics/">Metrics definition</a> for details.</li> |
| <li>In case of a failed connection attempt, <code>HonoClientImpl</code> will now determine based on the error whether it will re-try |
| to connect to the peer. Before, reconnect attempts were done unconditionally, by default infinitely or up to the |
| number of times defined in the <em>reconnectAttempts</em> property in the <code>ClientConfigProperties</code>. Now, when the outcome |
| of the SASL handshake received from the peer during connection establishment indicates that invalid credentials were |
| provided or that the server encountered a permanent error when handling the request, no further reconnect attempts |
| will be done.</li> |
| <li>The deprecated methods have been removed from <code>org.eclipse.hono.client.MessageSender</code> and |
| its implementations.</li> |
| <li>The Command & Control API’s <em>send a request/response command</em> operation has been changed. The response |
| message to a command now must include the device and tenant identifiers of the device. Including |
| these two properties should make it much easier to implement competing command response consumers |
| in business applications. |
| As a consequence, the <code>org.eclipse.hono.client.CommandResponse</code>’s factory methods have been changed to |
| accept the tenant and device IDs as parameters.</li> |
| <li>The <em>connectTimeout</em> configuration variable for the <code>HonoClient</code> now defines the time to wait not only for the TCP/TLS |
| connection establishment but also for the SASL handshake and the exchange of the AMQP <em>open</em> frame.</li> |
| <li>The (already deprecated) Hono Messaging component has been removed from Hono.</li> |
| </ul> |
| <h3 id="deprecations-10">Deprecations</h3> |
| <ul> |
| <li>The script based deployment to Kubernetes has been deprecated and will be removed in the next version. |
| The Helm based deployment should be used instead.</li> |
| <li>The <em>sendCommandResponse(String, String, Buffer, Map, int, SpanContext)</em> of the |
| <code>org.eclipse.hono.client.CommandResponseSender</code> interface has been deprecated and |
| will be removed in the next version. Custom protocol adapters should use |
| <em>sendCommandResponse(CommandResponse, SpanContext)</em> instead.</li> |
| </ul> |
| <h2 id="09-m2">0.9-M2</h2> |
| <h3 id="new-features-17">New Features</h3> |
| <ul> |
| <li>The MQTT protocol adapter now supports authentication of devices using X.509 client certificates. Please refer to |
| the <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/">MQTT adapter user guide</a> for details regarding configuration.</li> |
| </ul> |
| <h3 id="fixes--enhancements-39">Fixes & Enhancements</h3> |
| <ul> |
| <li> |
| <p>The OpenShift <em>source-to-image</em> (S2I) deployment is now the default |
| OpenShift / OKD deployment. The plain OpenShift deployment, which had been deprecated |
| in Hono 0.8, has been removed.</p> |
| </li> |
| <li> |
| <p>The protocol adapters can now be configured with a custom <em>DNS timeout</em> value, limiting the time that the adapter |
| will wait for the response to a DNS query. By default, a DNS query will time out after 5 seconds. |
| Please refer to the protocol adapter admin guides for details regarding the new configuration variable.</p> |
| </li> |
| <li> |
| <p>The following configuration variables have been added to <code>HonoClient</code>:</p> |
| <ul> |
| <li> |
| <p><em>connectTimeout</em>: Sets a limit on the time that the client will wait for a TCP/TLS connection with the peer |
| to be established. By default, a connection attempt will time out after 5 seconds.</p> |
| </li> |
| <li> |
| <p><em>idleTimeout</em>: The idle timeout defines the amount of time after which a connection will be closed when no frames |
| have been received from the remote peer. The default value is 16 seconds.</p> |
| </li> |
| <li> |
| <p><em>sendMessageTimeout</em>: Limits the time to wait for a downstream consumer’s acknowledgement of |
| an event or command response message received from a device. The default value is 1 second.</p> |
| <p>Please refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/">Hono Client Configuration guide</a> |
| for details regarding the new configuration variables.</p> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <h3 id="api-changes-18">API Changes</h3> |
| <ul> |
| <li>Some of the <em>tags</em> used by Hono’s components when reporting metrics have been changed. The common tag <em>component</em> |
| has been renamed to <em>component-type</em>. The <em>protocol</em> tag formerly used by adapters to indicate the transport protocol |
| that a message has been received over, has been replaced by the generic <em>component-name</em> tag which indicates the name |
| of the component that a metric has been reported by. Please refer to the <a href="https://www.eclipse.org/hono/docs/api/metrics/">Metrics API</a> |
| for details. Note that these changes do not affect the legacy Graphite based metrics back end.</li> |
| </ul> |
| <h3 id="deprecations-11">Deprecations</h3> |
| <ul> |
| <li>The Hono Messaging component is now deprecated and will be removed from Hono in version 0.9 altogether. |
| The example deployment has not been using Hono Messaging since 0.6 and there is no practical reason for |
| using it anymore.</li> |
| </ul> |
| <h2 id="09-m1">0.9-M1</h2> |
| <h3 id="new-features-18">New Features</h3> |
| <ul> |
| <li>The default Micrometer back end is now Prometheus, the Grafana dash boards have been updated |
| to retrieve data from Prometheus instead of the old InfluxDB. |
| The Graphite based legacy metrics format can still be used but requires building Hono from source and activating |
| the <code>metrics-graphite</code> Maven build profile. |
| Please refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/">Monitoring admin guide</a> for details.</li> |
| <li>The <code>org.eclipse.hono.service.credentials.CompleteBaseCredentialsService</code> class now supports the transparent |
| <em>on-the-fly</em> hashing of clear text passwords contained in <em>hashed-password</em> credentials. Please refer to the |
| <a href="https://www.eclipse.org/hono/docs/user-guide/device-registry/#managing-credentials">Device Registry user guide</a> for details.</li> |
| </ul> |
| <h3 id="fixes--enhancements-40">Fixes & Enhancements</h3> |
| <ul> |
| <li>The base classes for implementing the Device Registration and Tenant APIs have been instrumented |
| with OpenTracing. New variants of the <code>RegistrationService.assertRegistration</code>, <code>TenantService.get</code> and <code>CredentialsService.get</code> |
| methods have been added which also accept an OpenTracing span as a parameter. |
| The default implementations of these methods still default to the previously existing methods. |
| In <code>RegistrationService</code> implementations based on <code>BaseRegistrationService</code> an OpenTracing span will be created, |
| passed on to the <code>assertRegistration</code> method and finished eventually. The same applies to <code>TenantService</code> implementations |
| based on <code>BaseTenantService</code> concerning the <code>get</code> method and to <code>CredentialsService</code> implementations based on |
| <code>BaseCredentialsService</code> concerning the <code>get</code> method.</li> |
| </ul> |
| <h3 id="api-changes-19">API Changes</h3> |
| <ul> |
| <li>The <code>org.eclipse.hono.service.credentials.CompleteBaseCredentialsService</code> class now requires an |
| <code>org.eclipse.hono.auth.HonoPasswordEncoder</code> to be passed into its constructor. |
| The <code>org.eclipse.hono.auth.SpringBasedHonoPasswordEncoder</code> has been added as a default implementation for |
| this purpose.</li> |
| <li>The <a href="https://www.eclipse.org/hono/docs/api/tenant/#trusted-ca-format">Tenant API</a> now optionally allows specifying an |
| X.509 certificate instead of a public key when defining a trusted CA.</li> |
| </ul> |
| |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| |
| </div> |
| |
| |
| |
| </div> |
| |
| |
| <footer id="footer"> |
| <div class="container"> |
| |
| <div class="col-md-4 col-sm-6"> |
| <h4>More</h4> |
| |
| <ul> |
| <li><a href="https://github.com/eclipse/hono" title="View Source Code on GitHub"><i class='fab fa-github'></i> GitHub Repository</a></li> |
| <li><a href="https://twitter.com/EclipseHono" title="Follow us on Twitter"><i class='fab fa-twitter'></i> Twitter</a></li> |
| <li><a href="https://gitter.im/eclipse/hono" title="Chat with us on Gitter"><i class='fab fa-gitter'></i> Chat with us</a></li> |
| <li><a href='/hono/community/thankyou/'>Thank you</a></li> |
| </ul> |
| |
| <hr class="hidden-md hidden-lg hidden-sm"> |
| |
| </div> |
| |
| |
| <div class="col-md-4 col-sm-6"> |
| |
| <h4>Eclipse Legal</h4> |
| |
| <ul> |
| <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li> |
| <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li> |
| <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li> |
| <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li> |
| <li><a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank">License</a></li> |
| <li><a href="https://eclipse.org/security/" target="_blank">Report a Vulnerability</a></li> |
| </ul> |
| |
| <hr class="hidden-md hidden-lg"> |
| |
| </div> |
| |
| |
| <div class="col-md-4 col-sm-6"> |
| |
| <div class="eclipse-logos"> |
| <div class="pull-left"> |
| <a href="https://www.eclipse.org" target="_blank"> |
| <img src="https://www.eclipse.org/hono/img/eclipse_foundation_logo_wo.svg" id="logo-eclipse-foundation"/> |
| </a> |
| </div> |
| <div class="pull-right"> |
| <a href="https://iot.eclipse.org" target="_blank"> |
| <img src="https://www.eclipse.org/hono/img/iot-logo.png"/> |
| </a> |
| </div> |
| </div> |
| |
| </div> |
| |
| |
| </div> |
| |
| </footer> |
| |
| |
| |
| |
| |
| |
| |
| <div id="copyright"> |
| <div class="container"> |
| <div class="col-md-12"> |
| |
| <p class="pull-left">© 2019-2021 The Eclipse Hono Project</p> |
| |
| <p class="pull-right"> |
| Template by <a href="https://bootstrapious.com/p/universal-business-e-commerce-template">Bootstrapious</a>. |
| |
| |
| Ported to Hugo by <a href="https://github.com/devcows/hugo-universal-theme">DevCows</a>. |
| </p> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| </div> |
| |
| |
| |
| <script src="//code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> |
| <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> |
| |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> |
| <script src="//cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script> |
| <script src="//cdnjs.cloudflare.com/ajax/libs/Counter-Up/1.0/jquery.counterup.min.js"></script> |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-parallax/1.1.3/jquery-parallax.js"></script> |
| |
| <script src="/hono/js/front.js"></script> |
| |
| |
| <script src="/hono/js/owl.carousel.min.js"></script> |
| |
| |
| |
| <script> |
| (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': |
| new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], |
| j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= |
| 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); |
| })(window,document,'script','dataLayer','GTM-5WLCZXC'); |
| </script> |
| |
| |
| <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script> |
| |
| <script src="//iot.eclipse.org/assets/js/eclipsefdn.adopters.js"></script> |
| <script> |
| eclipseFdnAdopters.getList({ |
| project_id: "iot.hono", |
| selector: ".eclipsefdn-adopters", |
| logo_white: true |
| }); |
| </script> |
| |
| |
| </body> |
| </html> |