Jelajahi Sumber

update:更新 iotauth 示例代码为最新版

mengyang 3 bulan lalu
induk
melakukan
d97a2b2799
3 mengubah file dengan 254 tambahan dan 34 penghapusan
  1. 114 0
      olddemo/iotauth/iotauth_app.lua
  2. 69 34
      olddemo/iotauth/main.lua
  3. 71 0
      olddemo/iotauth/readme.md

+ 114 - 0
olddemo/iotauth/iotauth_app.lua

@@ -0,0 +1,114 @@
+--[[
+@module  iotauth_app
+@summary 物联网平台 MQTT 三元组参数生成功能模块
+@version 1.0
+@date    2025.10.31
+@author  马梦阳
+@usage
+本功能模块演示的内容为:
+利用 iotauth 库为各主流物联网平台生成 MQTT 连接所需的 client_id、user_name、password 参数:
+1. 为 阿里云 生成 MQTT 三元组参数
+2. 为 中移OneNet 生成 MQTT 三元组参数
+3. 为 华为云IoTDA 生成 MQTT 三元组参数
+4. 为 腾讯云 生成 MQTT 三元组参数
+5. 为 涂鸦云 生成 MQTT 三元组参数
+6. 为 百度云 生成 MQTT 三元组参数
+
+注意事项:
+1. iotauth 库及该示例代码仅供参考,目前已不再提供维护和技术支持服务
+2. 该示例代码存放于:https://gitee.com/openLuat/LuatOS/tree/master/olddemo/iotauth
+3. 在烧录底层固件时需要选择支持 64 位的固件版本
+    Air7xxx、Air8000 系列模组选择版本号为 101-199 的固件
+    Air8101 系列模组选择版本号为 V2xxx 的固件(目前 V2xxx 版本固件还没有第一版)
+
+本文件没有对外接口,直接在 main.lua 中 require "iotauth_app" 就可以加载运行;
+]]
+
+-- 阿里云 MQTT 三元组参数生成
+local function generate_aliyun_auth()
+    local client_id, user_name, password = iotauth.aliyun(
+        "a1B2c3D4e5F",
+        "sensor_001",
+        "Y877Bgo8X5owd3lcB5wWDjryNPoB",
+        "hmacsha256",
+        324721152001213,
+        true
+    )
+    log.info("aliyun", client_id, user_name, password)
+end
+
+-- 中移OneNet MQTT 三元组参数生成
+local function generate_onenet_auth()
+    local client_id, user_name, password = iotauth.onenet(
+        "Ck2AF9QD2K",
+        "test",
+        "T0s3ZkJEdkIxTnR6YktZRXRZMFpKTnNGblpycGdidFY=",
+        "sha256",
+        32472115200,
+        "2048-10-31"
+    )
+    log.info("onenet", client_id, user_name, password)
+end
+
+-- 华为云 IoTDA MQTT 三元组参数生成
+local function generate_iotda_auth()
+    local client_id, user_name, password = iotauth.iotda(
+        "6203cc94c7fb24029b110408_88888888",
+        "123456789"
+    )
+    log.info("iotda", client_id, user_name, password)
+end
+
+-- 腾讯云 MQTT 三元组参数生成
+local function generate_qcloud_auth()
+    local client_id, user_name, password = iotauth.qcloud(
+        "LD8S5J1L07",
+        "test",
+        "acyv3QDJrRa0fW5UE58KnQ==",
+        "sha256",
+        32472115200,
+        "12010126"
+    )
+    log.info("qcloud", client_id, user_name, password)
+end
+
+-- 涂鸦云 MQTT 三元组参数生成
+local function generate_tuya_auth()
+    local client_id, user_name, password = iotauth.tuya(
+        "6c95875d0f5ba69607nzfl",
+        "fb803786602df760",
+        7258089600
+    )
+    log.info("tuya", client_id, user_name, password)
+end
+
+-- 百度云 MQTT 三元组参数生成
+local function generate_baidu_auth()
+    local client_id, user_name, password = iotauth.baidu(
+        "abcd123",
+        "mydevice",
+        "ImSeCrEt0I1M2jkl",
+        "SHA256",
+        32472115200
+    )
+    log.info("baidu", client_id, user_name, password)
+end
+
+-- 主任务函数
+local function main_task()
+    -- 生成阿里云 MQTT 三元组参数
+    generate_aliyun_auth()
+    -- 生成中移OneNet MQTT 三元组参数
+    generate_onenet_auth()
+    -- 生成华为云 IoTDA MQTT 三元组参数
+    generate_iotda_auth()
+    -- 生成腾讯云 MQTT 三元组参数
+    generate_qcloud_auth()
+    -- 生成涂鸦云 MQTT 三元组参数
+    generate_tuya_auth()
+    -- 生成百度云 MQTT 三元组参数
+    generate_baidu_auth()
+end
+
+-- 启动任务
+sys.taskInit(main_task)

