MQTT msg.payload забавные персонажи - PullRequest
0 голосов
/ 17 мая 2018

У меня есть датчик температуры, подключенный к Raspberry через MQTT на контроллере ESP32, он корректно отображает температуру на серийном мониторе Arduino IDE также на домашней странице Home Assistant.Я пытаюсь отобразить его на консоли Raspberry Pi со скриптом Python 3.он отображает значение, но добавляет символы -> 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 голосов
/ 17 мая 2018

Это потому, что с python3 библиотека paho возвращает байтовый массив, а не строковое представление байтового массива для полезной нагрузки.

Вы можете исправить изменение обратного вызова on_message следующим образом:

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