<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_112) on Sun Feb 26 17:08:11 EST 2017 -->
<title>org.apache.edgent.connectors.iot (Edgent v1.1.0)</title>
<meta name="date" content="2017-02-26">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="org.apache.edgent.connectors.iot (Edgent v1.1.0)";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/edgent/connectors/http/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../../org/apache/edgent/connectors/iotp/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/edgent/connectors/iot/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.edgent.connectors.iot</h1>
<div class="docSummary">
<div class="block">Edgent IoT device and IoT Gateway device connector API to an IoT message hub.</div>
</div>
<p>See:&nbsp;<a href="#package.description">Description</a></p>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/edgent/connectors/iot/Commands.html" title="interface in org.apache.edgent.connectors.iot">Commands</a></td>
<td class="colLast">
<div class="block">Device command identifiers used by Edgent.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/edgent/connectors/iot/Events.html" title="interface in org.apache.edgent.connectors.iot">Events</a></td>
<td class="colLast">
<div class="block">Device event identifiers used by Edgent.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></td>
<td class="colLast">
<div class="block">A generic IoT device IoT hub connector.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/edgent/connectors/iot/IotGateway.html" title="interface in org.apache.edgent.connectors.iot">IotGateway</a></td>
<td class="colLast">
<div class="block">A generic IoT gateway device IoT hub connector.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/edgent/connectors/iot/QoS.html" title="interface in org.apache.edgent.connectors.iot">QoS</a></td>
<td class="colLast">
<div class="block">Device event quality of service levels.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/edgent/connectors/iot/HeartBeat.html" title="class in org.apache.edgent.connectors.iot">HeartBeat</a></td>
<td class="colLast">
<div class="block">An IoT device heartbeat event generator.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package.description">
<!--   -->
</a>
<h2 title="Package org.apache.edgent.connectors.iot Description">Package org.apache.edgent.connectors.iot Description</h2>
<div class="block">Edgent IoT device and IoT Gateway device connector API to an IoT message hub.
 <P>
 An IoT environment consists of an enterprise IoT message hub and devices and other clients
 connected to it.
 Each IoT device has an identity in the hub. The form of a device's identity is the domain
 of an IoT hub implementation.
 How a device becomes registered to an IoT hub and generally what device management capabilities
 exist and how a device is managed is beyond the scope of the 
 "analytic pipelines" focused Edgent APIs.
 </P>
 <P>
 An IoT device can publish device events to and receive device commands from an IoT hub.
 An IoT gateway device is an IoT device that is also conduit for a collection of IoT devices 
 that lack direct connection to the enterprise IoT hub.
 A gateway can publish events on behalf of its connected devices and 
 receive commands from the hub targeted to them.
 An Edgent IoT hub connector bridges the gap between this generic model and and
 particular IoT hub implementation's underlying protocols.
 </P>
 <P>
 More specifically, the generic IoT device model consists of:
 <UL>
 <LI>
 <B>Device events</B> - A device <a href="../../../../../org/apache/edgent/connectors/iot/IotDevice.html#events-org.apache.edgent.topology.TStream-java.lang.String-int-"><code>publishes</code></a> <em>events</em> as messages to a message hub to allow
 analysis or processing by back-end systems, etc.. A device event consists of:
 <UL>
 <LI>  <B>event identifier</B> - Application specified event type. E.g. <code>engineAlert</code></LI>
 <LI>  <B>event payload</B> - Application specified event payload. E.g. the engine alert code and sensor reading.</LI>
 <LI>  <B>QoS</B> - <a href="../../../../../org/apache/edgent/connectors/iot/QoS.html" title="interface in org.apache.edgent.connectors.iot"><code>Quality of service</code></a> for message delivery. Using MQTT QoS definitions.</LI>
 </UL>
 Device events can be used to send any data including abnormal events
 (e.g. a fault condition on an engine), periodic or aggregate sensor readings,
 device user input etc.
 <BR>
 The format for the payload is JSON, support for other payload formats may be added
 in the future.
 </LI>
 <LI>
 <B>Device Commands</B> - A device <a href="../../../../../org/apache/edgent/connectors/iot/IotDevice.html#commands-java.lang.String...-"><code>subscribes</code></a> to <em>commands</em> from back-end systems
 through the message hub. A device command consists of:
 <UL>
 <LI>  <B>command identifier</B> - Application specified command type. E.g. <code>statusMessage</code></LI>
 <LI>  <B>command payload</B> - Application specified command payload. E.g. the severity and
 text of the message to display.</LI>
 </UL>
 Device commands can be used to perform any action on the device including displaying information,
 controlling the device (e.g. reduce maximum engine revolutions), controlling the Edgent application, etc.
 <BR>
 The format for the payload is typically JSON, though other formats may be used.
 </LI>
 </UL>
 <P>
 Device event and command identifiers starting with "<a href="../../../../../org/apache/edgent/connectors/iot/IotDevice.html#RESERVED_ID_PREFIX"><code>edgent</code></a>"
 are reserved for use by Edgent.
 </P></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><a href="http://edgent.incubator.apache.org">Apache Edgent (incubating)</a></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/edgent/connectors/http/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../../org/apache/edgent/connectors/iotp/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/edgent/connectors/iot/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2017 The Apache Software Foundation. All Rights Reserved - 4744f56-20170226-1707</small></p>
</body>
</html>
