到目前为止,我已经能够使用带有 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 脚本,以便它可以使用第一个发布来将数据发布附加到一个文件中?谢谢。