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

2023-11-01 23:28

本文主要是介绍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客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/326502

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents:

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

bcolz文档

原文:http://bcolz.blosc.org/en/latest/reference.html First level variables bcolz.__version__'''bcolz包的版本。''' bcolz.dask_here'''是否检测到dask的最低版本。''' bcolz.min_dask_version'''需要dask的最低版本(dask是可选

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v