当前位置: 首页 > news >正文

物联网AI MicroPython学习之语法 umqtt客户端

学物联网,来万物简单IoT物联网!!在这里插入图片描述

umqtt 介绍

  • 模块功能:
    MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。

MQTT协议采用订阅者/发布者模式,协议中定义了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性。 MQTT协议设计了QoS0、QoS1和QoS2 3个QoS的级别。

  • QoS0 - 最多传输一次,如果当时客户端不可用,则会丢失该消息,适用于不重要的消息传输
  • QoS1 - 最少传输一次, 适用于对可靠性有要求,但对重复度没有要求的消息传输
  • QoS2 - 只传输一次, 适用于有可靠性要求,也不允许发生重复的消息传输

关于MQTT协议详细的介绍参考

接口说明

MQTTClient - 构建MQTT连接对象

  • 函数原型:MQTTClient(client_id, server, port=0, user=None, password=None, keepalive=0, ssl=False, ssl_params={},reconn=True,version=4)
  • 参数说明:
参数类型必选参数?说明
client_idstringY客户端ID,客户端唯一标识
serverstringY服务器地址,IP地址或域名
portintN服务器端口,默认是1883
userstringN登录服务器上所用用户名
passwordstringN用户密码
keepaliveintNMQTT客户端keepalive超时时间,单位:秒。 默认为0,范围:[60, 1200]
sslboolN是否使能 SSL/TLS
ssl_paramsstringNSSL/TLS连线配置参数
reconnboolN是否允许MQTT库自动重连,默认值:True,开启自动重连
versionintN要使用的mqtt版本,version=3代表使用MQTTv3.1,默认version=4,使用MQTTv3.1.1
  • 返回值:
    构建的MQTT客户端对象。

MQTTClient.set_callback - 设置MQTT消息回调函数

  • 函数原型:MQTTClient.set_callback(callback)
  • 参数说明:
参数类型必选参数?说明
callback函数指针在收到服务端发送的MQTT消息时候由MQTT库回调用户设置的callback函数

callback函数说明

  • 函数原型:function(topic, message)
  • 函数参数:
参数类型必选参数?说明
topicstring该消息所属的Topic
messagestringMQTT Broker发布的消息内容
  • 返回值:

MQTTClient.set_last_will - 设置要发送给服务器的遗嘱

  • 函数原型:MQTTClient.set_last_will(topic, message, retain=False, qos=0)
  • 参数说明:
参数类型必选参数?说明
topicstring遗嘱消息的目标主题
messagestring遗嘱消息的内容
retainboolBroker是否一直保留该消息,默认False
qosint消息的QoS类型,有效类型:0或1,默认为0
  • 返回值:

MQTTClient.connect - 连接服务器

  • 函数原型:MQTTClient.connect(clean_session=True)
  • 参数说明:
参数类型必选参数?说明
clean_sessionbool客户端类型标志,默认为False !
如果为True,MQTT Broker会在客户端断开连接时删除该客户端相关的所有信息;
如果为False,客户端断开连接时,订阅信息和排队消息都会被MQTT Broker保留。
  • 返回值:
    成功返回0,失败则抛出异常

MQTTClient.ping - 发送ping包

  • 函数原型:MQTTClient.ping()
  • 返回值:

当keepalive不为0且在一定时间内核MQTT Broker没有消息交互,MQTT会主动向服务器发送ping包,检测和MQTT Broker的连连线状态。

MQTTClient.publish - 发布消息

  • 函数原型:MQTTClient.publish(topic, msg, retain=False, qos=0)
  • 参数说明:
参数类型必选参数?说明
topicstring遗嘱消息的目标主题
messagestring遗嘱消息的内容
retainboolBroker是否一直保留该消息,默认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, 密码为:wifiPassword)while 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 == b'ETTTopic':                            # 如果来自名为“ETTTopic”的Topic,则发布消息给名为“ETTUser”的Topicclient.publish("ETTUser", "Nice to meet you, ETT Python User")if topic == b'ETTUser':                                # 如果来自名为“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: b'ETTRegister'  Message: b'Hi, ETT Python!'
Topic: b'ETTUser'  Message: b'Nice to meet you, ETT Python User!'
Topic: b'ETTRegister'  Message: b'Hi, ETT Python, I am coming!'
Topic: b'ETTUser'  Message: b'Nice to meet you, ETT Python User!'
...
http://www.lryc.cn/news/230883.html

相关文章:

  • SQLite3 数据库学习(二):SQLite 中的 SQL 语句详解
  • 基础课4——客服中心管理者面临的挑战
  • RFID技术在危险废物管理中的应用解决方案
  • 二百零三、Flume——Flume实时采集数据频率为1s的高频率Kafka数据直接写入ODS层表的HDFS文件路径下
  • Word或者WPS批量调整文中图片大小的快捷方法
  • url在api测试工具可以访问,但在浏览器不能访问
  • k8s之Helm
  • ElasticSearch 增删改查操作
  • ctfshow sql171-179
  • Mysql 自带分页异常
  • MySQL MVCC机制详解
  • 搭建成功simulink-stm32硬件在环开发环境
  • 【计算机网络】UDP协议
  • ubuntu安装mysql8.0.35过程和报错处理
  • SQL基础理论篇(一):什么是SQL
  • 物联网AI MicroPython学习之语法 GPIO输入输出模块
  • phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction等其它问题的解决办法
  • docker安装AWVS 23.9.231005181
  • 数据同步工具调研选型:SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比
  • 【Vue】Vue3 Swiper 插件 loop 无限滚动、并且暂停的问题
  • MySQL的DATE_FORMAT函数使用
  • MySQL的SQL预编译及防SQL注入
  • 博流BL602芯片 - 烧录配置
  • websocket实现实时数据推送,发布订阅重连单点登录功能
  • 前端代理模式之【策略模式】
  • 人工智能-深度学习之残差网络(ResNet)
  • arm2 day6
  • RxSwift和Combine的相同点和使用例子
  • [Linux打怪升级之路]-信号的保存和递达
  • 【科研新手指南3】chatgpt辅助论文优化表达