{"id":2799,"date":"2022-04-21T19:49:07","date_gmt":"2022-04-21T11:49:07","guid":{"rendered":"https:\/\/www.block.tw\/blog\/?p=2799"},"modified":"2022-05-12T18:37:06","modified_gmt":"2022-05-12T10:37:06","slug":"esp12f-iot-plug-mqtt","status":"publish","type":"post","link":"https:\/\/www.block.tw\/blog\/esp12f-iot-plug-mqtt\/","title":{"rendered":"ESP-12F \u7db2\u8def\u667a\u6167\u958b\u95dc(MQTT)"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/powerplug\/IOT.svg\" alt=\"\"\/><figcaption>\u7269\u806f\u7db2<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u7576\u6211\u5011\u8981\u505a\u4e00\u500b\u9060\u7aef\u63a7\u5236\u7684\u5c08\u984c\u6642\uff0c\u6700\u597d\u7684\u65b9\u5f0f\u662f\u8b93\u8a72\u88dd\u7f6e\u9023\u4e0a\u7db2\u8def\uff0c\u5982\u679c\u80fd\u8de8\u7db2\u8def\u4e14\u4e0d\u4fb7\u9650\u5728\u5340\u57df\u7db2\u8def\u5167\u624d\u80fd\u63a7\u5236\u6642\uff0c\u5c31\u9700\u8981\u6709\u4e00\u500b\u96f2\u7aef\u4f3a\u670d\u5668\u3002\u96f2\u7aef\u4f3a\u670d\u5668\u53ef\u4ee5\u81ea\u5df1\u67b6\u8a2d\uff0c\u4e5f\u53ef\u4ee5\u627e\u5c0b\u514d\u8cbb\u63d0\u4f9b\u7684\u4f3a\u670d\u5668\u3002\u514d\u8cbb\u63d0\u4f9b\u7684\u4f3a\u670d\u5668\u6700\u5927\u7684\u512a\u9ede\u5c31\u662f\u65b9\u4fbf\u53ca\u514d\u8cbb\uff0c\u4f46\u7f3a\u9ede\u5c31\u662f\u4e0d\u7a69\u5b9a\u4e14\u5b89\u5168\u6027\u8f03\u5dee\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u5011\u9078\u64c7\u4e00\u500b\u8f15\u91cf\u7684\u901a\u8a0a\u5354\u5b9a(MQTT) \u4f86\u505a\u63a7\u5236\uff0c<span style=\"color: #0693e3;\" class=\"stk-highlight\">test.mosquitto.org<\/span>\u3001<span style=\"color: #0693e3;\" class=\"stk-highlight\">mqtt.eclipseprojects.io<\/span> \u63d0\u4f9b\u514d\u8cbb\u7684 MQTT \u96f2\u7aef\u4f3a\u670d\u5668(broker)\uff0c\u4e0d\u9700\u8981\u7533\u8acb\u5c31\u80fd\u76f4\u63a5\u4f7f\u7528\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u4f7f\u7528\u8005\u5e33\u865f\u8207\u5bc6\u78bc\uff0c\u4e5f\u56e0\u70ba\u4e0d\u9700\u8981\u4f7f\u7528\u8005\u5e33\u865f\u8207\u5bc6\u78bc\uff0c\u5b89\u5168\u6027\u582a\u616e\uff0c\u5982\u679c\u662f\u91cd\u8981\u7684\u63a7\u5236\uff0c\u6700\u597d\u9084\u662f\u4f7f\u7528\u9700\u8981\u7533\u8acb\u7684 MQTT broker\u6bd4\u8f03\u5b89\u5168\uff0c\u5982\u679c\u53ea\u662f\u5be6\u7fd2\u7528\uff0c\u5c31\u4e0a\u8ff02\u500b\u4f3a\u670d\u5668\u9078\u64c71\u500b\u4f86\u7528\u5c31\u884c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MQTT broker(\u7d93\u7d00\u4eba) \u63a5\u53d7\u7528\u6236\u7aef(Client)\u767c\u4f48(<strong>publisher<\/strong>)\u4e3b\u984c(Topic)\u8207\u5167\u5bb9\uff0c\u5176\u5b83\u6709\u8a02\u95b1(<strong>subscriber<\/strong>)\u6b64\u4e3b\u984c\u7684\u7528\u6236\u7aef\uff0c\u90fd\u80fd\u6536\u5230MQTT broker(\u7d93\u7d00\u4eba)\u8f49\u9001\u4f86\u7684\u5167\u5bb9\u3002\u7528\u6236\u7aef\u4e4b\u9593\u6709 broker \u4f3a\u670d\u5668\u7576\u4f5c\u4e2d\u7e7c\u7ad9\uff0c\u6240\u4ee5\u7528\u6236\u7aef\u4e4b\u9593\u4e26\u4e0d\u9700\u8981\u77e5\u9053\u5f7c\u6b64\u7684IP\u4f4d\u5740\uff0c\u53ef\u4ee5\u8de8\u7db2\u57df\u63a7\u5236\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8a2d\u5099\u8207\u6750\u6599<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u500b\u4eba\u96fb\u8166 \u00d7 1<br>ESP12F \u00d7 1<br>\u9eb5\u5305\u677f \u00d7 1<br>\u667a\u6167\u624b\u6a5f  \u00d7 1<br>PB\u6309\u9215 \u00d7 1<br>\u7e7c\u96fb\u5668\u6a21\u7d44 \u00d7 1<br>\u9023\u63a5\u7dda \u82e5\u5e72<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5be6\u9ad4\u63a5\u7dda\u5716<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/powerplug.svg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><br>\u624b\u6a5f\u8a2d\u5b9a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u70ba\u7528\u624b\u6a5f\u63a7\u5236\u6211\u5011\u7684\u5c08\u984c\uff0c\u624b\u6a5f\u90e8\u4efd\u5fc5\u9700\u6709\u652f\u63f4 MQTT \u7684\u7a0b\u5f0f\u624d\u884c\uff0c\u624b\u6a5f\u9019\u90e8\u4efd\u7684\u7a0b\u5f0f\u5df2\u6709\u73fe\u6210\u7684\u7a0b\u5f0f\uff0c\u6211\u7684\u624b\u6a5f\u662f Android \uff0c\u56e0\u6b64\u6253\u958b Play \u5546\u5e97\uff0c\u8f38\u5165mqtt \u7be9\u9078(\u5982\u4e0b\u5de6\u5716)\uff0c\u76ee\u524d\u89ba\u5f97 Lapetov \u63a8\u51fa\u7684 MQTT dashboard \u7b26\u5408\u6211\u7684\u4f7f\u7528\u8981\u6c42\uff0c\u53ea\u8981\u4e0b\u8f09\u4f86\u8a2d\u5b9a\u4e00\u4e0b\u5c31\u80fd\u63a7\u5236\u3002\u5b89\u88dd\u5f8c(\u5982\u4e0b\u4e2d\u5716)\u57f7\u884c\u6703\u51fa\u73fe\u5982\u4e0b\u53f3\u5716\uff0c\u4ed6\u67092\u500b\u7bc4\u4f8b\u63a7\u5236\u9762\u677f\u63d0\u4f9b\u4f60\u53c3\u8003\uff0c\u6309 <span style=\"color: #0693e3;\" class=\"stk-highlight\">+<\/span> \u53ef\u4ee5\u65b0\u589e\u63a7\u5236\u9762\u677f\uff0c\u8f38\u5165 Name(\u540d\u7a31) \u53ca Description(\u63cf\u8ff0) \u6309\u5de6\u4e0a\u65b9 <span style=\"color: #0693e3;\" class=\"stk-highlight\">\u2713<\/span> \u5c31\u53ef\u4ee5\u65b0\u589e\u6211\u5011\u7684\u63a7\u5236\u9762\u677f\uff0c\u5de6\u4e0a\u529f\u80fd\u9078\u55ae\u53ef\u4ee5\u9032\u5165MQTT connections \u9023\u7dda\u8a2d\u5b9a\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u6309 MQTT connections \u9032\u5165 \u9023\u7dda\u8a2d\u5b9a\uff0c\u4ed6\u67093\u500b\u9023\u7dda\u7bc4\u4f8b\uff0c\u90fd\u662f\u9023\u5230 test.mosquitto.org \uff0c\u5982\u679c\u4f60\u7528\u5176\u5b83MQTT \u4f3a\u670d\u5668\uff0c\u53ef\u4ee5\u65b0\u589e\u9023\u7dda\uff0c\u6216\u662f\u76f4\u63a5\u4fee\u6539\u90fd\u53ef\u4ee5\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt2.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u6211\u5011\u65b0\u589e\u4e00\u500b \u201c<span style=\"color: #0693e3;\" class=\"stk-highlight\">BLOCK IOT<\/span>\u201d \u63a7\u5236\u9762\u677f\uff0c\u9ede\u9032\u53bb\u5982\u4e0b\u5de6\u5716\u756b\u9762\uff0c\u6309 <span style=\"color: #0693e3;\" class=\"stk-highlight\">+<\/span> \u5c31\u53ef\u4ee5\u65b0\u589e\u63a7\u5236\u5143\u4ef6\u4e86(\u5982\u4e0b\u4e2d\u5716)\uff0c\u9078\u64c7 &#8220;<span style=\"color: #0693e3;\" class=\"stk-highlight\">Toggle<\/span>&#8221; \u5f62\u5f0f\u7684\u63a7\u5236\u5143\u4ef6\uff0c\u8f38\u5165 Name \u4e26\u958b\u555f MQTT enable\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt3.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u9078\u64c7\u8981\u9023\u7dda\u5230\u4e4b\u524d\u8a2d\u5b9a\u7684\u90a3\u500b\u4f3a\u670d\u5668\uff0c\u5728 \u201c<span style=\"color: #0693e3;\" class=\"stk-highlight\">Topic for publish<\/span>\u201d  \u8f38\u5165\u4f60\u5728 ESP12F \u7a0b\u5f0f\u5167\u8a02\u95b1\u7684\u4e3b\u984c\uff0cRetain \u662f\u4fdd\u7559\u9078\u9805\uff0c\u4e0d\u9700\u8981\u52fe\u9078\uff0c&#8221;<span style=\"color: #0693e3;\" class=\"stk-highlight\">Qos for publish<\/span>&#8221; \u50b3\u9001\u54c1\u8cea\u7528\u5167\u5b9a\u7684 0 \u5c31\u53ef\u4ee5\u3002 &#8220;<span style=\"color: #0693e3;\" class=\"stk-highlight\">Toggle<\/span>&#8221; \u5f62\u5f0f\u7684\u63a7\u5236\u5143\u4ef6\u6703\u67092\u7a2e\u72c0\u614b State(ON)\u3001State(OFF)\uff0c\u5148\u8a2d\u5b9a State(ON) \uff0c<span style=\"color: #0693e3;\" class=\"stk-highlight\">Payload<\/span> \u662f State(ON)\u6642\u767c\u4f48\u4e3b\u984c\u7684\u5167\u5bb9\uff1b<span style=\"color: #0693e3;\" class=\"stk-highlight\">Text<\/span> \u662f State(ON)\u6642\u986f\u793a\u5728\u624b\u6a5f\u7684\u6587\u5b57\uff0c\u4e5f\u53ef\u4ee5\u9078\u64c7\u4e0d\u986f\u793a\uff1bICON  \u662f State(ON)\u6642\u986f\u793a\u7684\u5716\u793a\uff0c\u5716\u793a\u53ef\u4ee5\u6539\uff0c\u984f\u8272\u4e5f\u53ef\u4ee5\u6539\uff0c\u5927\u5c0f\u4e5f\u53ef\u4ee5\u8b8a\u63db\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt4.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>State(OFF)\u8a2d\u5b9a\u65b9\u5f0f\u8207State(ON)\u76f8\u540c\uff0c\u53ea\u662f\u5340\u5225ON\u3001OFF \uff0c\u984f\u8272\u4e0d\u540c\uff0c State(OFF)\u6642\u767c\u4f48\u4e3b\u984c\u7684\u5167\u5bb9\u4e0d\u540c\uff0cUptime \u662f\u767c\u4f48\u7684\u6642\u9593\uff0c\u53ef\u4ee5\u9078\u64c7\u8981\u4e0d\u8981\u986f\u793a\uff0c\u63a7\u5236\u5143\u4ef6\u7684 Name \u53ef\u4ee5\u9078\u64c7\u8981\u4e0d\u8981\u986f\u793a\uff0c\u5982\u679c\u90fd\u8a2d\u5b9a\u597d\u6309\u5de6\u4e0a\u65b9 <span style=\"color: #0693e3;\" class=\"stk-highlight\">\u2713<\/span> \u5c31\u53ef\u4ee5\u65b0\u589e\u63a7\u5236\u5143\u4ef6\u4e86\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt5.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u63a7\u5236\u5143\u4ef6\u53ef\u4ee5\u8b8a\u66f4\u5927\u5c0f\u8207\u4f4d\u7f6e\uff0c\u6309\u5de6\u4e0a + \u5716\u793a\u65c1\u7684 \u65b9\u6846\u5716\u793a\uff0c\u53ef\u4ee5\u9032\u5165\u5927\u5c0f\u8207\u4f4d\u7f6e\u8b8a\u66f4\u3002\u5982\u679c\u60f3\u8981\u8b8a\u66f4\u63a7\u5236\u5143\u4ef6\u7684\u8a2d\u5b9a\uff0c\u53ef\u4ee5\u9577\u6309\u4f4f\u63a7\u5236\u5143\u4ef6\uff0c\u6703\u51fa\u73fe\u9078\u55ae\uff0c\u53ef\u4ee5\u7de8\u8f2f\u3001\u8907\u88fd\u3001\u522a\u9664\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt6.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u6211\u5011\u9032\u53bb\u91cd\u65b0\u8b8a ICON \u5927\u5c0f\uff0c\u4e5f\u9078\u64c7\u4e0d\u986f\u793a\u63a7\u5236\u5143\u4ef6\u908a\u6846\uff0c\u6700\u5f8c\u5b8c\u6210\u5982\u4e0b\u53f3\u5716\u7684\u63a7\u5236\u5143\u4ef6\u3002<br>\u4f60\u6309\u4e00\u4e0b\u63a7\u5236\u5143\u4ef6\uff0c\u6703\u767c\u4f48\u4e3b\u984c\u70ba a1b2c3d4e5f6\/IOTPowerPlug\/set \u5167\u5bb9\u70ba 0 \u5230 test.mosquitto.org \u4f3a\u670d\u5668\uff0c\u53ea\u8981\u6709\u5728  test.mosquitto.org \u4f3a\u670d\u5668 \u8a02\u95b1 \u4e3b\u984c\u70ba a1b2c3d4e5f6\/IOTPowerPlug\/set \u7684\u8a2d\u5099\uff0c\u90fd\u6703\u6536\u5230 0 \u9019\u500b\u5167\u5bb9\uff1b<br>\u518d\u6309\u4e00\u4e0b\u63a7\u5236\u5143\u4ef6\uff0c\u6703\u767c\u4f48\u4e3b\u984c\u70ba a1b2c3d4e5f6\/IOTPowerPlug\/set \u5167\u5bb9\u70ba 1 \u5230 test.mosquitto.org \u4f3a\u670d\u5668\uff0c\u53ea\u8981\u6709\u5728  test.mosquitto.org \u4f3a\u670d\u5668 \u8a02\u95b1 \u4e3b\u984c\u70ba a1b2c3d4e5f6\/IOTPowerPlug\/set \u7684\u8a2d\u5099\uff0c\u90fd\u6703\u6536\u5230 1 \u9019\u500b\u5167\u5bb9\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/phonemqtt7.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><br>\u958b\u767c\u74b0\u5883<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 Arduino IDE \u5b89\u88dd ESP8266\u958b\u767c\u677f\uff0c\u5982\u679c\u4e0d\u77e5\u9053\u5982\u4f55\u5b89\u88ddESP8266\u958b\u767c\u677f\uff0c\u53ef\u4ee5\u53c3\u8003 \u201c<a href=\"https:\/\/www.block.tw\/blog\/start_esp-12ef\/\">\u6e96\u5099\u4f60\u7684 ESP12E\/F \u958b\u767c\u5de5\u5177<\/a>\u201d \uff0c\u5b89\u88dd\u958b\u767c\u677f\u4e4b\u5f8c\uff0c\u8a18\u5f97\u958b\u767c\u677f\u9078\u64c7 \u201cNodeMCU 1.0(ESP-12E Module)\u201d \uff0c\u4e4b\u5f8c\u5b89\u88ddMQTT \u7a0b\u5f0f\u5eab\uff0c\u5982\u4e0b\u5716\u6b65\u9aa4\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/pubsubclient1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/pubsubclient2.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><br>ESP12F \u7bc4\u4f8b\u7a0b\u5f0f<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n *  \u7db2\u8def\u667a\u6167\u958b\u95dc\n *  \u958b\u767c\u5de5\u5177 Arduino IDE \u5fc5\u9700\u81ea\u884c\u52a0\u5165ESP12F \u958b\u767c\u677f\n *  \u958b\u767c\u677f ESP12F(ESP8266)   \n *  \u6b64\u7a0b\u5f0f\u70ba\u7bc4\u4f8b\u7a0b\u5f0f\uff0c\u4e26\u672a\u52a0\u5165\u5c0d\u7e7c\u96fb\u5668\u7684\u63a7\u5236\uff0c\u50c5\u7528\u677f\u4e0aLED\u4f86\u8868\u793a\u958b\u95dc ON OFF\n *  \u4f7f\u7528\u901a\u8a0a\u5354\u5b9a MQTT \uff0cMQTT broker \u4f7f\u7528 test.mosquitto.org\n *  \u7a0b\u5f0f\u6703\u8a02\u95b1 subTopic \u8a2d\u5b9a\u7684\u4e3b\u984c\uff0c\u53ea\u8981\u6709\u5c0d\u6b64\u4e3b\u984c\u767c\u4f48\u5167\u5bb91 \u958b\u95dc\u5c31 ON \u5167\u5bb90 \u958b\u95dc\u5c31 OFF\n *  \u72c0\u614b\u6539\u8b8a\uff0c\u6703\u767c\u4f48\u6700\u65b0\u72c0\u614b\u5230 pubTopic \u8a2d\u5b9a\u7684\u4e3b\u984c\uff0c\u5167\u5bb9\u70ba\u76ee\u524d\u958b\u95dc\u72c0\u614b(ON-&gt;1 OFF-&gt;0)\n *  \u7a0b\u5f0f\u6bcf60\u79d2\u6703\u767c\u4f48 \u5230 pubTopic \u8a2d\u5b9a\u7684\u4e3b\u984c\uff0c\u5167\u5bb9\u70ba\u76ee\u524d\u958b\u95dc\u72c0\u614b(ON-&gt;1 OFF-&gt;0)\n *  https:\/\/www.block.tw\/blog\n *\/\n\n\/\/ \u5f15\u7528 Wifi AP \u7a0b\u5f0f\u5eab(\u9023\u4e0awifi\u7121\u7ddaAP\u7528)\n#include &lt;ESP8266WiFi.h&gt;\n#include &lt;ESP8266WiFiMulti.h&gt;\n\/\/ \u5f15\u7528 Wifi  \u7a0b\u5f0f\u5eab(\u9023\u4e0a\u7db2\u969b\u7db2\u8def\u7528)\n#include &lt;WiFiClient.h&gt;\n\n\/\/\u5f15\u7528 MQTT \u7a0b\u5f0f\u5eab \u9700\u8981\u81ea\u884c\u5b89\u88dd\u7a0b\u5f0f\u5eab https:\/\/github.com\/knolleary\/pubsubclient\n#include &lt;PubSubClient.h&gt;\n\n\/\/\u5ba3\u544a wifi AP\u7db2\u8def \u9023\u7dda\u7269\u4ef6\nESP8266WiFiMulti wifiMulti;\n\n\/\/\u5ba3\u544a wifi \u7db2\u8def\u9023\u7dda\u7269\u4ef6\nWiFiClient espClient;\n\n\/\/\u5ba3\u544a MQTT \u9023\u7dda\u7269\u4ef6\nPubSubClient client(espClient);\n\n\/\/WIFI SSID \u8ddf\u5bc6\u78bc\n#define   APSSID  \"2.4G wifi \u7684SSID\"\n#define   APPW    \"2.4G wifi \u7684\u5bc6\u78bc\"\n\n\/\/ MQTT test.mosquitto.org \u4f3a\u670d\u5668 \u4e0d\u9700\u8981\u4f7f\u7528\u8005\u540d\u7a31 \u5bc6\u78bc\n\/\/ \u6240\u4ee5\u6bcf\u500b\u4eba\u90fd\u80fd\u7528\uff0c\u5982\u679c\u6709\u4eba\u8ddf\u4f60\u6709\u76f8\u540c\u7684\u4e3b\u984c(topic)\u5c31\u80fd\u63a7\u5236\u4f60\u7684\u8a2d\u5099\nconst char* brokerUser  = \"\";  \/\/\u4f7f\u7528\u8005\u540d\u7a31\nconst char* brokerPass  = \"\";  \/\/\u4f7f\u7528\u8005\u5bc6\u78bc\nconst char* broker      = \"test.mosquitto.org\";\n\/\/const char* broker      = \"mqtt.eclipseprojects.io\";\nconst char* pubTopic    = \"a1b2c3d4e5f6\/IOTPowerPlug\/state\";\nconst char* subTopic    = \"a1b2c3d4e5f6\/IOTPowerPlug\/set\";\nbyte        state       = 0;\nchar        msg&#91;10]     ;\nlong        currentTime, lastTime;\n\nvoid setup()\n{\n  pinMode(LED_BUILTIN, OUTPUT);\n  \/\/\u5167\u5efa\u677f\u4e0a LED \u6ec5\n  digitalWrite(LED_BUILTIN, HIGH);\n  Serial.begin(115200);\n  setupWiFi();\n  client.setServer(broker, 1883);\n  client.setCallback(callback);\n}\n\nvoid loop()\n{\n  if (!client.connected())\n  {\n    \/\/\u9023\u63a5 MQTT \u4f3a\u670d\u5668\n    MQTTconnect();\n  }\n  client.loop();\n  currentTime = millis();\n  \n  \/\/60\u79d2\u767c\u4e00\u6b21\u8a0a\u606f\n  if(currentTime - lastTime &gt; 60000)\n  {\n    Serial.print(\"Sending messages:\\t\");        \n    dtostrf(state, 1, 0, msg);             \/\/byte \u8f49 char *\n    Serial.println(msg);\n    client.publish(pubTopic,msg);          \/\/\u767c\u4f48\n    lastTime = millis();\n  }\n   \n}\n\n\/\/\u8a02\u95b1\u7684\u4e3b\u984c\u6709\u4eba\u767c\u4f48\u8a0a\u606f\u6642\u7684\u8655\u7406\u51fd\u5f0f\nvoid callback(char* topic, byte* payload, unsigned int len)\n{\n  Serial.print(\"Received messages: \");\n  Serial.println(subTopic);\n  for (unsigned int i = 0; i &lt; len; i++)\n  {\n    Serial.print((char) payload&#91;i]);\n\n    if (len == 1 &amp;&amp; payload&#91;0] == '1'){\n      \/\/ 1\n      state=1;\n      digitalWrite(LED_BUILTIN, LOW);      \n      dtostrf(state, 1, 0, msg);    \n      client.publish(pubTopic,msg);\n    }else if (len == 1 &amp;&amp; payload&#91;0] == '0'){\n      \/\/ 0\n      state=0;\n      digitalWrite(LED_BUILTIN, HIGH);      \n      dtostrf(state, 1, 0, msg);    \n      client.publish(pubTopic,msg);\n    }\n  }\n  Serial.println();\n}\n\n\/\/\u9023\u63a5\u7121\u7dda wifi \u7684\u8655\u7406\u51fd\u5f0f\nvoid setupWiFi()\n{\n  delay(100);\n\n  \/\/\u9023\u63a5\u7121\u7dda wifi\n  wifiMulti.addAP(APSSID, APPW);\n\n  Serial.println(\"Wifi Connecting ...\");\n\n  \/\/\u5167\u5efa\u677f\u4e0a LED \u4eae\n  digitalWrite(LED_BUILTIN, LOW);\n\n  while (wifiMulti.run() != WL_CONNECTED)\n  {\n    delay(250);\n    Serial.print('.');\n  }\n\n  \/\/\u5167\u5efa\u677f\u4e0a LED \u6ec5\n  digitalWrite(LED_BUILTIN, HIGH);\n\n  Serial.println('\\n');\n  Serial.print(\"Connected to:\\t\");\n  Serial.println(WiFi.SSID());\n\n  Serial.print(\"IP address:\\t\");\n  Serial.println(WiFi.localIP());\n}\n\n\nvoid MQTTconnect()\n{\n  while (!client.connected())\n  {\n    \/\/\u9023\u63a5 MQTT \u4f3a\u670d\u5668\uff0c\u56e0\u70ba\u662f\u514d\u8cbb\u7121\u4f7f\u7528\u5e33\u865f\u8ddf\u5bc6\u78bc\uff0c\u6240\u4ee5\u5e95\u4e0b\u96a8\u4fbf\u8f38\u5165\u7684\n    if (client.connect(\"MQTT_CLIENT_ID\", \"brokerUser\", \"brokerPass\")) {\n      Serial.print(\"\\nConnected to \");\n      Serial.println(broker);\n      \/\/\u8a02\u95b1\u4e3b\u984c\n      client.subscribe(subTopic);\n    } else {\n      Serial.println(\"Connecting\");\n      delay(2500);\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5e8f\u5217\u57e0\u76e3\u63a7\u8996\u7a97\u756b\u9762<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.block.tw\/blog\/wp-content\/uploads\/arduino\/ESP12FPowerPlug\/powerplugout1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><br>\u529f\u80fd\u8981\u6c42<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">1.\u52a0\u4e0a\u7e7c\u96fb\u5668\u6a21\u7d44\uff0c\u677f\u4e0a LED \u53ea\u6307\u793a\u662f\u5426\u9023\u4e0a Wifi<br>2.\u589e\u52a01\u6309\u9215\uff0c\u6309\u4e00\u4e0b\u72c0\u614b\u8b8a ON\uff0c\u518d\u6309\u4e00\u4e0b\u72c0\u614b\u8b8a OFF<br>3.\u4fee\u6539\u624b\u6a5f MQTT \u61c9\u7528\u7a0b\u5f0f\uff0c\u5c07\u539f\u4f86\u7684  &#8220;<span style=\"color: #0693e3;\" class=\"stk-highlight\">Toggle<\/span>&#8221; \u5f62\u5f0f\u7684\u63a7\u5236\u5143\u4ef6(\u53ea\u767c\u9001\uff0c\u6c92\u8a02\u95b1)\uff0c\u65b0\u589e\u8a02\u95b1 subTopic \u6240\u6307\u5b9a\u7684\u4e3b\u984c\uff0c\u8b93\u624b\u6a5f\u63a7\u5236\u958b\u95dc\u72c0\u614b\u8207\u9060\u7aef\u88dd\u7f6e\u72c0\u614b\u76f8\u540c <br>4.\u8a2d\u5b9a\u624b\u6a5f MQTT \u61c9\u7528\u7a0b\u5f0f\uff0c\u591a\u4e00\u500b &#8220;<span style=\"color: #0693e3;\" class=\"stk-highlight\">Toggle<\/span>&#8221; \u5f62\u5f0f\u7684\u63a7\u5236\u5143\u4ef6(\u53ea\u8a02\u95b1\uff0c\u4e0d\u767c\u9001)\uff0c\u7528\u4f86\u986f\u793a\u76ee\u524d\u88dd\u7f6e ON \u6216 OFF <br><\/p>\n\n\n\n<section id=\"section-4f82d2d6-e601-43bc-aa9f-8b7f0edaa8e7\" class=\"wp-block-gutentor-tabs gutentor-section gutentor-tabs-wrapper tabs-template1 has-color-bg has-custom-bg tab-horizontal\"><div class=\"grid-container gutentor-rm-ct-space-d gutentor-rm-ct-space-t gutentor-rm-ct-space\"><div class=\"gutentor-tabs-container gutentor-grid-item-wrap\"><div class=\"gutentor-tabs tablist-left\"><span class=\"gutentor-tabs-list gutentor-single-item-0 gutentor-tab-active\" data-index=\"gutentor-single-item-0\"><div class=\"gutentor-single-item-tabs gutentor-single-item\">\u5165\u9580<\/div><\/span><span class=\"gutentor-tabs-list gutentor-single-item-1\" data-index=\"gutentor-single-item-1\"><div class=\"gutentor-single-item-tabs gutentor-single-item\">\u77e5\u8b58<\/div><\/span><span class=\"gutentor-tabs-list gutentor-single-item-2\" data-index=\"gutentor-single-item-2\"><div class=\"gutentor-single-item-tabs gutentor-single-item\">\u8a9e\u6cd5<\/div><\/span><span class=\"gutentor-tabs-list gutentor-single-item-3\" data-index=\"gutentor-single-item-3\"><div class=\"gutentor-single-item-tabs gutentor-single-item\">\u6d41\u7a0b<\/div><\/span><span class=\"gutentor-tabs-list gutentor-single-item-4\" data-index=\"gutentor-single-item-4\"><div class=\"gutentor-single-item-tabs gutentor-single-item\">\u51fd\u5f0f<\/div><\/span><span class=\"gutentor-tabs-list gutentor-single-item-5\" data-index=\"gutentor-single-item-5\"><div class=\"gutentor-single-item-tabs gutentor-single-item\">\u5be6\u7fd2<\/div><\/span><\/div><div class=\"gutentor-tabs-content-wrap text-left\"><div class=\"gutentor-single-item gutentor-tabs-content gutentor-single-item-0 gutentor-tab-content-active\"><div class=\"gutentor-single-item-tabs gutentor-single-item\"><div class=\"gutentor-single-item-content\"><p><a href=\"https:\/\/www.block.tw\/blog\/arduinoinfo\/\">Arduino \u7c21\u4ecb<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduinoide\/\">\u6e96\u5099\u4f60\u7684 Arduino \u958b\u767c\u5de5\u5177<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/start_esp-12ef\/\">\u6e96\u5099\u4f60\u7684 ESP12E\/F \u958b\u767c\u5de5\u5177<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-uno-hardware\/\">Arduino Uno \u786c\u9ad4<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-nano-pin\/\">Arduino nano \u786c\u9ad4<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/esp-12fesp8266hardware\/\">ESP-12F(ESP8266)\u786c\u9ad4<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-structure\/\">Arduino \u7a0b\u5f0f\u8a9e\u6cd5<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-lib-zip\">\u532f\u5165 zip \u7a0b\u5f0f\u5eab<\/a> <br><\/p><\/div><\/div><\/div><div class=\"gutentor-single-item gutentor-tabs-content gutentor-single-item-1\"><div class=\"gutentor-single-item-tabs gutentor-single-item\"><div class=\"gutentor-single-item-content\"><p><a href=\"https:\/\/www.block.tw\/blog\/camel-case\/\">\u99dd\u5cf0\u5f0f\u547d\u540d\u6cd5<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/uart\/\">UART \u4e32\u5217\u901a\u8a0a<\/a> <br><a href=\"https:\/\/www.block.tw\/blog\/arduino-pwm-control\/\">PWM\u63a7\u5236<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/scankeyboard\/\">\u9375\u76e4\u6383\u63cf<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/thingspeak_account\/\">ThingSpeak \u96f2\u7aef\u8cc7\u6599\u5eab \u5e33\u865f\u7533\u8acb<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/thingspeak_setup\/\">ThingSpeak \u96f2\u7aef\u8cc7\u6599\u5eab \u8a2d\u5b9a<\/a><\/p><\/div><\/div><\/div><div class=\"gutentor-single-item gutentor-tabs-content gutentor-single-item-2\"><div class=\"gutentor-single-item-tabs gutentor-single-item\"><div class=\"gutentor-single-item-content\"><p><a href=\"https:\/\/www.block.tw\/blog\/arduino-decimal\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/arduino-decimal\">Arduino \u9032\u5236\u8868\u793a<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-array\/\">Arduino \u9663\u5217<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-variable\/\">Arduino \u5e38\u6578\u8207\u8b8a\u6578<\/a><br><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-arithmetic\/\">Arduino \u7b97\u6578\u904b\u7b97\u5b50<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-compound-operator\/\">Arduino \u8907\u5408\u904b\u7b97\u5b50<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-boolean\/\">Arduino \u5e03\u6797\u904b\u7b97\u5b50<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-compare\/\">Arduino \u6bd4\u8f03\u904b\u7b97\u5b50<\/a><br><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-ide-error\">Arduino IDE \u932f\u8aa4\u8a0a\u606f<\/a><\/p><\/div><\/div><\/div><div class=\"gutentor-single-item gutentor-tabs-content gutentor-single-item-3\"><div class=\"gutentor-single-item-tabs gutentor-single-item\"><div class=\"gutentor-single-item-content\"><p><a href=\"https:\/\/www.block.tw\/blog\/arduino-for\/\">Arduino for \u8ff4\u5708<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-if\/\">Arduino if \u689d\u4ef6\u5224\u65b7<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-switch\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/arduino-switch\/\">Arduino switch \u9078\u64c7\u6307\u4ee4<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-while\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/arduino-while\/\">Arduino while \u8ff4\u5708<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-do-while\">Arduino do while \u8ff4\u5708<\/a><\/p><\/div><\/div><\/div><div class=\"gutentor-single-item gutentor-tabs-content gutentor-single-item-4\"><div class=\"gutentor-single-item-tabs gutentor-single-item\"><div class=\"gutentor-single-item-content\"><p><a href=\"https:\/\/www.block.tw\/blog\/arduino-digital\/\">Arduino \u6578\u4f4dI\/O\u51fd\u5f0f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-%e9%a1%9e%e6%af%94i-o%e6%8c%87%e4%bb%a4\/\">Arduino \u985e\u6bd4I\/O\u51fd\u5f0f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-time\/\">Arduino \u6642\u9593\u51fd\u5f0f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-math\/\">Arduino \u6578\u5b78\u51fd\u5f0f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-communication\/\">Arduino \u901a\u8a0a\u7269\u4ef6\u51fd\u5f0f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/tone\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/tone\">Arduino \u767c\u97f3\u51fd\u5f0f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/myfunction\/\">Arduino \u81ea\u5b9a\u51fd\u5f0f<\/a><\/p><\/div><\/div><\/div><div class=\"gutentor-single-item gutentor-tabs-content gutentor-single-item-5\"><div class=\"gutentor-single-item-tabs gutentor-single-item\"><div class=\"gutentor-single-item-content\"><p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-output\/\" target=\"_blank\">Arduino \u8f38\u51fa\u5be6\u7fd2<\/a>(\u55ae\u71c8\u9583\u720d)<br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-output-easy\" target=\"_blank\">Arduino \u8f38\u51fa\u5be6\u7fd2<\/a>(\u8dd1\u99ac\u71c8-\u611a\u516c\u79fb\u5c71)<br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-output-for\/\" target=\"_blank\">Arduino \u8f38\u51fa\u5be6\u7fd2<\/a>(\u8dd1\u99ac\u71c8-for\u8ff4\u5708)<br><a href=\"https:\/\/www.block.tw\/blog\/arduino-digital-input\">Arduino \u6578\u4f4d\u8f38\u5165\u5be6\u7fd2<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/input-pullup\/\">Arduino \u6578\u4f4d\u8f38\u5165\u5be6\u7fd2(INPUT_PULLUP)<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-alalog-input\" target=\"_blank\">Arduino \u985e\u6bd4\u8f38\u5165\u5be6\u7fd2<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-pwm\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/arduino-pwm\/\" target=\"_blank\">Arduino PWM <\/a><a href=\"https:\/\/www.block.tw\/blog\/arduino-pwm\/\">\u5be6\u7fd2<\/a> (\u547c\u5438\u71c8)<br> <a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-ldr-3led\/\" data-type=\"URL\" target=\"_blank\">Arduino PWM \u5be6\u7fd2<\/a> (\u5149\u611f\u61c9\u8abf\u5149\u71c8) <br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-88-led-matrix-max7219\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/arduino-88-led-matrix-max7219\" target=\"_blank\">Arduino 8&#215;8 LED Matrix MAX7219 \u5be6\u7fd2<\/a> <br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-greenMan\" data-type=\"URL\" target=\"_blank\">Arduino \u7d05\u7da0\u71c8\u5c0f\u7da0\u4eba \u5be6\u7fd2<\/a> <br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/88-led-matrix-max7219-clock\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/88-led-matrix-max7219-clock\/\" target=\"_blank\">Arduino \u8a08\u6642\u5668 \u5be6\u7fd2<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/musicbox\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/musicbox\" target=\"_blank\">Arduino \u97f3\u6a02\u76d2<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/keyboard\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/keyboard\/\" target=\"_blank\">Arduino \u96fb\u5b50\u7434(\u9375\u76e4\u6383\u63cf)<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/dht11\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/dht11\/\" target=\"_blank\">Arduino DHT11 \u6eab\u6fd5\u5ea6\u611f\u61c9\u5668<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/oled\/\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/oled\/\" target=\"_blank\">Arduino OLED \u986f\u793a<\/a><br><span style=\"color: #0693e3;\" class=\"ugb-highlight\"><a href=\"https:\/\/www.block.tw\/blog\/arduino-hcsr04\/\">Arduino \u8d85\u97f3\u6ce2\u6e2c\u8ddd\u6a21\u7d44 HC-SR04<\/a><\/span><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-runtime\/\">Arduino \u57f7\u884c\u6642\u9593\u5be6\u7fd2<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/arduino-captest\/\">Arduino \u96fb\u5bb9\u6e2c\u8a66\u5668<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-irr\/\" target=\"_blank\">Arduino \u7d05\u5916\u7dda\u63a5\u6536\u5be6\u7fd2<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/arduino-irsend-epson\/\" target=\"_blank\">Arduino \u7d05\u5916\u7dda\u767c\u5c04\u5be6\u7fd2 EPSON \u6295\u5f71\u6a5f\u63a7\u5236 <\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/esp12f-iot-plug-mqtt\" target=\"_blank\">ESP-12F \u7db2\u8def\u667a\u6167\u958b\u95dc(MQTT)<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.block.tw\/blog\/esp-12fesp8266-max31855-mqtt-thingspeak\" target=\"_blank\">ESP-12F \u96f2\u7aef\u8a18\u9304\u578b K-Type \u6eab\u5ea6\u8a08(MQTT  ThingSpeak)<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/esp-12f-ircontrolbyphone\/\">ESP-12F \u624b\u6a5f\u96f2\u7aef\u7d05\u5916\u7dda\u63a7\u5236<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/esp-12f-webradio\" data-type=\"URL\" data-id=\"https:\/\/www.block.tw\/blog\/esp-12f-webradio\">ESP-12F \u7db2\u8def\u96fb\u53f0\u6536\u97f3\u6a5f<\/a><br><a href=\"https:\/\/www.block.tw\/blog\/esp12f-edrum\">ESP-12F \u96fb\u5b50\u9f13<\/a><\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"<p>\u7576\u6211\u5011\u8981\u505a\u4e00\u500b\u9060\u7aef\u63a7\u5236\u7684\u5c08\u984c\u6642\uff0c\u6700\u597d\u7684\u65b9\u5f0f\u662f\u8b93\u8a72\u88dd\u7f6e\u9023\u4e0a\u7db2\u8def\uff0c\u5982\u679c\u80fd\u8de8\u7db2\u8def\u4e14\u4e0d\u4fb7\u9650\u5728\u5340\u57df\u7db2\u8def\u5167\u624d\u80fd\u63a7\u5236\u6642\uff0c\u5c31\u9700&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/www.block.tw\/blog\/esp12f-iot-plug-mqtt\/\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70,3],"tags":[82,81,78,84,83],"class_list":["post-2799","post","type-post","status-publish","format-standard","hentry","category-internship","category-mcu","tag-esp12","tag-esp8266","tag-iot","tag-mqtt","tag-83"],"gutentor_comment":0,"featured_image_urls":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","post-thumbnail":"","mesmerize-full-hd":""},"post_excerpt_stackable":"<p>\u7269\u806f\u7db2 \u7576\u6211\u5011\u8981\u505a\u4e00\u500b\u9060\u7aef\u63a7\u5236\u7684\u5c08\u984c\u6642\uff0c\u6700\u597d\u7684\u65b9\u5f0f\u662f\u8b93\u8a72\u88dd\u7f6e\u9023\u4e0a\u7db2\u8def\uff0c\u5982\u679c\u80fd\u8de8\u7db2\u8def\u4e14\u4e0d\u4fb7\u9650\u5728\u5340\u57df\u7db2\u8def\u5167\u624d\u80fd\u63a7\u5236\u6642\uff0c\u5c31\u9700\u8981\u6709\u4e00\u500b\u96f2\u7aef\u4f3a\u670d\u5668\u3002\u96f2\u7aef\u4f3a\u670d\u5668\u53ef\u4ee5\u81ea\u5df1\u67b6\u8a2d\uff0c\u4e5f\u53ef\u4ee5\u627e\u5c0b\u514d\u8cbb\u63d0\u4f9b\u7684\u4f3a\u670d\u5668\u3002\u514d\u8cbb\u63d0\u4f9b\u7684&#8230;<\/p>\n","category_list":"<a href=\"https:\/\/www.block.tw\/blog\/category\/mcu\/internship\/\" rel=\"category tag\">Arduino \u5be6\u7fd2<\/a>, <a href=\"https:\/\/www.block.tw\/blog\/category\/mcu\/\" rel=\"category tag\">\u5fae\u8655\u7406\u6a5f<\/a>","author_info":{"name":"mcu","url":"https:\/\/www.block.tw\/blog\/author\/mcu\/"},"comments_num":"0 comments","featured_image_urls_v2":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","post-thumbnail":"","mesmerize-full-hd":""},"post_excerpt_stackable_v2":"<p>\u7269\u806f\u7db2 \u7576\u6211\u5011\u8981\u505a\u4e00\u500b\u9060\u7aef\u63a7\u5236\u7684\u5c08\u984c\u6642\uff0c\u6700\u597d\u7684\u65b9\u5f0f\u662f\u8b93\u8a72\u88dd\u7f6e\u9023\u4e0a\u7db2\u8def\uff0c\u5982\u679c\u80fd\u8de8\u7db2\u8def\u4e14\u4e0d\u4fb7\u9650\u5728\u5340\u57df\u7db2\u8def\u5167\u624d\u80fd\u63a7\u5236\u6642\uff0c\u5c31\u9700\u8981\u6709\u4e00\u500b\u96f2\u7aef\u4f3a\u670d\u5668\u3002\u96f2\u7aef\u4f3a\u670d\u5668\u53ef\u4ee5\u81ea\u5df1\u67b6\u8a2d\uff0c\u4e5f\u53ef\u4ee5\u627e\u5c0b\u514d\u8cbb\u63d0\u4f9b\u7684\u4f3a\u670d\u5668\u3002\u514d\u8cbb\u63d0\u4f9b\u7684&#8230;<\/p>\n","category_list_v2":"<a href=\"https:\/\/www.block.tw\/blog\/category\/mcu\/internship\/\" rel=\"category tag\">Arduino \u5be6\u7fd2<\/a>, <a href=\"https:\/\/www.block.tw\/blog\/category\/mcu\/\" rel=\"category tag\">\u5fae\u8655\u7406\u6a5f<\/a>","author_info_v2":{"name":"mcu","url":"https:\/\/www.block.tw\/blog\/author\/mcu\/"},"comments_num_v2":"0 comments","_links":{"self":[{"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/posts\/2799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/comments?post=2799"}],"version-history":[{"count":42,"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/posts\/2799\/revisions"}],"predecessor-version":[{"id":3000,"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/posts\/2799\/revisions\/3000"}],"wp:attachment":[{"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/media?parent=2799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/categories?post=2799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.block.tw\/blog\/wp-json\/wp\/v2\/tags?post=2799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}