blob: 5b866b4e411ae93071c087d26d94c550f9dbeba8 [file] [log] [blame]
<!DOCTYPE html>
<html lang="1.1" 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.81.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>Connecting Devices :: Eclipse Hono&trade; Vers.: 1.1</title>
<link href="/hono/docs/css/nucleus.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/fontawesome-all.min.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/hybrid.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/featherlight.min.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/perfect-scrollbar.min.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/auto-complete.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/atom-one-dark-reasonable.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/theme.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/hugo-theme.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/theme-hono.css?1626052272" rel="stylesheet">
<link href="/hono/docs/css/hono.css?1626052272" rel="stylesheet">
<script src="/hono/docs/js/jquery-3.3.1.min.js?1626052272"></script>
<style>
: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">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@EclipseHono">
<meta name="twitter:title" content="Connecting Devices :: Eclipse Hono&amp;trade; Vers.: 1.1">
<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="Connecting Devices :: Eclipse Hono&amp;trade; Vers.: 1.1" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.1/concepts/connecting-devices//" />
<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
</head>
<body class="" data-url="/hono/docs/1.1/concepts/connecting-devices/">
<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?1626052272"></script>
<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1626052272"></script>
<script type="text/javascript">
var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.1";
</script>
<script type="text/javascript" src="/hono/docs/js/search.js?1626052272"></script>
</div>
<div class="highlightable">
<ul class="topics">
<li data-nav-id="/hono/docs/1.1/concepts/" title="Concepts" class="dd-item
parent
">
<a href="/hono/docs/1.1/concepts/">
<i class="far fa-lightbulb"></i> Concepts
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/concepts/device-identity/" title="Device Identity" class="dd-item ">
<a href="/hono/docs/1.1/concepts/device-identity/">
Device Identity
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
<a href="/hono/docs/1.1/concepts/tenancy/">
Multi-Tenancy
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
<a href="/hono/docs/1.1/concepts/device-provisioning/">
Device Provisioning
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/connecting-devices/" title="Connecting Devices" class="dd-item active">
<a href="/hono/docs/1.1/concepts/connecting-devices/">
Connecting Devices
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
<a href="/hono/docs/1.1/concepts/device-notifications/">
Device Notifications
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/command-and-control/" title="Command &amp; Control" class="dd-item ">
<a href="/hono/docs/1.1/concepts/command-and-control/">
Command &amp; Control
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/resource-limits/" title="Resource limits" class="dd-item ">
<a href="/hono/docs/1.1/concepts/resource-limits/">
Resource limits
</a>
</li>
<li data-nav-id="/hono/docs/1.1/concepts/connection-events/" title="Connection Events" class="dd-item ">
<a href="/hono/docs/1.1/concepts/connection-events/">
Connection Events
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/" title="User Guide" class="dd-item
">
<a href="/hono/docs/1.1/user-guide/">
<i class="fas fa-book-reader"></i> User Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/user-guide/device-registry/" title="Device Registry" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/device-registry/">
Device Registry
</a>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/http-adapter/">
HTTP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/mqtt-adapter/">
MQTT Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/amqp-adapter/">
AMQP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/kura-adapter/">
Kura Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/sigfox-adapter/">
Sigfox Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.1/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
<a href="/hono/docs/1.1/user-guide/jmeter_load_tests/">
Load Tests with JMeter
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/" title="Admin Guide" class="dd-item
">
<a href="/hono/docs/1.1/admin-guide/">
<i class="fas fa-sliders-h"></i> Admin Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/common-config/">
Common Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/auth-server-config/">
Auth Server Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/device-registry-config/">
Device Registry Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/device-connection-config/">
Device Connection Service Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/http-adapter-config/">
HTTP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/amqp-adapter-config/">
AMQP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/mqtt-adapter-config/">
MQTT Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/kura-adapter-config/">
Kura Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/hono-client-configuration/">
Hono Client Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/amqp-network-config/">
AMQP 1.0 Messaging Network Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/secure_communication/">
Secure Communication
</a>
</li>
<li data-nav-id="/hono/docs/1.1/admin-guide/monitoring-tracing-config/" title="Monitoring &amp; Tracing" class="dd-item ">
<a href="/hono/docs/1.1/admin-guide/monitoring-tracing-config/">
Monitoring &amp; Tracing
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.1/dev-guide/" title="Developer Guide" class="dd-item
">
<a href="/hono/docs/1.1/dev-guide/">
<i class="fas fa-tools"></i> Developer Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
<a href="/hono/docs/1.1/dev-guide/building_hono/">
Building from Source
</a>
</li>
<li data-nav-id="/hono/docs/1.1/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
<a href="/hono/docs/1.1/dev-guide/java_client_consumer/">
Consuming Messages from Java
</a>
</li>
<li data-nav-id="/hono/docs/1.1/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
<a href="/hono/docs/1.1/dev-guide/custom_http_adapter/">
Implement a Custom Hono HTTP Protocol Adapter
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.1/api/" title="API" class="dd-item
">
<a href="/hono/docs/1.1/api/">
&nbsp;<i class='fas fa-plug'></i>&nbsp;API
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/telemetry/">
Telemetry API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/event/" title="Event API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/event/">
Event API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/command-and-control/" title="Command &amp; Control API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/command-and-control/">
Command &amp; Control API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/tenant/" title="Tenant API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/tenant/">
Tenant API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/device-connection/">
Device Connection API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/device-registration/">
Device Registration API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/credentials/" title="Credentials API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/credentials/">
Credentials API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/authentication/" title="Authentication API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/authentication/">
Authentication API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/management/" title="Device Registry Management API Specification" class="dd-item ">
<a href="/hono/docs/1.1/api/management/">
Device Registry Management API
</a>
</li>
<li data-nav-id="/hono/docs/1.1/api/metrics/" title="Metrics" class="dd-item ">
<a href="/hono/docs/1.1/api/metrics/">
Metrics
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.1/deployment/" title="Deployment" class="dd-item
">
<a href="/hono/docs/1.1/deployment/">
<i class="fas fa-shipping-fast"></i> Deployment
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
<a href="/hono/docs/1.1/deployment/helm-based-deployment/">
Helm based Deployment
</a>
</li>
<li data-nav-id="/hono/docs/1.1/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
<a href="/hono/docs/1.1/deployment/openshift/">
OpenShift / OKD
</a>
</li>
<li data-nav-id="/hono/docs/1.1/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
<a href="/hono/docs/1.1/deployment/create-kubernetes-cluster/">
Setting up a Kubernetes Cluster
</a>
</li>
<li data-nav-id="/hono/docs/1.1/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
<a href="/hono/docs/1.1/deployment/resource-limitation/">
Limiting Resource Usage
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.1/architecture/" title="Architecture" class="dd-item
">
<a href="/hono/docs/1.1/architecture/">
<i class="fas fa-landmark"></i> Architecture
</a>
<ul>
<li data-nav-id="/hono/docs/1.1/architecture/component-view/" title="Component View" class="dd-item ">
<a href="/hono/docs/1.1/architecture/component-view/">
Component View
</a>
</li>
<li data-nav-id="/hono/docs/1.1/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
<a href="/hono/docs/1.1/architecture/auth/">
Authentication/Authorization
</a>
</li>
</ul>
</li>
</ul>
<section id="shortcuts">
<h3></h3>
<ul>
<li>
<a class="padding" href="https://www.eclipse.org/hono/" title="Hono&#39;s Homepage"><i class='fas fa-home'></i> Hono Home</a>
</li>
<li>
<a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
</li>
</ul>
</section>
<section id="prefooter">
<hr/>
<ul>
<li>
<div id="select-box-wrapper">
<div id="select-box">
<a class="padding">
Version:&nbsp;
<div class="select-style">
<select id="select-language" onchange="location = this.value;">
<option id="stable" value="https://www.eclipse.org/hono/docs/concepts/connecting-devices/">stable (1.8)</option>
<option id="1.8" value="https://www.eclipse.org/hono/docs/1.8/concepts/connecting-devices/">1.8</option>
<option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/concepts/connecting-devices/">1.7</option>
<option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/concepts/connecting-devices/">1.6</option>
<option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/concepts/connecting-devices/">1.5</option>
<option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/concepts/connecting-devices/">1.4</option>
<option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/concepts/connecting-devices/">1.3</option>
<option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/concepts/connecting-devices/">1.2</option>
<option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/concepts/connecting-devices/" selected>1.1</option>
<option id="dev" value="https://www.eclipse.org/hono/docs/dev/concepts/connecting-devices/">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>&copy; 2021 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
<p>
Documentation built with
<a href="https://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="old-version-hint">
<p>This page refers to version <em>1.1</em>.
You might want to use the <a href="https://www.eclipse.org/hono/docs/">current stable</a> version.
</p>
</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/connecting-devices/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 id="toc-menu"><i class="fas fa-list-alt"></i></span>
<span class="links">
<a href='/hono/docs/1.1/'>Documentation</a> > <a href='/hono/docs/1.1/concepts/'>Concepts</a> > Connecting Devices
</span>
</div>
<div class="progress">
<div class="wrapper">
<nav id="TableOfContents">
<ul>
<li><a href="#connecting-to-a-protocol-adapter-directly">Connecting to a Protocol Adapter directly</a></li>
<li><a href="#connecting-via-a-device-gateway">Connecting via a Device Gateway</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="head-tags">
</div>
<div id="body-inner">
<h1>
Connecting Devices
</h1>
<p>One of the most important features of Eclipse Honoâ„¢ is to abstract away the specific communication protocols
used by devices. This page describes the different ways of how devices can be connected to Hono.</p>
<!-- more -->
<p>Before a device can connect to Hono and upload data or receive commands from downstream applications,
it needs to be <a href="/hono/docs/1.1/concepts/device-provisioning/">provisioned</a> to the system.
As part of device provisioning, the device is associated with the <em>tenant</em> that it belongs to and gets
assigned a logical identifier which is unique within the tenant.</p>
<p>Devices can be generally partitioned into two groups: devices which natively support the Internet Protocol
(IP) for communication and devices that don&rsquo;t.</p>
<p>Devices falling into the former group can connect to Hono directly using any of the IP based protocols supported
by Hono&rsquo;s protocol adapters. Devices from the latter group often use radio based or serial line communication protocols
that are limited to a local area and require a <em>gateway</em> in order to connect to one of Hono&rsquo;s protocol
adapters via IP.</p>
<p>The diagram below shows a device that supports the MQTT protocol and connects directly to Hono&rsquo;s MQTT protocol adapter
and another device that uses Bluetooth LE for connecting locally to a gateway which then connects to Hono&rsquo;s MQTT adapter.</p>
<figure>
<img src="device-types.svg"/>
</figure>
<h2 id="connecting-to-a-protocol-adapter-directly">Connecting to a Protocol Adapter directly</h2>
<p>The most straight forward scenario is a device connecting to one of Hono&rsquo;s protocol adapters directly via IP based
network infrastructure. For this to work, the device needs to use a communication protocols supported
by one of the adapters and needs to be able to use the resource endpoints exposed by that particular protocol adapter
as described in its <a href="/hono/docs/1.1/user-guide/">user guide</a>.</p>
<p>In this case the connected device&rsquo;s identity will be resolved as part of authentication during connection establishment.
For this to work, a set of credentials needs to be provisioned for the device which needs to be appropriate for
usage with one of the adapter&rsquo;s supported authentication schemes.</p>
<h2 id="connecting-via-a-device-gateway">Connecting via a Device Gateway</h2>
<p>In some cases, a device may not be able to directly connect to one of Hono&rsquo;s protocol adapters.
An example is a device that uses a serial bus or radio waves for local communication.
Such devices can be connected to a protocol adapter by means of a <em>device gateway</em> which acts on behalf
of the device(s) when communicating with Hono. A device gateway is often implemented as a (small) hardware box
close to the devices, running some gateway software which translates hence and forth between the device and one
of Hono&rsquo;s protocol adapters.</p>
<p>From the perspective of a protocol adapter, the gateway looks just like any other device having its own device
identity and credentials.</p>
<p>The following diagram illustrates how a gateway publishes data on behalf of a device that uses Bluetooth for local
communication with the gateway.</p>
<figure>
<img src="device-via-gateway-auth.svg"/>
</figure>
<ol>
<li>The device establishes a Bluetooth connection with the gateway.</li>
<li>The gateway sends an MQTT CONNECT packet to Hono&rsquo;s MQTT adapter to establish an MQTT connection.
The packet contains the gateway&rsquo;s credentials.</li>
<li>The MQTT adapter determines the tenant from the <em>username</em> contained in the CONNECT packet and retrieves
the hashed password that is on record for the gateway from the Credentials service.</li>
<li>The Credentials service returns the hashed password.</li>
<li>The MQTT adapter checks the password and accepts the connection request.</li>
<li>The device sends some sensor readings via Bluetooth to the gateway.</li>
<li>The gateway forwards the sensor data in an MQTT PUBLISH packet to the MQTT adapter.
The topic name contains the identifier of the device that the gateway acts on behalf of.</li>
<li>The MQTT adapter invokes the Device Registration service&rsquo;s <em>assert Device Registration</em> operation to
check if the gateway is authorized to act on behalf of the device.</li>
<li>The Device Registration service confirms the gateway&rsquo;s authorization.</li>
<li>The MQTT adapter accepts the sensor data from the gateway and forwards it downstream.</li>
</ol>
<p>Note that the device itself is not authenticated by the MQTT adapter in this case. The responsibility
for establishing and verifying the device identity lies with the gateway in this setup.
It is therefore not necessary to provision credentials for the devices to Hono.</p>
<p>The <a href="/hono/docs/1.1/api/management/">Device Registry Management API</a>&rsquo;s <code>/devices</code> resource can be used to
register gateways and devices. The gateways that are authorized to act on behalf of a device can be set by means
of the device&rsquo;s <em>via</em> and <em>viaGroups</em> properties. This is useful in cases where a device may <em>roam</em> among multiple gateways.</p>
<p>When sending commands to a device, Hono needs to determine which of the authorized gateways should be used to forward
the command message to the device. For this purpose, Hono&rsquo;s protocol adapters keep track of the <em>last known gateway</em>
which has acted on behalf of each device by means of the <a href="/hono/docs/1.1/api/device-connection/">Device Connection API</a>.</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?1626052272"></script>
<script src="/hono/docs/js/perfect-scrollbar.min.js?1626052272"></script>
<script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1626052272"></script>
<script src="/hono/docs/js/jquery.sticky.js?1626052272"></script>
<script src="/hono/docs/js/featherlight.min.js?1626052272"></script>
<script src="/hono/docs/js/highlight.pack.js?1626052272"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/hono/docs/js/modernizr.custom-3.6.0.js?1626052272"></script>
<script src="/hono/docs/js/learn.js?1626052272"></script>
<script src="/hono/docs/js/hugo-learn.js?1626052272"></script>
<link href="/hono/docs/mermaid/mermaid.css?1626052272" rel="stylesheet" />
<script src="/hono/docs/mermaid/mermaid.js?1626052272"></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>