【问题标题】:Paho(MQTT) client can't connectPaho(MQTT)客户端无法连接
【发布时间】:2016-10-27 07:01:14
【问题描述】:

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

我尝试了以下,所有代码都完全相同:

  • 在 Raspbery pi 中运行,在台式机 (Ubuntu) 上代理。 有效
  • 在 PC (Ubuntu) 中运行,代理在同一台 PC 上。 不起作用
  • 在一台 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()

【问题讨论】:

  • 只是检查一下,当你说完全相同的代码时,你正在根据需要更改mqtt_client.connect函数调用中的IP地址
  • 是的,我会在必要时更改它。不应该这样。

标签: python ubuntu mqtt mosquitto paho


【解决方案1】:

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

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

由于没有指定协议,所以使用默认的:MQTTv311。

【讨论】:

  • 谢谢!这确实有效!也许我的经纪人正在尝试使用该协议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
相关资源
最近更新 更多