Air780EP模块 LuatOS开发-MQTT接入阿里云应用指南

简介

  • 本文简单讲述了利用LuatOS-Air进行二次开发,采用一型一密、一机一密两种方式认证方式连接阿里云。整体结构如图

准备工作

  1. Air780EP_全IO开发板一套,包括天线SIM卡,USB线
  1. PC电脑,串口工具

  2. 准备设备证书及产品证书
    注意:下方证书信息仅为本教程使用,用户需要使用自己的证书信息

lua 复制代码
--设备证书
{
  "ProductKey": "k1hipglLdjU",
  "DeviceName": "868488076506128",
  "DeviceSecret": "fef32adf6dad46c2c7cbf335d3a7b021"
}
--产品证书
{
    "ProductSecret": "8LQwOYSZMwp3DFBd",
    "ProductKey": "k1hipglLdjU"
}
--公共实例ID
{
    "InstanceId":"iot-06z00ipoepm2g97"
}

阿里云介绍

复制代码
物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。此外,也提供方便快捷的设备管理能力,支持物模型定义,数据结构化存储,和远程调试、监控、运维。阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。物联网平台消息通信流程图如下。

API说明

API接口 功能描述
aLiYun.setup() 配置阿里云物联网套件的产品信息和设备信息
aLiYun.setRegion() 设置地域region id
aLiYun.setConnectMode() 设置连接方式
aLiYun.subscribe() 订阅主题
aLiYun.publish() 发布一条消息

详细的API介绍请参见aLiYun章节

实现流程

  • 注册接入服务器结果回调函数

    在收到true时表示连接成功,本demo中去发布一条QOS为1的消息给阿里云。

  • 设置地域

    配置为在阿里云创建项目时所用地区。每个地域完全独立。每个可用区完全隔离,但同一个地域内的可用区之间使用低时延链路相连。地域和可用区之间的关系如下图所示。

阿里云操作

产品操作

打开阿里云平台找到物联网平台 ,开通业务后进入控制台

点开设备管理产品页面 ,点击新建产品。根据需求和图示说明创建产品。

具体详细介绍见阿里云页面

设备操作

创建产品完成后就可以进入设备页面添加设备,在对应产品页面进入设备管理,按照提示添加设备

(在做正式产品时建议使用imei为devicename,方便后期维护)

阿里云设备创建

连接阿里云

LuatOS-Air方式连接概述

复制代码
LuatOS-Air连接相比AT更为简单,只需要简单的配置即可连接,还可以灵活的对数据进行处理。需要从官网或者github下载aliyun的脚本包,或者使用luatoolsv2会自动下载脚本资源,在工具根目录的\Luatools\resource\soc_script\v2024.06.25.16\demo\aliyun中脚本资源会随官网同步更新,具体版本可能和本文不同,不过功能都是一致的。

文档中用到的API接口见aLiYun API章节。

一机一密LuatOS-Air方式连接

一机一密需要提前按照文档中阿里云操作章节事先建好产品并添加设备。

然后找到所使用的脚本版本进入demo目录找到aliyun 文件夹打开main.lua ,根据下方图示打开这三行的require(如果有被注释掉,将注释去掉),并将其他不相关的注释掉。

接着打开testYjym.lua ,根据后面的操作修改三元组信息(DeviceNameProductKeyDeviceSecret )和InstanceId信息。

首先将testYjym.lua 中的三元组信息(DeviceNameProductKeyDeviceSecret)修改为自己项目中的三元组信息。通过下方图示可找到自己项目中的三元组信息。


然后在实例详情页面,找到实例id并将其填写到代码中对应位置。


最后将代码保存,通过Luatools 软件将固件+脚本烧录进设备后,便能连接上阿里云了。这是烧录教程

一型一密LuatOS-Air方式连接(公共实例)

除了需要添加产品和设备外还需要在阿里云平台中打开对应产品的动态注册开关

先找到所使用的脚本版本进入demo 目录找到aliyun 文件夹打开main.lua ,根据下方图示打开这两行的require(如果有被注释掉,将注释去掉),并将其他不相关的注释掉。

接着打开testYxym.lua ,根据后面的操作修改DeviceNameProductKeyProductSecretInstanceId信息。

其中DeviceNameProductKeyInstanceId 信息的位置在一机一密LuatOS-Air方式连接中已指出。下图为ProductSecret信息的位置。

接着将DeviceNameProductKeyProductSecretInstanceId 信息填写到testYxym.lua中对应位置。

最后将代码保存,通过Luatools 软件将固件+脚本烧录进设备后,便能连接上阿里云了。这是烧录教程
注意:第一次使用一型一密时,设备要处于未激活状态。

发布与订阅消息

发布消息

发布消息使用的是**aliyun.publish(topic,qos,payload,cbFnc,cbPara)**这个API。

传入值类型 释义
string UTF8编码的主题
number qos质量等级,0/1,默认0
string payload 负载内容,UTF8编码
function cbFnc 消息发布结果的回调函数,回调函数的调用形式为:cbFnc(result,cbPara)。result为true表示发布成功,false或者nil表示订阅失败;cbPara为本接口中的第5个参数
param cbPara 消息发布结果回调函数的回调参数
return nil

demo里**publishTest()**这个函数演示了接口的操作。无需修改即可实现每20s向阿里云推送一条消息。

lua 复制代码
--发布一条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

订阅消息

订阅使用的是aLiYun.subscribe(topic, qos)

传入值类型 释义
string 主题内容为UTF8编码
param qos为number类型(0/1,默认1)
return nil

以下代码为订阅的操作,用户可根据自己的项目需要订阅主题。

lua 复制代码
--- 连接结果的处理函数
-- @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

OTA升级

  1. 建立项目并接入阿里云
  2. 制作差分升级文件包 生成差分包详细步骤
  3. 阿里云平台上传差分包
  1. 升级包验证
  1. 平台查看升级结果

生成差分包详细步骤

  1. 阿里云平台上传差分包

外链图片转存中...(img-MIHcoZW0-1721798317814)

  1. 升级包验证

外链图片转存中...(img-MroD0eJ6-1721798317815)

  1. 平台查看升级结果

外链图片转存中...(img-ng3LEiZw-1721798317816)

如有需要,请点击 www.openluat.com 获取联系方式

相关推荐
Akamai中国13 小时前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·云服务·云存储
oMcLin13 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 OpenStack 云计算平台,实现多租户虚拟化与弹性伸缩?
ubuntu·云计算·openstack
Tob管理笔记16 小时前
建筑业如何精准开拓优质客户?技术驱动下的方法论与实践
大数据·云计算·数据库开发
咕噜企业分发小米20 小时前
独立IP服务器有哪些常见的应用场景?
人工智能·阿里云·云计算
Mr. zhihao20 小时前
使用 KMS 管理阿里云 OSS 临时凭证(AK/SK/STS):原理、对比与实战代码示例
阿里云·云计算
奇树谦20 小时前
FastDDS阿里云DDSRouter安装和使用(失败)
elasticsearch·阿里云·云计算
虎冯河21 小时前
阿里云 + 宝塔面板环境Python 项目从 0 到 1 部署全流
python·阿里云·云计算
China_Yanhy21 小时前
后端开发者的 AWS 大数据指南:从 RDS 到 Data Lake
大数据·云计算·aws
周之鸥1 天前
宝塔面板 + 阿里云 DNS 实现 Let’s Encrypt 证书自动续签(详细图文教程)
阿里云·云计算·宝塔面板·let’s encrypt·自动续签