<blocksapp="Snap! 7, https://snap.berkeley.edu"version="2"><palette><categoryname="MQTT"color="143,0,100,1"/></palette><block-definitions="$cloudOutline MQTT connect to %'broker' $nl $options-1-192-192-192 %'options'"type="command"category="MQTT"><commentx="0"y="0"w="416.6666666666666"collapsed="false">Connect to a broker

The options are not required but can be filled if needed

1. username (some brokers need this)
2. password (some brokers need this)
3. keepalive (default time is 60 seconds but some brokers need a shorter time)
4. connection callback (ringed set of scripts to be run when connection is made or remade)

Note: The connection callback doesn''t have to be the 4th option - it just has to be the last (or only) option.

ADVANCED: The brokers offered in the menu are accessed using default ports and basepaths (if needed). If accessing other brokers, the complete urls should be formed like this:

siteURL:port/basepath 
e.g mqtt.eclipseprojects.io:443/mqtt


</comment><header></header><code></code><translations></translations><inputs><inputtype="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
broker.xmqtt.net</options></input><inputtype="%mult%s"></input></inputs><script><blocks="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><blocks="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><blocks="doIf"><blocks="reportNot"><blocks="reportJoinWords"><blockvar="options"/></block></block><script><blocks="doSetVar"><l>options</l><blocks="reportNewList"><list></list></block></block></script></block><blocks="doDeclareVariables"><list><l>connection status</l><l>callback</l></list></block><blocks="doSetVar"><l>connection status</l><l>connecting</l></block><blocks="doSetVar"><l>callback</l><l></l></block><blocks="doIf"><blocks="reportIsA"><blocks="reportListItem"><l><option>last</option></l><blockvar="options"/></block><l><option>command</option></l></block><script><blocks="doSetVar"><l>callback</l><blocks="reportListItem"><l><option>last</option></l><blockvar="options"/></block></block><blocks="doDeleteFromList"><l><option>last</option></l><blockvar="options"/></block></script></block><blocks="doSetVar"><l>options</l><blocks="reportListAttribute"><l><option>json</option></l><blocks="reportNewList"><list><blocks="reportNewList"><list><l>username</l><blocks="reportListItem"><l>1</l><blockvar="options"/></block></list></block><blocks="reportNewList"><list><l>password</l><blocks="reportListItem"><l>2</l><blockvar="options"/></block></list></block><blocks="reportNewList"><list><l>keepalive</l><blocks="reportListItem"><l>3</l><blockvar="options"/></block></list></block></list></block></block></block><blocks="doApplyExtension"><l>mqt_connect(broker,callback,options)</l><list><blockvar="broker"/><blockvar="callback"/><blockvar="options"/></list></block><blocks="doWaitUntil"><blocks="reportNot"><blocks="reportEquals"><blockvar="connection status"/><l>connecting</l></block></block></block><blocks="doIf"><blocks="reportNot"><blocks="reportEquals"><blockvar="connection status"/><l>connected</l></block></block><script><blocks="doApplyExtension"><l>err_error(msg)</l><list><blockvar="connection status"/></list></block></script></block></script></block-definition><block-definitions="$cloudOutline MQTT publish to %'broker' topic %'topic' payload %'payload' $nl $options-1-192-192-192 %'options'"type="command"category="MQTT"><commentx="0"y="0"w="200"collapsed="false">Publish a message to an MQTT broker

The options are not required but can be filled if needed

1. qos (quality of service 0,1 or 2)
2. retain flag (boolean)
</comment><header></header><code></code><translations></translations><inputs><inputtype="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquit