【问题标题】:MQTT msg.payload funny charactersMQTT msg.payload 有趣的字符
【发布时间】:2018-05-17 05:11:02
【问题描述】:

我有一个温度传感器通过 ESP32 控制器上的 MQTT 连接到覆盆子,它在 Arduino IDE 串行监视器中也可以在 Home Assistant 网页中正确显示温度。 我正在尝试使用 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" "'" 和空格字符?

提前致谢

【问题讨论】:

    标签: python raspberry-pi mqtt paho


    【解决方案1】:

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

    您可以按如下方式修复更改 on_message 回调:

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

    【讨论】:

    • 感谢您的回复
    猜你喜欢
    • 2019-05-18
    • 2022-11-23
    • 2010-11-09
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多