Python MQTT msg.payload有趣的字符

Python MQTT msg.payload有趣的字符,python,raspberry-pi,mqtt,paho,Python,Raspberry Pi,Mqtt,Paho,我有一个温度传感器通过ESP32控制器上的MQTT连接到raspberry,它在Arduino IDE串行监视器中正确显示温度,也在家庭助理网页中。 我试图用python 3脚本在Raspberry Pi控制台上显示它。它显示值,但添加字符-->b'22.71' 我试图从特定位置剥离字符或显示值,但没有成功。我只需要有出口它的温度值 剧本是 import paho.mqtt.client as mqtt def on_connect(client, userdata, rc, *extra_p

我有一个温度传感器通过ESP32控制器上的MQTT连接到raspberry,它在Arduino IDE串行监视器中正确显示温度,也在家庭助理网页中。 我试图用python 3脚本在Raspberry Pi控制台上显示它。它显示值,但添加字符-->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”“”和空格字符


提前感谢

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

您可以按如下方式修复更改\u消息上的
回调:

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

谢谢你的回复