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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

在 Python 中使用 MQTT的方法

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

Python 是一種廣泛使用的解釋型、高級(jí)編程、通用型編程語(yǔ)言。Python 的設(shè)計(jì)哲學(xué)強(qiáng)調(diào)代碼的可讀性和簡(jiǎn)潔的語(yǔ)法(尤其是使用空格縮進(jìn)劃分代碼塊,而非使用大括號(hào)或者關(guān)鍵詞)。Python 讓開(kāi)發(fā)者能夠用更少的代碼表達(dá)想法,不管是小型還是大型程序,該語(yǔ)言都試圖讓程序的結(jié)構(gòu)清晰明了。

MQTT 是一種基于發(fā)布/訂閱模式的 輕量級(jí)物聯(lián)網(wǎng)消息傳輸協(xié)議 ,可以用極少的代碼和帶寬為聯(lián)網(wǎng)設(shè)備提供實(shí)時(shí)可靠的消息服務(wù),它廣泛應(yīng)用于物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、智能硬件、車(chē)聯(lián)網(wǎng)、電力能源等行業(yè)。

本文主要介紹如何在 Python 項(xiàng)目中使用 paho-mqtt 客戶(hù)端庫(kù) ,實(shí)現(xiàn)客戶(hù)端與 MQTT 服務(wù)器的連接、訂閱、取消訂閱、收發(fā)消息等功能。

項(xiàng)目初始化

本項(xiàng)目使用 Python 3.6 進(jìn)行開(kāi)發(fā)測(cè)試,讀者可用如下命令確認(rèn) Python 的版本。

➜ ~ python3 --version Python 3.6.7選擇 MQTT 客戶(hù)端庫(kù)

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

Pip 安裝 Paho MQTT 客戶(hù)端

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

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

本文將使用 EMQ X 提供的 免費(fèi)公共 MQTT 服務(wù)器 ,該服務(wù)基于 EMQ X 的 MQTT 物聯(lián)網(wǎng)云平臺(tái) 創(chuàng)建。服務(wù)器接入信息如下:

Broker: broker.emqx.io TCP Port: 1883 Websocket Port: 8083 導(dǎo)入 Paho MQTT客戶(hù)端

from paho.mqtt import client as mqtt_client設(shè)置 MQTT Broker 連接參數(shù)

設(shè)置 MQTT Broker 連接地址,端口以及 topic,同時(shí)我們調(diào)用 Python random.randint 函數(shù)隨機(jī)生成 MQTT 客戶(hù)端 id。

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

編寫(xiě)連接回調(diào)函數(shù) on_connect ,該函數(shù)將在客戶(hù)端連接后被調(diào)用,在該函數(shù)中可以依據(jù) rc 來(lái)判斷客戶(hù)端是否連接成功。通常同時(shí)我們將創(chuàng)建一個(gè) MQTT 客戶(hù)端,該客戶(hù)端將連接到 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發(fā)布消息

首先定義一個(gè) while 循環(huán)語(yǔ)句,在循環(huán)中我們將設(shè)置每秒調(diào)用 MQTT 客戶(hù)端 publish 函數(shù)向 /python/mqtt 主題發(fā)送消息。

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訂閱消息

編寫(xiě)消息回調(diào)函數(shù) on_message ,該函數(shù)將在客戶(hù)端從 MQTT Broker 收到消息后被調(diào)用,在該函數(shù)中我們將打印出訂閱的 topic 名稱(chēng)以及接收到的消息內(nèi)容。

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完整代碼消息發(fā)布代碼

# 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()測(cè)試消息發(fā)布

運(yùn)行 MQTT 消息發(fā)布代碼,我們將看到客戶(hù)端連接成功,并且成功將消息發(fā)布。

python3 pub.py

在 Python 中使用 MQTT的方法

消息訂閱

運(yùn)行 MQTT 消息訂閱代碼,我們將看到客戶(hù)端連接成功,并且成功接收到發(fā)布的消息。

python3 sub.py

在 Python 中使用 MQTT的方法

總結(jié)

至此,我們完成了使用 paho-mqtt 客戶(hù)端連接到 公共 MQTT 服務(wù)器 ,并實(shí)現(xiàn)了測(cè)試客戶(hù)端與 MQTT 服務(wù)器的連接、消息發(fā)布和訂閱。

與 C ++ 或 Java 之類(lèi)的高級(jí)語(yǔ)言不同,Python 比較適合設(shè)備側(cè)的業(yè)務(wù)邏輯實(shí)現(xiàn),使用 Python 您可以減少代碼上的邏輯復(fù)雜度,降低與設(shè)備的交互成本。我們相信在物聯(lián)網(wǎng)領(lǐng)域 Python 將會(huì)有更廣泛的應(yīng)用。

接下來(lái)我們將會(huì)陸續(xù)發(fā)布更多關(guān)于物聯(lián)網(wǎng)開(kāi)發(fā)及 Python 的相關(guān)文章,敬請(qǐng)關(guān)注。

