0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Raspberry Pi樹莓派使用Python實現(xiàn)MQTT通信設(shè)計

jf_Ufm3lVrj ? 來源:凌順實驗室 ? 2024-03-14 11:45 ? 次閱讀

本示例需要MQTT服務(wù)端的,所以必須先安裝部署 MQTT 服務(wù)端

這次的例子,主要講述如何基于PYTHON的 MQTT 客戶端的使用方法

而在本示例中,將會使用paho-mqtt這個開源的Python庫。

Paho 項目的創(chuàng)建旨在為機器對機器 (M2M) 和物聯(lián)網(wǎng) (IoT) 提供開放和標(biāo)準(zhǔn)消息傳遞協(xié)議的可擴展的開源的應(yīng)用程序?qū)崿F(xiàn)。

Paho 官網(wǎng)https://www.eclipse.org/paho/

1,安裝Paho

最新的穩(wěn)定版本可在Python軟件包索引(PyPi)中找到,可以用以下方式安裝

如果是python2.7,請在命令行輸入:

pip install paho-mqtt

或者使用的是python3,請在命令行輸入:

pip3 install paho-mqtt

又或者是使用virtualenv虛擬環(huán)境中安裝

virtualenv paho-mqtt
source paho-mqtt/bin/activate
pip install paho-mqtt

通過git安裝

要獲得完整的代碼,包括例子和測試,你可以git clonePaho的倉庫

git clone https://github.com/eclipse/paho.mqtt.python

一旦你有了代碼,也可以從倉庫中安裝它。

cd paho.mqtt.python
python setup.py install

2 訂閱主題(subscription topic)

首先我們創(chuàng)建一個用于訂閱主題的python程序文件,例如命名為:paho-subscription.py

該程序主要和服務(wù)器建立連接,并且訂閱指定的主題,例如是:"/lingshun/mqtt_message"

當(dāng)服務(wù)器發(fā)布/lingshun/mqtt_message主題的信息時,本程序就會收到并顯示該信息內(nèi)容。

完整代碼如下:

# 加載庫
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 # 連接保持時間
topic = "/lingshun/mqtt_message" # 需要訂閱的主題

# 當(dāng)客戶端收到服務(wù)器的CONNACK響應(yīng)時的回調(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消息時的回調(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ā)生連接時 回調(diào)的函數(shù)
client.on_message = on_message # 當(dāng) 收到信息時 回調(diào)的函數(shù)
client.connect(broker, port, keepalive)  # 建立連接

# 阻斷調(diào)用,處理網(wǎng)絡(luò)流量,分配回調(diào)并處理重新連接的問題。
# 其他loop*()函數(shù)可以提供一個線程接口和一個手動接口。
client.loop_forever()

命令行運行該程序:

python3 paho-subscription.py

此時,程序正在等待著主題 /lingshun/mqtt_message發(fā)布新信息。

3 發(fā)布主題(publish topic)

現(xiàn)在,我們開始寫發(fā)布主題的程序,新建一個Python程序,例如文件名為:paho-publish.py

該程序,主要演示如何發(fā)布指定主題的信息。大概思路是建立mqtt連接并定義好主題 ,然后每隔1秒發(fā)送一次信息,不斷循環(huán)

完整代碼如下:

# 加載庫
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 # 連接保持時間
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)

在另一個終端(Terminal)中運行發(fā)布主題的程序paho-publish.py

在 命令行輸入:

python3 paho-publish.py

實現(xiàn)本地MQTT通信

對比兩個終端(Terminal)查看,可以看到mqtt在本地中實現(xiàn)了通信。

a1720d80-e1b4-11ee-a297-92fbcf53809c.png




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2909

    文章

    44634

    瀏覽量

    373314
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84682
  • Raspberry Pi
    +關(guān)注

    關(guān)注

    2

    文章

    559

    瀏覽量

    22225
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1707

    瀏覽量

    105629
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    651

    瀏覽量

    22503

原文標(biāo)題:Raspberry Pi 樹莓派使用Python實現(xiàn) MQTT通信(Paho庫)

