latest web site changes
diff --git a/docs/concepts/Tenants_Devices_Credentials.odg b/docs/concepts/Tenants_Devices_Credentials.odg
new file mode 100644
index 0000000..af32a4c
--- /dev/null
+++ b/docs/concepts/Tenants_Devices_Credentials.odg
Binary files differ
diff --git a/docs/concepts/Tenants_Devices_Credentials.png b/docs/concepts/Tenants_Devices_Credentials.png
new file mode 100644
index 0000000..35e01da
--- /dev/null
+++ b/docs/concepts/Tenants_Devices_Credentials.png
Binary files differ
diff --git a/docs/concepts/command-and-control/index.html b/docs/concepts/command-and-control/index.html
new file mode 100644
index 0000000..4643183
--- /dev/null
+++ b/docs/concepts/command-and-control/index.html
@@ -0,0 +1,2397 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Command & Control :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Command & Control :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Command & Control :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts/command-and-control//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/command-and-control/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item active">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/command-and-control/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/command-and-control/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/command-and-control.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > <a href='/hono/docs/concepts/'>Concepts</a> > Command & Control
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#command-control-over-http-adapter">Command & Control over HTTP Adapter</a></li>
+<li><a href="#command-control-over-mqtt-adapter">Command & Control over MQTT Adapter</a></li>
+<li><a href="#command-control-over-amqp-adapter">Command & Control over AMQP Adapter</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Command & Control</h1>
+
+
+
+
+
+<p><em>Business applications</em> can send commands to devices following the <a href="/hono/docs/api/command-and-control-api/">Command & Control API</a>. This concept page describes how this API is used by applications to send commands to devices that connected to one of Hono’s protocol adapters.</p>
+
+<p>Commands can be sent following a <em>request/response</em> or a <em>one-way</em> pattern. For <em>Request/Response</em> commands, there is always a response expected from the device.</p>
+
+<h2 id="command-control-over-http-adapter">Command & Control over HTTP Adapter</h2>
+
+<p>The following sequence diagrams give an overview of a device connecting via HTTP, which gets a command from the business application in the response to a downstream message - being an arbitrary event in this example. The application and the adapter connect to the AMQP Network, which forwards the transfer - for clarity this is not shown in the diagram.</p>
+
+<p><strong>(Request/Response) command over HTTP:</strong></p>
+
+<figure>
+ <img src="../command_control_concept_http.svg"/> <figcaption>
+ <h4>Command & Control over HTTP Adapter</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>One-way command over HTTP:</strong></p>
+
+<figure>
+ <img src="../command_control_concept_one_way_http.svg"/> <figcaption>
+ <h4>One-way Command & Control over HTTP Adapter</h4>
+ </figcaption>
+</figure>
+
+
+<p>With the <em>hono-ttd</em> request parameter in (1) the device indicates it will stay connected for max. 30 seconds. In the shown example this means that it can handle the response to the HTTP request for up to 30 seconds before considering the request being expired.</p>
+
+<p>Internally the application is notified that there is a time interval of 30 seconds to send a command (see <a href="/hono/docs/concepts/device-notifications/">Device notifications</a> for details). This notification will be consumed by the application (2) and it now tries to send a command (3) to the device at the given address <code>command/TENANT/4711</code>.
+If the device is not connected or the time interval is expired already, there is no such link open and the application would get no credits so send the command.</p>
+
+<p>The HTTP Adapter gets the command and writes it in the response of the devices <code>send event</code> (4), if the request was successful (status 2xx). The HTTP Adapter sets the following response headers and optionally a payload.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Response Header</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>hono-cmd</em></td>
+<td align="left">The name of the command to execute. Any input data required will be contained in the response body.</td>
+</tr>
+
+<tr>
+<td align="left"><em>hono-cmd-req-id</em></td>
+<td align="left">Only set for <strong>Request/Response commands</strong> : The unique identifier of the command. This identifier is used to correlate the device’s response to the command with the request.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The <em>hono-cmd</em> is the command that should be executed by the device. Typically this command needs to be known by the device and the payload may contain additional details of the command.</p>
+
+<p><strong>For Request/Response commands</strong>:</p>
+
+<p>The <em>hono-cmd-req-id</em> response header is needed for the command response to correlate it. It has to be sent back from the device to the adapter in a following operation (5).</p>
+
+<p>The device needs to respond to the command (5), to inform the business application about the outcome of executing the command. For this purpose
+specific URIs are defined in <a href="/hono/docs/user-guide/http-adapter/#sending-a-response-to-a-previously-received-command">HTTP Adapter</a>.</p>
+
+<p>The URI contains the <em>hono-cmd-req-id</em> and a status code indicating the outcome of executing the command.</p>
+
+<p>The HTTP Adapter will send the payload of the response back to the Business Application (6) by using the receiver link
+that was opened by the application. If the response reached the application, the response request will be replied with
+<code>202 Accepted</code>.</p>
+
+<h2 id="command-control-over-mqtt-adapter">Command & Control over MQTT Adapter</h2>
+
+<p>When the device is connected to the MQTT Adapter it receives <em>Request/Response</em> commands on the topic:</p>
+
+<ul>
+<li><code>command/[${tenant}]/[${device-id}]/req/${req-id}/${command}</code></li>
+</ul>
+
+<p>and <em>one-way</em> commands on the topic:</p>
+
+<ul>
+<li><code>command/[${tenant}]/[${device-id}]/req//${command}</code></li>
+</ul>
+
+<p>Authenticated devices typically subscribe to</p>
+
+<ul>
+<li><code>command/+/+/req/#</code></li>
+</ul>
+
+<p>while unauthenticated devices have to fully specify their <code>${tenant}</code> and <code>${device-id}</code> during the subscription.</p>
+
+<p>The response of the command will be sent by the device to</p>
+
+<ul>
+<li><code>command/[${tenant}]/[${device-id}]/res/${req-id}/${status}</code></li>
+</ul>
+
+<p>If the device is authenticated, the <code>${tenant}</code> and <code>${device-id}</code> are left empty (resulting in 3 subsequent <code>/</code>s).</p>
+
+<p>The following diagrams show the message flow for commands over the MQTT adapter:</p>
+
+<p><strong>Request/Response commands</strong> :</p>
+
+<figure>
+ <img src="../command_control_concept_mqtt.svg"/> <figcaption>
+ <h4>Request/Response Command over MQTT Adapter</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>one-way commands</strong> :</p>
+
+<figure>
+ <img src="../command_control_concept_one_way_mqtt.svg"/> <figcaption>
+ <h4>One-way Command over MQTT Adapter</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="command-control-over-amqp-adapter">Command & Control over AMQP Adapter</h2>
+
+<p>When a device connected to the AMQP adapter wants to receive commands from the adapter, it opens a receiver link specifying the following source address:</p>
+
+<ul>
+<li><code>command</code> for authenticated devices</li>
+<li><code>command/${tenant}/${device-id}</code> for unauthenticated devices</li>
+</ul>
+
+<p>Once the receiver link is opened, the AMQP adapter sends command messages to devices through the link. The <em>subject</em> property of the request message contains the actual command to be executed on the device.</p>
+
+<p>If the command request is a <em>one-way command</em>, then the device need not publish a command response message. However, if the application expects a response, then devices should publish a response back to the application. If an anonymous sender link is already opened by the device (e.g for publishing telemetry or events), then the device can reuse that link to publish the command response message. Otherwise, the device should publish the response by opening an anonymous sender link. The device should set the message address, status and correlation-id properties of the response accordingly. Consult the table below for a list of properties that a device must set on a command response message.</p>
+
+<p><strong>Command Request Message Properties</strong></p>
+
+<p>The following properties are set by the AMQP adapter on a command message sent to devices.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains the name of the command to be executed on a device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains the address to which the command response should be published to. This value is empty for one-way commands.</td>
+</tr>
+
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains the identifier used to correlate the response with the command request. If the command sent by the application contains a correlation-id, then that value is used as the correlation-id of the command request sent to the device. Otherwise, the value of the message-id property is used instead.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>Command Response Message Properties</strong></p>
+
+<p>If the application expects a response (i.e the <em>reply-to</em> property is set), then the device should set the following properties on a command response message.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the address to which the command response should be published to, which is the value of the reply-to property of the command request message.</td>
+</tr>
+
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the identifier used to correlate the response with the original request, which is the value of the correlation-id of the original request.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The status code indicating the outcome of processing the command by the device. MUST be set by the device after executing the command.</td>
+</tr>
+</tbody>
+</table>
+
+<figure>
+ <img src="../command_control_concept_amqp.svg"/> <figcaption>
+ <h4>Command & Control over AMQP Adapter</h4>
+ </figcaption>
+</figure>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
+
diff --git a/docs/concepts/command_control_concept_amqp.svg b/docs/concepts/command_control_concept_amqp.svg
new file mode 100644
index 0000000..0fb1ce7
--- /dev/null
+++ b/docs/concepts/command_control_concept_amqp.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="663.6px" preserveAspectRatio="none" style="width:1086px;height:663px;" version="1.1" viewBox="0 0 1086 663" width="1086px" zoomAndPan="magnify"><defs><filter height="300%" id="f1dgeg840p9dw" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1dgeg840p9dw)" height="376.3125" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1015.8" y="218.3531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="148.8" x2="148.8" y1="45.9563" y2="616.2656"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="582" x2="582" y1="45.9563" y2="616.2656"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1021.2" x2="1021.2" y1="45.9563" y2="616.2656"/><rect fill="#FEFECE" filter="url(#f1dgeg840p9dw)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="110.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="118.8" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f1dgeg840p9dw)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="110.4" y="615.0656"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="118.8" y="639.0598">Device</text><rect fill="#FEFECE" filter="url(#f1dgeg840p9dw)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="512.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="520.8" y="27.5941">AMQP Adapter</text><rect fill="#FEFECE" filter="url(#f1dgeg840p9dw)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="512.4" y="615.0656"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="520.8" y="639.0598">AMQP Adapter</text><rect fill="#FEFECE" filter="url(#f1dgeg840p9dw)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="966" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="974.4" y="27.5941">Application</text><rect fill="#FEFECE" filter="url(#f1dgeg840p9dw)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="966" y="615.0656"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="974.4" y="639.0598">Application</text><rect fill="#FFFFFF" filter="url(#f1dgeg840p9dw)" height="376.3125" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1015.8" y="218.3531"/><path d="M9.6,63.9563 L9.6,111.9563 L285.6,111.9563 L285.6,75.9563 L273.6,63.9563 L9.6,63.9563 " fill="#FBFB77" filter="url(#f1dgeg840p9dw)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M273.6,63.9563 L273.6,75.9563 L285.6,75.9563 L273.6,63.9563 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="217.2" x="16.8" y="84.4365">The device is connected and</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="250.8" x="16.8" y="102.5959">authenticated with TENANT/4711</text><polygon fill="#A80036" points="568.2,143.6344,580.2,148.4344,568.2,153.2344,573,148.4344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="149.4" x2="575.4" y1="148.4344" y2="148.4344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="253.2" x="157.8" y="142.3553">1. attach("receiver", "command")</text><polygon fill="#A80036" points="162.6,178.5938,150.6,183.3937,162.6,188.1938,157.8,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="155.4" x2="581.4" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="244.8" x="169.8" y="177.3146">2. attach("sender", "command")</text><polygon fill="#A80036" points="1001.4,213.5531,1013.4,218.3531,1001.4,223.1531,1006.2,218.3531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="582.6" x2="1008.6" y1="218.3531" y2="218.3531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="334.8" x="591" y="212.274">3. transfer("event/TENANT","4711","ttd=-1")</text><polygon fill="#A80036" points="595.8,248.5125,583.8,253.3125,595.8,258.1125,591,253.3125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="588.6" x2="1014.6" y1="253.3125" y2="253.3125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="603" y="247.2334">4. transfer("command/TENANT/4711","light","ON")</text><path d="M386.4,268.9125 L386.4,334.9125 L774,334.9125 L774,280.9125 L762,268.9125 L386.4,268.9125 " fill="#FBFB77" filter="url(#f1dgeg840p9dw)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M762,268.9125 L762,280.9125 L774,280.9125 L762,268.9125 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="291.6" x="393.6" y="289.3928">The command message is sent to the</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="303.6" x="393.6" y="307.5521">device with the 'reply-to' property set to</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="362.4" x="393.6" y="325.7115">"command_response/TENANT/4711/${replyId}"</text><polygon fill="#A80036" points="162.6,366.75,150.6,371.55,162.6,376.35,157.8,371.55" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="155.4" x2="581.4" y1="371.55" y2="371.55"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="169.8" y="365.4709">5. transfer("command/TENANT/4711","light","ON")</text><path d="M28.8,387.15 L28.8,453.15 L265.2,453.15 L265.2,399.15 L253.2,387.15 L28.8,387.15 " fill="#FBFB77" filter="url(#f1dgeg840p9dw)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M253.2,387.15 L253.2,399.15 L265.2,399.15 L253.2,387.15 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="192" x="36" y="407.6303">In order to send back the</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="36" y="425.7896">response, the device opens</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="201.6" x="36" y="443.949">an anonymous sender link</text><polygon fill="#A80036" points="568.2,484.9875,580.2,489.7875,568.2,494.5875,573,489.7875" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="149.4" x2="575.4" y1="489.7875" y2="489.7875"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="157.8" y="483.7084">6. attach("sender", null)</text><polygon fill="#A80036" points="162.6,519.9469,150.6,524.7469,162.6,529.5469,157.8,524.7469" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="155.4" x2="581.4" y1="524.7469" y2="524.7469"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="189.6" x="169.8" y="518.6678">7. attach("receiver", null)</text><polygon fill="#A80036" points="568.2,554.9063,580.2,559.7063,568.2,564.5063,573,559.7063" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="149.4" x2="575.4" y1="559.7063" y2="559.7063"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="404.4" x="157.8" y="553.6271">8. transfer("${reply-to}","status=200","lumen=100")</text><polygon fill="#A80036" points="1007.4,589.8656,1019.4,594.6656,1007.4,599.4656,1012.2,594.6656" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="582.6" x2="1014.6" y1="594.6656" y2="594.6656"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="404.4" x="591" y="588.5865">9. transfer("${reply-to}","status=200","lumen=100")</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "AMQP Adapter"
+participant Application
+
+note over Device
+The device is connected and
+authenticated with TENANT/4711
+end note
+Device -> "AMQP Adapter": 1. attach("receiver", "command")
+"AMQP Adapter" -> Device: 2. attach("sender", "command")
+"AMQP Adapter" -> Application: 3. transfer("event/TENANT","4711","ttd=-1")
+activate Application
+Application -> "AMQP Adapter": 4. transfer("command/TENANT/4711","light","ON")
+note over "AMQP Adapter"
+The command message is sent to the
+device with the 'reply-to' property set to
+"command_response/TENANT/4711/${replyId}"
+end note
+"AMQP Adapter" -> Device: 5. transfer("command/TENANT/4711","light","ON")
+note over Device
+In order to send back the
+response, the device opens
+an anonymous sender link
+end note
+Device -> "AMQP Adapter": 6. attach("sender", null)
+"AMQP Adapter" -> Device: 7. attach("receiver", null)
+Device -> "AMQP Adapter": 8. transfer("${reply-to}","status=200","lumen=100")
+"AMQP Adapter" -> Application: 9. transfer("${reply-to}","status=200","lumen=100")
+deactivate Application
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/command_control_concept_http.svg b/docs/concepts/command_control_concept_http.svg
new file mode 100644
index 0000000..4584ba5
--- /dev/null
+++ b/docs/concepts/command_control_concept_http.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="478.8px" preserveAspectRatio="none" style="width:1600px;height:478px;" version="1.1" viewBox="0 0 1600 478" width="1600.8px" zoomAndPan="magnify"><defs><filter height="300%" id="fo1zb0wqg7eoa" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fo1zb0wqg7eoa)" height="139.8375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="822.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#fo1zb0wqg7eoa)" height="104.8781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="822.6" y="305.0719"/><rect fill="#FFFFFF" filter="url(#fo1zb0wqg7eoa)" height="256.7156" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1530.6" y="118.275"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="169.2" x2="169.2" y1="45.9563" y2="431.55"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="828" x2="828" y1="45.9563" y2="431.55"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1536" x2="1536" y1="45.9563" y2="431.55"/><rect fill="#FEFECE" filter="url(#fo1zb0wqg7eoa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="130.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="139.2" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#fo1zb0wqg7eoa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="130.8" y="430.35"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="139.2" y="454.3441">Device</text><rect fill="#FEFECE" filter="url(#fo1zb0wqg7eoa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="760.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="769.2" y="27.5941">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#fo1zb0wqg7eoa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="760.8" y="430.35"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="769.2" y="454.3441">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#fo1zb0wqg7eoa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="1480.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="1489.2" y="27.5941">Application</text><rect fill="#FEFECE" filter="url(#fo1zb0wqg7eoa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="1480.8" y="430.35"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="1489.2" y="454.3441">Application</text><rect fill="#FFFFFF" filter="url(#fo1zb0wqg7eoa)" height="139.8375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="822.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#fo1zb0wqg7eoa)" height="104.8781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="822.6" y="305.0719"/><rect fill="#FFFFFF" filter="url(#fo1zb0wqg7eoa)" height="256.7156" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1530.6" y="118.275"/><polygon fill="#A80036" points="808.2,78.5156,820.2,83.3156,808.2,88.1156,813,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="169.8" x2="815.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="178.2" y="77.2365">1. HTTP request ("POST", "/event", "hono-ttd=30")</text><polygon fill="#A80036" points="1516.2,113.475,1528.2,118.275,1516.2,123.075,1521,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="834.6" x2="1523.4" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="338.4" x="843" y="112.1959">2. transfer("event/TENANT","4711","ttd=30")</text><polygon fill="#A80036" points="847.8,148.4344,835.8,153.2344,847.8,158.0344,843,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="840.6" x2="1529.4" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="855" y="147.1553">3. transfer("command/TENANT/4711","light","ON")</text><polygon fill="#A80036" points="183,183.3937,171,188.1938,183,192.9938,178.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="175.8" x2="821.4" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="624" x="190.2" y="182.1146">4. HTTP response (("200", "hono-cmd=light", "hono-cmd-req-id=${reqId}"), "ON")</text><polygon fill="#A80036" points="1516.2,218.3531,1528.2,223.1531,1516.2,227.9531,1521,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="828.6" x2="1523.4" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="837" y="217.074">disposition("accepted")</text><path d="M9.6,238.7531 L9.6,268.7531 L325.2,268.7531 L325.2,250.7531 L313.2,238.7531 L9.6,238.7531 " fill="#FBFB77" filter="url(#fo1zb0wqg7eoa)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M313.2,238.7531 L313.2,250.7531 L325.2,250.7531 L313.2,238.7531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="290.4" x="16.8" y="259.2334">Command response in next operation</text><polygon fill="#A80036" points="808.2,300.2719,820.2,305.0719,808.2,309.8719,813,305.0719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="169.8" x2="815.4" y1="305.0719" y2="305.0719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="536.4" x="178.2" y="298.9928">5. HTTP request("POST", "/command/res/${reqId}/200", "lumen=100")</text><polygon fill="#A80036" points="1516.2,335.2313,1528.2,340.0313,1516.2,344.8313,1521,340.0313" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="834.6" x2="1523.4" y1="340.0313" y2="340.0313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="667.2" x="843" y="333.9521">6. transfer("command_response/TENANT/4711/${replyId}","status=200","lumen=100")</text><polygon fill="#A80036" points="847.8,370.1906,835.8,374.9906,847.8,379.7906,843,374.9906" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="840.6" x2="1535.4" y1="374.9906" y2="374.9906"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="855" y="368.9115">disposition("accepted")</text><polygon fill="#A80036" points="183,405.15,171,409.95,183,414.75,178.2,409.95" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="175.8" x2="827.4" y1="409.95" y2="409.95"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="190.8" x="190.2" y="403.8709">7. HTTP response ("202")</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "HTTP Adapter"
+participant Application
+
+Device -> "HTTP Adapter": 1. HTTP request ("POST", "/event", "hono-ttd=30")
+activate "HTTP Adapter"
+"HTTP Adapter" -> Application: 2. transfer("event/TENANT","4711","ttd=30")
+activate Application
+Application -> "HTTP Adapter": 3. transfer("command/TENANT/4711","light","ON")
+"HTTP Adapter" -> Device: 4. HTTP response (("200", "hono-cmd=light", "hono-cmd-req-id=${reqId}"), "ON")
+"HTTP Adapter" -> Application: disposition("accepted")
+deactivate "HTTP Adapter"
+note over Device
+Command response in next operation
+end note
+Device -> "HTTP Adapter": 5. HTTP request("POST", "/command/res/${reqId}/200", "lumen=100")
+activate "HTTP Adapter"
+"HTTP Adapter" -> Application: 6. transfer("command_response/TENANT/4711/${replyId}","status=200","lumen=100")
+Application -> "HTTP Adapter": disposition("accepted")
+deactivate Application
+"HTTP Adapter" -> Device: 7. HTTP response ("202")
+deactivate "HTTP Adapter"
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/command_control_concept_mqtt.svg b/docs/concepts/command_control_concept_mqtt.svg
new file mode 100644
index 0000000..59c36e1
--- /dev/null
+++ b/docs/concepts/command_control_concept_mqtt.svg
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="427.2px" preserveAspectRatio="none" style="width:1316px;height:427px;" version="1.1" viewBox="0 0 1316 427" width="1316.4px" zoomAndPan="magnify"><defs><filter height="300%" id="f1o44wqsfudvsx" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1o44wqsfudvsx)" height="209.7563" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="538.2" y="148.4344"/><rect fill="#FFFFFF" filter="url(#f1o44wqsfudvsx)" height="174.7969" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1246.2" y="183.3937"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="148.8" x2="148.8" y1="45.9563" y2="379.7906"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="543.6" x2="543.6" y1="45.9563" y2="379.7906"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1251.6" x2="1251.6" y1="45.9563" y2="379.7906"/><rect fill="#FEFECE" filter="url(#f1o44wqsfudvsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="110.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="118.8" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f1o44wqsfudvsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="110.4" y="378.5906"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="118.8" y="402.5848">Device</text><rect fill="#FEFECE" filter="url(#f1o44wqsfudvsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="474" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="482.4" y="27.5941">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f1o44wqsfudvsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="474" y="378.5906"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="482.4" y="402.5848">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f1o44wqsfudvsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="1196.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="1204.8" y="27.5941">Application</text><rect fill="#FEFECE" filter="url(#f1o44wqsfudvsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="1196.4" y="378.5906"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="1204.8" y="402.5848">Application</text><rect fill="#FFFFFF" filter="url(#f1o44wqsfudvsx)" height="209.7563" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="538.2" y="148.4344"/><rect fill="#FFFFFF" filter="url(#f1o44wqsfudvsx)" height="174.7969" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1246.2" y="183.3937"/><path d="M9.6,63.9563 L9.6,111.9563 L285.6,111.9563 L285.6,75.9563 L273.6,63.9563 L9.6,63.9563 " fill="#FBFB77" filter="url(#f1o44wqsfudvsx)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M273.6,63.9563 L273.6,75.9563 L285.6,75.9563 L273.6,63.9563 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="217.2" x="16.8" y="84.4365">The device is connected and</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="250.8" x="16.8" y="102.5959">authenticated with TENANT/4711</text><polygon fill="#A80036" points="523.8,143.6344,535.8,148.4344,523.8,153.2344,528.6,148.4344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="149.4" x2="531" y1="148.4344" y2="148.4344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="354" x="157.8" y="142.3553">1. device subscribes to "command/+/+/req/#"</text><polygon fill="#A80036" points="1231.8,178.5938,1243.8,183.3937,1231.8,188.1938,1236.6,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="550.2" x2="1239" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="334.8" x="558.6" y="177.3146">2. transfer("event/TENANT","4711","ttd=-1")</text><polygon fill="#A80036" points="563.4,213.5531,551.4,218.3531,563.4,223.1531,558.6,218.3531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="556.2" x2="1245" y1="218.3531" y2="218.3531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="570.6" y="212.274">3. transfer("command/TENANT/4711","light","ON")</text><polygon fill="#A80036" points="162.6,248.5125,150.6,253.3125,162.6,258.1125,157.8,253.3125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="155.4" x2="537" y1="253.3125" y2="253.3125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="298.8" x="169.8" y="247.2334">4. "command///req/${reqId}/light":"ON"</text><polygon fill="#A80036" points="1231.8,283.4719,1243.8,288.2719,1231.8,293.0719,1236.6,288.2719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="550.2" x2="1239" y1="288.2719" y2="288.2719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="558.6" y="282.1928">disposition("accepted")</text><polygon fill="#A80036" points="523.8,318.4313,535.8,323.2313,523.8,328.0313,528.6,323.2313" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="149.4" x2="531" y1="323.2313" y2="323.2313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="360" x="157.8" y="317.1521">5. "command///res/${reqId}/200":"lumen=100"</text><polygon fill="#A80036" points="1237.8,353.3906,1249.8,358.1906,1237.8,362.9906,1242.6,358.1906" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="544.2" x2="1245" y1="358.1906" y2="358.1906"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="667.2" x="552.6" y="352.1115">6. transfer("command_response/TENANT/4711/${replyId}","status=200","lumen=100")</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "MQTT Adapter"
+participant Application
+
+note over Device
+The device is connected and
+authenticated with TENANT/4711
+end note
+Device -> "MQTT Adapter": 1. device subscribes to "command/+/+/req/#"
+activate "MQTT Adapter"
+"MQTT Adapter" -> Application: 2. transfer("event/TENANT","4711","ttd=-1")
+activate Application
+Application -> "MQTT Adapter": 3. transfer("command/TENANT/4711","light","ON")
+"MQTT Adapter" -> Device: 4. "command///req/${reqId}/light":"ON"
+"MQTT Adapter" -> Application: disposition("accepted")
+Device -> "MQTT Adapter": 5. "command///res/${reqId}/200":"lumen=100"
+"MQTT Adapter" -> Application: 6. transfer("command_response/TENANT/4711/${replyId}","status=200","lumen=100")
+deactivate "MQTT Adapter"
+deactivate Application
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/command_control_concept_one_way_http.svg b/docs/concepts/command_control_concept_one_way_http.svg
new file mode 100644
index 0000000..89f36d9
--- /dev/null
+++ b/docs/concepts/command_control_concept_one_way_http.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="339.6px" preserveAspectRatio="none" style="width:1089px;height:339px;" version="1.1" viewBox="0 0 1089 339" width="1089.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f19vdhjwihf8vo" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f19vdhjwihf8vo)" height="139.8375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="598.2" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f19vdhjwihf8vo)" height="162.6375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1019.4" y="118.275"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="175.2" x2="175.2" y1="45.9563" y2="291.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="603.6" x2="603.6" y1="45.9563" y2="291.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1024.8" x2="1024.8" y1="45.9563" y2="291.7125"/><rect fill="#FEFECE" filter="url(#f19vdhjwihf8vo)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="136.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="145.2" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f19vdhjwihf8vo)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="136.8" y="290.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="145.2" y="314.5066">Device</text><rect fill="#FEFECE" filter="url(#f19vdhjwihf8vo)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="536.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="544.8" y="27.5941">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#f19vdhjwihf8vo)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="536.4" y="290.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="544.8" y="314.5066">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#f19vdhjwihf8vo)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="969.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="978" y="27.5941">Application</text><rect fill="#FEFECE" filter="url(#f19vdhjwihf8vo)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="969.6" y="290.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="978" y="314.5066">Application</text><rect fill="#FFFFFF" filter="url(#f19vdhjwihf8vo)" height="139.8375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="598.2" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f19vdhjwihf8vo)" height="162.6375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1019.4" y="118.275"/><polygon fill="#A80036" points="583.8,78.5156,595.8,83.3156,583.8,88.1156,588.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="175.8" x2="591" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="184.2" y="77.2365">1. HTTP request ("POST", "/event", "hono-ttd=30")</text><polygon fill="#A80036" points="1005,113.475,1017,118.275,1005,123.075,1009.8,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="610.2" x2="1012.2" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="338.4" x="618.6" y="112.1959">2. transfer("event/TENANT","4711","ttd=30")</text><polygon fill="#A80036" points="623.4,148.4344,611.4,153.2344,623.4,158.0344,618.6,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="616.2" x2="1018.2" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="630.6" y="147.1553">3. transfer("command/TENANT/4711","light","ON")</text><polygon fill="#A80036" points="189,183.3937,177,188.1938,189,192.9938,184.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="181.8" x2="597" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="393.6" x="196.2" y="182.1146">4. HTTP response (("200", "hono-cmd=light"), "ON")</text><polygon fill="#A80036" points="1005,218.3531,1017,223.1531,1005,227.9531,1009.8,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="604.2" x2="1012.2" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="612.6" y="217.074">disposition("accepted")</text><path d="M9.6,238.7531 L9.6,268.7531 L337.2,268.7531 L337.2,250.7531 L325.2,238.7531 L9.6,238.7531 " fill="#FBFB77" filter="url(#f19vdhjwihf8vo)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M325.2,238.7531 L325.2,250.7531 L337.2,250.7531 L325.2,238.7531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="302.4" x="16.8" y="259.2334">No response expected from the device.</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "HTTP Adapter"
+participant Application
+
+Device -> "HTTP Adapter": 1. HTTP request ("POST", "/event", "hono-ttd=30")
+activate "HTTP Adapter"
+"HTTP Adapter" -> Application: 2. transfer("event/TENANT","4711","ttd=30")
+activate Application
+Application -> "HTTP Adapter": 3. transfer("command/TENANT/4711","light","ON")
+"HTTP Adapter" -> Device: 4. HTTP response (("200", "hono-cmd=light"), "ON")
+"HTTP Adapter" -> Application: disposition("accepted")
+deactivate "HTTP Adapter"
+note over Device
+No response expected from the device.
+end note
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/command_control_concept_one_way_mqtt.svg b/docs/concepts/command_control_concept_one_way_mqtt.svg
new file mode 100644
index 0000000..53cd10c
--- /dev/null
+++ b/docs/concepts/command_control_concept_one_way_mqtt.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="357.6px" preserveAspectRatio="none" style="width:1017px;height:357px;" version="1.1" viewBox="0 0 1017 357" width="1017.6px" zoomAndPan="magnify"><defs><filter height="300%" id="fo2b0w3wx1stz" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fo2b0w3wx1stz)" height="139.8375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="526.2" y="148.4344"/><rect fill="#FFFFFF" filter="url(#fo2b0w3wx1stz)" height="104.8781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="947.4" y="183.3937"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="148.8" x2="148.8" y1="45.9563" y2="309.8719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="531.6" x2="531.6" y1="45.9563" y2="309.8719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="952.8" x2="952.8" y1="45.9563" y2="309.8719"/><rect fill="#FEFECE" filter="url(#fo2b0w3wx1stz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="110.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="118.8" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#fo2b0w3wx1stz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="110.4" y="308.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="118.8" y="332.666">Device</text><rect fill="#FEFECE" filter="url(#fo2b0w3wx1stz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="462" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="470.4" y="27.5941">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#fo2b0w3wx1stz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="462" y="308.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="470.4" y="332.666">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#fo2b0w3wx1stz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="897.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="906" y="27.5941">Application</text><rect fill="#FEFECE" filter="url(#fo2b0w3wx1stz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="897.6" y="308.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="906" y="332.666">Application</text><rect fill="#FFFFFF" filter="url(#fo2b0w3wx1stz)" height="139.8375" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="526.2" y="148.4344"/><rect fill="#FFFFFF" filter="url(#fo2b0w3wx1stz)" height="104.8781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="947.4" y="183.3937"/><path d="M9.6,63.9563 L9.6,111.9563 L285.6,111.9563 L285.6,75.9563 L273.6,63.9563 L9.6,63.9563 " fill="#FBFB77" filter="url(#fo2b0w3wx1stz)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M273.6,63.9563 L273.6,75.9563 L285.6,75.9563 L273.6,63.9563 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="217.2" x="16.8" y="84.4365">The device is connected and</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="250.8" x="16.8" y="102.5959">authenticated with TENANT/4711</text><polygon fill="#A80036" points="511.8,143.6344,523.8,148.4344,511.8,153.2344,516.6,148.4344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="149.4" x2="519" y1="148.4344" y2="148.4344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="354" x="157.8" y="142.3553">1. device subscribes to "command/+/+/req/#"</text><polygon fill="#A80036" points="933,178.5938,945,183.3937,933,188.1938,937.8,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="538.2" x2="940.2" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="334.8" x="546.6" y="177.3146">2. transfer("event/TENANT","4711","ttd=-1")</text><polygon fill="#A80036" points="551.4,213.5531,539.4,218.3531,551.4,223.1531,546.6,218.3531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="544.2" x2="946.2" y1="218.3531" y2="218.3531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="380.4" x="558.6" y="212.274">3. transfer("command/TENANT/4711","light","ON")</text><polygon fill="#A80036" points="162.6,248.5125,150.6,253.3125,162.6,258.1125,157.8,253.3125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="155.4" x2="525" y1="253.3125" y2="253.3125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="103.2" x="169.8" y="247.2334">4. "command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="30" x="273" y="247.2334">/req</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="79.2" x="303" y="247.2334">light":"ON"</text><polygon fill="#A80036" points="939,283.4719,951,288.2719,939,293.0719,943.8,288.2719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="532.2" x2="946.2" y1="288.2719" y2="288.2719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="540.6" y="282.1928">disposition("accepted")</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "MQTT Adapter"
+participant Application
+
+note over Device
+The device is connected and
+authenticated with TENANT/4711
+end note
+Device -> "MQTT Adapter": 1. device subscribes to "command/+/+/req/#"
+activate "MQTT Adapter"
+"MQTT Adapter" -> Application: 2. transfer("event/TENANT","4711","ttd=-1")
+activate Application
+Application -> "MQTT Adapter": 3. transfer("command/TENANT/4711","light","ON")
+"MQTT Adapter" -> Device: 4. "command///req//light":"ON"
+"MQTT Adapter" -> Application: disposition("accepted")
+deactivate "MQTT Adapter"
+deactivate Application
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/connection-events/index.html b/docs/concepts/connection-events/index.html
new file mode 100644
index 0000000..7a41697
--- /dev/null
+++ b/docs/concepts/connection-events/index.html
@@ -0,0 +1,2195 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Connection Events :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Connection Events :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Connection Events :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts/connection-events//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/connection-events/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item active">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/connection-events/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/connection-events/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/connection-events.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > <a href='/hono/docs/concepts/'>Concepts</a> > Connection Events
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Connection Events</h1>
+
+
+
+
+
+<p>Hono’s protocol adapters can use <em>connection events</em> to indicate the connection
+status of a device. In particular, an adapter can notify downstream components
+about a newly established connection with a device or about a device having
+disconnected.
+<!-- more --></p>
+
+<p>The connection status of devices using stateful protocols like MQTT and AMQP can usually
+be determined quite easily because these protocols often require peers to explicitly open
+or close a connection and often also support a kind of heart beat which can be used to
+determine if a connection is still alive. However, for stateless protocols like HTTP
+or CoAP, there is no clear definition of what it actually means that a device is
+<em>connected</em>. It is obvious that a device is connected when it is sending an HTTP request.
+However, the adapter has no way of knowing if the device has gone to sleep after it has
+received the adapter’s response to its request.</p>
+
+<p>That said, connection events indicating an established connection with a device can
+usually be taken as face value. However, connection events indicating the disconnection
+of a device may only represent the protocol adapters view of the device’s connection
+status. For example, the HTTP adapter might consider a device <em>disconnected</em> because
+it hasn’t received any requests from the device for some time. However, the device itself
+might as well be up and running (i.e. not sleeping) and simply have no data worth publishing.</p>
+
+<p>The mechanism of firing connection events is pluggable with the default implementation
+simply forwarding connection status information to the logging framework.
+Hono also comes with an alternative implementation which forwards connection status
+information by means of <a href="/hono/docs/api/event-api/#connection-event">Connection Events</a>
+via the <em>Events</em> API.</p>
+
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
+
diff --git a/docs/concepts/device-identity/index.html b/docs/concepts/device-identity/index.html
new file mode 100644
index 0000000..4685532
--- /dev/null
+++ b/docs/concepts/device-identity/index.html
@@ -0,0 +1,2209 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Device Identity :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Device Identity :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Device Identity :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts/device-identity//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/device-identity/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item active">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/device-identity/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/device-identity/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/device-identity.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > <a href='/hono/docs/concepts/'>Concepts</a> > Device Identity
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#tenant">Tenant</a></li>
+<li><a href="#device-registration">Device Registration</a></li>
+<li><a href="#device-authentication">Device Authentication</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Device Identity</h1>
+
+
+
+
+
+<p>This page describes how devices are represented and identified throughout Hono and its API’s.</p>
+
+<p>The main purpose of Hono is to provide a uniform API for applications to interact with devices, regardless of the particular communication protocol the devices natively use. In order to do so, Hono uses a unique <em>logical</em> identifier to refer to each device individually.</p>
+
+<p>Hono does not make any assumptions about the format of a device identifier (or <em>device-id</em> for short). It basically is a string which is defined at the time a device is registered. Once registered, the device can be referred to by this identifier when using Hono’s APIs until the device is unregistered.</p>
+
+<h2 id="tenant">Tenant</h2>
+
+<p>Hono supports the logical partitioning of devices into groups called <em>tenants</em>. Each tenant has a unique identifier, a string called the <em>tenant-id</em>, and can be used to provide a logical grouping of devices belonging e.g. to the same application scope or organizational unit. Each device can thus be uniquely identified by the tuple (<em>tenant-id</em>, <em>device-id</em>). This tuple is broadly used throughout Hono’s APIs when addressing a particular device.</p>
+
+<h2 id="device-registration">Device Registration</h2>
+
+<p>Hono components use the <a href="/hono/docs/api/device-registration-api/">Device Registration API</a> to access device registration information. The API defines the mandatory to implement <em>assert Registration</em> operation for verifying a device’s registration status. In addition to that, it defines optional CRUD operations to register, update and remove device registration information. These operations are optional because Hono components do not require them during runtime. From a Hono perspective, it is not important how devices have been registered or how they are managed.</p>
+
+<p>In many real world scenarios there will already be a component in place which keeps track of devices and which supports the particular <em>provisioning process</em> being used to bring devices into life. In such cases it makes sense to simply implement the mandatory operation of Hono’s Device Registration API as a <em>facade</em> on top of the existing component.</p>
+
+<p>For demonstration purposes, Hono comes with a <a href="/hono/docs/admin-guide/device-registry-config/">simple default implementation</a> of the Device Registration API which keeps all data in memory only. This component implements all mandatory and optional operations but is not supposed to be used in production scenarios.</p>
+
+<h2 id="device-authentication">Device Authentication</h2>
+
+<p>Devices connect to protocol adapters in order to publish telemetry data or events. Downstream applications consuming this data often take particular actions based on the content of the messages. Such actions may include simply updating some statistics, e.g. tracking the average room temperature, but may also trigger more serious activities like shutting down a power plant. It is therefore important that applications can rely on the fact that the messages they process have in fact been produced by the device indicated by a message’s source address.</p>
+
+<p>Hono relies on protocol adapters to establish a device’s identity before it is allowed to publish telemetry data or send events. Conceptually, Hono distinguishes between two identities</p>
+
+<ol>
+<li>an identity associated with the authentication credentials (termed the <em>authentication identity</em> or <em>auth-id</em>), and</li>
+<li>an identity to act as (the <em>device identity</em> or <em>device-id</em>).</li>
+</ol>
+
+<p>A device therefore presents an <em>auth-id</em> as part of its credentials during the authentication process which is then resolved to a <em>device identity</em> by the protocol adapter on successful verification of the credentials.</p>
+
+<p>In order to support the protocol adapters in the process of verifying credentials presented by a device, the <a href="/hono/docs/api/credentials-api/">Credentials API</a> provides means to look up <em>secrets</em> on record for the device and use this information to verify the credentials.</p>
+
+<p>The Credentials API supports registration of multiple sets of credentials for each device. A set of credentials consists of an <em>auth-id</em> and some sort of <em>secret</em> information. The particular <em>type</em> of secret determines the kind of information kept. Please refer to the <a href="/hono/docs/api/credentials-api/#standard-credential-types">Standard Credential Types</a> defined in the Credentials API for details. Based on this approach, a device may be authenticated using different types of secrets, e.g. a <em>hashed password</em> or a <em>pre-shared key</em>, depending on the capabilities of the device and/or protocol adapter.</p>
+
+<p>Once the protocol adapter has resolved the <em>device-id</em> for a device, it uses this identity when referring to the device in all subsequent API invocations, e.g. when forwarding telemetry messages downstream to the AMQP Messaging Network.</p>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
+
diff --git a/docs/concepts/device-notifications/index.html b/docs/concepts/device-notifications/index.html
new file mode 100644
index 0000000..513a91b
--- /dev/null
+++ b/docs/concepts/device-notifications/index.html
@@ -0,0 +1,2292 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Device Notifications :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Device Notifications :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Device Notifications :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts/device-notifications//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/device-notifications/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item active">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/device-notifications/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/device-notifications/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/device-notifications.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > <a href='/hono/docs/concepts/'>Concepts</a> > Device Notifications
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#time-until-disconnect-notification">Time until Disconnect Notification</a>
+<ul>
+<li><a href="#determining-a-device-s-connection-status">Determining a Device’s Connection Status</a></li>
+<li><a href="#source-of-the-ttd-value">Source of the <em>ttd</em> Value</a></li>
+<li><a href="#hono-s-http-protocol-adapter">Hono’s HTTP protocol adapter</a></li>
+<li><a href="#hono-s-mqtt-protocol-adapter">Hono’s MQTT protocol adapter</a></li>
+<li><a href="#examples">Examples</a></li>
+</ul></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Device Notifications</h1>
+
+
+
+
+
+<p><em>Business Applications</em> need to know when an attempt to send a command to device is feasible, e.g. because the device is then known to be connected to a protocol adapter. <em>Devices</em> and <em>Protocol Adapters</em> can indicate to <em>Business Applications</em> a device’s intent to e.g. receive commands using specific <em>notifications</em>.</p>
+
+<h2 id="time-until-disconnect-notification">Time until Disconnect Notification</h2>
+
+<p><em>Devicess</em> and <em>Protocol Adapters</em> can notify an application about the fact that a device is connected and ready to receive one or more commands by means of including a <em>time ‘til disconnect</em> (<em>ttd</em>) property in downstream AMQP 1.0 messages containing data originating from a connected device.</p>
+
+<p>The <em>ttd</em> property value indicates the time that the device will stay connected to the protocol adapter.
+Using this value together with the <em>creation-time</em> of the message, an application can determine whether an attempt to send a command to the device has a reasonable chance of succeeding.</p>
+
+<p>The <em>ttd</em> property can be included in any regular telemetry or event message. However, if a device does not have any telemetry data or event to upload to the adapter, it can also use an <a href="/hono/docs/api/event-api/#empty-notification">empty notification</a> instead.</p>
+
+<p>Hono includes utility classes that application developers can use to register a callback to be notified when a device sends a <em>ttd</em> notification.
+See Hono’s example module for details where such a notification callback is used.</p>
+
+<p>Please refer to the <a href="/hono/docs/api/telemetry-api/">Telemetry API</a> and the <a href="/hono/docs/api/event-api/">Event API</a> for further details.</p>
+
+<p>The following table defines the possible values of the <em>ttd</em> property and their semantics:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">TTD</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left">> 0</td>
+<td align="left">The value indicates the number of seconds that the device will stay connected. Devices using a stateless protocol like HTTP will be able to receive a single command only before disconnecting.</td>
+</tr>
+
+<tr>
+<td align="left">-1</td>
+<td align="left">The device is now connected (i.e. available to receive upstream messages) until further notice.</td>
+</tr>
+
+<tr>
+<td align="left">0</td>
+<td align="left">The device is now disconnected (i.e. not available anymore to receive upstream messages).</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="determining-a-device-s-connection-status">Determining a Device’s Connection Status</h3>
+
+<p>An application receiving a downstream message containing a <em>ttd</em> property can check if the device is currently connected
+(and thus ready to receive a command) by</p>
+
+<ul>
+<li>adding the <em>ttd</em> value to the <em>creation-time</em> to determine the <em>expiration</em> time, and then</li>
+<li>comparing the <em>current</em> time with the <em>expiration</em> time</li>
+</ul>
+
+<p>If the <em>current</em> time is <em>after</em> the <em>expiration</em> time, the device should be assumed to already have disconnected again.</p>
+
+<h3 id="source-of-the-ttd-value">Source of the <em>ttd</em> Value</h3>
+
+<p>While it seems to be natural that a device itself indicates when it is ready to receive a command, it may not always be
+possible or desirable to do so.</p>
+
+<p>A device could e.g. be not capable to specify the value for <em>ttd</em> in it’s message, or all devices of a particular setup
+would always use the same value for <em>ttd</em>, so it would not make much sense to provide this value always again.</p>
+
+<p>Additionally different protocols may or may not let a sender set specific values for a message, so a device using a
+specific protocol may not be able to provide a value for the <em>ttd</em> property at all.</p>
+
+<p>For these reasons there are (resp. may be) additional ways of setting the value of <em>ttd</em>:</p>
+
+<ul>
+<li>Hono’s Tenant and Device Registration APIs support the inclusion of default values for application-properties in the
+AMQP 1.0 message. By these means a device can be configured to always have a specific value for <em>ttd</em>.</li>
+<li>In a future extension there may be a configuration value per tenant and protocol adapter that sets the value of <em>ttd</em>
+if it was not provided by other means already (like provided to the protocol adapter or by setting a default value).
+<br /></li>
+</ul>
+
+<h3 id="hono-s-http-protocol-adapter">Hono’s HTTP protocol adapter</h3>
+
+<p>Hono’s HTTP protocol adapter supports the setting of the <em>ttd</em> value in requests explicitly - please refer to the
+<a href="/hono/docs/user-guide/http-adapter/">HTTP Adapter</a> for details.</p>
+
+<p>Alternatively the default property values for devices from the Device Registry can be used (described above).</p>
+
+<h3 id="hono-s-mqtt-protocol-adapter">Hono’s MQTT protocol adapter</h3>
+
+<p>The MQTT protocol adapter automatically sends a <em>Time until disconnect notification</em> with a <em>ttd</em> value of <code>-1</code>
+for a device that subscribes to the appropriate command topic (refer to the <a href="/hono/docs/user-guide/mqtt-adapter/">MQTT Adapter user guide</a> for details).</p>
+
+<p>When a device unsubscribes again, the adapter automatically sends a <em>Time until disconnect notification</em> with a <em>ttd</em> value of <code>0</code>.</p>
+
+<h3 id="examples">Examples</h3>
+
+<p>The following sequence diagram shows a <em>Time until disconnect notification</em> while sending a telemetry message downstream
+via the HTTP protocol adapter:</p>
+
+<figure>
+ <img src="../device_commandReadinessImplicit.svg"/> <figcaption>
+ <h4>Device command readiness with telemetry data</h4>
+ </figcaption>
+</figure>
+
+
+<p>The following sequence diagram shows a <em>Time until disconnect notification</em> by sending an empty event message downstream
+via the HTTP protocol adapter:</p>
+
+<figure>
+ <img src="../device_commandReadinessExplicit.svg"/> <figcaption>
+ <h4>Device command readiness with explicit event</h4>
+ </figcaption>
+</figure>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
+
diff --git a/docs/concepts/device_commandReadinessExplicit.svg b/docs/concepts/device_commandReadinessExplicit.svg
new file mode 100644
index 0000000..f51d1e5
--- /dev/null
+++ b/docs/concepts/device_commandReadinessExplicit.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="711.6px" preserveAspectRatio="none" style="width:1803px;height:711px;" version="1.1" viewBox="0 0 1803 711" width="1803.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f1r9pxs4xq39he" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="663.3844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="789" x2="789" y1="45.9563" y2="663.3844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1253.4" x2="1253.4" y1="45.9563" y2="663.3844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1527.6" x2="1527.6" y1="45.9563" y2="663.3844"/><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="686.1785">Device</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="684.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="693" y="27.5941">HTTP Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="684.6" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="693" y="686.1785">HTTP Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="1165.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="1174.2" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="1165.8" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="1174.2" y="686.1785">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="198" x="1426.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="1435.2" y="27.5941">Consumer Application</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="198" x="1426.8" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="1435.2" y="686.1785">Consumer Application</text><path d="M54,63.9563 L54,111.9563 L476.4,111.9563 L476.4,75.9563 L464.4,63.9563 L54,63.9563 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M464.4,63.9563 L464.4,75.9563 L476.4,75.9563 L464.4,63.9563 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="397.2" x="61.2" y="84.4365">sending explicit event to signal command readiness</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="61.2" y="102.5959">for the next 60 seconds</text><path d="M54,129.075 L54,177.075 L493.2,177.075 L493.2,141.075 L481.2,129.075 L54,129.075 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M481.2,129.075 L481.2,141.075 L493.2,141.075 L481.2,129.075 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="414" x="61.2" y="149.5553">The HTTP specific header "hono-ttd" is used to provide</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="270" x="61.2" y="167.7146">the value for ttd by the device itself</text><polygon fill="#A80036" points="774.6,208.7531,786.6,213.5531,774.6,218.3531,779.4,213.5531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="781.8" y1="213.5531" y2="213.5531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="711.6" x="57" y="207.474">POST event(hono-ttd="60", Content-Type="application/vnd.eclipse-hono-empty-notification")</text><path d="M608.4,229.1531 L608.4,331.1531 L963.6,331.1531 L963.6,241.1531 L951.6,229.1531 L608.4,229.1531 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M951.6,229.1531 L951.6,241.1531 L963.6,241.1531 L951.6,229.1531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="193.2" x="615.6" y="249.6334">Set AMQP 1.0 properties:</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="157.2" x="615.6" y="267.7928">tenant-id: "TENANT",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="133.2" x="615.6" y="285.9521">device-id: "4711",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="330" x="615.6" y="304.1115">creation-time: NOW (in epoch milliseconds)</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="615.6" y="322.2709">ttd: value from http-ttd</text><polygon fill="#A80036" points="1239,363.3094,1251,368.1094,1239,372.9094,1243.8,368.1094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="789" x2="1246.2" y1="368.1094" y2="368.1094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="435.6" x="797.4" y="362.0303">1.0 transfer("event/TENANT", "4711", , creation-time, ttd)</text><polygon fill="#A80036" points="1513.8,398.2688,1525.8,403.0687,1513.8,407.8688,1518.6,403.0687" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1253.4" x2="1521" y1="403.0687" y2="403.0687"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="246" x="1261.8" y="396.9896">1.2 transfer("event/TENANT", ...)</text><polygon fill="#A80036" points="1266.6,433.2281,1254.6,438.0281,1266.6,442.8281,1261.8,438.0281" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1259.4" x2="1527" y1="438.0281" y2="438.0281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="205.2" x="1273.8" y="431.949">2.0 disposition("accepted")</text><polygon fill="#A80036" points="802.2,468.1875,790.2,472.9875,802.2,477.7875,797.4,472.9875" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="795" x2="1252.2" y1="472.9875" y2="472.9875"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="205.2" x="809.4" y="466.9084">2.0 disposition("accepted")</text><polygon fill="#A80036" points="61.8,503.1469,49.8,507.9469,61.8,512.7469,57,507.9469" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="787.8" y1="507.9469" y2="507.9469"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="177.6" x="69" y="501.8678">HTTP/1.1 202 Accepted</text><line style="stroke: #A80036; stroke-width: 1.2;" x1="1528.2" x2="1578.6" y1="542.9063" y2="542.9063"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1578.6" x2="1578.6" y1="542.9063" y2="558.5063"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1529.4" x2="1578.6" y1="558.5063" y2="558.5063"/><polygon fill="#A80036" points="1541.4,553.7063,1529.4,558.5063,1541.4,563.3063,1536.6,558.5063" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="253.2" x="1536.6" y="536.8271">callbackIfValid(creation-time, ttd)</text><path d="M1314,574.1062 L1314,640.1062 L1736.4,640.1062 L1736.4,586.1062 L1724.4,574.1062 L1314,574.1062 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1724.4,574.1062 L1724.4,586.1062 L1736.4,586.1062 L1724.4,574.1062 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="397.2" x="1321.2" y="594.5865">React if message indicates that currently the device</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="237.6" x="1321.2" y="612.7459">is ready to receive a command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="271.2" x="1321.2" y="630.9053">(e.g. by trying to send a command)</text><!--
+@startuml
+scale 1.2
+
+participant Device
+
+participant "HTTP Protocol Adapter"
+participant "AMQP 1.0 Network"
+participant "Consumer Application"
+
+note right of Device
+sending explicit event to signal command readiness
+for the next 60 seconds
+end note
+note right of Device
+The HTTP specific header "hono-ttd" is used to provide
+the value for ttd by the device itself
+end note
+
+Device -> "HTTP Protocol Adapter": POST event(hono-ttd="60", Content-Type="application/vnd.eclipse-hono-empty-notification")
+
+note over "HTTP Protocol Adapter"
+Set AMQP 1.0 properties:
+tenant-id: "TENANT",
+device-id: "4711",
+creation-time: NOW (in epoch milliseconds)
+ttd: value from http-ttd
+end note
+
+"HTTP Protocol Adapter" -> "AMQP 1.0 Network": 1.0 transfer("event/TENANT", "4711", , creation-time, ttd)
+"AMQP 1.0 Network" -> "Consumer Application": 1.2 transfer("event/TENANT", ...)
+"Consumer Application" -> "AMQP 1.0 Network": 2.0 disposition("accepted")
+"AMQP 1.0 Network" -> "HTTP Protocol Adapter": 2.0 disposition("accepted")
+
+
+"HTTP Protocol Adapter" -> Device: HTTP/1.1 202 Accepted
+
+"Consumer Application" -> "Consumer Application": callbackIfValid(creation-time, ttd)
+note over "Consumer Application"
+React if message indicates that currently the device
+is ready to receive a command
+(e.g. by trying to send a command)
+end note
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/device_commandReadinessImplicit.svg b/docs/concepts/device_commandReadinessImplicit.svg
new file mode 100644
index 0000000..836a06a
--- /dev/null
+++ b/docs/concepts/device_commandReadinessImplicit.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="740.4px" preserveAspectRatio="none" style="width:1734px;height:740px;" version="1.1" viewBox="0 0 1734 740" width="1734px" zoomAndPan="magnify"><defs><filter height="300%" id="fnzp9xyiux0bi" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="361.2" x2="361.2" y1="45.9563" y2="692.1844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="657" x2="657" y1="45.9563" y2="692.1844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1152.6" x2="1152.6" y1="45.9563" y2="692.1844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1458" x2="1458" y1="45.9563" y2="692.1844"/><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="322.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="331.2" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="322.8" y="690.9844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="331.2" y="714.9785">Device</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="552.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="561" y="27.5941">HTTP Protocol Adapter</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="552.6" y="690.9844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="561" y="714.9785">HTTP Protocol Adapter</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="1065" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="1073.4" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="1065" y="690.9844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="1073.4" y="714.9785">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="198" x="1357.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="1365.6" y="27.5941">Consumer Application</text><rect fill="#FEFECE" filter="url(#fnzp9xyiux0bi)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="198" x="1357.2" y="690.9844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="1365.6" y="714.9785">Consumer Application</text><path d="M9.6,63.9563 L9.6,111.9563 L351.6,111.9563 L351.6,75.9563 L339.6,63.9563 L9.6,63.9563 " fill="#FBFB77" filter="url(#fnzp9xyiux0bi)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M339.6,63.9563 L339.6,75.9563 L351.6,75.9563 L339.6,63.9563 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="316.8" x="16.8" y="84.4365">sending telemetry data with explicit value</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="188.4" x="16.8" y="102.5959">for ttd set to 60 seconds</text><polygon fill="#A80036" points="642.6,143.6344,654.6,148.4344,642.6,153.2344,647.4,148.4344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="361.8" x2="649.8" y1="148.4344" y2="148.4344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="266.4" x="370.2" y="142.3553">telemetry(hono-ttd="60", payload)</text><path d="M139.2,164.0344 L139.2,212.0344 L578.4,212.0344 L578.4,176.0344 L566.4,164.0344 L139.2,164.0344 " fill="#FBFB77" filter="url(#fnzp9xyiux0bi)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M566.4,164.0344 L566.4,176.0344 L578.4,176.0344 L566.4,164.0344 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="414" x="146.4" y="184.5146">The HTTP specific header "hono-ttd" is used to provide</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="270" x="146.4" y="202.674">the value for ttd by the device itself</text><path d="M476.4,229.1531 L476.4,313.1531 L831.6,313.1531 L831.6,241.1531 L819.6,229.1531 L476.4,229.1531 " fill="#FBFB77" filter="url(#fnzp9xyiux0bi)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M819.6,229.1531 L819.6,241.1531 L831.6,241.1531 L819.6,229.1531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="193.2" x="483.6" y="249.6334">Set AMQP 1.0 properties:</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="157.2" x="483.6" y="267.7928">tenant-id: "TENANT",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="133.2" x="483.6" y="285.9521">device-id: "4711",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="330" x="483.6" y="304.1115">creation-time: NOW (in epoch milliseconds)</text><polygon fill="#A80036" points="1138.2,345.15,1150.2,349.95,1138.2,354.75,1143,349.95" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="657" x2="1145.4" y1="349.95" y2="349.95"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="466.8" x="665.4" y="343.8709">1.0 transfer("telemetry/TENANT", "4711", , creation-time, ttd)</text><polygon fill="#A80036" points="1444.2,380.1094,1456.2,384.9094,1444.2,389.7094,1449,384.9094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1152.6" x2="1451.4" y1="384.9094" y2="384.9094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="277.2" x="1161" y="378.8303">1.2 transfer("telemetry/TENANT", ...)</text><polygon fill="#A80036" points="1165.8,415.0687,1153.8,419.8688,1165.8,424.6688,1161,419.8688" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1158.6" x2="1457.4" y1="419.8688" y2="419.8688"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="205.2" x="1173" y="413.7896">2.0 disposition("accepted")</text><polygon fill="#A80036" points="670.2,450.0281,658.2,454.8281,670.2,459.6281,665.4,454.8281" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="663" x2="1151.4" y1="454.8281" y2="454.8281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="205.2" x="677.4" y="448.749">2.0 disposition("accepted")</text><polygon fill="#A80036" points="375,484.9875,363,489.7875,375,494.5875,370.2,489.7875" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="367.8" x2="655.8" y1="489.7875" y2="489.7875"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="177.6" x="382.2" y="483.7084">HTTP/1.1 202 Accepted</text><path d="M1324.8,505.3875 L1324.8,535.3875 L1586.4,535.3875 L1586.4,517.3875 L1574.4,505.3875 L1324.8,505.3875 " fill="#FBFB77" filter="url(#fnzp9xyiux0bi)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1574.4,505.3875 L1574.4,517.3875 L1586.4,517.3875 L1574.4,505.3875 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="236.4" x="1332" y="525.8678">Processing the telemetry data.</text><line style="stroke: #A80036; stroke-width: 1.2;" x1="1458.6" x2="1509" y1="571.7063" y2="571.7063"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1509" x2="1509" y1="571.7063" y2="587.3063"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1459.8" x2="1509" y1="587.3063" y2="587.3063"/><polygon fill="#A80036" points="1471.8,582.5063,1459.8,587.3063,1471.8,592.1062,1467,587.3063" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="253.2" x="1467" y="565.6271">callbackIfValid(creation-time, ttd)</text><path d="M1244.4,602.9063 L1244.4,668.9063 L1666.8,668.9063 L1666.8,614.9063 L1654.8,602.9063 L1244.4,602.9063 " fill="#FBFB77" filter="url(#fnzp9xyiux0bi)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1654.8,602.9063 L1654.8,614.9063 L1666.8,614.9063 L1654.8,602.9063 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="397.2" x="1251.6" y="623.3865">React if message indicates that currently the device</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="237.6" x="1251.6" y="641.5459">is ready to receive a command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="271.2" x="1251.6" y="659.7053">(e.g. by trying to send a command)</text><!--
+@startuml
+scale 1.2
+
+participant Device
+
+participant "HTTP Protocol Adapter"
+participant "AMQP 1.0 Network"
+participant "Consumer Application"
+
+note left of Device
+sending telemetry data with explicit value
+for ttd set to 60 seconds
+end note
+
+Device -> "HTTP Protocol Adapter": telemetry(hono-ttd="60", payload)
+note over Device
+The HTTP specific header "hono-ttd" is used to provide
+the value for ttd by the device itself
+end note
+
+
+
+note over "HTTP Protocol Adapter"
+Set AMQP 1.0 properties:
+tenant-id: "TENANT",
+device-id: "4711",
+creation-time: NOW (in epoch milliseconds)
+end note
+
+"HTTP Protocol Adapter" -> "AMQP 1.0 Network": 1.0 transfer("telemetry/TENANT", "4711", , creation-time, ttd)
+"AMQP 1.0 Network" -> "Consumer Application": 1.2 transfer("telemetry/TENANT", ...)
+"Consumer Application" -> "AMQP 1.0 Network": 2.0 disposition("accepted")
+"AMQP 1.0 Network" -> "HTTP Protocol Adapter": 2.0 disposition("accepted")
+
+"HTTP Protocol Adapter" -> Device: HTTP/1.1 202 Accepted
+
+note over "Consumer Application"
+Processing the telemetry data.
+end note
+
+
+
+"Consumer Application" -> "Consumer Application": callbackIfValid(creation-time, ttd)
+note over "Consumer Application"
+React if message indicates that currently the device
+is ready to receive a command
+(e.g. by trying to send a command)
+end note
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/concepts/index.html b/docs/concepts/index.html
new file mode 100644
index 0000000..927e1bf
--- /dev/null
+++ b/docs/concepts/index.html
@@ -0,0 +1,2154 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Concepts :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Concepts :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Concepts :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+ active
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/_index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > Concepts
+
+
+
+
+
+ </span>
+ </div>
+
+ </div>
+ </div>
+
+
+
+ <div id="chapter">
+
+ <div id="body-inner">
+
+
+
+
+
+
+
+<h1 id="concepts">Concepts</h1>
+
+<p>Understand the concepts behind Hono™.</p>
+
+
+<footer class=" footline" >
+
+</footer>
+
+
+ </div>
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
diff --git a/docs/concepts/index.xml b/docs/concepts/index.xml
new file mode 100644
index 0000000..f785900
--- /dev/null
+++ b/docs/concepts/index.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Concepts on Eclipse Hono&trade;</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/</link>
+ <description>Recent content in Concepts on Eclipse Hono&trade;</description>
+ <generator>Hugo -- gohugo.io</generator>
+ <language>en-us</language>
+
+ <atom:link href="https://www.eclipse.org/hono/docs/concepts/index.xml" rel="self" type="application/rss+xml" />
+
+
+ <item>
+ <title>Device Identity</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/device-identity/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/concepts/device-identity/</guid>
+ <description><p>This page describes how devices are represented and identified throughout Hono and its API&rsquo;s.</p></description>
+ </item>
+
+ <item>
+ <title>Multi-Tenancy</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/tenancy/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/concepts/tenancy/</guid>
+ <description>Hono is designed to structure the set of all internally managed data and data streams into strictly isolated subsets. This includes the registration data and credentials of devices, internal users that are used for authentication, and the Business Applications that are part of such subsets as well.
+This way of strict isolation is generally known as multi-tenancy, where a tenant is the term for such a subset. Such an isolation is essential for enabling a scalable distributed architecture to handle independent subsets as if each subset had its own installation (which would be much harder to maintain and would not benefit from runtime cost sharing).</description>
+ </item>
+
+ <item>
+ <title>Device Notifications</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/device-notifications/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/concepts/device-notifications/</guid>
+ <description><p><em>Business Applications</em> need to know when an attempt to send a command to device is feasible, e.g. because the device is then known to be connected to a protocol adapter. <em>Devices</em> and <em>Protocol Adapters</em> can indicate to <em>Business Applications</em> a device&rsquo;s intent to e.g. receive commands using specific <em>notifications</em>.</p></description>
+ </item>
+
+ <item>
+ <title>Command & Control</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/command-and-control/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/concepts/command-and-control/</guid>
+ <description><p><em>Business applications</em> can send commands to devices following the <a href="https://www.eclipse.org/hono/docs/hono/docs/api/command-and-control-api/">Command &amp; Control API</a>. This concept page describes how this API is used by applications to send commands to devices that connected to one of Hono&rsquo;s protocol adapters.</p></description>
+ </item>
+
+ <item>
+ <title>Resource limits</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/resource-limits/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/concepts/resource-limits/</guid>
+ <description>Resource limits such as the maximum number of device connections allowed per tenant or the allowed data volume of the messages over a period of time per tenant can be set in Hono.
+Hono specifies an API ResourceLimitChecks that is used by the protocol adapters for the verification of the configured resource limits. A default implementation of this API is shipped with Hono. This default implementation uses the live metrics data retrieved from a Prometheus server to verify the resource-limits, if configured.</description>
+ </item>
+
+ <item>
+ <title>Connection Events</title>
+ <link>https://www.eclipse.org/hono/docs/concepts/connection-events/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/concepts/connection-events/</guid>
+ <description>Hono&rsquo;s protocol adapters can use connection events to indicate the connection status of a device. In particular, an adapter can notify downstream components about a newly established connection with a device or about a device having disconnected. The connection status of devices using stateful protocols like MQTT and AMQP can usually be determined quite easily because these protocols often require peers to explicitly open or close a connection and often also support a kind of heart beat which can be used to determine if a connection is still alive.</description>
+ </item>
+
+ </channel>
+</rss>
\ No newline at end of file
diff --git a/docs/concepts/resource-limits/index.html b/docs/concepts/resource-limits/index.html
new file mode 100644
index 0000000..9babba2
--- /dev/null
+++ b/docs/concepts/resource-limits/index.html
@@ -0,0 +1,2193 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Resource limits :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Resource limits :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Resource limits :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts/resource-limits//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/resource-limits/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item active">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/resource-limits/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/resource-limits/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/resource-limits.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > <a href='/hono/docs/concepts/'>Concepts</a> > Resource limits
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#connections-limit">Connections Limit</a></li>
+<li><a href="#messages-limit">Messages Limit</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Resource limits</h1>
+
+
+
+
+
+
+
+<p>Resource limits such as the maximum number of device connections allowed per tenant or the allowed data volume of the messages over a period of time per tenant can be set in Hono.</p>
+
+<p>Hono specifies an API <code>ResourceLimitChecks</code> that is used by the protocol adapters for the verification of the configured resource limits. A default implementation of this API is shipped with Hono. This default implementation uses the live metrics data retrieved from a Prometheus server to verify the resource-limits, if configured. To enable and use this default implementation, please refer to the protocol adapter admin guides. Based on the requirements, a custom version of the above API can be implemented and used. The resource-limits for a tenant can be set using the tenant configuration. Please refer to the <a href="/hono/docs/api/tenant-api/#request-payload">Tenant API</a> for more details.</p>
+
+<h2 id="connections-limit">Connections Limit</h2>
+
+<p>Before accepting a new connection request from a device, the number of existing connections is checked against the configured limit by the protocol adapters. The connection request is declined if the limit is exceeded.</p>
+
+<p>The MQTT and AMQP protocol adapters keep the connections longer opened than their counterparts such as HTTP. Thereby the MQTT and AMQP adapters are enabled to check the connection limits before accepting any new connection to a device.</p>
+
+<h2 id="messages-limit">Messages Limit</h2>
+
+<p>Before accepting a telemetry or an event message from a device, it is checked by the protocol adapters that if the message limit is exceeded or not. The incoming message is declined if the limit is exceeded.</p>
+
+<p>The default prometheus based implementation uses data volume as the factor to limit the messages. The data volume already consumed by a tenant over the given period of time is compared with the configured message limit before accepting any telemetry or event messages.</p>
+
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
+
diff --git a/docs/concepts/tenancy/index.html b/docs/concepts/tenancy/index.html
new file mode 100644
index 0000000..b66c090
--- /dev/null
+++ b/docs/concepts/tenancy/index.html
@@ -0,0 +1,2334 @@
+<!DOCTYPE html>
+<html lang="stable" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.54.0" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Multi-Tenancy :: Eclipse Hono™</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1564044211" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1564044211" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1564044211" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1564044211"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Multi-Tenancy :: Eclipse Hono&trade;">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Multi-Tenancy :: Eclipse Hono&trade;" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/concepts/tenancy//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/concepts/tenancy/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1564044211"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1564044211"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1564044211"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/" title="Concepts" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/tenancy/" title="Multi-Tenancy" class="dd-item active">
+ <a href="/hono/docs/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/device-registry/" title="Device Registry" class="dd-item ">
+ <a href="/hono/docs/user-guide/device-registry/">
+ Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
+ <a href="/hono/docs/user-guide/jmeter_load_tests/">
+ Load Tests with JMeter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/device-registry-config/">
+ Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/" title="API" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/telemetry-api/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/api/telemetry-api/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/event-api/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/api/event-api/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/command-and-control-api/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/api/command-and-control-api/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/tenant-api/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/api/tenant-api/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-connection-api/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-connection-api/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/device-registration-api/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/api/device-registration-api/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/credentials-api/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/api/credentials-api/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/authentication-api/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/api/authentication-api/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/component-view/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/architecture/component-view/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/architecture/auth/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/architecture/auth/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/concepts/tenancy/" selected>stable (1.0-M5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/concepts/tenancy/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2019 <a href="https://www.eclipse.org/hono">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://www.gohugo.io" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/tenancy.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/'>Documentation</a> > <a href='/hono/docs/concepts/'>Concepts</a> > Multi-Tenancy
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#the-tenant-api">The Tenant API</a></li>
+<li><a href="#protocol-adapters-respect-the-tenant-api">Protocol Adapters respect the Tenant API</a></li>
+<li><a href="#protocol-adapter-configuration">Protocol Adapter Configuration</a></li>
+<li><a href="#amqp-1-0-endpoints">AMQP 1.0 Endpoints</a></li>
+<li><a href="#devices-and-tenants">Devices and Tenants</a></li>
+<li><a href="#tenant-based-flow-control">Tenant based Flow Control</a></li>
+<li><a href="#authorization-at-tenant-level">Authorization at Tenant Level</a></li>
+<li><a href="#business-applications-and-tenants">Business Applications and Tenants</a></li>
+<li><a href="#separation-of-tenants">Separation of Tenants</a></li>
+<li><a href="#hints-for-production">Hints for Production</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Multi-Tenancy</h1>
+
+
+
+
+
+
+
+<p>Hono is designed to structure the set of all internally managed data and data streams into strictly isolated subsets.
+This includes the registration data and credentials of devices, internal users that are used for authentication,
+and the <em>Business Applications</em> that are part of such subsets as well.</p>
+
+<p>This way of <em>strict</em> isolation is generally known as multi-tenancy, where a <strong>tenant</strong> is the term for such a subset.
+Such an isolation is essential for enabling a scalable distributed architecture to handle independent subsets as if each subset had its
+own installation (which would be much harder to maintain and would not benefit from runtime cost sharing).</p>
+
+<p>Hono’s multi-tenancy concept is based on handling tenants as own <em>entities</em>. All functionality of Hono is
+provided in the context of a previously created tenant - except the creation of a tenant itself.</p>
+
+<p>In the following the different aspects of multi-tenancy in Hono are addressed and a full overview of the concept is given.</p>
+
+<h2 id="the-tenant-api">The Tenant API</h2>
+
+<p>By means of the <a href="/hono/docs/api/tenant-api/">Tenant API</a> Hono handles tenants as own <em>entities</em>.</p>
+
+<p>The API defines how to <em>retrieve</em> the details of a specific tenant. This offers the possibility to handle arbitrary
+properties on the level of a tenant (see e.g. <a href="#protocol-adapter-configuration">Protocol adapter configuration</a>).</p>
+
+<p>For convenience, there are CRUD operations for the handling of tenants, which can be found in the
+<a href="/hono/docs/user-guide/device-registry/#managing-tenants">Device Registry</a>.</p>
+
+<h2 id="protocol-adapters-respect-the-tenant-api">Protocol Adapters respect the Tenant API</h2>
+
+<p>When a device connects to one of Hono’s protocol adapters, the adapter determines the tenant this device belongs to.
+How this is done is described in the User Guide.</p>
+
+<p>After the tenant is determined, the adapter retrieves the details of the determined tenant by means of the Tenant API.
+Only if the tenant exists and is enabled the adapter further processes the data of the device that is connecting. Otherwise
+the connection will be closed.</p>
+
+<h2 id="protocol-adapter-configuration">Protocol Adapter Configuration</h2>
+
+<p>Protocol adapters retrieve parts of their configuration on a tenant level by using the details of the determined tenant.</p>
+
+<p>This includes e.g. if a specific protocol adapter is enabled at all for this tenant, allowing to define tenants with
+only a subset of Hono’s functionality. This feature is foreseen to be especially important for production setups.</p>
+
+<p><em>Example</em>: a tenant that</p>
+
+<ul>
+<li>can use the MQTT protocol adapter</li>
+<li>but is not allowed to use the HTTP protocol adapter</li>
+</ul>
+
+<p>Please refer to the <a href="/hono/docs/api/tenant-api/">Tenant API</a> to find out which protocol adapter properties are
+configurable on a tenant level. The number of such properties may grow during further development of Hono.</p>
+
+<h2 id="amqp-1-0-endpoints">AMQP 1.0 Endpoints</h2>
+
+<p>The AMQP 1.0 endpoints for all APIs of Hono are scoped to a tenant, by using the scheme <code><api-name>/TENANT/...</code>.</p>
+
+<p><em>Examples</em>:</p>
+
+<ul>
+<li><code>telemetry/TENANT</code></li>
+<li><code>registration/TENANT</code></li>
+</ul>
+
+<p>etc.</p>
+
+<p>This separates the AMQP endpoints from each other on a tenant level.</p>
+
+<p>The only exception to this is the <a href="/hono/docs/api/tenant-api/">Tenant API</a>, which does not follow this scheme since it
+is addressing the tenants themselves.</p>
+
+<h2 id="devices-and-tenants">Devices and Tenants</h2>
+
+<p>All devices of Hono belong to exactly one tenant, so any data is sent in the context of the
+tenant a device belongs to.</p>
+
+<p>It is important here to focus on Hono’s view of a device: it is on a logical level, meaning a device is created in the
+context of a tenant purely by using Hono’s Credentials and Device Registration API.</p>
+
+<p>Usually a physical device will be created in Hono as exactly one logical device, and thus belongs to exactly one tenant.</p>
+
+<p>The following diagram shows the relation between tenants, devices and their credentials:</p>
+
+<figure>
+ <img src="../Tenants_Devices_Credentials.png"/> <figcaption>
+ <h4>Tenants, Devices and Credentials</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="tenant-based-flow-control">Tenant based Flow Control</h2>
+
+<p>An important detail in Hono’s architecture is that data sent downstream is transported via the tenant
+scoped AMQP 1.0 links from the protocol adapters to the AMQP 1.0 network.</p>
+
+<p>Each tenant has its own pair of AMQP 1.0 links and is treated
+independently from other tenants regarding the back pressure mechanism that AMQP 1.0 offers.</p>
+
+<p>This enables a <em>Business application</em> to limit the rate at which it consumes AMQP 1.0 messages per tenant.</p>
+
+<h2 id="authorization-at-tenant-level">Authorization at Tenant Level</h2>
+
+<p>Hono’s components authenticate each other by means of the <a href="/hono/docs/api/authentication-api/">Authentication API</a>.</p>
+
+<p>The returned token for a successful authentication contains authorization information that is addressing the AMQP 1.0
+endpoints. Since the endpoints (as outlined above) are scoped to a tenant, this enables to configure tenants that are
+authorized to only a subset of Hono’s full functionality.</p>
+
+<p><em>Example</em>: a tenant (defined by means of authorization configuration) that</p>
+
+<ul>
+<li>is allowed to send telemetry data downstream</li>
+<li>but is not allowed to send event data</li>
+</ul>
+
+<p>This is done by not including the event endpoint in the authorization token for these tenants.</p>
+
+<h2 id="business-applications-and-tenants">Business Applications and Tenants</h2>
+
+<p>The northbound <em>Business applications</em> are always connecting to the AMQP 1.0 endpoints of Hono.</p>
+
+<p>By means of the authentication and authorization setup and the fact that the endpoints are scoped to a tenant, the
+<em>Business application</em> is only acting in the context of one tenant.</p>
+
+<h2 id="separation-of-tenants">Separation of Tenants</h2>
+
+<p>Tenants are separated from each other in all of Hono’s components.</p>
+
+<p>Here is a summary of how this is implemented:</p>
+
+<ul>
+<li>the registration of devices are strictly scoped to a tenant</li>
+<li>the credentials of devices are strictly scoped to a tenant</li>
+<li>protocol adapters can be enabled/disabled for a tenant</li>
+<li>the downstream data flow is isolated for every tenant</li>
+<li><em>Business applications</em> need to authenticate to the AMQP 1.0 network and are by that mechanism scoped to their tenant</li>
+</ul>
+
+<h2 id="hints-for-production">Hints for Production</h2>
+
+<p>To be flexible for the different needs of production setups, Hono tries to make as few assumptions about the combination
+of the different APIs as possible.
+This means e.g. that the Device Registry does not enforce referential integrity of the APIs:</p>
+
+<ul>
+<li>devices can be created for a tenant that is not existing (yet)</li>
+<li>credentials can be created for a tenant and/or a device that is not existing (yet)</li>
+<li>tenants can be deleted and leave their scoped devices and credentials still in the configuration (which may not be usable
+anymore, since the tenant is missing)</li>
+</ul>
+
+<p>These are points that production setups may want to implement differently.</p>
+
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1564044211"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1564044211"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1564044211"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1564044211"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1564044211"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1564044211"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1564044211"></script>
+ <script src="/hono/docs/js/learn.js?1564044211"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1564044211"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1564044211" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1564044211"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </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>
+
+ </body>
+</html>
+