【发布时间】:2017-07-16 00:58:06
【问题描述】:
简而言之,我有一个运行良好的 Paho/MQTT 样本集,但我无法检测到错误。具体来说,我没有收到 on_connect 回调,并且当给出无效的 UserID/Pswd 组合时,它会静默失败。 事实上,从各种迹象来看,一切都很好!
我做错了什么?
(snip)
def on_connect(client, userdata, flags, rc):
print("Connected with flags [%s] rtn code [%d]"% (flags, rc) )
def on_disconnect(client, userdata, rc):
print("disconnected with rtn code [%d]"% (rc) )
def on_publish(client, userdata, msgID):
print("Published with MsgID [%d]"% (msgID) )
mqttc = mqtt.Client()
mqttc.on_connect = on_connect
mqttc.on_disconnect = on_disconnect
mqttc.on_publish = on_publish
mqttc.username_pw_set(Q_USER, Q_PSWD)
rc=mqttc.connect(Q_BROKER, Q_PORT)
print "Return="+str(rc)
mqttc.loop_start()
rc=mqttc.publish(Q_TOPIC, "Hello, World!")
print "Return="+str(rc)
mqttc.disconnect()
mqttc.loop_stop()
UserID 或 Pswd 故意错误时的输出:
Return=0
Published with MsgID [1]
Return=(0, 1)
disconnected with rtn code [0]
【问题讨论】:
-
增加混乱...如果我在 connect() 调用之前移动 loop_start(),则消息无法正确发布。仍然没有错误提示
-
您使用的是哪个代理,您是如何配置身份验证的?例如如果 mosquitto 是
allow_anonymous是真的? -
请注意,在 connect() 调用之前的 loop_start() 已知会产生未定义的结果。
-
在 python 中使用 paho-mqtt 时,除了 on_conenct 回调 rc 参数之外,有没有办法找出与 MQTT 代理的连接是否成功?