日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

怎么樣把Image圖片通過MQTT協(xié)議進行發(fā)送和接收?

admin
2025年6月21日 23:47 本文熱度 90

MQTT 是一種輕量級發(fā)布/訂閱消息的協(xié)議,通常用于具有小型的物聯(lián)網(wǎng)設(shè)備。消息中通常不會包含太多數(shù)據(jù),只是傳感器值。


但是大多數(shù)情況下,MQTT 消息負(fù)載是文本,可能是少量文本或 JSON 數(shù)據(jù)負(fù)載。不過,設(shè)備如何在 MQTT 消息中發(fā)送文件,例如Image圖片.jpg格式文件呢?

這期我們通過整理網(wǎng)上的資料,把具體的方式分享給大家!




使用 MQTT 協(xié)議發(fā)布圖像



使用 MQTT 協(xié)議發(fā)布圖像是一種非常直接的方法。下面的圖像解釋了我們在本期中將要使用的流程。

Step1:首先我們需要在 Python 中讀取我們的圖像文件或其他類型的文件。

with open("./test.jpg",'rb'as file:    filecontent = file.read()


Step2:讀取文件后,我們將圖片轉(zhuǎn)換為字節(jié)數(shù)組然后我們將字節(jié)數(shù)組發(fā)布到我們想要發(fā)送圖片的主題。
    byteArr = bytearray(filecontent)

Step3:在這種情況下,我們使用以下代碼將圖片發(fā)送到名為 photos 的主題。 
    result = client.publish(topic,byteArr,2)msg_status = result[0]if msg_status == 0:    print(f"message : Message sent to topic {topic}")else:    print(f"Failed to send message to topic {topic}")

字節(jié)數(shù)組將發(fā)布到主題。以下是一段完整的代碼,它將幫助您使用 mqtt 協(xié)議在 python 編程語言中發(fā)布任何圖片:
import timefrom paho.mqtt import client as mqtt_clientbroker = 'broker.hivemq.com'port = 1883topic = "photos"client_id = 'your client id'def connect_mqtt():    def on_connect(client, userdata, flags, rc):        if rc == 0:            print("Successfully connected to MQTT broker")        else:            print("Failed to connect, return code %d", rc)    client = mqtt_client.Client(client_id)    client.on_connect = on_connect    client.connect(broker, port)    return clientdef publish(client):    with open("./test.jpg",'rb'as file:        filecontent = file.read()        byteArr = bytearray(filecontent)        print(byteArr)        result = client.publish(topic,byteArr,2)    msg_status = result[0]    if msg_status == 0:        print(f"message sent to topic {topic}")    else:        print(f"Failed to send message to topic {topic}")def main():    client = connect_mqtt()    client.loop_start()    publish(client)    time.sleep(5)    client.loop_stop()if __name__ == '__main__':    main()

上述代碼使用了 paho-mqtt 庫,所以在終端中輸入以下命令確保已經(jīng)安裝了該庫。

pip3 install paho-mqtt

對于本期教程,我使用的是免費的 hivemq 公共 MQTT 代理。代碼中的 broker 地址、端口憑證是 hivemq 公共 mqtt 代理的憑證。主題“photos”是我們將發(fā)布圖像或文本文件的主題,客戶端 ID 必須是唯一的。 


當(dāng)然也可以使用其他的代理,例如EMQX:

broker = "broker.emqx.io"port = 1883timelive=60image_name="capture.jpg"

Top 5 免費開源MQTT Brokers代理?。?!


另一種方式不同將圖像編碼為字節(jié)數(shù)組,而是將圖像編碼為 base64。要將圖像轉(zhuǎn)換為 base64,可以使用以下發(fā)布函數(shù)。

import base64def publish(client):    with open("./test.jpg",'rb'as file:        filecontent = file.read()        base64_bytes = base64.b64encode(filecontent)        base64_message = base64_bytes.decode('ascii')        result = client.publish(topic,base64_message,0)    msg_status = result[0]    if msg_status == 0:        print(f"message sent to topic {topic}")    else:        print(f"Failed to send message to topic {topic}")

這兩種方式都是可行的。



使用 MQTT 協(xié)議接收圖像


接收圖像的概念是相同的,只是順序相反。我們需要訂閱“photos”主題以接收字節(jié)數(shù)組或 base64 消息。當(dāng)圖像或任何文件發(fā)布到該主題時,我們將接收到消息。首先,我們需要創(chuàng)建一個 jpg 文件。
f = open('receive.jpg''wb')
然后,我們將接收到的字節(jié)數(shù)組或 base64 消息寫入文件。
f.write(msg.payload)f.close()

如果你使用了 base64,那么可以使用以下代碼將其轉(zhuǎn)換回圖像。但在執(zhí)行此操作之前,請確保已經(jīng)導(dǎo)入了 base64 庫。

f = open('receive.jpg''wb')msg = str(message.payload.decode('utf-8'))img = msg.encode('ascii')final_img = base64.b64decode(img)f.write(final_img)f.close()

完整的代碼如下所示:

from paho.mqtt import client as mqtt_clientbroker = 'broker.hivemq.com'port = 1883topic = "photos"topic_sub = "photos"client_id = 'xzcfghjt123'def connect_mqtt():    def on_connect(client, userdata, flags, rc):        if rc == 0:            print("Successfully connected to MQTT broker")        else:            print("Failed to connect, return code %d", 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):        f = open('receive.jpg''wb')        f.write(msg.payload)        f.close()        print ('image received')    client.subscribe(topic_sub)    client.on_message = on_messagedef main():    client = connect_mqtt()    subscribe(client)    client.loop_forever()
if __name__ == '__main__':    main()

代碼與發(fā)布代碼非常相似,但我們現(xiàn)在使用的是 subscribe 函數(shù)而不是 publish 函數(shù)。首先,我們連接到 MQTT 代理,連接后我們訂閱了“photos”主題。在 subscribe 函數(shù)中,我們還定義了 client.on_Message 函數(shù),這意味著每當(dāng)接收到消息時,該函數(shù)將被調(diào)用。在這個代碼中,我們使用了 loop_forever 函數(shù),因為我們想一直監(jiān)聽數(shù)據(jù)。



參考鏈接:


  1. https://boardor.com/blog/detect-objects-and-transmit-images-using-mqtt

  2. https://davidmac.pro/posts/2021-07-21-files-over-mqtt/

  3. https://highvoltages.co/iot-internet-of-things/mqtt/image-using-mqtt-protocol/


閱讀原文:原文鏈接


該文章在 2025/6/23 12:59:24 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

精品人妻一区三区三区 | 97久久97久久| 一二三四在线观看91| 激情五月天久久综合| 午夜影院颜射| 大香蕉久久久久视频| 国产在线加勒比一区| 国产露脸正在播放| 色妹子九九综合网| 久久特黄三级| 熟妇呻吟一区| 本庄优花在线| 91人妻久久久| 日韩性小说视频| 亚洲成人有色小说| 欧美日韩人人精品一区二区三区| 激情夫妻AV| 综合一区二区三区久久99| 亭亭综合五月| 美女后后入91| 大屁股国产美国拍偷拍一区中文字幕| 国产普通话三级在线观| 中文 国产 一区| 在线欧美黄色片| 百国产精品色色| 欧美在线一二三四五区| 日韩欧美操屄大黄片| 日韩欧美国产黄色片| 国产欧洲成人第一免费视频| 日本亚洲成人二区| 国产精品久久999| 天天射天天操天天操心| 欧美在线黄色片的视频| 日韩欧美精品一级特黄大片| 社区字帖中文吃瓜精品一区| 欧美综合无码一区二区三区| 国产午夜精品激情在线| 日韩久久麻豆| 3p欧美一区| 有b吗在线kan| 亚洲欧美日夜夜夜|