MQTT msg.payload有趣的人物

时间:2018-05-17 05:11:02

标签: python raspberry-pi mqtt paho

我在ESP32控制器上通过MQTT连接到树莓上的温度传感器,它也在Home Assistant网页的Arduino IDE串行监视器中正确显示温度。 我试图用一个python 3脚本在Raspberry Pi控制台上显示它。它显示了值,但添加了charachteres - > B' 22.71'

我尝试从特定位置剥离字符或显示值但未成功。我需要只有温度值才能输出它。

脚本是

import paho.mqtt.client as mqtt

def on_connect(client, userdata, rc, *extra_params):
  client.subscribe("ha/temperature")

def on_message(client, userdata, msg):
  if msg.topic == 'ha/temperature':
    print(msg.payload)

client = mqtt.Client("test")
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(username="username",password="password")
client.connect("192.168.0.100", 1883, 60)
client.loop_forever()

结果是:

pi@raspberrypi:~ $ sudo python3 BasicMQTT.py
b' 22.71'
b' 22.71'
b' 22.71'
b' 22.71'

如何剥离" b" "'"输出中的空格和空格字符?

提前致谢

1 个答案:

答案 0 :(得分:1)

这是因为使用python3时,paho库返回一个字节数组,而不是有效负载的字节数组的字符串表示形式。

您可以修改on_message回调,如下所示:

def on_message(client, userdata, msg):
  if msg.topic == 'ha/temperature':
    print(msg.payload.decode("utf-8") )