Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MQTT paho客户端连接超时错误_Python_Raspberry Pi_Mqtt - Fatal编程技术网

Python MQTT paho客户端连接超时错误

Python MQTT paho客户端连接超时错误,python,raspberry-pi,mqtt,Python,Raspberry Pi,Mqtt,我正在笔记本电脑上运行MQTT MOSQUITO代理。然后我尝试将两个Paho MQTT客户端连接到它:1)使用Java Paho从Android手机连接到它,2)使用Python Paho从Raspberry Pi连接到它 从Android连接是完美的。没问题 然而,覆盆子由于某种原因无法连接。相反,client.connect方法会阻塞,一段时间后,我会收到以下消息: Traceback (most recent call last): File "sensorsClient.py",

我正在笔记本电脑上运行MQTT MOSQUITO代理。然后我尝试将两个Paho MQTT客户端连接到它:1)使用Java Paho从Android手机连接到它,2)使用Python Paho从Raspberry Pi连接到它

从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

一切都是通过WIFI在一个网络内完成的。没有移动数据。有人能解释一下为什么会发生这种情况吗?

您可以运行的第一个检查是检查您的代理配置(如果是您自己的代理,请向您的供应商索要凭据),然后查看您是否为连接设置了用户名/密码。很可能这就是客户端连接超时的问题

如果是这种情况,您只需要在客户端配置中设置用户名/密码,如:

client.username\u pw\u set(“代理上的用户名”、“代理上的密码”)

我还建议使用
urlparse.urlparse(“代理url”)
对代理url进行清理/标准化


如果这对您没有帮助,请务必联系我们。

您是否可以包含应用程序的其余代码,以便我们可以查看所有代码。您是否检查过可以从pi ping笔记本电脑,并且
mqttServer
变量是正确的主机名/ip地址(没有额外的空格)@hardillb我可以用笔记本电脑ping。mqttServer是一个IP为标准“xxx.zzz.qqq.ttt”格式的字符串(多次检查)。不会发布,因为隐私:)我问你是否可以用另一种方式ping,从Pi到笔记本电脑。另外,请添加代码的其余部分,如果需要,您可以替换IP地址(但假设它是192.168.x.x或10.x.x.x地址,则只能从您的本地网络访问)@hardillb我可以在两个方向ping所有的东西都在同一个网络上,还是手机通过公共IP地址从“外部”通过手机网络访问代理?
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()