以上就是在 Python 中使用 MQTT的方法的詳細(xì)內(nèi)容,更多關(guān)于Python 中使用 MQTT的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩视频在线一区二区三区| 国产一区二区三区日韩精品| 日韩中文欧美| 成人在线视频中文字幕| 国产日韩欧美三级| 欧美亚洲三区| 国产日韩一区二区三区在线| 日本中文字幕一区二区视频| 日韩va欧美va亚洲va久久| 日韩欧美美女在线观看| 日韩av成人高清| 亚州av一区| 91大神在线观看线路一区| 国产欧美久久一区二区三区| 国产精品theporn| 成人午夜亚洲| 国产精品久久久久av电视剧| 久久精品国产大片免费观看| aa国产精品| 亚洲精品在线国产| 亚洲精品大全| 国产欧美日韩一级| 精品黄色一级片| 精品三级久久| 国产农村妇女精品一区二区| 亚洲精品亚洲人成在线观看| 日韩精品一区二区三区中文| 久久狠狠久久| 97精品国产福利一区二区三区| 蜜桃精品在线| 99亚洲视频| 久久精品99久久久| 久久久久久一区二区| 在线日韩av| 亚洲性视频在线| 欧美啪啪一区| 欧美成人基地| 亚洲精品人人| 久久免费影院| 欧美日韩第一| 欧美日韩午夜| 国产黄大片在线观看| 欧美日韩三区| 国产日韩中文在线中文字幕 | 日韩精品欧美精品| 久久精品资源| 国产字幕视频一区二区| 中文字幕一区二区三区日韩精品 | 欧美日本二区| 欧美精品日日操| 中文字幕日本一区二区| 免费在线观看一区| 亚洲精品网址| 麻豆国产精品777777在线| 久久精品中文| 青草久久视频| 在线日韩一区| 欧美在线不卡| 亚洲福利专区| 91成人在线网站| 9999国产精品| 亚洲bt欧美bt精品777| 日韩免费视频| 国产日韩高清一区二区三区在线| 999国产精品| 国产图片一区| 欧美特黄一区| 成人午夜在线| 日韩精品视频在线看| 性欧美xxxx免费岛国不卡电影| 久久精品超碰| 亚州av乱码久久精品蜜桃| 国产欧美日韩亚洲一区二区三区| 欧美在线影院| 精品72久久久久中文字幕| 亚洲欧美视频| 欧美日韩视频网站| 麻豆一区二区在线| 日本在线视频一区二区| 蜜桃视频欧美| 久久精品人人| 日韩精品一区二区三区免费视频| 不卡视频在线| a国产在线视频| 国产精品亚洲综合色区韩国| 国产精品毛片在线| 久久精品亚洲人成影院 | 欧美黄页在线免费观看| 久久高清国产| 久久麻豆精品| 国际精品欧美精品| 国产日韩视频在线| 一区二区电影在线观看| 亚洲午夜久久久久久尤物| 欧美xxxx中国| 国产精品日韩精品在线播放 | 在线综合欧美| 国产专区一区| 日韩在线精品| 国产精品国产三级国产在线观看| 欧美私人啪啪vps| 亚洲毛片在线| 亚洲国产不卡| 1024精品一区二区三区| 黄色aa久久| 国产成人久久精品一区二区三区| 国产日韩中文在线中文字幕| 蜜臀久久99精品久久久画质超高清 | 亚洲夜间福利| 亲子伦视频一区二区三区| 国产传媒在线| 最近高清中文在线字幕在线观看1| 美女尤物国产一区| 日韩在线观看中文字幕| 亚洲精品激情| 亚洲有吗中文字幕| 免费黄网站欧美| 玖玖玖国产精品| 午夜在线视频观看日韩17c| 亚洲激情社区| 美女网站久久| 快she精品国产999| 日av在线不卡| 亚洲精品综合| 亚洲v天堂v手机在线| 日本午夜精品一区二区三区电影| 日韩精品欧美精品| 国产欧美自拍一区| 欧美日韩黄网站| 国产日韩一区二区三区在线播放 | 国产日韩欧美一区二区三区 | 国产精品欧美三级在线观看 | 久久高清国产| 综合激情婷婷| 亚洲免费专区| 欧美私人啪啪vps| 国产高清精品二区| 精品一区二区男人吃奶 | 成人一区而且| 高潮一区二区| 亚洲涩涩在线| 激情婷婷亚洲| 亚洲国产不卡| 亚洲精品123区| 丝袜国产日韩另类美女| 亚洲欧美专区| 国产精品自在| 国产91在线播放精品| 精品国产免费人成网站| 久久影院一区| 蜜桃av一区二区三区电影| 日本va欧美va瓶| 美女视频黄久久| 精品视频免费| 欧美sss在线视频| 欧美不卡视频| 香蕉久久夜色精品国产| 日本一区福利在线| 91成人在线网站| 久久香蕉网站| 日韩精品dvd| 亚洲作爱视频| 久久精品 人人爱| 国产一区二区三区不卡av| 久久精品国产99久久| 视频一区二区中文字幕| 日本不卡视频在线观看| 精品美女视频| 免费欧美一区| 日日夜夜免费精品视频| 麻豆成人综合网| 久久久精品午夜少妇| 视频在线观看一区二区三区| 日本午夜精品久久久久| 精品国产麻豆| 91精品一区国产高清在线gif| 乱人伦精品视频在线观看| 国产精品一级| 欧美肉体xxxx裸体137大胆| 喷白浆一区二区| 麻豆91在线播放| 国产精品88久久久久久| 国产亚洲字幕| 欧美一区二区三区高清视频 | 亚洲日本欧美| 国产中文字幕一区二区三区| 久久影院一区| 日韩av资源网| 色爱av综合网| 一区二区三区网站| 开心激情综合| 最新日韩欧美| 久久久久观看| 亚洲一区二区免费看| 国产伦精品一区二区三区在线播放| 97精品一区| 日韩欧美激情电影| 久久蜜桃精品| 欧美一级网站| 日韩成人亚洲|