{"id":7618,"date":"2020-11-19T15:55:35","date_gmt":"2020-11-19T07:55:35","guid":{"rendered":"https:\/\/blog.hoyo.idv.tw\/?p=7618"},"modified":"2024-07-02T15:18:09","modified_gmt":"2024-07-02T07:18:09","slug":"mqtt-1-%e4%bd%bf%e7%94%a8%e5%85%8d%e8%b2%bb%e5%85%ac%e9%96%8b%e7%9a%84-mqtt-broker-server-%e5%ad%b8%e7%bf%92%e5%a6%82%e4%bd%95%e8%a8%82%e9%96%b1%e3%80%81%e7%99%bc%e8%a1%8c%e6%94%b6%e7%99%bc","status":"publish","type":"post","link":"https:\/\/blog.hoyo.idv.tw\/?p=7618","title":{"rendered":"MQTT - 1. \u4f7f\u7528\u514d\u8cbb\u516c\u958b\u7684 MQTT Broker Server \u5b78\u7fd2\u5982\u4f55\u8a02\u95b1\u3001\u767c\u884c(\u6536\u767c\u8cc7\u6599)"},"content":{"rendered":"<p>--<\/p>\n<pre class=\"lang:default decode:true \">MQTT \u5ba2\u6237\u7aef\u6574\u4e2a\u751f\u547d\u5468\u671f\u7684\u884c\u4e3a\u53ef\u4ee5\u6982\u62ec\u4e3a\uff1a\u5efa\u7acb\u8fde\u63a5\u3001\u8ba2\u9605\u4e3b\u9898\u3001\u63a5\u6536\u6d88\u606f\u5e76\u5904\u7406\u3001\u5411\u6307\u5b9a\u4e3b\u9898\u53d1\u5e03\u6d88\u606f\u3001\u53d6\u6d88\u8ba2\u9605\u3001\u65ad\u5f00\u8fde\u63a5\u3002<\/pre>\n<p>\u7bc0\u9304\uff1a<a href=\"https:\/\/docs.emqx.net\/broker\/latest\/cn\/development\/client.html\" target=\"_blank\" rel=\"noopener\"> MQTT \u5ba2\u6237\u7aef\u5e93 <\/a><\/p>\n<p>--<\/p>\n<h2>\u516c\u958b MQTT Borker<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.emqx.com\/en\/mqtt\/public-mqtt5-broker\" target=\"_blank\" rel=\"noopener\">The Free Global Public MQTT Broker | Try Now | EMQ (emqx.com)<\/a>\u00a0-\u00a0broker.emqx.io:1883<\/li>\n<li style=\"text-align: left;\"><a href=\"https:\/\/www.hivemq.com\/public-mqtt-broker\/\" target=\"_blank\" rel=\"noopener\">The Public MQTT Broker by HiveMQ - Check out our MQTT Demo<\/a>\u00a0- broker.hivemq.com:1883<br \/>\n<a href=\"https:\/\/www.mqtt-dashboard.com\/\">HiveMQ Dashboard (mqtt-dashboard.com)<\/a> HiveMQ \u76e3\u63a7<\/li>\n<li><a href=\"https:\/\/test.mosquitto.org\/\" target=\"_blank\" rel=\"noopener\">test.mosquitto.org<\/a>\u00a0-\u00a0test.mosquitto.org:1883<\/li>\n<li><a href=\"https:\/\/iot.eclipse.org\/projects\/sandboxes\/\" target=\"_blank\" rel=\"noopener\">Sandboxes | IoT development made simple<\/a> -\u00a0mqtt.eclipse.org:1883<\/li>\n<\/ul>\n<p>\u5efa\u8b70\u9078\u64c7 <strong>broker.emqx.io<\/strong> \u6216 <strong>broker.hivemq.com<\/strong>\uff0c\u9019\u5169\u53f0\u4e3b\u6a5f\u540c\u6642\u652f\u63f4 WebSocket \u548c SSL \u624d\u53ef\u4ee5\u6e2c\u8a66\u7db2\u9801 WebSocket \u548c MQTT \u7684\u901a\u8a0a<\/p>\n<p>--<\/p>\n<h2>\u7a0b\u5f0f\u53c3\u8003<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.steves-internet-guide.com\/python-mqtt-publish-subscribe\/\" target=\"_blank\" rel=\"noopener\">Simple Python MQTT Publish and Subscribe Example Script<\/a><\/li>\n<\/ul>\n<p>\u4ee5\u4e0b Python \u7bc4\u4f8b\u7a0b\u5f0f\u5df2\u7d93\u6839\u64da\u53ef\u7528 MQTT Broker \u4fee\u6539<\/p>\n<p>\u7a0b\u5f0f\u5148\u8a02\u95b1\u00a0house\/bulb1 \u4e3b\u984c\uff0c\u7136\u5f8c\u767c\u884c\u00a0house\/bulb1 \u6b64\u4e3b\u984c\u53ca\u5167\u5bb9<\/p>\n<pre class=\"lang:python decode:true\">import time\r\nimport paho.mqtt.client as paho\r\n\r\nbroker = \"broker.emqx.io\"\r\n\r\n# define callback\r\ndef on_message(client, userdata, message):\r\n    time.sleep(1)\r\n    print(\"received message =\", str(message.payload.decode(\"utf-8\")))\r\n\r\nclient = paho.Client(\"client-001\")  # create client object client1.on_publish = on_publish #assign function to callback client1.connect(broker,port) #establish connection client1.publish(\"house\/bulb1\",\"on\")\r\n######Bind function to callback\r\nclient.on_message = on_message\r\n#####\r\nprint(\"connecting to broker \", broker)\r\nclient.connect(broker)  # connect\r\nclient.loop_start()  # start loop to process received messages\r\nprint(\"subscribing \")\r\nclient.subscribe(\"house\/bulb1\")  # subscribe\r\nprint(\"publishing \")\r\nclient.publish(\"house\/bulb1\", \"on\")  # publish\r\ntime.sleep(3)\r\nclient.disconnect()  # disconnect\r\nclient.loop_stop()  # stop loop<\/pre>\n<p>\u904b\u4f5c\u7d50\u679c<\/p>\n<pre class=\"lang:default decode:true \">connecting to broker  broker.emqx.io\r\nsubscribing \r\npublishing \r\nreceived message = on<\/pre>\n<p>--<\/p>\n<h2>Topic \u842c\u7528\u5b57\u5143<\/h2>\n<ul>\n<li><a href=\"https:\/\/blog.maxkit.com.tw\/2014\/02\/mqttsubscribe-message.html\" target=\"_blank\" rel=\"noopener\">MQTT(\u4e94)SUBSCRIBE Message<\/a><\/li>\n<\/ul>\n<p>#<\/p>\n<pre class=\"lang:default decode:true\">finance\/stock\/ibm\/#\r\n\r\nfinance\/stock\/ibm\r\nfinance\/stock\/ibm\/closingprice\r\nfinance\/stock\/ibm\/currentprice<\/pre>\n<p>+<\/p>\n<pre class=\"lang:default decode:true\">finance\/stock\/+\r\n\/finance\/stock\/ibm\r\n\/finance\/stock\/xyz\r\n\r\n\u4e0d\u5339\u914d\r\n\/finance\/stock\/ibm\/closingprice<\/pre>\n<p>--<\/p>\n<h2>Workerman Socket VS MQTT<\/h2>\n<ul>\n<li>MQTT \u8981\u63a5\u6536\u7684\u8cc7\u6599\u5fc5\u9808\u81ea\u5df1\u8a02\u95b1\uff0c\u5c11\u4e86\u591a\u4e86\u90fd\u6709\u554f\u984c\uff0cSocket \u8981\u81ea\u5df1\u8655\u7406\u8cc7\u6599\u6d41<\/li>\n<li>\u50b3\u9001\u6642\u65b7\u7dda Socket \u5c31\u662f\u5931\u6557\uff0cMQTT \u6839\u64da QoS \u653f\u7b56\u53ef\u4ee5\u4fdd\u8b49\u8cc7\u6599\u7684\u9001\u9054\u3002\u7576 QoS \u70ba 0 \u6642\uff0c\u77ed\u66ab\u7684\u65b7\u7dda (\u62d4\u7db2\u8def\u7dda10\u79d2) \u4e5f\u80fd\u6210\u529f\u9001\u9054<\/li>\n<li>\u4e3b\u6a5f\u7aef\u9808\u8655\u7406\u7684\u7a0b\u5f0f Socket \u53ef\u4ee5\u5beb\u5728 Workerman \u5167\uff0cMQTT \u56e0\u70ba Server \u53ea\u662f\u4ee3\u7406\uff0c\u6240\u4ee5\u7a0b\u5f0f\u5fc5\u9808\u5206\u958b\uff0c\u4ee5\u5065\u5eb7\u5ea6\u4f86\u8aaa MQTT \u8f03\u4f73\uff1bSocket \u7a0b\u5f0f\u4e00\u81f4\u6027\u53ca\u5373\u6642\u6027\u8f03\u4f73<\/li>\n<\/ul>\n<p>--<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"7618\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;22,450&nbsp;total views<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>-- MQTT \u5ba2\u6237\u7aef\u6574\u4e2a\u751f\u547d...<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"7618\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;22,450&nbsp;total views<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[319],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/7618"}],"collection":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7618"}],"version-history":[{"count":21,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/7618\/revisions"}],"predecessor-version":[{"id":13090,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/7618\/revisions\/13090"}],"wp:attachment":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}