Paho(MQTT)客户端无法连接

时间:2016-06-24 15:35:47

标签: python ubuntu mqtt mosquitto paho

我正在使用此python脚本来实现基本的Paho(MQTT)订阅者,但在某些情况下它不会调用 on_connect

我尝试了以下所有代码:

  • 在桌面PC(Ubuntu)上运行Raspbery pi,经纪人。 作品即可。
  • 在同一个Pc上运行Pc(Ubuntu),经纪人。 不起作用
  • 在Pc(Ubuntu)中运行,在其他PC(Ubuntu)上运行。 不起作用
  • 在Pc(Ubuntu)中运行,broker.hivemq.com作为经纪人。 作品即可。
  • 作为经纪人在Pc(Ubuntu),broker.hivemq.com(它的IP)中运行。 作品即可。

我通常也这样做:

  • 所有先前组合中的终端中的mosquitto_sub / pub。 作品即可。
  • 以前所有组合中的官方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()

1 个答案:

答案 0 :(得分:12)

我遇到了同样的问题,并在Client's constructor中更改了MQTT协议的版本解决了它。

mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31)

由于您未指定协议,因此它使用默认协议:MQTTv311。