物联网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_id | string | Y | 客户端ID,客户端唯一标识 |
server | string | Y | 服务器地址,IP地址或域名 |
port | int | N | 服务器端口,默认是1883 |
user | string | N | 登录服务器上所用用户名 |
password | string | N | 用户密码 |
keepalive | int | N | MQTT客户端keepalive超时时间,单位:秒。 默认为0,范围:[60, 1200] |
ssl | bool | N | 是否使能 SSL/TLS |
ssl_params | string | N | SSL/TLS连线配置参数 |
reconn | bool | N | 是否允许MQTT库自动重连,默认值:True,开启自动重连 |
version | int | N | 要使用的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)
- 函数参数:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
topic | string | 是 | 该消息所属的Topic |
message | string | 是 | MQTT Broker发布的消息内容 |
- 返回值:
无
MQTTClient.set_last_will - 设置要发送给服务器的遗嘱
- 函数原型:MQTTClient.set_last_will(topic, message, retain=False, qos=0)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
topic | string | 是 | 遗嘱消息的目标主题 |
message | string | 是 | 遗嘱消息的内容 |
retain | bool | 否 | Broker是否一直保留该消息,默认False |
qos | int | 否 | 消息的QoS类型,有效类型:0或1,默认为0 |
- 返回值:
无
MQTTClient.connect - 连接服务器
- 函数原型:MQTTClient.connect(clean_session=True)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
clean_session | bool | 否 | 客户端类型标志,默认为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)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
topic | string | 是 | 遗嘱消息的目标主题 |
message | string | 是 | 遗嘱消息的内容 |
retain | bool | 否 | Broker是否一直保留该消息,默认False! MQTT服务器只会为每一个Topic保存, MQTT Client发送的最后一条retain为True的消息。 |
qos | int | 否 | 消息的QoS类型,有效类型:0或1,默认为0 |
- 返回值:
无
MQTTClient.subscribe - 订阅MQTT主题
- 函数原型:MQTTClient.subscribe(topic, qos)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
topic | string | 是 | 遗嘱消息的目标主题 |
qos | int | 否 | 消息的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!'
...
相关文章:

