衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Raspberry Pi樹莓派使用Python實現MQTT通信設計

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

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

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

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

Paho 項目的創建旨在為機器對機器 (M2M) 和物聯網 (IoT) 提供開放和標準消息傳遞協議的可擴展的開源的應用程序實現。

Paho 官網https://www.eclipse.org/paho/

1,安裝Paho

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

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

pip install paho-mqtt

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

pip3 install paho-mqtt

又或者是使用virtualenv虛擬環境中安裝

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)

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

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

當服務器發布/lingshun/mqtt_message主題的信息時,本程序就會收到并顯示該信息內容。

完整代碼如下:

# 加載庫
import paho.mqtt.client as mqtt

broker = "127.0.0.1" # 使用IP地址需要在服務器端已經部署MQTT服務端,并設置允許遠程訪問
port = 1883 # MQTT 默認端口
keepalive = 60 # 連接保持時間
topic = "/lingshun/mqtt_message" # 需要訂閱的主題

# 當客戶端收到服務器的CONNACK響應時的回調
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    # 在on_connect()中訂閱意味著,如果我們失去連接并重新連接,那么訂閱將被更新。
    client.subscribe(topic)

# 當從服務器收到PUBLISH消息時的回調。
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client = mqtt.Client() #  創建客戶 
client.on_connect = on_connect # 當 發生連接時 回調的函數
client.on_message = on_message # 當 收到信息時 回調的函數
client.connect(broker, port, keepalive)  # 建立連接

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

命令行運行該程序:

python3 paho-subscription.py

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

3 發布主題(publish topic)

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

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

完整代碼如下:

# 加載庫
import paho.mqtt.client as mqtt
import time

broker = "127.0.0.1" # 使用IP地址需要在服務器端已經部署MQTT服務端,并設置允許遠程訪問
port = 1883 # MQTT 默認端口
keepalive = 60 # 連接保持時間
topic = "/lingshun/mqtt_message" # 需要發布的主題

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)中運行發布主題的程序paho-publish.py

在 命令行輸入:

python3 paho-publish.py

實現本地MQTT通信

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

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




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2913

    文章

    44923

    瀏覽量

    376991
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037
  • Raspberry Pi
    +關注

    關注

    2

    文章

    559

    瀏覽量

    22342
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105874
  • MQTT
    +關注

    關注

    5

    文章

    653

    瀏覽量

    22691

原文標題:Raspberry Pi 樹莓派使用Python實現 MQTT通信(Paho庫)

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

收藏 人收藏

    評論

    相關推薦

    樹莓5,Raspberry Pi 5 評測

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

    如何制作Raspberry Pi樹莓的SD卡

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

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

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

    什么是樹莓Raspberry Pi

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

    完整版Raspberry Pi樹莓電路圖

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

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

    本文檔的主要內容詳細介紹的是Raspberry Pi樹莓使用說明總結資料免費下載。
    發表于 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>使用說明總結資料免費下載

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

    本文檔的主要內容詳細介紹的是樹莓Raspberry Pi ZeroW的電路原理圖免費下載。
    發表于 08-14 08:00 ?86次下載
    <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的電路原理圖免費下載

    本文檔的主要內容詳細介紹的是樹莓Raspberry Pi Zero的電路原理圖免費下載。
    發表于 08-14 08:00 ?75次下載
    <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代原先尺寸的一半大小,卻有著更加優異的性能表現。
    的頭像 發表于 01-02 11:34 ?4086次閱讀
    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 簡介
    的頭像 發表于 01-02 14:18 ?3107次閱讀
    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(樹莓)操作系統的安裝方法

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

    學習Python的雙重選擇: 樹莓和行空板

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

    樹莓Pi5】樹莓 Raspberry Pi 5 正式發布!

    這款 Pi 5從英國樹莓總部跨洋而來,作為樹莓的官方代理商,上海晶珩EDATEC榮幸地在首發時刻,率先揭開了
    的頭像 發表于 09-28 17:30 ?2343次閱讀
    【<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 正式發布!

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

    每當發布新一代的樹莓Raspberry Pi)時,熱控制問題都會引發廣泛討論。人們都在思考是否有必要采取措施以控制熱量,以及如果需要,如何最有效地
    的頭像 發表于 10-13 14:41 ?1041次閱讀
    加熱和冷卻<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樹莓新手指南

    電子發燒友網站提供《Raspberry Pi樹莓新手指南.pdf》資料免費下載
    發表于 12-23 17:05 ?0次下載
    现场百家乐官网电话投注| 百家乐官网只打一种牌型| 百家乐官网那个平台信誉高| 百家乐官网筹码皇冠| 百家乐单人操作扫描道具| 大发888黄金版| 网上百家乐官网哪里好| 线上百家乐官网的玩法技巧和规则 | 澳门玩百家乐官网的玩法技巧和规则 | 大发888官方网站| 观塘区| 在线玩百家乐官网的玩法技巧和规则 | 菠菜百家乐官网娱乐城| 24山方向上| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 百家乐官网api| 狮威百家乐娱乐网| 现金棋牌游戏平台 | 网上玩百家乐官网的玩法技巧和规则 | 大中华百家乐的玩法技巧和规则| 聊城市| 百家乐高手投注法| 德州扑克发牌顺序| 百家乐官网电投网址| 百家乐赌场论坛在线| 六合彩特码| 博E百百家乐官网的玩法技巧和规则| 威尼斯人娱乐棋牌app| 百家乐官网视频游戏冲值| 百家乐电话投注多少| 足球投注网址| 阳宅24方位座向| 大发888怎么提款| 女神百家乐官网娱乐城| 玩百家乐都是什么人| 百家乐官网赌机凤凰软件| 利澳百家乐娱乐城| 真人百家乐官网打法| 凯时娱乐城官网| 百家乐官网游戏筹码| 娱乐城大全|