接收 MQTT 发布为带有 paho 的文件

物联网 MQTT 帕霍
2021-06-11 15:06:33

到目前为止,我已经能够使用带有 paho 库的 python 脚本订阅主题,并将单个传入消息写入文件。通过这种方式,如果整个有效负载在一个 MQTT 发布中发送,我就能够通过 MQTT 发送文本文件和 200kB jpg 图像。这是我为此目的使用的简单脚本。

import paho.mqtt.client as mqtt
MQTT_SERVER = "broker.hivemq.com"
MQTT_TOPIC = "IvanHu"

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe(MQTT_TOPIC)
    
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    f = open('output', "wb")
    f.write(msg.payload)
    print("File Received")
    f.close()

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_SERVER, 1883, 60)


client.loop_forever()

但是,我正在开发嵌入式 LTE-M 调制解调器。我需要以 1500 字节的块发送我的文件。例如,如果我想发送一个 3016 字节的文件,我必须在 4 个 MQTT 发布中发送它。第一次发布包含有关有效负载的信息。

SEGMENTS:"3"
SEGMENTSIZE:"1500"
LASTSEGMENTSIZE:"16"

说明:3 个数据段,除最后一个数据段为 16 个字节外,每个数据段为 1500 字节。

接下来的两次发布将是 1500 字节,每个都包含有效载荷数据。最后一次发布将是有效载荷数据的最后 16 个字节。

我的问题是,如何修改我的 python 脚本,以便它可以使用第一个发布来将数据发布附加到一个文件中?谢谢。

0个回答
没有发现任何回复~