ファイルタイプのアップロードをサポートする MQTT ブローカーにサブスクライブするために python-mosquitto を使用しています。コマンドラインで Mosquitto から移動するときに -f フラグを使用して問題なく使用できます。ただし、pythonスクリプト内から実行するときに、client.publish(topic、payload)を使用して公開するファイルを指定する方法がわかりません。
Python mosquitto にTypeError: payload must be a string, bytearray, int, float or None.
奇妙なものを投げようとすると、エラーが発生します。パブリッシュのペイロードとして指定したいファイルが既にローカル ディレクトリに保存されています。
私は MQTT の経験がありますが、私の python は非常にさびています。ここである種のファイル ストリーム関数を実行する必要があると想定していますが、その方法がわかりません。
ここで画像を指定したい: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 はそれらでエラーをスローしませんが、ファイルはブローカーによって適切に受信されません。何か案は?
ありがとう!!