Python实现MQTT客户端
- MQTT
- 2020-07-28
- 17热度
- 0评论
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)

鲁ICP备19063141号
鲁公网安备 37010302000824号