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

LuatOS-SOC接口文档(air780E)--mqtt - mqtt客户端

常量

常量

类型

解释

mqtt.STATE_DISCONNECT

number

mqtt 断开

mqtt.STATE_SCONNECT

number

mqtt socket连接中

mqtt.STATE_MQTT

number

mqtt socket已连接 mqtt连接中

mqtt.STATE_READY

number

mqtt mqtt已连接

mqttc:subscribe(topic, qos)

订阅主题

参数

传入值类型

解释

string/table

主题

int

topic为string时生效 0/1/2 默认0

返回值

返回值类型

解释

int

消息id,当qos为1/2时有效, 若底层返回失败,会返回nil

例子

-- 订阅单个topic, 且qos=0
mqttc:subscribe("/luatos/123456", 0)
-- 订阅单个topic, 且qos=1
mqttc:subscribe("/luatos/12345678", 1)
-- 订阅多个topic, 且使用不同的qos
mqttc:subscribe({["/luatos/1234567"]=1,["/luatos/12345678"]=2})

mqttc:unsubscribe(topic)

取消订阅主题

参数

传入值类型

解释

string/table

主题

返回值

例子

mqttc:unsubscribe("/luatos/123456")
mqttc:unsubscribe({"/luatos/1234567","/luatos/12345678"})

mqttc:debug(onoff)

配置是否打开debug信息

参数

传入值类型

解释

boolean

是否打开debug开关

返回值

返回值类型

解释

nil

无返回值

例子


mqtt.create(adapter,host,port,ssl,isipv6)

mqtt客户端创建

参数

传入值类型

解释

int

适配器序号, 只能是socket.ETH0, socket.STA, socket.AP,如果不填,会选择平台自带的方式,然后是最后一个注册的适配器

string

服务器地址,可以是域名, 也可以是ip

int

端口号

bool/table

是否为ssl加密连接,默认不加密,true为无证书最简单的加密,table为有证书的加密
server_cert 服务器ca证书数据
client_cert 客户端证书数据
client_key 客户端私钥加密数据
client_password 客户端私钥口令数据
verify 是否强制校验 0不校验/1可选校验/2强制校验 默认2

bool

是否为ipv6 默认不是

返回值

返回值类型

解释

userdata

若成功会返回mqtt客户端实例,否则返回nil

例子

-- 普通TCP链接
mqttc = mqtt.create(nil,"120.55.137.106", 1884)
-- 加密TCP链接,不验证服务器证书
mqttc = mqtt.create(nil,"120.55.137.106", 8883, true)
-- 加密TCPTCP链接,单服务器证书验证
mqttc = mqtt.create(nil,"120.55.137.106", 8883, {server_cert=io.readFile("/luadb/ca.crt")})
-- 加密TCPTCP链接,单服务器证书验证, 但可选认证
mqttc = mqtt.create(nil,"120.55.137.106", 8883, {server_cert=io.readFile("/luadb/ca.crt"), verify=1})
-- 加密TCPTCP链接,双向证书验证
mqttc = mqtt.create(nil,"120.55.137.106", 8883, {server_cert=io.readFile("/luadb/ca.crt"),client_cert=io.readFile("/luadb/client.pem"),client_key="123456",client_password="123456",})

mqttc:auth(client_id,username,password,cleanSession)

mqtt三元组配置及cleanSession

参数

传入值类型

解释

string

设备识别id,对于同一个mqtt服务器来说, 通常要求唯一,相同client_id会互相踢下线

string

账号 可选

string

密码 可选

bool

清除session,默认true,可选

返回值

返回值类型

解释

nil

无返回值

例子

-- 无账号密码登录,仅clientId
mqttc:auth("123456789")
-- 带账号密码登录
mqttc:auth("123456789","username","password")
-- 额外配置cleanSession,不清除
mqttc:auth("123456789","username","password", false)
-- 无clientId模式, 服务器随机生成id, cleanSession不可配置
mqttc:auth()

mqttc:keepalive(time)

mqtt心跳设置

参数

传入值类型

解释

int

可选 单位s 默认240s. 最先15,最高600

返回值

返回值类型

解释

nil

无返回值

例子

mqttc:keepalive(30)

mqttc:on(cb)

注册mqtt回调

参数

传入值类型

解释

function

cb mqtt回调,参数包括mqtt_client, event, data, payload

返回值

返回值类型

解释

nil

无返回值

例子

