日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在 Python 中使用 MQTT的方法

瀏覽:27日期:2022-07-13 15:10:14

Python 是一種廣泛使用的解釋型、高級編程、通用型編程語言。Python 的設計哲學強調代碼的可讀性和簡潔的語法(尤其是使用空格縮進劃分代碼塊,而非使用大括號或者關鍵詞)。Python 讓開發者能夠用更少的代碼表達想法,不管是小型還是大型程序,該語言都試圖讓程序的結構清晰明了。

MQTT 是一種基于發布/訂閱模式的 輕量級物聯網消息傳輸協議 ,可以用極少的代碼和帶寬為聯網設備提供實時可靠的消息服務,它廣泛應用于物聯網、移動互聯網、智能硬件、車聯網、電力能源等行業。

本文主要介紹如何在 Python 項目中使用 paho-mqtt 客戶端庫 ,實現客戶端與 MQTT 服務器的連接、訂閱、取消訂閱、收發消息等功能。

項目初始化

本項目使用 Python 3.6 進行開發測試,讀者可用如下命令確認 Python 的版本。

➜ ~ python3 --version Python 3.6.7選擇 MQTT 客戶端庫

paho-mqtt 是目前 Python 中使用較多的 MQTT 客戶端庫,它在 Python 2.7 或 3.x 上為客戶端類提供了對 MQTT v3.1 和 v3.1.1 的支持。它還提供了一些幫助程序功能,使將消息發布到 MQTT 服務器變得非常簡單。

Pip 安裝 Paho MQTT 客戶端

Pip 是 Python 包管理工具,該工具提供了對 Python 包的查找、下載、安裝、卸載的功能。

pip3 install -i https://pypi.doubanio.com/simple paho-mqttPython MQTT 使用連接 MQTT 服務器

本文將使用 EMQ X 提供的 免費公共 MQTT 服務器 ,該服務基于 EMQ X 的 MQTT 物聯網云平臺 創建。服務器接入信息如下:

Broker: broker.emqx.io TCP Port: 1883 Websocket Port: 8083 導入 Paho MQTT客戶端

from paho.mqtt import client as mqtt_client設置 MQTT Broker 連接參數

設置 MQTT Broker 連接地址,端口以及 topic,同時我們調用 Python random.randint 函數隨機生成 MQTT 客戶端 id。

broker = ’broker.emqx.io’port = 1883topic = '/python/mqtt'client_id = f’python-mqtt-{random.randint(0, 1000)}’編寫 MQTT 連接函數

編寫連接回調函數 on_connect ,該函數將在客戶端連接后被調用,在該函數中可以依據 rc 來判斷客戶端是否連接成功。通常同時我們將創建一個 MQTT 客戶端,該客戶端將連接到 broker.emqx.io 。

def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc == 0: print('Connected to MQTT Broker!') else: print('Failed to connect, return code %dn', rc) # Set Connecting Client ID client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return client發布消息

首先定義一個 while 循環語句,在循環中我們將設置每秒調用 MQTT 客戶端 publish 函數向 /python/mqtt 主題發送消息。

def publish(client): msg_count = 0 while True: time.sleep(1) msg = f'messages: {msg_count}' result = client.publish(topic, msg) # result: [0, 1] status = result[0] if status == 0: print(f'Send `{msg}` to topic `{topic}`') else: print(f'Failed to send message to topic {topic}') msg_count += 1訂閱消息

編寫消息回調函數 on_message ,該函數將在客戶端從 MQTT Broker 收到消息后被調用,在該函數中我們將打印出訂閱的 topic 名稱以及接收到的消息內容。

def subscribe(client: mqtt_client): def on_message(client, userdata, msg): print(f'Received `{msg.payload.decode()}` from `{msg.topic}` topic') client.subscribe(topic) client.on_message = on_message完整代碼消息發布代碼

# python 3.6import randomimport timefrom paho.mqtt import client as mqtt_clientbroker = ’broker.emqx.io’port = 1883topic = '/python/mqtt'# generate client ID with pub prefix randomlyclient_id = f’python-mqtt-{random.randint(0, 1000)}’def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc == 0: print('Connected to MQTT Broker!') else: print('Failed to connect, return code %dn', rc) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return clientdef publish(client): msg_count = 0 while True: time.sleep(1) msg = f'messages: {msg_count}' result = client.publish(topic, msg) # result: [0, 1] status = result[0] if status == 0: print(f'Send `{msg}` to topic `{topic}`') else: print(f'Failed to send message to topic {topic}') msg_count += 1def run(): client = connect_mqtt() client.loop_start() publish(client)if __name__ == ’__main__’: run()消息訂閱代碼

