| <!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>Release Notes :: Eclipse Hono™</title> |
| <meta name="author" content="" /> |
| |
| |
| |
| |
| <meta name="description" content="A set of micro-services for connecting millions of devices."> |
| |
| |
| <meta name="generator" content="Hugo 0.54.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="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous"> |
| <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="https://www.eclipse.org/hono//index.xml" type="application/rss+xml" title="Eclipse Hono&trade;"> |
| |
| |
| <meta name="twitter:card" content="summary_large_image"> |
| <meta name="twitter:site" content="@EclipseHono"> |
| <meta name="twitter:title" content="Release Notes :: Eclipse Hono&trade;"> |
| <meta name="twitter:image" content="https://www.eclipse.org/hono/img/twitter_image.png"> |
| <meta name="twitter:description" content="A set of micro-services for connecting millions of devices."> |
| |
| |
| <meta property="og:title" content="Release Notes :: Eclipse Hono&trade;" /> |
| <meta property="og:type" content="website" /> |
| <meta property="og:url" content="https://www.eclipse.org/hono/release-notes//" /> |
| <meta property="og:image" content="https://www.eclipse.org/hono/img/twitter_image.png" /> |
| |
| <link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css"> |
| |
| </head> |
| |
| |
| <body> |
| |
| <div id="all"> |
| |
| <header> |
| |
| <div class="navbar-affixed-top" data-spy="affix" data-offset-top="70"> |
| |
| <div class="navbar navbar-default yamm" role="navigation" id="navbar"> |
| |
| <div class="container"> |
| <div class="navbar-header"> |
| <a class="navbar-brand home" href="https://www.eclipse.org/hono/"> |
| <img src="https://www.eclipse.org/hono/img/HONO-Logo_Bild-Wort_quer-s-310x120px.svg" alt="Release Notes logo" class="logo"> |
| <span class="sr-only">Release Notes - 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="fa 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="/hono/faq/">FAQ</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> |
| |
| </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="fa 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>Release Notes</h1> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div id="content"> |
| |
| |
| <div class="container"> |
| |
| <div class="row"> |
| |
| <div class="col-md-12"> |
| |
| <div> |
| |
| |
| <h2 id="1-2-0-not-released-yet">1.2.0 (Not Released yet)</h2> |
| |
| <h3 id="new-features">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. |
| 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> |
| </ul> |
| |
| <h3 id="fixes-enhancements">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, for |
| every command subscription, a consumer link specific to the corresponding device was created, |
| whereas now, only a single consumer link per protocol adapter instance gets created for the |
| same purpose.</li> |
| </ul> |
| |
| <h3 id="api-changes">API Changes</h3> |
| |
| <ul> |
| <li>The device registry credentials endpoint will no longer handout 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> |
| </ul> |
| |
| <h2 id="1-1-1">1.1.1</h2> |
| |
| <h3 id="fixes-enhancements-1">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="1-1-0">1.1.0</h2> |
| |
| <h3 id="new-features-1">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/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-2">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-1">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="1-0-3">1.0.3</h2> |
| |
| <h3 id="fixes-enhancements-3">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="1-0-2">1.0.2</h2> |
| |
| <h3 id="fixes-enhancements-4">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="1-0-1">1.0.1</h2> |
| |
| <h3 id="fixes-enhancements-5">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="1-0-0">1.0.0</h2> |
| |
| <h3 id="new-features-2">New Features</h3> |
| |
| <ul> |
| <li>A tenant can now be configured with a <em>max-ttl</em> which is used as a 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.<br /></li> |
| </ul> |
| |
| <h3 id="api-changes-2">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">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="1-0-m7">1.0-M7</h2> |
| |
| <h3 id="new-features-3">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-3">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.<br /></li> |
| </ul> |
| |
| <h3 id="deprecations-1">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="1-0-m6">1.0-M6</h2> |
| |
| <h3 id="new-features-4">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-6">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-4">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="1-0-m5">1.0-M5</h2> |
| |
| <h3 id="new-features-5">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-7">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-5">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="1-0-m4">1.0-M4</h2> |
| |
| <h3 id="new-features-6">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-8">Fixes & Enhancements</h3> |
| |
| <ul> |
| <li>vert.x has been updated to version 3.7.0.</li> |
| </ul> |
| |
| <h3 id="api-changes-6">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-2">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="1-0-m3">1.0-M3</h2> |
| |
| <h3 id="fixes-enhancements-9">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="1-0-m2">1.0-M2</h2> |
| |
| <h3 id="new-features-7">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-10">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-7">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-3">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="1-0-m1">1.0-M1</h2> |
| |
| <h3 id="new-features-8">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-4">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="0-9">0.9</h2> |
| |
| <h3 id="new-features-9">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-11">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-8">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-5">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="0-9-m2">0.9-M2</h2> |
| |
| <h3 id="new-features-10">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-12">Fixes & Enhancements</h3> |
| |
| <ul> |
| <li>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.</li> |
| <li>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.</li> |
| |
| <li><p>The following configuration variables have been added to <code>HonoClient</code>:</p> |
| |
| <ul> |
| <li><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.</li> |
| <li><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.</li> |
| <li><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.</li> |
| </ul> |
| |
| <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> |
| |
| <h3 id="api-changes-9">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-6">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="0-9-m1">0.9-M1</h2> |
| |
| <h3 id="new-features-11">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-13">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-10">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/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 The Eclipse Hono Project</p> |
| |
| <p class="pull-right"> |
| Template by <a href="http://bootstrapious.com/free-templates">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="https://www.eclipse.org/hono/js/front.js"></script> |
| |
| |
| <script src="https://www.eclipse.org/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="https://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", |
| ul_classes: "owl-carousel customers", |
| logo_white: true |
| }); |
| </script> |
| |
| |
| </body> |
| </html> |