Paho MQTT回调未触发

2024-03-29 12:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Paho连接到我的MQTT-brooker,但是,回调没有按预期工作。我已经阅读了文档,无法理解为什么这些函数没有被注意到。你知道吗

import paho.mqtt.client as mqtt
import mqttUtils as utils

# Subscribe To Topic


def subscribeToTopic(client, topic):
    try:
        result = client.subscribe(topic, 2)
        if result[0] == 0:
            utils.logging.info("Successfuly Subscribed To Topic")
            return 1
    except:
        utils.logging.info("Failed Subscribe Attempt")
        return 0


def on_subscribe(client, userdata, mid, granted_qos):  # subscribe to mqtt broker
    print("Subscribed", userdata)



host = "x"
client = mqtt.Client()
client.connect(host, port=1883, keepalive=60, bind_address="")
# result = utils.connectToMqtt(client,utils.host)
client.on_subscribe = on_subscribe
subscribeResult = subscribeToTopic(client, "test")

这是我的代码,我在订阅之前声明了on\u subscribe方法,但是脚本拒绝工作。有人知道为什么回拨没有被解雇吗?你知道吗


Tags: toimportclienthosttopicondefas
1条回答
网友
1楼 · 发布于 2024-03-29 12:26:29

程序必须一直运行并从服务器接收消息,当它从服务器得到确认时,它将运行on_subscribe。你知道吗

你可以用ie

client.loop_forever() 

一直运行它

import paho.mqtt.client as mqtt

def on_subscribe(client, userdata, mid, granted_qos):
    print("Subscribed", client, userdata, mid, granted_qos)

def on_message(client, userdata, message):
    #print('on_message:', client, userdata, message)
    #print(dir(message))
    print('on_message:', message.payload.decode())

host = "mqtt.eclipse.org"

client = mqtt.Client()
client.connect(host, port=1883, keepalive=60, bind_address="")
client.on_message = on_message
client.on_subscribe = on_subscribe
client.subscribe('temp', 1)

client.loop_forever()

文件:paho-mqtt

相关问题 更多 >