gpt4 book ai didi

python - Paho mqtt 客户端无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:14 25 4
gpt4 key购买 nike

我是 MQTT 和树莓派的新手!我正在运行一个客户端脚本,我只是使用另一个脚本发布一条消息。我正在使用自己的 Mosquitto 代理。

客户:

import paho.mqtt.client as mqtt

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

client.subscribe("Example/test")
client.subscribe("Example/topic")


def on_message(client, userdata, msg):

print(msg.topic+" "+str(msg.payload))


if msg.payload == "Hello":
print("Received message #1, do something")

if msg.payload == "World":
print("Received message #2, do something else")


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("192.168.1.4", 1883)


client.loop_forever()

发布者:

import paho.mqtt.publish as publish


publish.single("Example/test", "Hello", hostname="192.168.1.4")
publish.single("Example/topic", "World", hostname="192.168.1.4")

print("OK")

这就是事情看起来很奇怪并且那些事情发生的地方。1.当我使用 python3 命令同时运行客户端和发布者时,if 语句被跳过,只打印主题 + 有效负载2.当我使用 python 命令运行客户端并使用 python3 和 python 命令运行发布者时,一切正常!3.当我执行上述所有操作时,再次在 virtualenv 上运行客户端时,在所有情况下都会忽略 if 语句!

我想知道发生这种情况是否有兼容性原因,或者代码中有什么错误,因为我必须在 virtualenv 上运行更复杂的东西!


更新:我找到了一个工作正常的解决方案!在我使用的 if 语句中的客户端代码中

if msg.payload == b"Hello":

if msg.payload == b"World":

据我所知,这一定是由于变量类型导致的,而且它们不匹配。

最佳答案

我找到了一个很好用的解决方案!在我使用的 if 语句中的客户端代码中

if msg.payload == b"Hello":

if msg.payload == b"World":

据我所知,这一定是由于变量类型导致的,而且它们不匹配。

关于python - Paho mqtt 客户端无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50139413/

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