首页 文章

无法连接到mqtt代理

提问于
浏览
2

我在我的pi上安装了MQTT代理Mosquitto,并且在使用我的网络中的盒子时遇到了一些问题 . 在本地,如果我腻子进入运行Mosquitto MQTT经纪人的RPi,一切都还可以 . 我可以使用客户端命令( mosquitto_sub, mosquitto_pub )订阅并发布到主题,没问题 . 但是,如果我尝试从另一个盒子连接,Win2k12服务器与python脚本,它声明它无法连接 .

  • 我试过在我的路由器中关闭防火墙

  • 我试过在我的Win2k12服务器上关闭防火墙

  • 我已经将TCP 1883添加到允许从我的Win2k12服务器出站的端口

Python脚本:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    client.publish("test_mqtt", "test")
    client.subscribe("test")

def on_disconnect(client, userdata, rc):
    print("Disconnect, reason: " + str(rc))
    print("Disconnect, reason: " + str(client))

client = mqtt.Client("testclient")
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.connect("192.168.1.20", 1883, 60)
client.loop_forever()

这里的输出是

Disconnect, reason: <paho.mqtt.client.Client object at 0x01F41EF0>
Disconnect, reason: 1

我试着看看the documentation,但它只提到了旗帜,没有定义它们是什么 .

运行Mosquitto的树莓派也在运行Node-red . 连接到MQTT代理没有问题(它们都在相同的rpi上运行)

enyone是否在Raspberry Pi上设置了MQTT并让它与其他设备一起工作?我想让它与NodeMCU一起工作,但是当我遇到问题时,我开始研究python脚本以进一步调试问题 .

2 回答

  • 5

    您可以通过向mqtt.Client构造器添加选项来强制paho客户端使用协议的3.1级别:

    import paho.mqtt.client as mqtt
    
    def on_connect(client, userdata, flags, rc):
        client.publish("test_mqtt", "test")
        client.subscribe("test")
    
    def on_disconnect(client, userdata, rc):
        print("Disconnect, reason: " + str(rc))
        print("Disconnect, reason: " + str(client))
    
    client = mqtt.Client("testclient", protocol=mqtt.MQTTv31)
    client.on_connect = on_connect
    client.on_disconnect = on_disconnect
    client.connect("192.168.1.20", 1883, 60)
    client.loop_forever()
    
  • 0

    首先,您必须确保可以连接到Raspberry Pi . 您可以尝试使用Paho以外的库或使用一个MQTT客户端:http://www.hivemq.com/blog/seven-best-mqtt-client-tools

    您可以尝试的另一件事是将客户端和代理设置为使用端口80以查看它们是否可以通过该端口进行通信 .

相关问题