<snapdata remixID="13488551"><project name="Mqttproj" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Mqttproj"><notes></notes><palette><category name="MQTT" color="143,0,100,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="$cloudOutline MQTT unsubscribe from %&apos;broker&apos; topic %&apos;topic&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_unsub(broker,topic)</l><list><block var="broker"/><block var="topic"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT disconnect from %&apos;broker&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">all<options>all&#xD;broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_disconnect(broker)</l><list><block var="broker"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT response %&apos;broker&apos; topic %&apos;topic&apos; $nl reply %&apos;reply&apos; $nl $options-1-192-192-192 %&apos;$options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="292.22207031250036" collapsed="false">1. Subscribe buffer mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true, subscribed, received payload returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;2.  Published buffer mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name/#</input><input type="%repRing"></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>callbackTopic</l><l>error</l></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="topic"/><block s="reifyScript"><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><l>/@</l><block var="received topic"/></list></block><l>0</l></list></block><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list><block var="received payload"/><block var="received topic"/></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list></list></block></block></script><list></list></block><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doSetVar"><l>callbackTopic</l><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="received topic"/><l>@</l></block></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="callbackTopic"/><block var="resp"/><list><l></l><l></l><block s="reportListItem"><l>2</l><block var="$options"/></block></list></custom-block></script><list></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><block s="reportListItem"><l>1</l><block var="$options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl on response run %&apos;callback&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="243" collapsed="false">The options are not required but can be filled if needed.&#xD;&#xD;1. Subscribe buffer mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true, subscribed, received payload returned as single column list of values in the range of 0 to 255..  &#xD;&#xD;2. Inform response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;3.  Published buffer mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%cmdRing"></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>error</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>2</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list><block var="received payload"/><block var="received topic"/></list></block></script><list></list></block><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list></list></block></script><list></list></block><block var="error"/></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><block s="reportListItem"><l>1</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l></l><l></l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT example response reporter payload %&apos;payload&apos; topic %&apos;topic&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="90" collapsed="false">This is a simple echo example.&#xD;Topic can be used to filter the response.</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">hello</input><input type="%txt">name</input></inputs><script><block s="doReport"><block var="payload"/></block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="343" collapsed="false">The response topic should be a unique value for each call e.g. use timer&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1.  Timeout value - default is 3 seconds&#xD;&#xD;2. Subscribe buffer mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true, subscribed, received payload returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;3.  Inform response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;4.  Published buffer mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>semaphore</l><l>timer0</l><l>timeout</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>semaphore</l><l>0</l></block><block s="doSetVar"><l>timeout</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>number</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><l>3</l></block></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>3</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>3</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><block s="doSetVar"><l>resp</l><l>timeout</l></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block var="received payload"/></block><block s="doSetVar"><l>semaphore</l><l>1</l></block></script><list><l>received payload</l><l>received topic</l></list></block><list><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l></l><l></l><block s="reportListItem"><l>4</l><block var="options"/></block></list></custom-block><block s="doSetVar"><l>timer0</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doWaitUntil"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="semaphore"/><l>1</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportDifference"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="timer0"/></block><block s="reportVariadicProduct"><list><block var="timeout"/><l>1000</l></list></block></list></block></list></block></block><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block></custom-block><block s="doReport"><block var="resp"/></block></script></block-definition><block-definition s="MQTT Extension Examples" type="command" category="MQTT"><comment x="0" y="0" w="277" collapsed="false">Open (edit) this block to look at examples how to use the MQTT Extension blocks&#xD;&#xD;Background documentation:&#xD;https://github.com/pixavier/mqtt4snap&#xD;&#xD;Last source code version (mqtt.xml and mqttExtension.js):&#xD;https://gitlab.com/cymplecy/Snap/-/tree/master/libraries</comment><header></header><code></code><translations></translations><inputs></inputs><scripts><script x="24.333333333333485" y="371.8666666666658"><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><l>hello</l><list><l></l></list></custom-block></script><script x="22.333333333333485" y="271.19999999999976"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script><comment x="525.9999999999995" y="140.2" w="191" collapsed="false">To execute the examples, single click on blocks, following the corresponding steps.</comment><script x="28" y="1315.0333333333292"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script><script x="24.333333333333485" y="1013.2000000000016"><custom-block s="$cloudOutline MQTT response %s topic %s %br reply %repRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name/#</l><block s="reifyReporter"><autolambda><custom-block s="$cloudOutline MQTT example response reporter payload %mlt topic %txt"><block var="payload"/><block var="topic"/></custom-block></autolambda><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script><script x="28" y="498.6999999999993"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name1</l><block s="reifyScript"><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name2</l><block var="payload"/><list><l></l></list></custom-block></script><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script><script x="30" y="633.0333333333344"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><list><l></l><l></l><block s="reportBoolean"><l><bool>false</bool></l></block></list></custom-block><l>2</l></block></script><comment x="487.99999999999955" y="1311.6999999999966" w="224" collapsed="false">Step 2 bis: Send a request (timer acts as idCall) and do not wait for the answer</comment><comment x="487.99999999999955" y="1013.7000000000012" w="220" collapsed="false">Step 1: Activate the responder</comment><comment x="483.66666666666697" y="805.3666666666666" w="224" collapsed="false">Step 2 bis: Send a request and do not wait for the answer</comment><comment x="487" y="495.6999999999983" w="220" collapsed="false">Step 1: Activate the responder as a simple subscription</comment><comment x="484.99999999999955" y="374.1999999999991" w="222" collapsed="false">Step 2: Publish a message</comment><comment x="485.99999999999955" y="293.1999999999993" w="222" collapsed="false">Step 1: Subscribe to a topic</comment><comment x="482.99999999999955" y="215.2" w="223" collapsed="false">Step 0: Connect to the broker</comment><comment x="485" y="635.6999999999996" w="220" collapsed="false">Step 2: Send a request and wait the answer.</comment><script x="24.333333333333485" y="209.2"><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list><l></l></list></custom-block></script><comment x="24.333333333333485" y="152.2000000000001" w="239.99999999999997" collapsed="false">PubSub Hello World!</comment><script x="26.333333333333485" y="1139.1999999999978"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><list><l></l></list></custom-block><l>2</l></block></script><comment x="486.99999999999955" y="1138.6999999999982" w="219.00000000000023" collapsed="false">Step 2: Send a request (timer acts as idCall) and wait for the answer</comment><script x="27" y="803.0333333333335"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l></l><block s="reportBoolean"><l><bool>false</bool></l></block></list></custom-block></script><comment x="29" y="736.6999999999998" w="372.0000000000004" collapsed="false">Asynchronous client-server Hello World! with static response topic (name2)</comment><comment x="25.333333333333485" y="935.2000000000012" w="356.99999999999994" collapsed="false">Synchronous client-server Hello World! with dynamic response topic (timer)</comment><comment x="28" y="431.36666666666673" w="361.99999999999994" collapsed="false">Synchronous client-server Hello World! with static response topic (name2)</comment><comment x="27" y="1243.6999999999966" w="352.0000000000003" collapsed="false">Asynchronous client-server Hello World! with dynamic response topic (timer)</comment></scripts></block-definition><block-definition s="$cloudOutline MQTT publish to %&apos;broker&apos; topic %&apos;topic&apos; payload %&apos;payload&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="310" collapsed="false">Publish a message to an MQTT broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. qos (quality of service 0,1 or 2)&#xD;&#xD;2. retain flag (boolean)&#xD;&#xD;3. Buffer mode (boolean).    Default (false) - the payload is published as text&#xD;&#xD;If set to true then payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text.&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%mlt">hello</input><input type="%mult%s"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportNot"><block s="reportJoinWords"><block var="options"/></block></block><script><block s="doSetVar"><l>options</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>retain</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block var="options"/><l><option>json</option></l></block></block></block></block><script><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>list</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportListAttribute"><l><option>json</option></l><block var="payload"/></block></block></script><list></list></block><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>number</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportJoinWords"><list><block var="payload"/></list></block></block></script><list></list></block></script><list></list></block><block s="doApplyExtension"><l>mqt_pub(broker,topic,payload,options)</l><list><block var="broker"/><block var="topic"/><block var="payload"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT subscribe to %&apos;broker&apos; topic %&apos;topic&apos; $nl on each message run %&apos;callback&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="239.99999999999977" collapsed="false">Subscribe to a topic on a broker&#xD;&#xD;Make sure you have already run an MQTT connect block before using this one&#xD;&#xD;You should add a script to be run inside he grey ring.&#xD;&#xD;It will be run each time a message is received&#xD;&#xD;If you click on the arrow on the grey ring twice, you can use #1 and #2 inside your script.&#xD;&#xD;#1 will contain the received payload&#xD;&#xD;#2 will contain the received topic name&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;There is only 1 option at present&#xD;1. Buffer mode (boolean) Default (false) - payload is returned as text&#xD;&#xD;If true, payload returned as single column list of values in the range of 0 to 255..  </comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%cmdRing"></input><input type="%mult%s"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportNot"><block s="reportJoinWords"><block var="options"/></block></block><script><block s="doSetVar"><l>options</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_sub(broker,topic,callback,options)</l><list><block var="broker"/><block var="topic"/><block var="callback"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT connect to %&apos;broker&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="416.6666666666666" collapsed="false">Connect to a broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. username (some brokers need this)&#xD;2. password (some brokers need this)&#xD;3. keepalive (default time is 60 seconds but some brokers need a shorter time)&#xD;4. connection callback (ringed set of scripts to be run when connection is made or remade)&#xD;&#xD;Note: The connection callback doesn&apos;&apos;t have to be the 4th option - it just has to be the last (or only) option.&#xD;&#xD;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:&#xD;&#xD;siteURL:port/basepath &#xD;e.g mqtt.eclipseprojects.io:443/mqtt&#xD;&#xD;It is possible to have more than one connection to the same broker, for instance, using two different user/pass accounts simultaneously. To do this, add a connection id at the end of the broker:&#xD;&#xD;e.g mqtt.eclipseprojects.io:443/mqtt|1&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%mult%s"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportNot"><block s="reportJoinWords"><block var="options"/></block></block><script><block s="doSetVar"><l>options</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doDeclareVariables"><list><l>connection status</l><l>callback</l></list></block><block s="doSetVar"><l>connection status</l><l>connecting</l></block><block s="doSetVar"><l>callback</l><l></l></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l><option>last</option></l><block var="options"/></block><l><option>command</option></l></block><script><block s="doSetVar"><l>callback</l><block s="reportListItem"><l><option>last</option></l><block var="options"/></block></block><block s="doDeleteFromList"><l><option>last</option></l><block var="options"/></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>username</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>password</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>keepalive</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_connect(broker,callback,options)</l><list><block var="broker"/><block var="callback"/><block var="options"/></list></block><block s="doWaitUntil"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connecting</l></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connected</l></list></block></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="connection status"/></list></block></script><list></list></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="851"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAL30lEQVR4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgMDI3+AAEeFvcCAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="852"></list></costumes><sounds><list struct="atomic" id="853"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="80,80,80,1" pen="tip" id="858"><costumes><list struct="atomic" id="859"></list></costumes><sounds><list struct="atomic" id="860"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="25.000000000000057"><block s="receiveGo"></block><block s="doSetVar"><l>Players</l><l>0</l></block><block s="hide"></block><block s="doSetVar"><l>cloud</l><l></l></block><block s="doSetVar"><l>connected</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list><l></l></list></custom-block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>myCustomCloudServerForSnap</l><block s="reifyScript"><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="#1"/><l>Create.New</l></list></block><script><block s="doSetVar"><l>cloud</l><l></l></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>myCustomCloudServerForSnap</l><block var="cloud"/><list><l></l></list></custom-block><block s="doSetVar"><l>connected</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doSetVar"><l>cloud</l><block var="#1"/></block><block s="doSetVar"><l>connected</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list><l>#1</l></list></block><list><l></l></list></custom-block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>requestJoinCustomServer</l><block s="reifyScript"><script><block s="doIfElse"><block var="connected"/><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>myCustomCloudServerForSnap</l><block var="cloud"/><list><l></l></list></custom-block><block s="doChangeVar"><l>Players</l><l>1</l></block></script><script><block s="doWait"><l>0.1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="cloud"/><l></l></list></block><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>myCustomCloudServerForSnap</l><l>Create.New</l><list><l></l></list></custom-block></script><list></list></block></script></block></script><list><l>#1</l></list></block><list><l></l></list></custom-block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>requestJoinCustomServer</l><l>Request</l><list><l></l></list></custom-block><block s="doFor"><l>i</l><l>0</l><block var="Players"/><script><block s="createClone"><l><option>myself</option></l></block></script></block></script><script x="511" y="377.1666666666667"><block s="receiveOnClone"></block><block s="show"></block><block s="doForever"><script><block s="doGotoObject"><l><option>mouse-pointer</option></l></block></script></block></script><script x="553.060546875" y="560"><block s="reportGet"><l><option>self</option></l></block></script><script x="558" y="301.66666666666663"><block s="doForEach"><l>item</l><l/><script></script></block></script><script x="333" y="12.166666666666742"><block s="receiveGo"></block></script><script x="216" y="34.83333333333326"><block s="doForever"><script></script></block></script><script x="510" y="10"><block s="receiveGo"></block><block s="doFor"><l>i</l><l>0</l><block var="Players"/><script></script></block></script><script x="579" y="160.83333333333337"><block s="doUntil"><block s="reportVariadicEquals"><list><block var="connected"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><script></script></block></script><script x="555" y="249.66666666666686"><block s="doWait"><l>2</l></block></script><script x="652" y="227"><block s="doForever"><script></script></block></script><script x="511" y="162.16666666666674"><block s="doForever"><script></script></block></script><script x="242" y="93.33333333333337"><block s="doBroadcast"><l>O</l><list></list></block></script><script x="537.935546875" y="496.9999999999998"><block s="doRepeat"><l></l><script></script></block></script></scripts></sprite><watcher var="cloud" style="normal" x="20" y="20.000000000000014" color="243,118,29"/><watcher var="connected" style="normal" x="20" y="62.00000399999999" color="243,118,29"/><watcher var="Players" style="normal" x="10" y="10" color="243,118,29"/></sprites></stage><variables><variable name="cloud"><l></l></variable><variable name="connected"><bool>true</bool></variable><variable name="Players"><l>2</l></variable></variables></scene></scenes></project><media name="Mqttproj" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>