gpt4 book ai didi

Python- 为什么我的 Paho Mqtt 消息与我发送的消息不同?

转载 作者:太空狗 更新时间:2023-10-30 02:41:02 25 4
gpt4 key购买 nike

我正在使用一些 C.H.I.P.s(想想 Raspberry Pi)进行一个项目,我需要将一些信息从从属板无线发送回主板。我使用 Paho 作为我的 Mqtt 客户端,并使用 Mosquitto 作为我的代理。我的问题是当我按下连接到从板的按钮之一时,它会发送我的消息,但是当主板接收到它时,它似乎是以“b''”的形式获取的。例如,如果我发送消息“off”,当我打印出 msg.payload 时,它会打印“b'off'”。这导致了一个问题,因为我无法比较消息以便从我的主板执行命令。

这是我的从板代码:

import paho.mqtt.client as paho
import CHIP_IO.GPIO as GPIO
import time

GPIO.cleanup()
GPIO.setup("XIO-P0", GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup("XIO-P2", GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

client = paho.Client()
client.connect("172.20.0.1", 1883)

print ("CONNECTED")

while True:
if (GPIO.input("XIO-P0") == False):
print ("Button P0 Pressed")
client.publish('tipup', 'flag')
time.sleep(1)

if (GPIO.input("XIO-P2") == False):
print ("Button P2 Pressed")
client.publish('tipup', 'off')
time.sleep(1)

这是我的主板代码(经纪人)

import paho.mqtt.client as paho
import CHIP_IO.GPIO as GPIO

GPIO.cleanup()
GPIO.setup("XIO-P2", GPIO.OUT)
GPIO.output("XIO-P2", GPIO.HIGH)

def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("tipup")
print("Subscribed")

def on_message(client, userdata, msg):
print ("Message Received")
print (str(msg.payload))

if (msg.payload == 'flag'):
print("Went through 'flag' if statement")
print("Turning on LED")
GPIO.output("XIO-P2", GPIO.LOW)

if (msg.payload == 'off'):
print ("Turning off LED")
GPIO.output("XIO-P2", GPIO.HIGH)

client = paho.Client()

client.on_connect = on_connect
client.on_message = on_message

client.connect("172.20.0.1", 1883)

client.loop_forever()

GPIO.cleanup()

当我在我的主板代码中打印 str(msg.payload) 时出现问题。我应该补充一点,这两个编译和运行都很好,这只是我在弄清楚为什么它没有通过我在 on_message() 中的任何一个 if 语句时注意到的一个问题。

最佳答案

'bXXX' means bytes .你需要convert this to UTF-8使用前:

msg.payload = msg.payload.decode("utf-8")

不过,我不确定为什么负载是以字节为单位的。

关于Python- 为什么我的 Paho Mqtt 消息与我发送的消息不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com