Paho(MQTT)客户端无法连接
问题描述:
我正在使用此python脚本来实现基本的Paho(MQTT)订阅者,但在某些情况下它不会调用on_connect。Paho(MQTT)客户端无法连接
我尝试以下,都具有完全相同的代码:
- 在Raspbery PI运行,在台式电脑(Ubuntu的)经纪人。 作品。
- 在Pc(Ubuntu)中运行,经纪人在同一台PC上。 不起作用。
- 在Pc(Ubuntu)中运行,在其他Pc(Ubuntu)上运行。 不起作用。
- 在Pc(Ubuntu)中运行,broker.hivemq.com作为代理运行。 作品。
- 在Pc(Ubuntu)中运行,broker.hivemq.com(它是IP)作为代理。 作品。
我也通常会做:
- mosquitto_sub /在终端酒馆前面所有的组合。 作品。
- 以前所有组合中的官方C++ paho包装。 作品。
还试图在官方网站上列出的所有设置方法。所以python的paho库似乎没有与我的本地经纪人相处,除非我从我的覆盆子运行它。但是使用相同的代理可以很好地与C++的paho库以及从终端中使用MQTT配合使用。任何想法可以发生什么?
import paho.mqtt.client as mqtt
def on_connect(mqtt_client, obj, flags, rc):
mqtt_client.subscribe("test")
print "on_connect"
def on_message(mqtt_client, obj, msg):
print "on_message"
mqtt_client = mqtt.Client()
mqtt_client.on_connect = on_connect
mqtt_client.on_message = on_message
mqtt_client.connect("127.0.0.1",1883)
mqtt_client.loop_forever()
答
我有同样的问题,改变MQTT协议的版本中Client's constructor解决它。
mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31)
由于您没有指定协议,因此它使用默认值:MQTTv311。
+1
谢谢!这实际上工作!也许我的经纪人试图使用该协议。 –
只是检查,当你说完全一样的代码,你在'mqtt_client.connect'函数调用更改IP地址需要 – hardillb
是我改变了它,当neccesary。它不应该是这样。 –