# python 3.6import randomimport timefrom paho.mqtt import client as mqtt_clientbroker = ’broker.emqx.io’port = 1883topic = '/python/mqtt'# generate client ID with pub prefix randomlyclient_id = f’python-mqtt-{random.randint(0, 1000)}’def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc == 0: print('Connected to MQTT Broker!') else: print('Failed to connect, return code %dn', rc) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return clientdef publish(client): msg_count = 0 while True: time.sleep(1) msg = f'messages: {msg_count}' result = client.publish(topic, msg) # result: [0, 1] status = result[0] if status == 0: print(f'Send `{msg}` to topic `{topic}`') else: print(f'Failed to send message to topic {topic}') msg_count += 1def run(): client = connect_mqtt() client.loop_start() publish(client)if __name__ == ’__main__’: run()消息訂閱代碼# python3.6import randomfrom paho.mqtt import client as mqtt_clientbroker = ’broker.emqx.io’port = 1883topic = '/python/mqtt'# generate client ID with pub prefix randomlyclient_id = f’python-mqtt-{random.randint(0, 100)}’def connect_mqtt() -> mqtt_client: def on_connect(client, userdata, flags, rc): if rc == 0: print('Connected to MQTT Broker!') else: print('Failed to connect, return code %dn', rc) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return clientdef subscribe(client: mqtt_client): def on_message(client, userdata, msg): print(f'Received `{msg.payload.decode()}` from `{msg.topic}` topic') client.subscribe(topic) client.on_message = on_messagedef run(): client = connect_mqtt() subscribe(client) client.loop_forever()if __name__ == ’__main__’: run()測試消息發布

運行 MQTT 消息發布代碼,我們將看到客戶端連接成功,并且成功將消息發布。

python3 pub.py

在 Python 中使用 MQTT的方法

消息訂閱

運行 MQTT 消息訂閱代碼,我們將看到客戶端連接成功,并且成功接收到發布的消息。

python3 sub.py

在 Python 中使用 MQTT的方法

總結

至此,我們完成了使用 paho-mqtt 客戶端連接到 公共 MQTT 服務器 ,并實現了測試客戶端與 MQTT 服務器的連接、消息發布和訂閱。

與 C ++ 或 Java 之類的高級語言不同,Python 比較適合設備側的業務邏輯實現,使用 Python 您可以減少代碼上的邏輯復雜度,降低與設備的交互成本。我們相信在物聯網領域 Python 將會有更廣泛的應用。

接下來我們將會陸續發布更多關于物聯網開發及 Python 的相關文章,敬請關注。

