Python实现MQTT客户端

1、安装 paho-mqtt包命令
pip install paho-mqtt
2、接收端代码:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe("topic/test")
def on_message(client, userdata, msg):
    print("on_message " + msg.topic + " " + str(msg.payload))
client = mqtt.Client(client_id="client1", clean_session=True, userdata=None, protocol=mqtt.MQTTv31, transport="tcp")
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect("127.0.0.1", 61613, 60)
client.loop_forever()
3、发送端代码:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    i = 1
    while i <= 1000:
        client.publish("topic/test", "测试MQTT " + str(i))
        i += 1
client = mqtt.Client(client_id="client2", clean_session=True, userdata=None, protocol=mqtt.MQTTv31, transport="tcp")
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.connect("127.0.0.1", 61613, 60)
client.loop_forever()
# import paho.mqtt.publish as publish
# HOST = "127.0.0.1"
# PORT = 61613
# i = 1
# while i <= 1000:
#     publish.single("topic/test", "测试MQTT " + str(i), qos=1, hostname=HOST, port=PORT, client_id="client3", auth={'username': "admin", 'password': "password"})
#     i += 1
注意:一定要配置协议版本为 MQTTv31,网上的代码都没有配置,没有的话python这就会报错:[Errno 104] Connection reset by peer。服务器则会报空指针,我们可以在mybroker/log/stacktrace.log中看到。
常见错误码:
0: Connection successful
1: Connection refused - incorrect protocol version
2: Connection refused - invalid client identifier
3: Connection refused - server unavailable
4: Connection refused - bad username or password
5: Connection refused - not authorised 6-255: Currently unused
MQTT服务器搭建可参考:Windows下搭建MQTT服务器(Apollo)