如何优化网站打开速度,门户网站建站流程,wordpress两个域名,丹阳翼网首页今天贴出的是Air201版关于MQTT实用示例集#xff0c;希望大家喜欢。 本示例教你通过使用脚本代码#xff0c;对Air201模组进行MQTT链接操作。
操作例程包括#xff1a; MQTT单链接 MQTT多链接 MQTT SSL不带证书链接 MQTT SSL带证书链接
大家可根据自身需求#xff0c…今天贴出的是Air201版关于MQTT实用示例集希望大家喜欢。 本示例教你通过使用脚本代码对Air201模组进行MQTT链接操作。
操作例程包括 MQTT单链接 MQTT多链接 MQTT SSL不带证书链接 MQTT SSL带证书链接
大家可根据自身需求选择对应的例程学习。
1. 搭建环境
新同学建议先看前期的基础知识相关教程更有助于理解和操作。 本章所需要用到的脚本存于LuatOS-Air201\demo\mqtt文件夹中若没有找到该脚本可能代码并非最新请根据前面教学重新拉取。
1.1 硬件准备 Air201 PCBA 带有数据通信功能的数据线 Win10以上PC
1.2 软件准备 LuaTools调试工具 https://docs.openluat.com/Luatools/ 最新固件 https://gitee.com/openLuat/LuatOS-Air201/tree/master/core 最新脚本 https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/mqtt MQTTX工具 https://mqttx.app/ 本章教程以MQTTX工具为例进行学习大家也可以使用其他MQTT工具。
我们先把MQTTX工具配置一下 ▼ MQTTX工具配置 ▼
下载好软件后根据下方图中操作指示填写信息 填写好信息点击右上角【连接】。
下一步开始添加订阅主题和发布消息主题 这里要特别注意一下主题格式。
订阅主题格式
要求默认为/luatos/pub/ 加模组的IMEI号例如 /luatos/pub/864536071785271
发布主题格式 要求默认为/luatos/sub/ 加模组的IMEI号例如 /luatos/sub/864536071785271 MQTTX配置已经完成现在开始正式学习。学成之后便可通过MQTT进行自由通信了实际效果如下图所示 2. MQTT单链接示例
2.1 main.lua说明
在main.lua中我们需要调用single_mqtt代码参考如下 2.2 single_mqtt.lua说明
下面将对single_mqtt.lua中的代码进行简单说明并指导大家修改指定参数以便顺利进行MQTT单链接操作。
1在代码开头部分根据自己的服务器修改指定的参数。 需要注意的是user_name和password在有些服务器上是可以不传入的或者是对传入的值没有要求限制。 要根据实际服务器要求来填写。 2此task实现的是MQTT的连接、订阅消息、发布消息的流程。 要先等待网络就绪之后才可进行MQTT后续操作。 待网络就绪之后根据代码编写情况此时client_id、pub_topic和sub_topic会发生变化会覆盖掉代码开头部分时的配置这点需要注意。device_id为模组的IMEI号。 3此task的功能为模组每3秒向服务器发送一次数据 4此代码可实现mqtt-uart透传利用串口工具给服务器发消息或者接收来自服务器的消息。
注意要使用串口1且波特率为9600。 5此task是通过使用rtos.meminfo()查询内存信息并进行打印。
RTOS库详细信息请参考 RTOS底层操作库 https://wiki.luatos.com/api/rtos.html?highlightrtos#rtos-meminfo-type 2.3 示例效果
MQTT单链接示例如下图所示实现效果为模块每3秒向服务器发送一次数据。 前面代码中所提到的mqtt-uart透传实现效果图如下所示 3. MQTT多链接示例
3.1 main.lua说明
在main.lua中我们需要调用multilink_mqtt代码参考如下 3.2 multilink_mqtt.lua说明
1在代码开头部分请根据自己的服务器修改指定的参数。
特别说明 client1_pub_topic client1_sub_topic client2_pub_topic client2_sub_topic
以上几项在后面函数中会再次赋参数因此会覆盖掉这里的参数所以大家可以选择不填。 2此create_mqtt函数主要功能是创建并配置MQTT客户端对象。
具体步骤包括 使用mqtt.create创建一个MQTT客户端对象并将其存储在mqtt_param表的mqttc字段中 使用log.info打印MQTT客户端的配置信息 使用mqttc:auth进行MQTT三元组配置 使用mqttc:autoreconn配置自动重连机制true表示启动自动重连机制3000为自动重连周期单位为ms。 3此mqtt_client1函数主要功能是创建并配置一个MQTT客户端1client1并链接到指定的MQTT服务器。
具体步骤包括 client1_pub_topic和client1_sub_topic分别定义了客户端1的上报主题和订阅主题device_id为设备的IMEI号 使用log.info函数打印客户端1的上报和下发主题 使用create_mqtt函数创建MQTT客户端1并传入mqtt1_param表中参数 设置MQTT客户端1的事件回调函数event为事件类型标识可能出现的值有conack连接确认、recv接收消息、sent发送完成、disconnect服务器断开连接等再根据不同事件类型执行不同的功能 调用connect方法连接到MQTT服务器。 4此mqtt_client2函数主要功能是创建并配置一个MQTT客户端2client2并链接到指定的MQTT服务器。
代码内容与mqtt_client1类似此处不再复述。 5此sys.taskInit为主task函数
函数主要功能是初始化刚才那两个MQTT客户端确保它们能够成功连接到服务器并进行周期性的发布消息以实现与服务器的通信。代码中还进行了设备联网检查及库的兼容性验证确保在合适环境下运行。
具体步骤包括 使用sys.waitUntil让系统等待网络连接就绪 使用mobile.imei()获取模块IMEI号后赋值给device_id作为设备ID 代码检查是否存在有可用的MQTT库。若不存在进入一个无限循环每秒打印一个日志信息告知用户未找到MQTT库 分别启动两个MQTT客户端并等待与服务器成功连接的确认 设定要发布的数据及qos服务质量等级qos为1表示消息至少会被传递一次 使用一个无限循环每隔3秒检查MQTT客户端是否准备好并发送带有时间戳的数据到指定的主题。 6此sys.taskInit的主要功能是每隔3秒打印一次Lua程序和操作系统的内存使用情况。 3.3 示例效果
Client 1 Client 2 4. MQTT SSL不带证书链接示例
4.1 main.lua说明
在main.lua中我们需要调用ssl_mqtt代码参考如下 4.2 ssl_mqtt.lua说明
1在代码开头部分根据自己的服务器修改对应参数。
特别注意
MQTT SSL不带证书链接与带证书链接为同一个文件我们本节教程是MQTT SSL不带证书链接因此要将mqtt_isssl的值改为true 大家可自行参考下方代码进行修改。 2其余代码部分就与MQTT单链接示例中的single_mqtt.lua 代码相同同样为避免重复信息过多影响阅读感受大家可转到上文2.2 single_mqtt.lua说明进行了解。 4.3 示例效果 5. MQTT SSL带证书链接示例
5.1 main.lua说明
在main.lua中我们依旧需要调用ssl_mqtt代码参考如下 5.2 ssl_mqtt.lua说明
1在代码开头部分依旧需要大家根据自己的服务器进行修改对应参数。 不过需要注意的是本次是使用MQTT SSL带证书链接所以需要将mqtt_isssl的值改为table 另外需要注意的是既然是带证书链接那么肯定是需要准备好证书文件了大家在使用自己的服务器时一定要准备好对应的证书文件才行证书文件建议直接放在 LuatOS-Air201\demo\mqtt 文件夹下证书文件路径根据代码中示例自行修改。 在烧录时要将证书文件作为脚本文件一同烧录到模组中。详细烧录教程大家可自行参考 https://docs.openluat.com/Luatools/ 2其余代码部分就与MQTT单链接示例中的single_mqtt.lua代码相同为避免重复信息过多影响阅读感受大家可转到上文2.2 single_mqtt.lua说明进行了解。
5.3 示例效果 今天的分享就到这里