【问题标题】:How can I publish and subscribe a image file using Mosquitto in python?如何在 python 中使用 Mosquitto 发布和订阅图像文件?
【发布时间】:2016-05-24 17:53:16
【问题描述】:

我是一名一直在学习 MQTT 的学生。

我一直在尝试使用 mosquitto 在 Raspberry Pi 中发送图像文件。

这是一个 pub.py

    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)

这是一个 sub.py

    import paho.mqtt.client as mqtt

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

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

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

问题是我不太清楚如何订阅我已经发布的图像。

我认为逻辑是在我的脑海中找到的,但它不起作用。

我尝试了很多方法,例如使用 write() 或类似的东西。

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

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

【问题讨论】:

    标签: python raspberry-pi publish-subscribe file-transfer mqtt


    【解决方案1】:

    一般情况下,只有订阅客户端在消息发布前已连接并订阅,消息才会被传递。 (关于如何在订阅者断开连接搜索持久订阅时获取发布的消息)

    您的订阅者应用应如下所示:

    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 秒的重要位。

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

    def on_message(client, userdata, msg)
        f = open('/tmp/output.jpg', 'w')
        f.write(msg.payload)
        f.close()
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      相关资源
      最近更新 更多