我一直试图在R-pi中使用mosquitto来发布和分发图像。
这是pub.py
import paho.mqtt.client as mqtt
def on_publish(mosq, userdata, mid):
mosq.disconnect()
client = mqtt.Client()
client.connect("test.mosquitto.org", 1883, 60) #error?
f = open("1.jpg", "rb")
fileContent = f.read()
byteArr = bytes(fileContent)
client.publish("image", byteArr, 0)
client.loop(5)
然而,有一个错误是" UnicodeDecode错误:' ascii'代码无法在psition"中解码字节oxff我跑的时候。
我认为此错误是由" test.mosquitto.org"第8行。
所以,我试图以其他方式改变它,但它没有用。
最有线的是,当我试图打开一个文本文件并提取一些像这个来源的char和pub / sub时,它才起作用。
#It does work
import paho.mqtt.client as mqtt
def on_public(mosq, userdata, mid):
mosq.disconnect()
client = mqtt.Client()
client.connect("test.mosquitto.org", 1883, 60)
f=open("text.txt")
con=f.read(3)
client.publish("image",con)
client.loop(5)
我找不到任何差异并解决。
答案 0 :(得分:1)
看起来你正在运行Python 2.7。
尝试替换
byteArr = bytes(fileContent)
与
byteArr = bytearray(fileContent)
前者仍然看起来像一个字符串,然后由库传递upayload = payload.encode('utf-8')
。如果你有二进制数据不起作用。
您应该做的其他事情是将client.loop(5)
替换为client.loop_forever()
,否则该文件可能无法发送。
您也没有分配回调功能。