本示例需要MQTT服務(wù)端的,所以必須先安裝部署 MQTT 服務(wù)端
這次的例子,主要講述如何基于PYTHON的 MQTT 客戶端的使用方法
而在本示例中,將會(huì)使用paho-mqtt這個(gè)開源的Python庫(kù)。
Paho 項(xiàng)目的創(chuàng)建旨在為機(jī)器對(duì)機(jī)器 (M2M) 和物聯(lián)網(wǎng) (IoT) 提供開放和標(biāo)準(zhǔn)消息傳遞協(xié)議的可擴(kuò)展的開源的應(yīng)用程序?qū)崿F(xiàn)。
Paho 官網(wǎng)https://www.eclipse.org/paho/
1,安裝Paho
最新的穩(wěn)定版本可在Python軟件包索引(PyPi)中找到,可以用以下方式安裝
如果是python2.7,請(qǐng)?jiān)诿钚休斎耄?/p>
pip install paho-mqtt
或者使用的是python3,請(qǐng)?jiān)诿钚休斎耄?/p>
pip3 install paho-mqtt
又或者是使用virtualenv虛擬環(huán)境中安裝
virtualenv paho-mqtt source paho-mqtt/bin/activate pip install paho-mqtt
通過git安裝
要獲得完整的代碼,包括例子和測(cè)試,你可以git clonePaho的倉(cāng)庫(kù)
git clone https://github.com/eclipse/paho.mqtt.python
一旦你有了代碼,也可以從倉(cāng)庫(kù)中安裝它。
cd paho.mqtt.python python setup.py install
2 訂閱主題(subscription topic)
首先我們創(chuàng)建一個(gè)用于訂閱主題的python程序文件,例如命名為:paho-subscription.py
該程序主要和服務(wù)器建立連接,并且訂閱指定的主題,例如是:"/lingshun/mqtt_message"
當(dāng)服務(wù)器發(fā)布/lingshun/mqtt_message主題的信息時(shí),本程序就會(huì)收到并顯示該信息內(nèi)容。
完整代碼如下:
# 加載庫(kù) import paho.mqtt.client as mqtt broker = "127.0.0.1" # 使用IP地址需要在服務(wù)器端已經(jīng)部署MQTT服務(wù)端,并設(shè)置允許遠(yuǎn)程訪問 port = 1883 # MQTT 默認(rèn)端口 keepalive = 60 # 連接保持時(shí)間 topic = "/lingshun/mqtt_message" # 需要訂閱的主題 # 當(dāng)客戶端收到服務(wù)器的CONNACK響應(yīng)時(shí)的回調(diào) def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) # 在on_connect()中訂閱意味著,如果我們失去連接并重新連接,那么訂閱將被更新。 client.subscribe(topic) # 當(dāng)從服務(wù)器收到PUBLISH消息時(shí)的回調(diào)。 def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() # 創(chuàng)建客戶 client.on_connect = on_connect # 當(dāng) 發(fā)生連接時(shí) 回調(diào)的函數(shù) client.on_message = on_message # 當(dāng) 收到信息時(shí) 回調(diào)的函數(shù) client.connect(broker, port, keepalive) # 建立連接 # 阻斷調(diào)用,處理網(wǎng)絡(luò)流量,分配回調(diào)并處理重新連接的問題。 # 其他loop*()函數(shù)可以提供一個(gè)線程接口和一個(gè)手動(dòng)接口。 client.loop_forever()
命令行運(yùn)行該程序:
python3 paho-subscription.py
此時(shí),程序正在等待著主題 /lingshun/mqtt_message發(fā)布新信息。
3 發(fā)布主題(publish topic)
現(xiàn)在,我們開始寫發(fā)布主題的程序,新建一個(gè)Python程序,例如文件名為:paho-publish.py
該程序,主要演示如何發(fā)布指定主題的信息。大概思路是建立mqtt連接并定義好主題 ,然后每隔1秒發(fā)送一次信息,不斷循環(huán)
完整代碼如下:
# 加載庫(kù)
import paho.mqtt.client as mqtt
import time
broker = "127.0.0.1" # 使用IP地址需要在服務(wù)器端已經(jīng)部署MQTT服務(wù)端,并設(shè)置允許遠(yuǎn)程訪問
port = 1883 # MQTT 默認(rèn)端口
keepalive = 60 # 連接保持時(shí)間
topic = "/lingshun/mqtt_message" # 需要發(fā)布的主題
client = mqtt.Client()
client.connect(broker, port)
send_count = 0
while 1:
msg = f"This is the {send_count} message."
result = client.publish(topic, msg)
status = result[0]
if status == 0:
print(f"Send `{msg}` to topic `{topic}`")
else:
print(f"Failed to send message to topic {topic}")
send_count += 1
time.sleep(1)
在另一個(gè)終端(Terminal)中運(yùn)行發(fā)布主題的程序paho-publish.py
在 命令行輸入:
python3 paho-publish.py
實(shí)現(xiàn)本地MQTT通信
對(duì)比兩個(gè)終端(Terminal)查看,可以看到mqtt在本地中實(shí)現(xiàn)了通信。

審核編輯:劉清
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2945文章
47820瀏覽量
414957 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90031 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
622瀏覽量
24020 -
樹莓派
+關(guān)注
關(guān)注
122文章
2078瀏覽量
110470 -
MQTT
+關(guān)注
關(guān)注
5文章
733瀏覽量
25086
原文標(biāo)題:Raspberry Pi 樹莓派使用Python實(shí)現(xiàn) MQTT通信(Paho庫(kù))
文章出處:【微信號(hào):凌順實(shí)驗(yàn)室,微信公眾號(hào):凌順實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
樹莓派5,Raspberry Pi 5 評(píng)測(cè)
【最全】樹莓派(Raspberry Pi)平臺(tái)資源合集
Raspberry Pi樹莓派使用說(shuō)明總結(jié)資料免費(fèi)下載
樹莓派Raspberry Pi ZeroW的電路原理圖免費(fèi)下載
樹莓派Raspberry Pi Zero的電路原理圖免費(fèi)下載
dfrobot樹莓派Raspberry Pi Zero簡(jiǎn)介
Raspberry Pi(樹莓派)操作系統(tǒng)的安裝方法
學(xué)習(xí)Python的雙重選擇: 樹莓派和行空板
【樹莓派Pi5】樹莓派 Raspberry Pi 5 正式發(fā)布!
加熱和冷卻樹莓派5(Raspberry Pi5)這是真嘞?
Raspberry Pi樹莓派使用Python實(shí)現(xiàn)MQTT通信設(shè)計(jì)
評(píng)論