blob: 3ecc4ff5d2211fa11cc4156d92bc8c71c64df289 [file] [log] [blame]
<!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 Mon Dec 18 11:25:21 EST 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MqttDevice (Apache Edgent (incubating) v1.2.0 API)</title>
<meta name="date" content="2017-12-18">
<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="MqttDevice (Apache Edgent (incubating) v1.2.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MqttDevice.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>Prev&nbsp;Class</li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/edgent/connectors/mqtt/iot/MqttDevice.html" target="_top">Frames</a></li>
<li><a href="MqttDevice.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>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.edgent.connectors.mqtt.iot</div>
<h2 title="Class MqttDevice" class="title">Class MqttDevice</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.edgent.connectors.mqtt.iot.MqttDevice</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a>, <a href="../../../../../../org/apache/edgent/topology/TopologyElement.html" title="interface in org.apache.edgent.topology">TopologyElement</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">MqttDevice</span>
extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></pre>
<div class="block">An MQTT based Edgent <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot"><code>IotDevice</code></a> connector.
<p>
The MQTT <code>IotDevice</code> is an abstraction on top of
the <a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttStreams.html" title="class in org.apache.edgent.connectors.mqtt"><code>MqttStreams</code></a> connector.
<p>
The connector doesn't presume a particular pattern for
Device MQTT "event" and "command" topics though default
patterns are provided.
<p>
The MQTT message content for device events and device commands must be JSON.
The contents of the JSON are under the control of the collaborating MQTT clients.
Typically a device to defines its event and command schemas
and the other clients to adapt accordingly.
See <a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#commands-java.lang.String...-"><code>commands(String...)</code></a> and <a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#events-org.apache.edgent.topology.TStream-java.lang.String-int-"><code>events()</code></a>
for a description of how MQTT messages are converted to and from stream tuples.
<p>
Connector configuration Properties fall into two categories:
<ul>
<li>MQTT Device abstraction properties</li>
<li>Base MQTT connector properties - see <a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html#fromProperties-java.util.Properties-"><code>MqttConfig.fromProperties(Properties)</code></a>
</ul>
<h3>Device properties</h3>
<ul>
<li>mqttDevice.id - Required. An identifier that uniquely identifies
the device in the device event and device command MQTT topic namespaces.
</li>
<li>mqttDevice.topic.prefix - A optional prefix that by default is used when
composing device event and command MQTT topics, and the client's MQTT
clientId. The default is no prefix.</li>
<li>mqttDevice.event.topic.pattern - Optional. The topic pattern used
for MQTT device event topics.
Defaults to <code>{mqttDevice.topic.prefix}id/{mqttDevice.id}/evt/{EVENTID}/fmt/json</code>
The pattern must include {EVENTID} and must end with "/fmt/json".
</li>
<li>mqttDevice.command.topic.pattern - Optional. The topic pattern used
for MQTT device command topics.
Defaults to <code>{mqttDevice.topic.prefix}id/{mqttDevice.id}/cmd/{COMMAND}/fmt/json</code>
The pattern must include {COMMAND} and must end with "/fmt/json".
</li>
<li>mqttDevice.command.qos - An optional MQTT QoS value for commands. Defaults to 0.</li>
<li>mqttDevice.events.retain - Optional MQTT "retain" behavior for published events. Defaults to false.</li>
<li>mqttDevice.mqtt.clientId - Optional value to use for the MQTT clientId.
Defaults to {mqttDevice.topic.prefix}id/{mqttDevice.id}.</li>
</ul>
Sample use:
<pre><code>
// assuming a properties file containing at least:
// mqttDevice.id=012345678
// mqtt.serverURLs=tcp://myMqttBrokerHost:1883
String propsPath = &lt;path to properties file&gt;;
Properties properties = new Properties();
properties.load(Files.newBufferedReader(new File(propsPath).toPath()));
Topology t = new DirectProvider();
MqttDevice mqttDevice = new MqttDevice(t, properties);
// publish JSON "status" device event tuples every hour
TStream&lt;JsonObject&gt; myStatusEvents = t.poll(myGetStatusAsJson(), 1, TimeUnit.HOURS);
mqttDevice.events(myStatusEvents, "status", QoS.FIRE_AND_FORGET);
// handle a device command. In this example the payload is expected
// to be JSON and have a "value" property containing the new threshold.
mqttDevice.command("setSensorThreshold")
.sink(json -&gt; setSensorThreshold(json.get(CMD_PAYLOAD).getAsJsonObject().get("value").getAsString());
</code></pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.edgent.connectors.iot.IotDevice">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.edgent.connectors.iot.<a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></h3>
<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_DEVICE">CMD_DEVICE</a>, <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_FORMAT">CMD_FORMAT</a>, <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_ID">CMD_ID</a>, <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_PAYLOAD">CMD_PAYLOAD</a>, <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_TS">CMD_TS</a>, <a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#RESERVED_ID_PREFIX">RESERVED_ID_PREFIX</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#MqttDevice-org.apache.edgent.topology.Topology-java.util.Properties-">MqttDevice</a></span>(<a href="../../../../../../org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology">Topology</a>&nbsp;topology,
<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;properties)</code>
<div class="block">Create an MqttDevice connector.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#MqttDevice-org.apache.edgent.topology.Topology-java.util.Properties-org.apache.edgent.connectors.mqtt.MqttConfig-">MqttDevice</a></span>(<a href="../../../../../../org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology">Topology</a>&nbsp;topology,
<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;properties,
<a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html" title="class in org.apache.edgent.connectors.mqtt">MqttConfig</a>&nbsp;mqttConfig)</code>
<div class="block">Create an MqttDevice connector.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;com.google.gson.JsonObject&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#commands-java.lang.String...-">commands</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;commands)</code>
<div class="block">Create a stream of device commands as JSON objects.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#commandTopic-java.lang.String-">commandTopic</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;command)</code>
<div class="block">Get the MQTT topic for a command.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/edgent/topology/TSink.html" title="interface in org.apache.edgent.topology">TSink</a>&lt;com.google.gson.JsonObject&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#events-org.apache.edgent.topology.TStream-org.apache.edgent.function.Function-org.apache.edgent.function.UnaryOperator-org.apache.edgent.function.Function-">events</a></span>(<a href="../../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;com.google.gson.JsonObject&gt;&nbsp;stream,
<a href="../../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;com.google.gson.JsonObject,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;eventId,
<a href="../../../../../../org/apache/edgent/function/UnaryOperator.html" title="interface in org.apache.edgent.function">UnaryOperator</a>&lt;com.google.gson.JsonObject&gt;&nbsp;payload,
<a href="../../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;com.google.gson.JsonObject,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;qos)</code>
<div class="block">Publish a stream's tuples as device events.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/edgent/topology/TSink.html" title="interface in org.apache.edgent.topology">TSink</a>&lt;com.google.gson.JsonObject&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#events-org.apache.edgent.topology.TStream-java.lang.String-int-">events</a></span>(<a href="../../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;com.google.gson.JsonObject&gt;&nbsp;stream,
<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;eventId,
int&nbsp;qos)</code>
<div class="block">Publish a stream's tuples as device events.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#eventTopic-java.lang.String-">eventTopic</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;eventId)</code>
<div class="block">Get the MQTT topic for an device event.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#getDeviceId--">getDeviceId</a></span>()</code>
<div class="block">Get the device's unique opaque device identifier.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#getDeviceType--">getDeviceType</a></span>()</code>
<div class="block">Get the device's opaque device type identifier.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html" title="class in org.apache.edgent.connectors.mqtt">MqttConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#getMqttConfig--">getMqttConfig</a></span>()</code>
<div class="block">Get the device's <a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html" title="class in org.apache.edgent.connectors.mqtt"><code>MqttConfig</code></a></div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology">Topology</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/edgent/connectors/mqtt/iot/MqttDevice.html#topology--">topology</a></span>()</code>
<div class="block">Topology this element is contained in.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="MqttDevice-org.apache.edgent.topology.Topology-java.util.Properties-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MqttDevice</h4>
<pre>public&nbsp;MqttDevice(<a href="../../../../../../org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology">Topology</a>&nbsp;topology,
<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;properties)</pre>
<div class="block">Create an MqttDevice connector.
<p>
All configuration information comes from <code>properties</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>topology</code> - topology to add the connector to.</dd>
<dd><code>properties</code> - connector properties.</dd>
</dl>
</li>
</ul>
<a name="MqttDevice-org.apache.edgent.topology.Topology-java.util.Properties-org.apache.edgent.connectors.mqtt.MqttConfig-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MqttDevice</h4>
<pre>public&nbsp;MqttDevice(<a href="../../../../../../org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology">Topology</a>&nbsp;topology,
<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;properties,
<a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html" title="class in org.apache.edgent.connectors.mqtt">MqttConfig</a>&nbsp;mqttConfig)</pre>
<div class="block">Create an MqttDevice connector.
<p>
Uses <code>mattConfig</code> for the base MQTT connector configuration
and uses <code>properties</code> only for MQTT Device properties.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>topology</code> - topology to add the connector to.</dd>
<dd><code>properties</code> - connector properties. Properties beyond those
noted in the Device properties section above are ignored.</dd>
<dd><code>mqttConfig</code> - base MQTT configuration. may be null.</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="eventTopic-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>eventTopic</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;eventTopic(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;eventId)</pre>
<div class="block">Get the MQTT topic for an device event.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>eventId</code> - the event id.
if null, returns a topic filter for all of the device's events.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the topic</dd>
</dl>
</li>
</ul>
<a name="commandTopic-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>commandTopic</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;commandTopic(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;command)</pre>
<div class="block">Get the MQTT topic for a command.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>command</code> - the command id.
if null, returns a topic filter for all of the device's commands.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the topic</dd>
</dl>
</li>
</ul>
<a name="getMqttConfig--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMqttConfig</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html" title="class in org.apache.edgent.connectors.mqtt">MqttConfig</a>&nbsp;getMqttConfig()</pre>
<div class="block">Get the device's <a href="../../../../../../org/apache/edgent/connectors/mqtt/MqttConfig.html" title="class in org.apache.edgent.connectors.mqtt"><code>MqttConfig</code></a></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the config</dd>
</dl>
</li>
</ul>
<a name="events-org.apache.edgent.topology.TStream-org.apache.edgent.function.Function-org.apache.edgent.function.UnaryOperator-org.apache.edgent.function.Function-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>events</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/edgent/topology/TSink.html" title="interface in org.apache.edgent.topology">TSink</a>&lt;com.google.gson.JsonObject&gt;&nbsp;events(<a href="../../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;com.google.gson.JsonObject&gt;&nbsp;stream,
<a href="../../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;com.google.gson.JsonObject,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;eventId,
<a href="../../../../../../org/apache/edgent/function/UnaryOperator.html" title="interface in org.apache.edgent.function">UnaryOperator</a>&lt;com.google.gson.JsonObject&gt;&nbsp;payload,
<a href="../../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;com.google.gson.JsonObject,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;qos)</pre>
<div class="block">Publish a stream's tuples as device events.
<p>
Each tuple is published as a device event with the supplied functions
providing the event identifier, payload and QoS. The event identifier and
QoS can be generated based upon the tuple.
<p>The event is published to the configured MQTT <code>mqttDevice.event.topic.pattern</code>,
as described in the above class documentation, substituting the value returned
by the <code>eventId</code> function for "{EVENTID}" in the pattern.
The MQTT message's payload is the JSON representation
of the JsonObject stream tuple.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#events-org.apache.edgent.topology.TStream-org.apache.edgent.function.Function-org.apache.edgent.function.UnaryOperator-org.apache.edgent.function.Function-">events</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - Stream to be published.</dd>
<dd><code>eventId</code> - function to supply the event identifier.</dd>
<dd><code>payload</code> - function to supply the event's payload.</dd>
<dd><code>qos</code> - function to supply the event's delivery Quality of Service.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>TSink sink element representing termination of this stream.</dd>
</dl>
</li>
</ul>
<a name="events-org.apache.edgent.topology.TStream-java.lang.String-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>events</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/edgent/topology/TSink.html" title="interface in org.apache.edgent.topology">TSink</a>&lt;com.google.gson.JsonObject&gt;&nbsp;events(<a href="../../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;com.google.gson.JsonObject&gt;&nbsp;stream,
<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;eventId,
int&nbsp;qos)</pre>
<div class="block">Publish a stream's tuples as device events.
<p>
Each tuple is published as a device event with fixed event identifier and
QoS.
<p>The event is published to the configured MQTT <code>mqttDevice.event.topic.pattern</code>,
as described in the above class documentation, substituting the <code>eventId</code> for
"{EVENTID}" in the pattern.
The MQTT message's payload is the JSON representation
of the JsonObject stream tuple.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#events-org.apache.edgent.topology.TStream-java.lang.String-int-">events</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - Stream to be published.</dd>
<dd><code>eventId</code> - Event identifier.</dd>
<dd><code>qos</code> - Event's delivery Quality of Service.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>TSink sink element representing termination of this stream.</dd>
</dl>
</li>
</ul>
<a name="commands-java.lang.String...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>commands</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;com.google.gson.JsonObject&gt;&nbsp;commands(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;commands)</pre>
<div class="block">Create a stream of device commands as JSON objects.
Each command sent to the device matching <code>commands</code> will result in a tuple
on the stream. The JSON object has these keys:
<UL>
<LI><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_DEVICE"><code>device</code></a> - Command's opaque target device's id String.
<LI><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_ID"><code>command</code></a> - Command identifier as a String</LI>
<LI><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_TS"><code>tsms</code></a> - Timestamp of the command in milliseconds since the 1970/1/1 epoch.</LI>
<LI><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_FORMAT"><code>format</code></a> - Format of the command as a String</LI>
<LI><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#CMD_PAYLOAD"><code>payload</code></a> - Payload of the command
<UL>
<LI>If <code>format</code> is <code>json</code> then <code>payload</code> is JSON</LI>
<LI>Otherwise <code>payload</code> is String</LI>
</UL>
</LI>
</UL>
<p>
Subscribes to the configured MQTT <code>mqttDevice.command.topic.pattern</code>
as described in the above class documentation.
The received MQTT message's payload is required to be JSON.
The message's JSON payload is converted to a JsonObject and
set as the <code>payload</code> key's value in the stream tuple JsonObject.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#commands-java.lang.String...-">commands</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>commands</code> - Command identifiers to include. If no command identifiers are provided then the
stream will contain all of this IotDevice's device commands.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Stream containing device commands.</dd>
</dl>
</li>
</ul>
<a name="topology--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>topology</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology">Topology</a>&nbsp;topology()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/edgent/topology/TopologyElement.html#topology--">TopologyElement</a></code></span></div>
<div class="block">Topology this element is contained in.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/edgent/topology/TopologyElement.html#topology--">topology</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/edgent/topology/TopologyElement.html" title="interface in org.apache.edgent.topology">TopologyElement</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Topology this element is contained in.</dd>
</dl>
</li>
</ul>
<a name="getDeviceType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDeviceType</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getDeviceType()</pre>
<div class="block">Get the device's opaque device type identifier.
<p>
This connector does not support the notion of a device-type
as part of its device id model. An empty string is returned.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#getDeviceType--">getDeviceType</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the device's type</dd>
</dl>
</li>
</ul>
<a name="getDeviceId--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getDeviceId</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getDeviceId()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#getDeviceId--">IotDevice</a></code></span></div>
<div class="block">Get the device's unique opaque device identifier.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html#getDeviceId--">getDeviceId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/edgent/connectors/iot/IotDevice.html" title="interface in org.apache.edgent.connectors.iot">IotDevice</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the device's id</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= 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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MqttDevice.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>Prev&nbsp;Class</li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/edgent/connectors/mqtt/iot/MqttDevice.html" target="_top">Frames</a></li>
<li><a href="MqttDevice.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>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2016&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>