kopia lustrzana https://github.com/backface/turtlestitch
2 wiersze
15 KiB
XML
2 wiersze
15 KiB
XML
<blocks app="Snap! 7, https://snap.berkeley.edu" version="2"><palette><category name="MQTT" color="143,0,100,1"/></palette><block-definition s="$cloudOutline MQTT connect to %'broker' $nl $options-1-192-192-192 %'options'" type="command" category="MQTT"><comment x="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><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
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></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></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="reportEquals"><block var="connection status"/><l>connecting</l></block></block></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="connection status"/><l>connected</l></block></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="connection status"/></list></block></script></block></script></block-definition><block-definition s="$cloudOutline MQTT publish to %'broker' topic %'topic' payload %'payload' $nl $options-1-192-192-192 %'options'" type="command" category="MQTT"><comment x="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><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">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></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></list></block></block></block><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></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></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 %'broker' topic %'topic' $nl on each message run %'callback'" type="command" category="MQTT"><comment x="0" y="0" w="216.9999999999999" collapsed="false">Subscribe to a topic on a broker

Make sure you have already run an MQTT connect block before using this one

You should add a script to be run inside he grey ring.

It will be run each time a message is received

If you click on the arrow on the grey ring twice, you can use #1 and #2 inside your script.

#1 will contain the received payload

#2 will contain the received topic name</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
broker.xmqtt.net</options></input><input type="%s">name</input><input type="%cmdRing"></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_sub(broker,topic,callback,options)</l><list><block var="broker"/><block var="topic"/><block var="callback"/><l></l></list></block></script></block-definition><block-definition s="$cloudOutline MQTT unsubscribe from %'broker' topic %'topic'" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
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 %'broker'" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">all<options>all
broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
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 %'broker' topic %'topic' $nl reply %'reply'" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
broker.xmqtt.net</options></input><input type="%s">name</input><input type="%repRing"></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"><block var="broker"/><block var="topic"/><block s="reifyScript"><script><block s="doIf"><block s="reportGreaterThan"><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><l>/@</l><block var="received topic"/></list></block><l>0</l></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 %s %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="callbackTopic"/><block var="resp"/><list><l></l></list></custom-block></script></block></script><list><l>received payload</l><l>received topic</l></list></block></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT request %'broker' topic %'topic' $nl response topic %'rtopic' payload %'payload' $nl on response run %'callback'" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%s">hello</input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>error</l></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing"><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></custom-block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %s %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block><block var="payload"/><list><l></l></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT example response reporter payload %'payload' topic %'topic'" type="reporter" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">hello</input><input type="%txt">name</input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l>Echo: </l><block var="payload"/></list></block></block></script></block-definition><block-definition s="$cloudOutline MQTT request %'broker' topic %'topic' $nl response topic %'rtopic' payload %'payload' $nl $options-1-192-192-192 %'options'" 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

There is only 1 option at present
1. Timeout value - default is 3 seconds</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io
mqtt.eclipseprojects.io
test.mosquitto.org
broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%s">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></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>resp</l><l>timeout</l></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing"><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></custom-block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %s %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block><block var="payload"/><list><l></l></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="reportOr"><block s="reportEquals"><block var="semaphore"/><l>1</l></block><block s="reportGreaterThan"><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></block></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></blocks>
|