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

相关文章

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

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

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