Polymer elements to establish a MQTT connection to a MQTT broker.
bower install --save mqtt-elements
<link rel="import" href="../mqtt-elements/mqtt-elements.html">
<mqtt-connection auto url="ws://HOST:PORT">
<mqtt-subscription
topic="foo/bar"
number-of-messages="Infinity"
last-message="{{lastMessage}}"
messages="{{messages}}"
subscribed="{{subscribed}}"></mqtt-subscription>
<mqtt-publish
auto
retained
topic="foo/bar"
payload="Hello world!"
qos="1"></mqtt-publish>
</mqtt-connection>
<mqtt-connection url="ws://HOST:PORT"></mqtt-connection>
The method <mqtt-connection>#connect
has to be called manually to establish the MQTT connection to the MQTT broker.
Set <mqtt-connection>#auto
flag to make the MQTT connection as soon as possible.
<mqtt-connection
url="ws://HOST:PORT"
options='{"username": "USERNAME", "password": "PASSWORD"}'
with-credentials
auto>
</mqtt-connection>
OR
<mqtt-connection
url="ws://HOST:PORT"
username="USERNAME"
password="PASSWORD"
with-credentials
auto>
</mqtt-connection>
The flag <mqtt-connection>#withCredentials
indecates the MQTT connection to wait until a username and password for
the connection is supplied.
The following example will publish on the topic »mqtt/elements« with the payload »Publishing via a HTML element«.
Every time when <mqtt-publish>#payload
changes the element will publish a new MQTT message to the topic »mqtt/elements«.
If the <mqtt-publish>#auto
flag is not set - <mqtt-publish>#publish
has to be called to publish a MQTT message to the topic
<mqtt-connection
url="ws://HOST:PORT"
auto>
<mqtt-publish topic="mqtt/elements" payload="Publishing via a HTML element" auto></mqtt-publish>
</mqtt-connection>
A <mqtt-connection>
element can hold any number of <mqtt-publish>
elements to publish to different topics.
<mqtt-connection
url="ws://HOST:PORT"
auto>
<mqtt-publish topic="foo/bar" payload="this is easy" auto></mqtt-publish>
<mqtt-publish topic="client/status" payload="online" qos="1" auto></mqtt-publish>
<mqtt-publish topic="client/location" payload="{'foo': 'bar'}" auto></mqtt-publish>
</mqtt-connection>
To publish a message with the RETAINED flag set to true add the <mqtt-publish>#retained
flag.
<mqtt-connection
url="ws://HOST:PORT"
auto>
<mqtt-publish topic="foo/bar" payload="this is easy" retained auto></mqtt-publish>
</mqtt-connection>
<mqtt-connection
url="ws://HOST:PORT"
auto>
<mqtt-subscription topic="foo/bar"></mqtt-subscription>
</mqtt-connection>
The last message to the topic will be save in <mqtt-subscription>#lastMessage
. The <mqtt-subscription>
stores the
last n
messages within the <mqtt-subscription>#messages
array. Set <mqtt-subscription>#numberOfMessages
to the
number of messages that should be saved in <mqtt-subscription>#messages
. To save every message received on the topic
set <mqtt-subscription>#numberOfMessages
to Infinity
.
mkdir mqtt-wrapper && cd mqtt-wrapper
git clone https://github.com/mqttjs/mqtt-elements.git
cd mqtt-elements
cp debug.bowerrc .bowerrc
npm install
bower install
grunt serve
browserify -r ./node_modules/mqtt/lib/store.js:Store -r mqtt -r MQEmitter > dist/mqtt-elements-bundle.js