如何在python中使用mosquito发布和订阅图像文件?

2024-04-28 12:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个学习MQTT的学生。在

我一直在用mosquitto发送一个树莓派的图像文件。在

这是一个出版物在

    import paho.mqtt.client as mqtt

    def on_public(mosq, userdata, mid):
        mosq.disconnect()

    client = mqtt.Client()
    client.connect("test.mosquitto.org", 1883, 60)
    f=open("1.jpg", "rb")
    fileContent = f.read()
    byteArr = bytes(fileContent)
    client.publish("image",byteArr,0)
    client.loop(5)

这是一个副总裁在

^{pr2}$

问题是我不知道如何订阅我已经发布的图片。在

我想逻辑在我脑子里已经找到了,但是没有用。在

我尝试过很多方法,比如使用write()或类似的方法。在

如果这只是一个基本的编码技巧,我很抱歉,但是我已经用MQTT,R-pi制作了一个系统。在

请帮帮我,我需要你的手。在


Tags: 方法importclientas图像文件mqttpaho学生
1条回答
网友
1楼 · 发布于 2024-04-28 12:31:54

在正常情况下,只有在订阅客户端已连接并在消息发布之前订阅时,才会传递消息。(有关如何在订阅服务器断开连接时获取发布的消息,请搜索持久订阅)

你的订阅应用程序应该看起来像:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, rc):
    print("Connect with result code " + str(rc))
    client.subscribe(“image”)

def on_message(client, userdata, msg):
    print("Topic : " , msg.topic + "\n Image : " + msg.payload

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("test.mosquitto.org", 1883, 60)
client.loop_forever()

client.loop_forever()是保持订阅服务器运行的重要位,而不仅仅是5秒钟。在

这将把原始字节打印到控制台上,这并不是很有用。要将图像写入文件,请尝试如下操作

^{pr2}$

这会将文件写入/tmp/output.jpg

相关问题 更多 >