当前位置: 代码迷 >> 综合 >> python paho-MQTT
  详细解决方案

python paho-MQTT

热度:80   发布时间:2023-12-05 11:35:05.0

pip install paho-mqtt

paho-mqtt 是一个MQTT python client 库,支持mqtt 3.1/ 3.1.1协议。
·
The MQTT protocol is a machine-to-machine (M2M)/”Internet of Things” connectivity protocol. Designed as an extremely lightweight publish/subscribe messaging transport, it is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium.
Mosquitto是一个开源(BSD许可证)的消息代理,实现MQTT(消息队列遥测传输)协议版本3.1。

MQTT(MQ Telemetry Transport),消息队列遥测传输协议,轻量级的发布/订阅协议,适用于一些条件比较苛刻的环境,进行低带宽、不可靠或间歇性的通信。值得一提的是mqtt提供三种不同质量的消息服务:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

Mosquitto是一个开源(BSD许可证)的消息代理,实现MQTT(消息队列遥测传输)协议版本3.1。可以更加方便的使用

简单测试消息发布

在这里插入图片描述

简单测试消息订阅

在这里插入图片描述

使用python的paho-mqtt模块操作

import paho.mqtt.client as mqtt
import timeHOST = "127.0.0.1"
PORT = 61613def client_loop():client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))client = mqtt.Client(client_id)    # ClientId不能重复,所以使用当前时间client.username_pw_set("admin", "123456")  # 必须设置,否则会返回「Connected with result code 4」client.on_connect = on_connectclient.on_message = on_messageclient.connect(HOST, PORT, 60)client.loop_forever()def on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))client.subscribe("test")def on_message(client, userdata, msg):print(msg.topic+" "+msg.payload.decode("utf-8"))# 消息处理if __name__ == '__main__':client_loop()

# import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import timeHOST = "127.0.0.1"
PORT = 61613
def on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))client.subscribe("test")def on_message(client, userdata, msg):print(msg.topic+" "+msg.payload.decode("utf-8"))if __name__ == '__main__':client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))# client = mqtt.Client(client_id) # ClientId不能重复,所以使用当前时间# client.username_pw_set("admin", "123456") # 必须设置,否则会返回「Connected with result code 4」# client.on_connect = on_connect# client.on_message = on_message# client.connect(HOST, PORT, 60)# client.publish("test", "你好 MQTT", qos=0, retain=False) # 发布消息publish.single("test", "你好 MQTT", qos = 1,hostname=HOST,port=PORT, client_id=client_id,auth = {
    'username':"admin", 'password':"123456"}
--------------------- 

原文:https://blog.csdn.net/csdnhuaong/article/details/79595123