物联网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.rhkb.cn/news/191626.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HackTheBox-Starting Point--Tier 2---Vaccine

文章目录 一 Vaccine 测试过程1.1 打点1.1.1 FTP匿名登录1.1.2 SQL注入 1.2 权限提升 二 题目 一 Vaccine 测试过程 1.1 打点 1.端口扫描 nmap -sV -sC 10.129.191.631.1.1 FTP匿名登录 2.FTP允许匿名登录,发现backup.zip ftp 10.129.191.63解压backup.zip&#x…

03-学成在线内容管理模块之课程查询

课程查询 需求分析 教学机构人员点击课程管理按钮进入课程查询界面,在课程列表页面输入查询条件查询课程的信息 当不输入查询条件时默认会全部课程信息,输入查询条件会查询符合条件的课程信息,约束条件是本教学机构查询本机构的课程信息 数据模型(model工程) 课程查询功能…

一文看懂香港优才计划和高才通计划的区别和优势?如何选?

一文看懂香港优才计划和高才通计划的区别和优势?如何选? 为什么很多人都渴望有个香港身份? 英文这里和内地文化相近,语言相通,同时税率较低、没有外汇管制,有稳定金融体制和良好的营商环境,诸多…

9种高效提速的transformer魔改版本

Transformer目前已经成为人工智能领域的主流模型,应用非常广泛。然而Transformer中注意力机制计算代价较高,随着序列长度的增加,这个计算量还会持续上升。 为了解决这个问题,业内出现了许多Transformer的魔改工作,以优…

互联网医院系统|互联网医院提高医疗资源的利用效率

越来越多患者掌握更多医疗知识并开始积极参与医疗决策过程。他们主动问诊,并开始明确表达治疗和支付方案偏好。同时,互联网医院、视频问诊、远程会诊等技术创新使线上问诊、多学科诊疗等新型医疗服务模式更加可及,互联网医院系统实际上与医院…

css3 初步了解

1、css3的含义及简介 简而言之,css3 就是 css的最新标准,使用css3都要遵循这个标准,CSS3 已完全向后兼容,所以你就不必改变现有的设计, 2、一些比较重要的css3 模块 选择器 1、标签选择器,也称为元素选择…

竞赛选题 深度学习的动物识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

使用select实现定时任务

selectOutOfTime.c里边的代码如下&#xff1a; #include<stdio.h> #include<sys/time.h> #include<sys/types.h> #include<unistd.h> #include <string.h>#define BUF_SIZE 100int main(void){fd_set reads;struct timeval tv;int errorNum;cha…

STM32H750之FreeRTOS学习--------(六)FreeRTOS的列表和列表项

六、FreeRTOS的列表和列表项 文章目录 六、FreeRTOS的列表和列表项列表相关结构体列表项相关结构体迷你列表项列表相关API函数介绍初始化列表vListInitialise()函数vListInitialiseItem()函数vListInsert()函数 vListInsertEnd()函数 uxListRemove() 列表就是一个双向链表&…

数据结构:串(定义,基本操作,存储结构)

目录 1.串的定义2.串的基本操作3.字符集编码4.串的存储结构1.顺序存储2.链式存储 1.串的定义 串&#xff0c;即字符串( String&#xff09;是由零个或多个字符组成的有限序列。 一般记为s ‘a1a2……an’ (n ≥0) 其中&#xff0c;S是串名&#xff0c;单引号括起来的字符序列是…

第 117 场 LeetCode 双周赛题解

A 给小朋友们分糖果 I 动态规划&#xff1a;设 p [ k ] [ i ] p[k][i] p[k][i] 为将 i i i 个糖果分给 k k k 个小朋友的方案数&#xff0c;先求 p [ 2 ] [ i ] p[2][i] p[2][i] &#xff0c;再求 p [ 3 ] [ n ] p[3][n] p[3][n] class Solution { public:using ll long …

Docker学习——⑧

文章目录 1、什么是 Docker Compose(容器编排)2、为什么要 Docker Compose&#xff1f;3、Docker Compose 的安装4、Docker Compose 的功能和使用场景5、Docker Compose 文件&#xff08;docker-compose.yml&#xff09;5.1 文件语法版本5.2 文件基本结构及常见指令 6、Docker …

【C#学习】串口编程

文章目录 第一步&#xff1a;加入串口控件第二步&#xff1a;加入模块第三步&#xff1a;编写相关函数功能获取所有串口资源设置和打开关闭串口发送字符串&#xff08;string&#xff09;发送byte检查串口状态接受byte查询所有可用串口 第一步&#xff1a;加入串口控件 第二步&…

csv文件导入mysql指定表中

csv文件导入mysql指定表中 mysql数据库准备指定表 准备导入的csv数据如下&#xff1a; sepaLengthsepalWidthpetalLengthpetalWidthlabel5.13.51.40.204.931.40.204.73.21.30.20…………… 准备导入的数据为151行5列的数据&#xff0c;其中第一行为标题行。 因此&#xff0…

栈的顺序存储实现(C语言)(数据结构与算法)

栈的顺序存储实现通常使用数组来完成。实现方法包括定义一个固定大小的数组&#xff0c;以及一个指向栈顶的指针。当元素入栈时&#xff0c;指针加一并将元素存储在相应位置&#xff1b;当元素出栈时&#xff0c;指针减一并返回相应位置的元素。 1. 顺序栈定义 #define MaxSi…

scDrug:从scRNA-seq到药物反应预测

scRNA-seq技术允许在转录组水平上对数千个细胞进行测量。scRNA-seq正在成为研究肿瘤微环境中细胞成分及其相互作用的重要工具。scRNA-seq也被用于揭示肿瘤微环境模式与临床结果之间的关联&#xff0c;并在复杂组织中剖析药物治疗的细胞特异性效应。scRNA-seq的最新进展推动了疾…

【unity】网格描边方法

【unity】网格描边方法 介绍对模型四边网格的三种描边方法&#xff1a;包括纯Shader方法、创建网格方法和后处理方法。于增强场景中3D模型的轮廓&#xff0c;使其在视觉上更加突出和清晰。这种效果可以用于增强三维场景中的物体、角色或环境&#xff0c;使其在视觉上更加吸引人…

【仿真动画】双机器人协作完成一个任务(切割)

场景 动画 两个机器人协同工作完成一个任务需要解决以下几个关键问题&#xff1a; 通信&#xff1a;两个机器人需要能够相互通信&#xff0c;以共享信息&#xff0c;例如位置、姿态、状态等。规划&#xff1a;需要对两个机器人的运动轨迹进行规划&#xff0c;确保两个机器人不会…

git 命令行回退版本

git 命令行回退版本 git 命令行回退版本命令: 1.切换到需要回退的分支 git checkout branch-v2.0.02.更新远程分支 git fetch3.找到需要回退版本的版本号git revert a6914da55ff40a09e67ac2426b86f1212e6580eb4.清除工作区缓存git clean -df5.强制提交git push -f

Blazor 附件上传和下载功能

效果图 page "/uploadFile" inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment inject ToastService ToastService inject DownloadService DownloadService<h3>UploadFile</h3><Button OnClick"ButtonClick" C…