mqttc:on(function(mqtt_client, event, data, payload, metas)-- 用户自定义代码log.info("mqtt", "event", event, mqtt_client, data, payload)
end)
--[[
event可能出现的值有conack -- 服务器鉴权完成,mqtt连接已经建立, 可以订阅和发布数据了,没有附加数据recv   -- 接收到数据,由服务器下发, data为topic值(string), payload为业务数据(string).metas是元数据(table), 一般不处理. -- metas包含以下内容-- qos 取值范围0,1,2-- retain 取值范围 0,1-- dup 取值范围 0,1sent   -- 发送完成, qos0会马上通知, qos1/qos2会在服务器应答会回调, data为消息iddisconnect -- 服务器断开连接,网络问题或服务器踢了客户端,例如clientId重复,超时未上报业务数据
]]

mqttc:connect()

连接服务器

参数

返回值

返回值类型

解释

boolean

发起成功返回true, 否则返回false

例子

-- 开始建立连接
mqttc:connect()
-- 本函数仅代表发起成功, 后续仍需根据ready函数判断mqtt是否连接正常

mqttc:disconnect()

断开服务器连接(不会释放资源)

参数

返回值

返回值类型

解释

boolean

发起成功返回true, 否则返回false

例子

-- 断开连接
mqttc:disconnect()

mqttc:autoreconn(reconnect, reconnect_time)

自动重连

参数

传入值类型

解释

bool

是否自动重连

int

自动重连周期 单位ms 默认3000ms

返回值

例子

mqttc:autoreconn(true)

mqttc:publish(topic, data, qos, retain)

发布消息

参数

传入值类型

解释

string

主题,必填

string

消息,必填,但长度可以是0

int

消息级别 0/1 默认0

int

是否存档, 0/1,默认0

返回值

返回值类型

解释

int

消息id, 当qos为1或2时会有效值. 若底层返回是否, 会返回nil

例子

mqttc:publish("/luatos/123456", "123")

mqttc:close()

mqtt客户端关闭(关闭后资源释放无法再使用)

参数

返回值

例子

mqttc:close()

mqttc:ready()

mqtt客户端是否就绪

参数

返回值

返回值类型

解释

bool

客户端是否就绪

例子

local error = mqttc:ready()

mqttc:state()

mqtt客户端状态

参数

返回值

返回值类型

解释

number

客户端状态

例子

local state = mqttc:state()

mqttc:will(topic, payload, qos, retain)

设置遗嘱消息

参数

传入值类型

解释

string

遗嘱消息的topic

string

遗嘱消息的payload

string

遗嘱消息的qos, 默认0, 可以不填

string

遗嘱消息的retain, 默认0, 可以不填

返回值

返回值类型

解释

bool

成功返回true,否则返回false

例子

-- 要在connect之前调用
mqttc:will("/xxx/xxx", "xxxxxx")

相关文章:

LuatOS-SOC接口文档(air780E)--mqtt - mqtt客户端

常量 常量 类型 解释 mqtt.STATE_DISCONNECT number mqtt 断开 mqtt.STATE_SCONNECT number mqtt socket连接中 mqtt.STATE_MQTT number mqtt socket已连接 mqtt连接中 mqtt.STATE_READY number mqtt mqtt已连接 mqttc:subscribe(topic, qos) 订阅主题 参数 …...

安装Python环境

Python 安装包下载地址:https://www.python.org/downloads/ 打开该链接,可以看到有两个版本的 Python,分别是 Python 3.x 和 Python 2.x,如下图所示: Python下载页面截图 图 1 Python 下载页面截图(包含…...

[nodejs] 爬虫加入并发限制并发实现痞客邦网页截图

今晚想给偶像的相册截个图,避免某一天网站挂了我想看看回忆都不行,用的是js的木偶师来爬虫台湾的部落格,效果图大概是这样,很不错 问题来了.我很贪心, 我想一次性把相册全爬了,也就是并发 ,这个人的相册有19个!!我一下子要开19个谷歌浏览器那个什么进程, 然后程序就崩了, 我就想…...

GEE——Publisher Data Catalogs发布者数据目录

发布者数据目录 发布者数据目录由数据集发布者策划,供更大范围的 Google 地球引擎社区使用,并作为地球引擎资产集公开共享。这些目录并非由 Google 编制。这里是GEE团队简政放权的一个过程,也就是说这些数据集的后续更新和维护并不由GEE团队负…...

计算10的阶乘

