一看就懂,合宙Air780EP模组LuatOS开发阿里云应用指南
Air780EP是合宙的低功耗4G模组之一,支持全系列的AT指令以及LuatOS脚本二次开发。
本文同样适用于以下型号:
Air780EPA/Air780EPT/Air780EPS
Air780E/Air780EX/Air201…
AT开发阿里云应用参见:
https://mp.weixin.qq.com/s/dCR1y31rB8IlQ5OLcJU09g
1
相关准备工作
1.1 硬件准备
-
合宙Air780EP_全IO开发板一套,包括天线、SIM卡;
-
USB线
-
PC电脑
1.2 软件准备
-
LuatOS固件下载
https://gitee.com/openLuat/LuatOS/releases
-
LuatOS库下载
https://gitee.com/openLuat/LuatOS
-
示例源码下载
https://gitee.com/openLuat/LuatOS/tree/master/demo/aliyun
-
准备设备证书及产品证书
--设备证书
{
"ProductKey": "k1hipglLdjU",
"DeviceName": "868488076506128",
"DeviceSecret": "fef32adf6dad46c2c7cbf335d3a7b021"
}
--产品证书
{
"ProductSecret": "8LQwOYSZMwp3DFBd",
"ProductKey": "k1hipglLdjU"
}
--公共实例ID
{
"InstanceId":"iot-06z00ipoepm2g97"
}
特别提醒:
上方证书信息仅为本教程使用,用户需要使用自己的证书信息。
2
阿里云API实现流程
2.1 阿里云简介
阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。
物联网平台消息通信流程图如下:
2.2 API说明
API接口 | 功能描述 |
---|---|
aliyun.setup(tPara) | 配置阿里云物联网套件的产品信息和设备信息 |
aliyun.ready() | 判断阿里云物联网套件是否已经连接 |
aliyun.store(result) | 获取或存储注册信息 |
aliyun.subscribe(topic,qos) | 订阅主题 |
aliyun.publish(topic,qos,payload,cbFnc,cbPara) | 发布一条消息 |
aliyun.on(evt,cbFnc) | 注册事件的处理函数 |
API详细介绍请参见:
注册接入服务器结果回调函数:
在收到true时表示连接成功,本demo中去发布一条QOS为1的消息给阿里云。
配置为在阿里云创建项目时所用地区。
3
阿里云操作
3.1 产品操作
打开阿里云平台(https://www.aliyun.com/)找到物联网平台,开通业务后进入控制台。
点开设备管理的产品页面,点击新建产品。根据需求和图示说明创建产品。
具体介绍详见阿里云页面:
https://help.aliyun.com/document_detail/73728.html?spm=a2c4g.11174283.6.571.3a8b1668Vmv5CZ
3.2 设备操作
创建产品完成后就可以进入设备页面添加设备,在对应产品页面进入设备管理,按照提示添加设备。在做正式产品时建议使用imei为devicename,方便后期维护。
阿里云设备创建:
https://help.aliyun.com/document_detail/73729.html?spm=a2c4g.11186623.6.573.55977b7bAjX04B
4
连接阿里云
LuatOS-Air连接阿里云相比AT连接阿里云更为简单,只需要简单的配置即可连接,还可以灵活的对数据进行处理。
需要从官网或者github下载aliyun的脚本包,或者使用luatoolsv2会自动下载脚本资源。
在工具根目录的:
\Luatools\resource\soc_script\v2024.06.25.16\demo\aliyun脚本资源会随官网同步更新,具体版本可能和本文不同,不过功能都是一致的。
https://wiki.luatos.com/api/libs/aliyun.html
接下来,将根据不同连接方式分别讲解:
4.1 一机一密LuatOS-Air方式连接
一机一密需要提前按照上文阿里云操作章节,事先建好产品并添加设备。
然后找到所使用的脚本版本进入demo目录找到aliyun文件夹打开main.lua,根据下方图示打开这三行的require(如果有被注释掉,将注释去掉),并将其他不相关的注释掉。
接着打开testYjym.lua,根据后面的操作修改三元组信息(DeviceName、ProductKey、DeviceSecret)和InstanceId信息。
首先将testYjym.lua中的三元组信息(DeviceName、ProductKey、DeviceSecret)修改为自己项目中的三元组信息。
通过下方图示可找到自己项目中的三元组信息:
然后在实例详情页面,找到实例id并将其填写到代码中对应位置:
最后将代码保存,通过Luatools软件将固件+脚本烧录进设备后,便能连接上阿里云了。
烧录教程链接:
https://doc.openluat.com/wiki/21?wiki_page_id=6072#LuatOS_289
4.2 一型一密LuatOS-Air方式连接(公共实例)
除了需要添加产品和设备外,还需要在阿里云平台中打开对应产品的动态注册开关:
先找到所使用的脚本版本进入demo目录找到aliyun文件夹打开main.lua,根据下方图示打开这两行的require(如果有被注释掉,将注释去掉),并将其他不相关的注释掉。
接着打开testYxym.lua,根据后面的操作修改DeviceName、ProductKey、ProductSecret和InstanceId信息。
其中DeviceName、ProductKey和InstanceId信息的位置在上文4.1小节一机一密LuatOS-Air方式连接中已指出。
下图为ProductSecret信息的位置:
接着将DeviceName、ProductKey、ProductSecret和InstanceId信息填写到testYxym.lua中对应位置。
最后将代码保存,通过Luatools软件将固件+脚本烧录进设备后,便能连接上阿里云了。
烧录教程链接:
https://doc.openluat.com/wiki/21?wiki_page_id=6072#LuatOS_289
注意:第一次使用一型一密时,设备要处于未激活状态。
5
发布与订阅消息
5.1 发布消息
发布消息使用的是下面这个API:
**aliyun.publish(topic,qos,payload,cbFnc,cbPara)**。
传入值类型 | 释义 |
---|---|
string |
UTF8编码的主题 |
number |
qos质量等级,0/1,默认0 |
string |
payload 负载内容,UTF8编码 |
function |
cbFnc 消息发布结果的回调函数, |
param |
cbPara 消息发布结果回调函数的 |
return |
nil |
在demo里**publishTest()**这个函数演示了接口的操作。无需修改即可实现每20s向阿里云推送一条消息。
--发布一条QOS为1的消息
function publishTest()
--注意:在此处自己去控制payload的内容编码,aLiYun库中不会对payload的内容做任何编码转换
--aliyun.publish(topic,qos,payload,cbFnc,cbPara)
log.info("aliyun", "上行数据")
aliyun.publish("/"..aliyun.opts.ProductKey.."
/"..aliyun.opts.DeviceName.."/user/update",1,
"LUATOS_CESHI",publishTestCb,"publishTest_"
..publishCnt)
end
5.2 订阅消息
订阅使用的是aLiYun.subscribe(topic, qos):
传入值类型 | 释义 |
---|---|
string |
主题内容为UTF8编码 |
param |
qos为number类型:0/1,默认1 |
return |
nil |
以下代码为订阅的操作,用户可根据自己的项目需要订阅主题。
--- 连接结果的处理函数
-- @bool result,连接结果,true表示连接成功,
false或者nil表示连接失败
local function connectCbFnc(result)
log.info("aliyun","连接结果", result)
if result then
sys.publish("aliyun_ready")
log.info("aliyun", "连接成功")
--订阅主题
--根据自己的项目需要订阅主题
-- aliyun.subscribe(topic,qos)
-- aliyun.subscribe("/"..
aliyun.opts.ProductKey.."/"
..aliyun.opts.DeviceName.."
/user/ceshi",1)
--PUBLISH消息测试
publishTest()
else
log.warn("aliyun", "连接失败")
end
end
6
OTA升级
6.1 建立项目并接入阿里云
https://doc.openluat.com/wiki/21?wiki_page_id=6078
6.3 阿里云平台上传差分包
你有哪些开发故事分享呢
快来文末留言或加交流群吧
文章来源:降功耗找合宙