1 line
9.5 KiB
XML
1 line
9.5 KiB
XML
<xml version="Mixly 2.0 rc3" board="Arduino ESP8266@Generic ESP8266 Module"><block type="factory_notes" id="@YWf/x`h*@mr;OkGcla!" x="-842" y="-683"><field name="VALUE">当由于网络波动等情况造成MQTT断开时,如果能获取断线状态&#10; 那么我们就可以及时启用断线程序或者继续尝试连接MQTT服务器&#10;恢复服务,以下例子检测了设备与MQTT服务器连接并闪烁LED提示&#10;同时尝试恢复MQTT服务与重新订阅text主题,多功能按钮0单击将发送&#10;Hello打印到串口监视器,使用请修改为自己的WiFi与MQTT服务器信息&#10;MixIO也可使用此方法处理离线问题</field><next><block type="serial_begin" id="jbf=NRCAwW44-7iKtO*U"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id=";1WR~*=B;LcfXB_[Gd~3"><field name="NUM">9600</field></shadow></value><next><block type="WIFI_info" id="ZJT6V[uhin87FkUc/_0m"><value name="SSID"><shadow type="text" id="Y(l,A`/D/)Y8,?}A~w1b"><field name="TEXT">Netcore-65080F</field></shadow></value><value name="PWD"><shadow type="text" id="ab_KkL+yiI4[#`]6f,T2"><field name="TEXT">1234567890</field></shadow></value><next><block type="MQTT_subscribe_plus" id="!fOl7Yyr,WUtrD(35n3s"><value name="server"><shadow type="text" id="0]d6ziN;$ijf:]tv3IYp"><field name="TEXT">bemfa.com</field></shadow></value><value name="port"><shadow type="text" id="X:R)B|J?HI*5?[LgkX{S"><field name="TEXT">9501</field></shadow></value><value name="client_id"><shadow type="text" id="TFK;|0|5uyZ;~XrfA7!i"><field name="TEXT">d597ed83edb4c3fc25c89377dbe83f01</field></shadow></value><value name="mqtt_username"><shadow type="text" id="_f)T7ug9_WMrrrv1(+`g"><field name="TEXT"></field></shadow></value><value name="mqtt_password"><shadow type="text" id="!g?GNUx(R7]vtS2HdlEs"><field name="TEXT"></field></shadow></value></block></next></block></next></block></next></block><block type="MQTT_received_the_news" id="?xoaj,T!cWN/1^q3$2F@" x="-845" y="-249"><value name="topic"><shadow type="text" id="attPzKxL0D?(Bv;r[2=i"><field name="TEXT">text</field></shadow></value><statement name="function"><block type="serial_println" id=".a*JtCL:,9bWaF97[v8y"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="variables_get" id="~efB8K)$+^=tW6:u])uI"><field name="VAR">mqtt_data</field></block></value></block></statement></block><block type="OneButton_interrupt" id="5wKWJIx|sJ=dirrL{Xbh" x="-847" y="-145"><field name="mode">attachClick</field><value name="PIN"><shadow type="pins_digital" id=":rRGfX3PoVl14sHU5Il^"><field name="PIN">0</field></shadow></value><value name="STAT"><shadow type="inout_highlow" id="gCL)`obcl5n~0yk`$}`K"><field name="BOOL">LOW</field></shadow></value><statement name="DO"><block type="MQTT_publish" id="ZKYcy`hxXe|kz$-}72vh"><value name="data"><shadow type="text" id="9iqNpfFr)1bp^12f30+q"><field name="TEXT">Hello</field></shadow></value><value name="topic"><shadow type="text" id="_cA}9*MD/y9X#;${9fwx"><field name="TEXT">text</field></shadow></value></block></statement></block><block type="simple_timer" id="#kfs^]|nS_WGh*Q*$RF8" x="-845" y="-26"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="e6V}@KRM(*Ipd?9?5bZ7"><field name="NUM">1000</field></shadow></value><statement name="zxhs"><block type="controls_if" id="y{=O8KWu*eso]iP!?0bg"><mutation else="1"></mutation><value name="IF0"><block type="factory_block_return" id="dsY*S-zV#sH|+IG{Y}Dn"><field name="VALUE">!client.connected()</field><comment pinned="false" h="80" w="160">MQTT服务器断开连接</comment></block></value><statement name="DO0"><block type="folding_block" id="{;BmGIKyKt+oeK,EXUnI"><field name="peien">板载LED闪烁提示MQTT掉线</field><statement name="DO"><block type="inout_digital_write2" id="QsN.}=^PHHDsaB)Zal@W"><value name="PIN"><shadow type="pins_digital" id="V@nVQ@^rK+jG=ZJZ.l{R"><field name="PIN">2</field></shadow></value><value name="STAT"><shadow type="inout_highlow" id="fu~@)){/Zr#QIDp|ywFI"><field name="BOOL">HIGH</field></shadow><block type="logic_negate" id="T7w0r7MfEcfeVYbhZM@@"><value name="BOOL"><block type="inout_digital_read2" id="$:Y?r?F!b^2t}F8q!Fu["><value name="PIN"><shadow type="pins_digital" id="OMZTeJ5eMok@hO-R]jYl"><field name="PIN">2</field></shadow></value></block></value></block></value></block></statement><next><block type="folding_block" id=",Mp`xf]JA(-to1KQ1+sr"><field name="peien">尝试重连MQTT服务器,格式参考setup中相关代码</field><statement name="DO"><block type="factory_block_with_textarea" id="=s/~|M}R!|)KB-9$S9J4"><field name="VALUE">String client_id = "d597ed83edb4c3fc25c89377dbe83f0e";&#10;if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {&#10; Serial.println("Public emqx mqtt broker connected");&#10;} else {&#10; Serial.print("failed with state ");&#10; Serial.print(client.state());&#10;}</field></block></statement><next><block type="folding_block" id=",+Y$Vsj(`X2?Epo9s6HL"><field name="peien">订阅恢复text主题</field><statement name="DO"><block type="factory_block_with_textarea" id="/VW4ydPb4wx)SlxcV$hC"><field name="VALUE">client.subscribe(String("text").c_str());</field></block></statement></block></next></block></next></block></statement><statement name="ELSE"><block type="inout_digital_write2" id="!2us.:o2A?=ouc)BLbNh"><value name="PIN"><shadow type="pins_digital" id="BM{Z8hV5b~Tcm{B}QF)U"><field name="PIN">2</field></shadow></value><value name="STAT"><shadow type="inout_highlow" id="yXC$4EeI#i.G.e9/ltNb"><field name="BOOL">HIGH</field></shadow></value></block></statement></block></statement></block></xml><config>{"xtal":"80","vt":"flash","exception":"disabled","stacksmash":"disabled","ssl":"all","mmu":"3232","non32xfer":"fast","ResetMethod":"nodemcu","CrystalFreq":"26","FlashFreq":"40","FlashMode":"dout","eesz":"1M64","led":"2","sdk":"nonosdk_190703","ip":"lm2f","dbg":"Disabled","wipe":"none","baud":"115200"}</config><code>CiNpbmNsdWRlIDxFU1A4MjY2V2lGaS5oPgojaW5jbHVkZSA8UHViU3ViQ2xpZW50Lmg+CgojaW5jbHVkZSA8T25lQnV0dG9uLmg+CiNpbmNsdWRlIDxTaW1wbGVUaW1lci5oPgoKY29uc3QgY2hhciAqbXF0dF9icm9rZXIgPSAiYmVtZmEuY29tIjsKY29uc3QgY2hhciAqbXF0dF91c2VybmFtZSA9ICIiOwpjb25zdCBjaGFyICptcXR0X3Bhc3N3b3JkID0gIiI7CmNvbnN0IGludCBtcXR0X3BvcnQgPSA5NTAxOwpTdHJpbmcgbXF0dF90b3BpYyA9ICIiOwpTdHJpbmcgbXF0dF9kYXRhID0gIiI7CmJvb2xlYW4gbXF0dF9zdGF0dXMgPSBmYWxzZTsKV2lGaUNsaWVudCBlc3BDbGllbnQ7ClB1YlN1YkNsaWVudCBjbGllbnQoZXNwQ2xpZW50KTsKdm9pZCBjYWxsYmFjayhjaGFyICp0b3BpYywgYnl0ZSAqcGF5bG9hZCwgdW5zaWduZWQgaW50IGxlbmd0aCkgewogIFN0cmluZyBkYXRhID0gIiI7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgZGF0YSA9IFN0cmluZyhkYXRhKSArIFN0cmluZygoY2hhcikgcGF5bG9hZFtpXSk7CiAgfQogIG1xdHRfdG9waWMgPSBTdHJpbmcodG9waWMpOwogIG1xdHRfZGF0YSA9IGRhdGE7CiAgbXF0dF9zdGF0dXMgPSB0cnVlOwp9CgpPbmVCdXR0b24gYnV0dG9uMCgwLHRydWUpOwpTaW1wbGVUaW1lciB0aW1lcjsKCnZvaWQgYXR0YWNoQ2xpY2swKCkgewogIGNsaWVudC5wdWJsaXNoKFN0cmluZygidGV4dCIpLmNfc3RyKCksU3RyaW5nKCJIZWxsbyIpLmNfc3RyKCkpOwp9Cgp2b2lkIFNpbXBsZV90aW1lcl8xKCkgewogIC8vIE1RVFTmnI3liqHlmajmlq3lvIDov57mjqUKICBpZiAoIWNsaWVudC5jb25uZWN0ZWQoKSkgewogICAgZGlnaXRhbFdyaXRlKDIsKCFkaWdpdGFsUmVhZCgyKSkpOwogICAgU3RyaW5nIGNsaWVudF9pZCA9ICJkNTk3ZWQ4M2VkYjRjM2ZjMjVjODkzNzdkYmU4M2YwZSI7CiAgICAgIGlmIChjbGllbnQuY29ubmVjdChjbGllbnRfaWQuY19zdHIoKSwgbXF0dF91c2VybmFtZSwgbXF0dF9wYXNzd29yZCkpIHsKICAgICAgICBTZXJpYWwucHJpbnRsbigiUHVibGljIGVtcXggbXF0dCBicm9rZXIgY29ubmVjdGVkIik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgU2VyaWFsLnByaW50KCJmYWlsZWQgd2l0aCBzdGF0ZSAiKTsKICAgICAgICBTZXJpYWwucHJpbnQoY2xpZW50LnN0YXRlKCkpOwogICAgICB9CiAgICBjbGllbnQuc3Vic2NyaWJlKFN0cmluZygidGV4dCIpLmNfc3RyKCkpOwoKICB9IGVsc2UgewogICAgZGlnaXRhbFdyaXRlKDIsSElHSCk7CgogIH0KfQoKdm9pZCBzZXR1cCgpewogIFNlcmlhbC5iZWdpbig5NjAwKTsKICBXaUZpLmJlZ2luKCJOZXRjb3JlLTY1MDgwRiIsICIxMjM0NTY3ODkwIik7CiAgd2hpbGUgKFdpRmkuc3RhdHVzKCkgIT0gV0xfQ09OTkVDVEVEKSB7CiAgICBkZWxheSg1MDApOwogICAgU2VyaWFsLnByaW50KCIuIik7CiAgfQogIFNlcmlhbC5wcmludGxuKCJMb2NhbCBJUDoiKTsKICBTZXJpYWwucHJpbnQoV2lGaS5sb2NhbElQKCkpOwoKICBjbGllbnQuc2V0U2VydmVyKG1xdHRfYnJva2VyLCBtcXR0X3BvcnQpOwpjbGllbnQuc2V0Q2FsbGJhY2soY2FsbGJhY2spOwp3aGlsZSAoIWNsaWVudC5jb25uZWN0ZWQoKSkgewogIFN0cmluZyBjbGllbnRfaWQgPSAiZDU5N2VkODNlZGI0YzNmYzI1Yzg5Mzc3ZGJlODNmMDEiOwogIGlmIChjbGllbnQuY29ubmVjdChjbGllbnRfaWQuY19zdHIoKSwgbXF0dF91c2VybmFtZSwgbXF0dF9wYXNzd29yZCkpIHsKICAgIFNlcmlhbC5wcmludGxuKCJQdWJsaWMgZW1xeCBtcXR0IGJyb2tlciBjb25uZWN0ZWQiKTsKICB9IGVsc2UgewogICAgU2VyaWFsLnByaW50KCJmYWlsZWQgd2l0aCBzdGF0ZSAiKTsKICAgIFNlcmlhbC5wcmludChjbGllbnQuc3RhdGUoKSk7CiAgICBkZWxheSgyMDAwKTsKICB9Cn0KCiAgY2xpZW50LnN1YnNjcmliZShTdHJpbmcoInRleHQiKS5jX3N0cigpKTsKICBidXR0b24wLmF0dGFjaENsaWNrKGF0dGFjaENsaWNrMCk7CiAgcGluTW9kZSgyLCBPVVRQVVQpOwogIHRpbWVyLnNldEludGVydmFsKDEwMDBMLCBTaW1wbGVfdGltZXJfMSk7Cgp9Cgp2b2lkIGxvb3AoKXsKICAvL+W9k+eUseS6jue9kee7nOazouWKqOetieaDheWGtemAoOaIkE1RVFTmlq3lvIDml7bvvIzlpoLmnpzog73ojrflj5bmlq3nur/nirbmgIEKICAvLyDpgqPkuYjmiJHku6zlsLHlj6/ku6Xlj4rml7blkK/nlKjmlq3nur/nqIvluo/miJbogIXnu6fnu63lsJ3or5Xov57mjqVNUVRU5pyN5Yqh5ZmoCiAgLy/mgaLlpI3mnI3liqHvvIzku6XkuIvkvovlrZDmo4DmtYvkuoborr7lpIfkuI5NUVRU5pyN5Yqh5Zmo6L+e5o6l5bm26Zeq54OBTEVE5o+Q56S6CiAgLy/lkIzml7blsJ3or5XmgaLlpI1NUVRU5pyN5Yqh5LiO6YeN5paw6K6i6ZiFdGV4dOS4u+mimO+8jOWkmuWKn+iDveaMiemSrjDljZXlh7vlsIblj5HpgIEKICAvL0hlbGxv5omT5Y2w5Yiw5Liy5Y+j55uR6KeG5Zmo77yM5L2/55So6K+35L+u5pS55Li66Ieq5bex55qEV2lGaeS4jk1RVFTmnI3liqHlmajkv6Hmga8KICAvL01peElP5Lmf5Y+v5L2/55So5q2k5pa55rOV5aSE55CG56a757q/6Zeu6aKYCiAgY2xpZW50Lmxvb3AoKTsKCiAgaWYgKG1xdHRfc3RhdHVzKSB7CiAgICBpZiAoU3RyaW5nKG1xdHRfdG9waWMpLmVxdWFscyhTdHJpbmcoInRleHQiKSkpIHsKICAgIFNlcmlhbC5wcmludGxuKG1xdHRfZGF0YSk7CiAgICBtcXR0X3N0YXR1cyA9IGZhbHNlOwogICAgfQogIH0KCiAgYnV0dG9uMC50aWNrKCk7CiAgdGltZXIucnVuKCk7Cgp9</code> |