企业核名网站,网络营销与策划实训,东营企业网站建设,苏州关键词网站排名学物联网#xff0c;来万物简单IoT物联网#xff01;#xff01; umqtt 介绍
模块功能: MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。
MQTT协议采用订阅者/发布者模式#xff0c;协议中定义了消息服务质量#xff08;Quality of Service#x… 学物联网来万物简单IoT物联网 umqtt 介绍
模块功能: MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。
MQTT协议采用订阅者/发布者模式协议中定义了消息服务质量Quality of Service它保证了在不同的网络环境下消息传递的可靠性。 MQTT协议设计了QoS0、QoS1和QoS2 3个QoS的级别。
QoS0 - 最多传输一次如果当时客户端不可用则会丢失该消息适用于不重要的消息传输QoS1 - 最少传输一次 适用于对可靠性有要求但对重复度没有要求的消息传输QoS2 - 只传输一次 适用于有可靠性要求也不允许发生重复的消息传输
关于MQTT协议详细的介绍参考
接口说明
MQTTClient - 构建MQTT连接对象
函数原型MQTTClient(client_id, server, port0, userNone, passwordNone, keepalive0, sslFalse, ssl_params{},reconnTrue,version4)参数说明
参数类型必选参数说明client_idstringY客户端ID客户端唯一标识serverstringY服务器地址IP地址或域名portintN服务器端口默认是1883userstringN登录服务器上所用用户名passwordstringN用户密码keepaliveintNMQTT客户端keepalive超时时间单位秒。 默认为0范围[60, 1200]sslboolN是否使能 SSL/TLSssl_paramsstringNSSL/TLS连线配置参数reconnboolN是否允许MQTT库自动重连默认值True开启自动重连versionintN要使用的mqtt版本version3代表使用MQTTv3.1默认version4使用MQTTv3.1.1
返回值 构建的MQTT客户端对象。
MQTTClient.set_callback - 设置MQTT消息回调函数
函数原型MQTTClient.set_callback(callback)参数说明
参数类型必选参数说明callback函数指针是在收到服务端发送的MQTT消息时候由MQTT库回调用户设置的callback函数
callback函数说明
函数原型function(topic, message)函数参数
参数类型必选参数说明topicstring是该消息所属的Topicmessagestring是MQTT Broker发布的消息内容
返回值 无
MQTTClient.set_last_will - 设置要发送给服务器的遗嘱
函数原型MQTTClient.set_last_will(topic, message, retainFalse, qos0)参数说明
参数类型必选参数说明topicstring是遗嘱消息的目标主题messagestring是遗嘱消息的内容retainbool否Broker是否一直保留该消息默认Falseqosint否消息的QoS类型有效类型0或1默认为0
返回值 无
MQTTClient.connect - 连接服务器
函数原型MQTTClient.connect(clean_sessionTrue)参数说明
参数类型必选参数说明clean_sessionbool否客户端类型标志默认为False !如果为TrueMQTT Broker会在客户端断开连接时删除该客户端相关的所有信息; 如果为False客户端断开连接时订阅信息和排队消息都会被MQTT Broker保留。
返回值 成功返回0失败则抛出异常
MQTTClient.ping - 发送ping包
函数原型MQTTClient.ping()返回值 无
当keepalive不为0且在一定时间内核MQTT Broker没有消息交互MQTT会主动向服务器发送ping包检测和MQTT Broker的连连线状态。
MQTTClient.publish - 发布消息
函数原型MQTTClient.publish(topic, msg, retainFalse, qos0)参数说明
参数类型必选参数说明topicstring是遗嘱消息的目标主题messagestring是遗嘱消息的内容retainbool否Broker是否一直保留该消息默认False!MQTT服务器只会为每一个Topic保存, MQTT Client发送的最后一条retain为True的消息。qosint否消息的QoS类型有效类型0或1默认为0
返回值 无
MQTTClient.subscribe - 订阅MQTT主题
函数原型MQTTClient.subscribe(topic, qos)参数说明
参数类型必选参数说明topicstring是遗嘱消息的目标主题qosint否消息的QoS类型有效类型0或1默认为0
返回值 无
MQTTClient.wait_msg - 等待服务器的消息
函数原型MQTTClient.wait_msg()参数说明 无返回值 无
服务器向已注册主题发送的消息将会被发送到通过set_callback设置的回调函数其它类型的消息则在MQTT模块内部处理。
MQTTClient.check_msg - 检查服务器是否有待处理消息
函数原型MQTTClient.check_msg()参数说明 无返回值 无
check_msg和wait_msg的差别在于check_msg是非阻塞模式调用之后立即返回而wait_msg为阻塞模式直到有消息才返回。
MQTTClient.disconnect - 和服务器断开连接
函数原型MQTTClient.disconnect()参数说明 无返回值 无 # ESP32平台umqtt案例import utime
from umqtt.simple import MQTTClient # MQTT库
import network # Wi-Fi功能所在库# Wi-Fi SSID和Password设置wifiSsid 请填写您的路由器名称
wifiPassword 请填写您的路由器密码wlan None # 网络连接对象
client None # MQTT客户端对象# 等待Wi-Fi成功连接到路由器
def wait_for_wifi_connection():global wlanwifi_connected Falsewlan network.WLAN(network.STA_IF) #创建WLAN对象STA模式wifi_connected wlan.isconnected() # 获取Wi-Fi连接路由器的状态信息if not wifi_connected: wlan.active(True) #激活界面wlan.scan() #扫描接入点#print(start to connect , wifiSsid)wlan.connect(wifiSsid, wifiPassword) # 连接到指定的路由器路由器名称为wifiSsid, 密码为wifiPasswordwhile True:wifi_connected wlan.isconnected() # 获取Wi-Fi连接路由器的状态信息if wifi_connected: # Wi-Fi连接成功则退出while循环breakelse:utime.sleep(0.5)print(wifi_connected:, wifi_connected)ifconfig wlan.ifconfig() #获取接口的IP/netmask/gw/DNS地址print(ifconfig)utime.sleep(0.5)# 处理来自MQTT Broker的MQTT消息
def sub_cb(topic, msg):global clientprint(From Topic:, topic, Message:, msg) # 打印来自MQTT Broker的消息if topic bETTTopic: # 如果来自名为“ETTTopic”的Topic则发布消息给名为“ETTUser”的Topicclient.publish(ETTUser, Nice to meet you, ETT Python User)if topic bETTUser: # 如果来自名为“HaaSUser”的Topic则发布消息给名为“HaaSRegister”的Topicclient.publish(ETTRegister, Hi, ETT Python, I am coming)if __name__ __main__:wait_for_wifi_connection() # 等待Wi-Fi连接成功client MQTTClient(ETTPython, broker-cn.emqx.io, 1883) # 创建MQTT对象client.set_callback(sub_cb) # 设置MQTT callbackclient.connect() # 连接MQTT Brokerclient.subscribe(ETTRegister) # 订阅来自ETTRegister的消息client.subscribe(ETTUser) # 订阅来自ETTUser的消息client.publish(ETTRegister, Hi, ETT Python) # 向ETTRegister发送消息while True:client.check_msg() # 检查是否有来自MQTT Broker的消息utime.sleep(1)示例输出
...
wifi_connected: False
wifi_connected: False
wifi_connected: False
(192.168.0.118, 255.255.255.0, 192.168.0.1, 192.168.0.1)
Topic: bETTRegister Message: bHi, ETT Python!
Topic: bETTUser Message: bNice to meet you, ETT Python User!
Topic: bETTRegister Message: bHi, ETT Python, I am coming!
Topic: bETTUser Message: bNice to meet you, ETT Python User!
...