以上就是在 Python 中使用 MQTT的方法的詳細內容,更多關于Python 中使用 MQTT的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本不卡高清| 中文字幕av亚洲精品一部二部| 久久美女精品| 国产99在线| 日本一区二区高清不卡| 亚洲精品福利| 波多野结衣一区| 综合一区在线| 久久国产电影| 视频一区二区三区在线| 亚洲精品动态| 婷婷亚洲五月| av资源亚洲| 久久精品欧洲| 欧美天堂一区二区| 国产精品白丝一区二区三区| 日韩一区二区三免费高清在线观看| 99re国产精品| 久久免费精品| 国产精品网址| 老司机精品在线| 欧美黑人做爰爽爽爽| 久久99视频| 中国字幕a在线看韩国电影| 国产欧美69| 手机在线电影一区| 欧美 日韩 国产一区二区在线视频 | 欧美亚洲一区二区三区| 久久字幕精品一区| 日韩精品中文字幕第1页| 激情欧美日韩一区| 亚洲欧美在线综合| 国产欧美一区二区色老头| 国产一区二区三区不卡av | 中文字幕一区日韩精品| 国产精品一级| 99久久99久久精品国产片果冰| 三级欧美在线一区| 国产精品视频一区二区三区综合| 久久男人av资源站| 夜夜嗨一区二区| 欧美日韩一视频区二区| 黄色在线网站噜噜噜| 宅男噜噜噜66国产日韩在线观看| 日韩高清电影免费| 涩涩av在线| 国产毛片一区| 国产亚洲电影| 福利精品在线| 99久久婷婷| 偷拍欧美精品| 欧美黑人巨大videos精品| 国产精品magnet| 91精品一区国产高清在线gif| 日韩精品中文字幕吗一区二区| 婷婷综合社区| 男女激情视频一区| 亚洲精品伊人| 久久中文欧美| 久久精品1区| 一区久久精品| 日本欧美在线| 日韩激情一区| 日韩一区免费| 亚洲风情在线资源| 日本成人在线一区| 婷婷精品进入| 国产精品成人3p一区二区三区| 成人精品中文字幕| 午夜影院欧美| 国产精品66| 宅男噜噜噜66国产日韩在线观看| 国产精品蜜月aⅴ在线| 欧美日韩日本国产亚洲在线| 免费日韩一区二区三区| 奶水喷射视频一区| 国产一区2区| 欧美一区精品| 久久福利一区| 久久精品91| 精品三区视频| 日韩欧美久久| 香蕉国产精品| av免费不卡国产观看| 日韩和欧美一区二区三区| 婷婷亚洲五月| 四虎成人av| 亚洲精品免费观看| 欧美亚洲激情| 麻豆精品久久久| 一区二区不卡| 国产精品高颜值在线观看| 欧洲亚洲一区二区三区| 黄色成人91| 国产精品丝袜在线播放| 日韩在线中文| 亚洲国产一区二区三区在线播放 | 日韩精品免费一区二区在线观看| 99国产精品久久久久久久| 国产午夜久久av| 日本精品国产| 欧美亚洲日本精品| 日韩精品一区二区三区中文 | 日韩国产欧美三级| 蜜桃久久av一区| 欧美午夜不卡影院在线观看完整版免费| 色爱综合网欧美| 久久亚洲国产精品尤物| 国产视频一区二区在线播放| 日日摸夜夜添夜夜添国产精品| 伊人影院久久| 不卡中文字幕| 99精品在线| 久久精品影视| 韩国精品主播一区二区在线观看| 精品亚洲a∨| 国产精品不卡| 国产欧美88| 国产精品久久久久av电视剧| 日韩影院在线观看| 国产欧美日韩亚洲一区二区三区| 香蕉成人久久| 99精品国产一区二区三区| 国产精品黄色片| 国产精品日韩精品在线播放| 日本一区免费网站| 日本亚洲视频| 日韩欧美精品一区二区综合视频| 亚洲精品综合| 婷婷综合社区| 日韩毛片一区| 亚洲www免费| аⅴ资源天堂资源库在线| 激情欧美丁香| 欧美一区激情| 麻豆视频在线观看免费网站黄| 香蕉久久精品| 日韩精品免费观看视频| 捆绑调教美女网站视频一区| 亚洲人www| 亚洲精品动态| 日韩精品高清不卡| 国产日韩欧美在线播放不卡| 国产精品xxx在线观看| 精品一区视频| 私拍精品福利视频在线一区| 欧美日韩国产传媒| 久久精品国语| 国产婷婷精品| 亚洲美女91| 欧美激情麻豆| 美女av在线免费看| 好吊视频一区二区三区四区| 亚洲日本欧美| 欧美国产亚洲精品| 五月激情久久| 日韩精品首页| 男女男精品网站| 欧美激情一区| 欧美日韩中文一区二区| 日韩在线一二三区| 国产高清视频一区二区| 日本一区二区高清不卡| 黄色免费成人| 国产欧美激情| 99久久99久久精品国产片果冰| 一区二区日韩免费看| 欧美激情久久久久久久久久久| 天堂а√在线最新版中文在线| 91久久国产| 国产区精品区| 免费视频一区三区| **爰片久久毛片| 神马日本精品| 91精品麻豆| 久久精品动漫| 日韩高清在线不卡| 精品视频网站| 免费看欧美美女黄的网站| 欧美黑人巨大videos精品| 亚洲国内欧美| 国产精品分类| 夜夜嗨网站十八久久| 麻豆国产精品一区二区三区 | 欧美性www| 久久久噜噜噜| 亚洲啊v在线免费视频| 日韩成人a**站| 亚洲欧美网站在线观看| 日韩av专区| 日韩免费精品| 涩涩av在线| 久久国产人妖系列| 激情婷婷亚洲| 麻豆一区在线| 在线日韩成人| 日韩在线高清| 国产精品久久国产愉拍| 国产高清一区二区| 精品国产一区二区三区噜噜噜|