一、不好的写法 public static void main(String[] args) {long fun fun(10);System.out.println(fun);}public static long fun(long n) {if (n 1) {return 1;}return n * fun(n - 1);}使用递归完成需求,fun1方法会执行10次,并且第一次执行未完毕&…...

6.卷积神经网络

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 卷积层一、从全连接到卷积二、卷积层三、代码四、QA No.2 卷积层里的填充和步幅一、填充和步幅二、D2L代码注意点三、QA No.3 卷积层里的多输入和多输出通道一、多输入和多输出通道二、D2L代码注意点三、QA No.4 池化层…...

postgresql|数据库|SQL语句冲突的解决

前言: postgresql数据库是比较复杂的一个关系型数据库,而有些时候,即使是简单的插入更新操作也是有很多复杂的机制。 那么,什么是冲突?什么时候会遇到冲突(也就是冲突的常见场景)?…...

overflow溢出属性、定位、前端基础之JavaScript

overflow溢出属性 值 描述 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被修剪&#xff0…...

【JS】Chapter6-Dom 获取属性操作

站在巨人的肩膀上 黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 (六)Dom 获取&属性操作 以下的变量可以将 let 改为 const: let arr [red, green] arr.pu…...

太极培训机构展示服务预约小程序的作用如何

太极是适合男女老幼的,很多地方也有相关的学校或培训机构,由于受众广且不太受地域影响,因此对培训机构来说,除了线下经营外,线上宣传、学员获取和发展也不可少。 接下来让我们看下通过【雨科】平台制作太极教培服务预…...

node使用path模块的基本使用

文章目录 一、path.resolve(常用)二、path.sep三、path.parse其他 一、path.resolve(常用) 由于node 中使用 __dirname 获取的绝对路径是/ ,而我们拼接的路径为‘/’导致路径不统一。 作用:拼接规范的绝对路径 const fs require(fs) const path require(path)// 1…...

我和云栖大会有个约会

前言 云栖大会(Alibaba Cloud Computing Conference)是中国阿里巴巴集团旗下的云计算技术盛会,旨在推动云计算技术的发展和应用。该大会自2009年首次举办以来,已成为云计算行业内规模最大、影响力最广的会议之一。 云栖大会每年…...

Linux各个发行版之间的关系

Linux各个发行版之间的关系 可以查看链接:Linux Timeline 链接中可以下载PNG或者SVG图片...

第一章 第一行Android代码

一、Android简介 1.android系统架构 linux kernel(Linux内核层):提供硬件底层驱动 libraries(系统运行库层):提供了主要的特性支持,如SQLite库、Webkit库;还包含android runtime&…...

怎样利用 AI 大模型,辅助研发管理与效能提升?

AI 大模型已经逐渐渗透到各行各业的应用场景中,在软件研发领域也不例外。在软件研发领域,从需求分析到软件设计,从软件开发到测试,以及最后发布上线,AI 在各个环节都发挥着重要作用。10 月 21 日,思码逸首席…...

聊天室的创建

要创建一个聊天室,您需要: 确定聊天室的主题和目的。 选择一个适当的聊天室平台或应用程序,如Discord、Slack、Zoom等。 注册一个账户并创建一个聊天室。 添加您的朋友或家人或需要的人到聊天室中。 设置聊天室的规则和管理机制&#xff…...

大数据信息抽取

随着互联网的广泛应用和技术的不断进步,海量数据被产生、存储和共享。这些数据中包含着宝贵的的信息和知识,二大数据信息抽取是正是为了把这些数据中关键、有用的信息提取出来。 大数据信息抽取就是指通过自动化的方式,从大数据中提取有异议…...

驱动开发11-1 编写IIC驱动-读取温湿度数据

头文件 head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define GET_HUM _IOR(m, 1, int) #define GET_TEM _IOR(m, 0, int) #endif 应用程序 si7006.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #inc…...

上海中优城市万豪酒店推出全新国际IP童趣主题房,独特住宿体验中国首秀

2023年10月30日&#xff0c;中国上海 – 近日&#xff0c;上海中优城市万豪酒店正式推出由全球品牌娱乐公司孩之宝官方授权打造的小马宝莉和变形金刚主题客房&#xff0c;以创意客房、新奇体验和丰富礼遇&#xff0c;为童游家庭或年轻的动漫迷们开启沉浸式入住之旅&#xff0c;…...

zsh和bash之间互相切换

zsh->bash exec bashbash->zsh exec zsh...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...