+ 69 - 34
olddemo/iotauth/main.lua

@@ -1,49 +1,84 @@
-
--- LuaTools需要PROJECT和VERSION这两个信息
-PROJECT = "iotauthdemo"
-VERSION = "1.0.0"
-
--- 引入必要的库文件(lua编写), 内部库不需要require
-local sys = require "sys"
-
+--[[
+@module  main
+@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
+@version 1.0
+@date    2025.10.31
+@author  马梦阳
+@usage
+
+本demo演示的核心功能为:
+1. 为 阿里云 生成 MQTT 三元组参数
+2. 为 中移OneNet 生成 MQTT 三元组参数
+3. 为 华为云IoTDA 生成 MQTT 三元组参数
+4. 为 腾讯云 生成 MQTT 三元组参数
+5. 为 涂鸦云 生成 MQTT 三元组参数
+6. 为 百度云 生成 MQTT 三元组参数
+
+注意事项:
+1. iotauth 库及该示例代码仅供参考,目前已不再提供维护和技术支持服务
+2. 该示例代码存放于:https://gitee.com/openLuat/LuatOS/tree/master/olddemo/iotauth
+3. 在烧录底层固件时需要选择支持 64 位的固件版本
+    Air7xxx、Air8000 系列模组选择版本号为 101-199 的固件
+    Air8101 系列模组选择版本号为 V2xxx 的固件(目前 V2xxx 版本固件还没有第一版)
+
+更多说明参考本目录下的 readme.md 文件;
+]]
+
+
+--[[
+必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
+PROJECT:项目名,ascii string类型
+        可以随便定义,只要不使用,就行
+VERSION:项目版本号,ascii string类型
+        如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
+            X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
+            因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
+        如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
+]]
+PROJECT = "iotauth"
+VERSION = "001.000.000"
+
+
+-- 在日志中打印项目名和项目版本号
 log.info("main", PROJECT, VERSION)
 
 
--- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
-if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
-    pm.power(pm.PWK_MODE, false)
+-- 如果内核固件支持wdt看门狗功能,此处对看门狗进行初始化和定时喂狗处理
+-- 如果脚本程序死循环卡死,就会无法及时喂狗,最终会自动重启
+if wdt then
+    --配置喂狗超时时间为9秒钟
+    wdt.init(9000)
+    --启动一个循环定时器,每隔3秒钟喂一次狗
+    sys.timerLoopStart(wdt.feed, 3000)
 end
 
-sys.taskInit(function()
-    sys.wait(2000)
-    -- 以下演示的, 均为 mqtt 所需的密钥计算, 可配合demo/socket 或 demo/mqtt 下的示例一起使用
-
-    -- 中移动OneNet
-    local client_id,user_name,password = iotauth.onenet("qDPGh8t81z", "45463968338A185E", "MTIzNDU2")
-    log.info("onenet",client_id,user_name,password)
 
-    -- 华为云
-    local client_id,user_name,password = iotauth.iotda("6203cc94c7fb24029b110408_88888888","123456789")
-    log.info("iotda",client_id,user_name,password)
+-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
+-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
+-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
+-- 启动errDump日志存储并且上传功能,600秒上传一次
+-- if errDump then
+--     errDump.config(true, 600)
+-- end
 
-    -- 涂鸦
-    local client_id,user_name,password = iotauth.tuya(" 6c95875d0f5ba69607nzfl","fb803786602df760")
-    log.info("tuya",client_id,user_name,password)
 
-    -- 百度云服务
-    local client_id,user_name,password = iotauth.baidu("abcd123","mydevice","ImSeCrEt0I1M2jkl")
-    log.info("baidu",client_id,user_name,password)
+-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
+-- 可以使用合宙的iot.openluat.com平台进行远程升级
+-- 也可以使用客户自己搭建的平台进行远程升级
+-- 远程升级的详细用法,可以参考fota的demo进行使用
 
-    -- 腾讯云
-    local client_id,user_name,password = iotauth.qcloud("LD8S5J1L07","test","acyv3QDJrRa0fW5UE58KnQ==")
-    log.info("qcloud",client_id,user_name,password)
 
-    -- 阿里云
-    local client_id,user_name,password = iotauth.aliyun("123456789","abcdefg","Y877Bgo8X5owd3lcB5wWDjryNPoB")
-    log.info("aliyun",client_id,user_name,password)
+-- 启动一个循环定时器
+-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
+-- 方便分析内存使用是否有异常
+-- sys.timerLoopStart(function()
+--     log.info("mem.lua", rtos.meminfo())
+--     log.info("mem.sys", rtos.meminfo("sys"))
+-- end, 3000)
 
-end)
 