文章出處:【微信號:凌順實驗室,微信公眾號:凌順實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    樹莓5,Raspberry Pi 5 評測

    Raspberry Pi Zero的15針接線器,而不是原先的22針接線器。還要注意的是,現(xiàn)在有兩個相鄰的接頭,我們現(xiàn)在可以連接兩個攝像頭、兩個DSI顯示器或者混合連接。 樹莓
    發(fā)表于 06-19 14:51

    如何制作Raspberry Pi樹莓的SD卡

    如何制作Raspberry Pi樹莓的SD卡SD卡將包含Raspberry Pi的操作系統(tǒng)(操
    發(fā)表于 06-30 23:53

    【最全】樹莓Raspberry Pi)平臺資源合集

    `資源目錄:樹莓Raspberry Pi)平臺資源大全樹莓的硬件及配置使用Unix系統(tǒng)社區(qū)
    發(fā)表于 08-29 17:37

    什么是樹莓Raspberry Pi

    什么是樹莓Raspberry Pi)?樹莓可以做什么?
    發(fā)表于 07-30 06:21

    完整版Raspberry Pi樹莓電路圖

    完整版Raspberry Pi樹莓電路圖大全
    發(fā)表于 09-25 08:00

    Raspberry Pi樹莓使用說明總結(jié)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Raspberry Pi樹莓使用說明總結(jié)資料免費下載。
    發(fā)表于 05-31 17:54 ?15次下載
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b>使用說明總結(jié)資料免費下載

    樹莓Raspberry Pi ZeroW的電路原理圖免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是樹莓Raspberry Pi ZeroW的電路原理圖免費下載。
    發(fā)表于 08-14 08:00 ?85次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> ZeroW的電路原理圖免費下載

    樹莓Raspberry Pi Zero的電路原理圖免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是樹莓Raspberry Pi Zero的電路原理圖免費下載。
    發(fā)表于 08-14 08:00 ?73次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero的電路原理圖免費下載

    dfrobot樹莓Raspberry Pi Zero簡介

    樹莓Raspberry Pi Zero系列是迄今為止體積最小的卡片式電腦,只有1代原先尺寸的一半大小,卻有著更加優(yōu)異的性能表現(xiàn)。
    的頭像 發(fā)表于 01-02 11:34 ?4013次閱讀
    dfrobot<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero簡介

    dfrobot樹莓Raspberry Pi ZeroW介紹

    微型樹莓控制器系列樹莓Raspberry Pi Zero W 簡介
    的頭像 發(fā)表于 01-02 14:18 ?3035次閱讀
    dfrobot<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> ZeroW介紹

    Raspberry Pi(樹莓)操作系統(tǒng)的安裝方法

    Raspberry Pi(樹莓)需要搭載操作系統(tǒng)才能正常運行。官方支持的操作系統(tǒng)是Raspberry
    的頭像 發(fā)表于 04-02 15:26 ?3113次閱讀

    學(xué)習(xí)Python的雙重選擇: 樹莓和行空板

    Python是一種流行并簡單和易用的編程語言, 吸引了眾多初學(xué)者和專業(yè)開發(fā)人員。許多人選擇使用樹莓Raspberry Pi)作為學(xué)習(xí)
    的頭像 發(fā)表于 09-08 13:53 ?627次閱讀

    樹莓Pi5】樹莓 Raspberry Pi 5 正式發(fā)布!

    這款 Pi 5從英國樹莓總部跨洋而來,作為樹莓的官方代理商,上海晶珩EDATEC榮幸地在首發(fā)時刻,率先揭開了
    的頭像 發(fā)表于 09-28 17:30 ?2212次閱讀
    【<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pi</b>5】<b class='flag-5'>樹莓</b><b class='flag-5'>派</b> <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 正式發(fā)布!

    加熱和冷卻樹莓5(Raspberry Pi5)這是真嘞?

    每當(dāng)發(fā)布新一代的樹莓Raspberry Pi)時,熱控制問題都會引發(fā)廣泛討論。人們都在思考是否有必要采取措施以控制熱量,以及如果需要,如何最有效地
    的頭像 發(fā)表于 10-13 14:41 ?980次閱讀
    加熱和冷卻<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>5(<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>5)這是真嘞?

    Raspberry Pi樹莓新手指南

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi樹莓新手指南.pdf》資料免費下載
    發(fā)表于 12-23 17:05 ?0次下載