无法连接到mqtt代理

Jas*_*n94 2 python mqtt raspberry-pi mosquitto

我在我的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()
Run Code Online (Sandbox Code Playgroud)

这里的输出是

Disconnect, reason: <paho.mqtt.client.Client object at 0x01F41EF0>
Disconnect, reason: 1
Run Code Online (Sandbox Code Playgroud)

我试着看看文档,但它只提到了标志,没有定义它们是什么.

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

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

har*_*llb 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()
Run Code Online (Sandbox Code Playgroud)