+-- 加载 iotauth 应用模块
+require "iotauth_app"
 
 
 -- 用户代码已结束---------------------------------------------

+ 71 - 0
olddemo/iotauth/readme.md

@@ -0,0 +1,71 @@
+## 演示模块概述
+
+1、main.lua:主程序入口;
+
+2、iotauth_app.lua:物联网平台 MQTT 三元组参数生成功能模块;
+
+## 演示功能概述
+
+使用目前主流模组(例如 Air780EPM、Air8000、Air8101)对应的开发板搭配 iotauth 库演示各主流物联网平台 MQTT 三元组参数生成功能;
+
+1、为 阿里云 生成 MQTT 三元组参数;
+
+2、为 中移OneNet 生成 MQTT 三元组参数;
+
+3、为 华为云IoTDA 生成 MQTT 三元组参数;
+
+4、为 腾讯云 生成 MQTT 三元组参数;
+
+5、为 涂鸦云 生成 MQTT 三元组参数;
+
+6、为 百度云 生成 MQTT 三元组参数;
+
+
+
+注意事项如下:
+
+1、iotauth 库及该示例代码仅供参考,目前已不再提供维护和技术支持服务
+
+2、该示例代码存放于:https://gitee.com/openLuat/LuatOS/tree/master/olddemo/iotauth
+
+3、在烧录底层固件时需要选择支持 64 位的固件版本
+
+- Air7xxx、Air8000 系列模组选择版本号为 101-199 的固件
+- Air8101 系列模组选择版本号为 V2xxx 的固件(目前 V2xxx 版本固件还没有第一版)
+
+## 演示硬件环境
+
+1、目前主流模组(例如 Air780EPM、Air8000、Air8101)对应开发板
+
+2、TYPE-C USB数据线一根
+
+## 演示软件环境
+
+1、[Luatools下载调试工具](https://docs.openluat.com/air8000/luatos/common/download/)
+
+2、[Air7xx 系列模组 V2016 版本](https://docs.openluat.com/air780epm/luatos/firmware/version/)(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录 V2016-103 固件对比验证)
+
+3、[Air8000 系列模组 V2016 版本](https://docs.openluat.com/air8000/luatos/common/download/)(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录 V2016-101 固件对比验证)
+
+4、[Air8101 模组 V2xxx 版本](https://docs.openluat.com/air8101/luatos/firmware/)(V1xxx 版本不支持 64 位运算,需要等 V2xxx 版本发布)
+
+## 演示核心步骤
+
+1、搭建好硬件环境
+
+2、Luatools 工具烧录内核固件和 demo 脚本代码
+
+3、烧录成功后,自动开机运行
+
+4、正常运行情况时的日志如下:
+
+```
+[000000000.750] I/user.main iotauth 001.000.000
+[000000000.760] I/user.aliyun a1B2c3D4e5F.sensor_001|securemode=2,signmethod=hmacsha256,timestamp=324721152001213| sensor_001&a1B2c3D4e5F 26DC1595358D45D373FBE40B54540C0D8763DABDE7F1CBB263FF4067A93F7150
+[000000000.761] I/user.onenet test Ck2AF9QD2K version=2048-10-31&res=products%2FCk2AF9QD2K%2Fdevices%2Ftest&et=32472115200&method=sha256&sign=7TMn%2FaAfeybZBTPstT%2FxSQUqHokNOVbJ3JpLJR8fz7g%3D
+[000000000.762] I/user.iotda 6203cc94c7fb24029b110408_88888888_0_0_2999010100 6203cc94c7fb24029b110408_88888888 5888ea6f4631ce76d621f452e8823507c36dd68a61f6e08518c8935e280c3c72
+[000000000.785] I/user.qcloud LD8S5J1L07test LD8S5J1L07test;12010126;qkvrc;32472115200 7f9b0fcd6eb78676f38272f7025948d8564ace5339a5b5c0e00d6339bba30c99;hmacsha256
+[000000000.786] I/user.tuya tuyalink_6c95875d0f5ba69607nzfl 6c95875d0f5ba69607nzfl|signMethod=hmacSha256,timestamp=7258089600,secureMode=1,accessType=1 d4e2d498e4195db3ed213b33d662e3b7bf434dc3d5a1f2e63b602ac9248ba72c
+[000000000.787] I/user.baidu abcd123 thingidp@abcd123|mydevice|32472115200|SHA256 0e2e78921783530a6402f64b4265abbaa4fefb5f5da10af556d0c5b676c52836
+```
+