Отправить метаданные в сообщении mqtt - PullRequest
0 голосов
/ 02 мая 2018

Я впервые использую mqtt для передачи некоторых двоичных файлов, поэтому у меня нет проблем с передачей его с использованием кода, подобного приведенному ниже

import paho.mqtt.client as paho
f=open("./file_name.csv.gz","rb")
filename= f.read()
f.close()
byteArray = bytearray(filename)
mqttc = paho.Client()
mqttc.will_set("/event/dropped", "Sorry, I seem to have died.")
mqttc.connect(*connection definition here*)
mqttc.publish("hello/world", byteArray )

Однако вместе с самим файлом есть некоторая дополнительная информация, которую я хочу отправить (исходное имя файла, дата создания и т. Д.), Я не могу найти какой-либо правильный способ передать его с помощью mqtt, есть ли способ сделать это или мне нужно добавить эту информацию в само сообщение byteArray? Как бы я это сделал?

1 Ответ

0 голосов
/ 02 мая 2018

Вам нужно создать свой собственный конструктор данных для хранения файла и его метаданных.

Как вы строите эту структуру, зависит от вас. Пара вариантов будет:

  • base64 / uuencode кодирует файл и добавляет его в качестве поля в объект JSON, сохраняет метаданные как другие поля и затем публикует объект JSON.

  • Создайте карту Python с файлом в качестве поля и другими метаданными в качестве других полей. Затем используйте pickle для сериализации карты.

...