MQTT帕霍客户端连接超时错误
问题描述:
我正在笔记本电脑上运行MQTT Mosquitto broker。然后我试图连接2个Paho MQTT客户端:1)使用Java Paho的Android手机和2)使用Python Paho的Raspberry Pi。MQTT帕霍客户端连接超时错误
从Android的连接是完全制造。没问题。
然而,覆盆子出于某种原因无法连接。代替client.connect方法块和在一段时间后,收到以下:
Traceback (most recent call last):
File "sensorsClient.py", line 28, in <module>
client.connect(mqttServer, 1883)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 700, in connect
return self.reconnect()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 822, in reconnect
sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
File "/usr/lib/python2.7/socket.py", line 571, in create_connection
raise err
socket.error: [Errno 110] Connection timed out
用于连接的代码如下:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("$SYS/#")
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
mqttServer = 'zzz.xxx.ccc.qqq' # Public IP of the laptop
client = mqtt.Client("", True, None, mqtt.MQTTv31)
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqttServer, 1883)
client.loop_start()
的everythin经由WIFI一个网络内进行的。没有移动数据。有人可以解释我为什么会发生这种情况吗?
答
一个可以运行首先检查的是通过你的代理配置(如果它自己的经纪人,否则请向您的证书供应商),并且看,如果你已经为连接或没有任何用户名/密码。这很可能是您的连接超时在客户端上的问题。
如果是这样,你只需要在客户端配置来设置用户名/密码等的情况:
client.username_pw_set("username_on_broker", "password_on_broker")
此外,我会建议使用urlparse.urlparse("broker url")
消毒/标准化你的经纪人URL
待办事项伸出援手以防止这种情况对你没有帮助。
你可以包括应用程序的其余代码,所以我们可以看到所有的请。你有没有检查过,你可以ping从pi的笔记本电脑和'mqttServer'变量是正确的主机名/ IP地址(没有额外的空白空间) – hardillb
@hardillb我可以用我的笔记本电脑。 mqttServer是一个标准为'xxx.zzz.qqq.ttt'格式的IP(检查过几次)的字符串。不会发布它,因为隐私:) – tomkou
我问你是否可以ping通另一种方式,从Pi到笔记本电脑。还请添加代码的其余部分,你可以,如果你想更换IP地址(但假设它是一个192.168.XX或10.xxx的地址,它是从你的本地网络才能访问) – hardillb