Я использую python-mosquitto для подписки на моего брокера MQTT, который поддерживает загрузку типов файлов. Я могу использовать его с флагом -f при переходе из Mosquitto в командную строку. Однако я не могу понять, как использовать client.publish (тема, полезная нагрузка), чтобы указать файл для публикации, когда это делается из моего скрипта python.
Python mosquitto выдает ошибку TypeError: payload must be a string, bytearray, int, float or None.
, когда я пытаюсь бросить в него что-то странное. У меня уже есть файл, хранящийся в локальном каталоге, который я хочу указать в качестве полезной нагрузки публикации.
У меня есть опыт работы с MQTT, но мой питон очень ржавый, я предполагаю, что мне нужно сделать здесь какой-то тип функции потока файлов, но не знаю, как это сделать.
Я хочу указать здесь изображение: mqttc.publish("/v3/device/file", NEED_TO_SPECIFY_HERE)
Я попытался открыть изображение, выполнив:
f = open("/home/pi/mosq/imagecap/imagefile.jpg", "rb")
imagebin = f.read()
mqttc.publish("/v3/device/file", imagebin)
Но это не сработало, и mqttc.publish("/v3/device/file", bytearray(open('/tmp/test.png', 'r').read()))
тоже.
Client.publish не вызывает ошибок, но файл не получен брокером должным образом. Любые идеи?
Спасибо!!