物联网AI MicroPython学习之语法 umqtt客户端
学物联网,来万物简单IoT物联网!! umqtt 介绍 模块功能: MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。 MQTT协议采用订阅者/发布者模式,协议中定义了消息服务质量(Quality of Service&#x…...
SQLite3 数据库学习(二):SQLite 中的 SQL 语句详解
参考引用 SQLite 权威指南(第二版)SQLite3 入门 1. SQL 语句操作 SQLite 数据库 1.1 创建数据表格 create table 表名(字段名 数据类型, 字段名 数据类型, 字段名 数据类型, 字段名 数据类型); 命令行语句结束要加分…...

基础课4——客服中心管理者面临的挑战
客服管理者在当今的数字化时代也面临着许多挑战。以下是一些主要的挑战: 同行业竞争加剧:客服行业面临着来自同行业的竞争压力。为了获得竞争优势,企业需要不断提高自身的产品和服务质量,同时还需要不断降低成本、提高效率。然而…...

RFID技术在危险废物管理中的应用解决方案
一、背景介绍 随着我国经济的快速发展,轻纺、化工、制药、电子等行业的危险废物排放量逐年增加。然而,由于危险废弃物处理不当,可能导致大气、水体和土壤污染,对环境和人体健康造成严重威胁,制约了经济和健康的可持续…...

二百零三、Flume——Flume实时采集数据频率为1s的高频率Kafka数据直接写入ODS层表的HDFS文件路径下
一、目的 在离线数仓中,需要用Flume去采集Kafka中的数据,然后写入HDFS中。 由于每种数据类型的频率、数据大小、数据规模不同,因此每种数据的采集需要不同的Flume配置文件。玩了几天Flume,感觉Flume的使用难点就是配置文件 二、…...

Word或者WPS批量调整文中图片大小的快捷方法
文章目录 0、前言1、编写宏代码2、在文档中调用宏实现一键批量调整3、就这么简单! 0、前言 不知道大家是不是也和我一样,经常需要在编写的Word(或者WPS)文档里插入大量的图片,但是这些图片的尺寸大小一般都不一样&…...
url在api测试工具可以访问,但在浏览器不能访问
api测试工具可以正常返回数据,但在浏览器中输入url无法访问网站那么很有可能是端口号的原因被浏览器取消了访问。 我们可以通过两种方法解决: 1.修改配置文件中的端口号。 2.取消端口号的限制。(具体方法已经有很多前辈讲过了,若感…...

k8s之Helm
理论: 什么是 He lm 在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐。 况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm 通过打包…...

ElasticSearch 增删改查操作
本文主要是介绍 ElasticSearch 的文档增删改查和批量操作,同时会介绍一些 REST API 返回状态码的具体含义。 我们先来看下这个表: 这个表包含了 Index、Create、Read、Update、Delete 这五种方法,我们先来看下 CRUD 操作的 HTTP 请求都长什么…...

ctfshow sql171-179
mysql 先打开我们本地的mysql,可以看到这些数据库 information_schema information_schema 库: 是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息比如数据库名,数据库表, SCHEMATA表: 提供了当前MySQL实例…...
Mysql 自带分页异常
Mysql 自带分页异常 limit?,? 25条数据,在分页是10时,第一页和第二页的数据有重复的 分页是30时无异常。 经检查后发现,是mysql的分页出现了问题,其中分页后进行了排序,按照state进行的排序 select * from user or…...

MySQL MVCC机制详解
MySQL MVCC机制详解 MVCC, 是Multi Version Concurrency Control的缩写,其含义是多版本并发控制。这一概念的提出是为了使得MySQL可以实现RC隔离级别和RR隔离级别。 这里回顾一下MySQL的事务, MySQL的隔离级别和各种隔离级别所存在的问题。 事务是由 …...

搭建成功simulink-stm32硬件在环开发环境
本次实验所使用的软件版本和硬件平台参数如下: Matlab版本: 2021b STM32硬件平台:YF_STM32_Alpha 1R4(参考自STM32 Nucleo F103RB官方开发板) YF_STM32_Alpha开发板 STM32 Nucleo F103RB 开发板 2.1 STM32硬件支持包下载 读者朋友平时使用的是和谐版M…...

【计算机网络】UDP协议
UDP的结构 我们学习一个协议最主要的就是理解它的报文格式,对于UDP协议来说 我们看下面的这张图。 16位UDP长度,表示整个数据报(UDP首部UDP数据)的最大长度。UDP报文长度占两个字节,16位表示的数据范围(0-…...
ubuntu安装mysql8.0.35过程和报错处理
ubuntu安装mysql8.0.35过程 1.更新包列表:首先,确保您的系统已更新到最新状态。运行以下命令来更新包列表和安装最新的软件包: sudo apt update sudo apt upgrade2.安装MySQL服务器:运行以下命令来安装MySQL服务器: …...
SQL基础理论篇(一):什么是SQL
文章目录 什么是SQLSQL的四大部分常用的SQL标准参考文献 什么是SQL SQL的全称是Structured Query Language,即结构化查询语句。 其最早诞生于1974年,IBM研究员发布的一篇论文"SEQUEL:一门结构化的英语查询语言"。这几十年里&…...

物联网AI MicroPython学习之语法 GPIO输入输出模块
学物联网,来万物简单IoT物联网!! GPIO 介绍 模块功能: GPIO通用输入输出。 接口说明 GPIO - 构建GPIO对象 函数原型:Pin(port, dir , pull)参数说明: 参数类型必选参数?说明portintY对应开发板的引脚号…...
phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction等其它问题的解决办法
phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction,也访问不了indexAction方法,但是可以访问ArticleController里面的任意方法。访问其它方法出现这个错误“php - phalcon IndexController handler class cannot be loaded” 有人说是Apache 的rew…...

docker安装AWVS 23.9.231005181
本文声明仅AWVS用作学习使用 将镜像文件secfa_awvs.tar复制到目标机器上。 我的百度网盘文件路径: 链接:https://pan.baidu.com/s/1Pe4qlVp9XKbZ3dLrouaP2w 提取码:67mc –来自百度网盘超级会员V6的分享 在目标机器上,使用以下命…...

数据同步工具调研选型:SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比
产品概述 Apache SeaTunnel 是一个非常易用的超高性能分布式数据集成产品,支持海量数据的离线及实时同步。每天可稳定高效同步万亿级数据,已应用于数百家企业生产,也是首个由国人主导贡献到 Apache 基金会的数据集成顶级项目。 SeaTunnel 主…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...