python - MQTT msg.payload 有趣的字符

标签 python raspberry-pi mqtt paho

我有一个温度传感器通过 ESP32 Controller 上的 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”“'”和空格字符?

提前致谢

最佳答案

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

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

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

关于python - MQTT msg.payload 有趣的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50383732/

相关文章:

python - PyQt:使用 QDataStream 保存 native QTreeWidgets

使用 pySerial 的 Python 3 非阻塞读取(无法使 pySerial 的 "in_waiting"属性起作用)

具有 MQTT 订阅的 Python Flask 服务器

python-2.7 - Raspberry pi 3 B+ 中的串行通信

mysql - 有没有办法将 Mosquitto 有效负载存储到 MySQL 数据库中以供历史记录使用?

python - 从 Raspberry Pi 上的 Python 脚本发布 MQTT 消息

python - Django 错误配置 : WSGI application 'myproject.wsgi.application' could not be loaded; Error importing module

php - 使用 PHP 执行 Python 程序

python - Pyspark JSON 对象或文件到 RDD

linux - dnsmasq - 将所有域(包括路径)解析为同一地址