init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
--[[
|
||||
@module httpdns_task
|
||||
@summary httpdns 功能模块
|
||||
@version 1.0
|
||||
@date 2025.10.29
|
||||
@author 拓毅恒
|
||||
@usage
|
||||
用法实例
|
||||
|
||||
启动 HTTPDNS 功能
|
||||
- 运行 httpdnstask 任务,等待网络就绪后循环查询域名。
|
||||
- 示例中分别使用阿里DNS和腾讯DNS解析 “luatos.com” 与 “openluat.com”。
|
||||
- 解析结果通过 log.info 打印到串口。
|
||||
|
||||
注:本demo无需额外配置,直接在 main.lua 中 require "httpdns_task" 即可加载运行。
|
||||
]]
|
||||
|
||||
httpdns = require "httpdns"
|
||||
|
||||
local function httpdnstask()
|
||||
-- 如果当前时间点设置的默认网卡还没有连接成功,一直在这里循环等待
|
||||
while not socket.adapter(socket.dft()) do
|
||||
log.warn("httpdns", "wait IP_READY", socket.dft())
|
||||
-- 在此处阻塞等待默认网卡连接成功的消息"IP_READY"
|
||||
-- 或者等待1秒超时退出阻塞等待状态
|
||||
sys.waitUntil("IP_READY", 1000)
|
||||
end
|
||||
|
||||
-- 检测到了IP_READY消息
|
||||
log.info("httpdns", "recv IP_READY", socket.dft())
|
||||
log.info("已联网")
|
||||
while true do
|
||||
sys.wait(1000)
|
||||
-- 通过阿里DNS获取结果
|
||||
local ip = httpdns.ali("luatos.com")
|
||||
log.info("httpdns", "luatos.com", ip)
|
||||
|
||||
|
||||
-- 通过腾讯DNS获取结果
|
||||
local ip = httpdns.tx("openluat.com")
|
||||
log.info("httpdns", "openluat.com", ip)
|
||||
end
|
||||
end
|
||||
|
||||
sys.taskInit(httpdnstask)
|
||||
@@ -0,0 +1,55 @@
|
||||
--[[
|
||||
@module main
|
||||
@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
|
||||
@version 1.0
|
||||
@date 2025.10.29
|
||||
@author 拓毅恒
|
||||
@usage
|
||||
演示功能概述
|
||||
本demo演示如何通过HTTPDNS功能,在LuatOS环境下实现域名解析,从而绕过运营商DNS污染或劫持,提高网络访问稳定性。
|
||||
HTTPDNS通过直接向指定DNS服务器发起HTTP/HTTPS请求获取域名解析结果,不依赖本地UDP 53端口,适用于4G蜂窝、WiFi、以太网等网络场景。
|
||||
功能使用说明
|
||||
本demo以解析“luatos.com” 与 “openluat.com”为例,展示完整流程:初始化、发起查询、获取结果。
|
||||
|
||||
更多说明参考本目录下的readme.md文件
|
||||
]]
|
||||
PROJECT = "HTTPDNS"
|
||||
VERSION = "001.999.000"
|
||||
|
||||
|
||||
-- 在日志中打印项目名和项目版本号
|
||||
log.info("main", PROJECT, VERSION)
|
||||
|
||||
|
||||
|
||||
|
||||
-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
|
||||
-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
|
||||
-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
|
||||
-- 启动errDump日志存储并且上传功能,600秒上传一次
|
||||
-- if errDump then
|
||||
-- errDump.config(true, 600)
|
||||
-- end
|
||||
|
||||
|
||||
-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
|
||||
-- 可以使用合宙的iot.openluat.com平台进行远程升级
|
||||
-- 也可以使用客户自己搭建的平台进行远程升级
|
||||
-- 远程升级的详细用法,可以参考fota的demo进行使用
|
||||
|
||||
|
||||
-- 启动一个循环定时器
|
||||
-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
|
||||
-- 方便分析内存使用是否有异常
|
||||
-- sys.timerLoopStart(function()
|
||||
-- log.info("mem.lua", rtos.meminfo())
|
||||
-- log.info("mem.sys", rtos.meminfo("sys"))
|
||||
-- end, 3000)
|
||||
|
||||
-- 加载 httpdns 功能模块
|
||||
require "httpdns_task"
|
||||
|
||||
-- 用户代码已结束---------------------------------------------
|
||||
-- 结尾总是这一句
|
||||
sys.run()
|
||||
-- sys.run()之后后面不要加任何语句!!!!!
|
||||
@@ -0,0 +1,73 @@
|
||||
## 功能模块介绍
|
||||
|
||||
1、main.lua:主程序入口,负责初始化系统环境和加载httpdns_task模块;
|
||||
|
||||
2、httpdns_task.lua:HTTPDNS功能实现模块,演示如何使用阿里DNS和腾讯DNS进行域名解析;
|
||||
|
||||
## 演示功能概述
|
||||
|
||||
本demo演示如何通过HTTPDNS功能,在LuatOS环境下实现域名解析,从而绕过运营商DNS污染或劫持,提高网络访问稳定性。
|
||||
|
||||
HTTPDNS的主要功能特性:
|
||||
|
||||
1、**绕过DNS污染**:通过直接向指定DNS服务器发起HTTP/HTTPS请求获取域名解析结果,不依赖本地UDP 53端口,有效避免运营商DNS劫持问题;
|
||||
|
||||
2、**支持多种DNS服务**:内置支持阿里DNS和腾讯DNS两种主流的HTTPDNS服务提供商;
|
||||
|
||||
3、**简单易用**:仅需调用一行API即可完成域名解析;
|
||||
|
||||
4、**自动处理错误**:内置错误处理机制,当解析失败时会返回nil;
|
||||
|
||||
## 演示硬件环境
|
||||
|
||||

|
||||
|
||||
1、Air780EPM V1.3版本开发板一块+可上网的sim卡一张+4g天线一根:
|
||||
|
||||
- sim卡插入开发板的sim卡槽
|
||||
|
||||
- 天线装到开发板上
|
||||
|
||||
2、TYPE-C USB数据线一根,Air780EPM V1.3版本开发板和数据线的硬件接线方式为:
|
||||
|
||||
- Air780EPM V1.3版本开发板通过TYPE-C USB口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
|
||||
|
||||
- TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
|
||||
|
||||
## 演示软件环境
|
||||
|
||||
1、Luatools下载调试工具
|
||||
|
||||
2、[Air780EPM 固件](https://docs.openluat.com/air780epm/luatos/firmware/version/)
|
||||
|
||||
## 演示核心步骤
|
||||
|
||||
1、搭建好硬件环境,确保开发板能正常联网
|
||||
|
||||
2、使用Luatools烧录内核固件和demo脚本代码
|
||||
|
||||
3、烧录成功后,设备自动开机运行,等待网络就绪
|
||||
|
||||
4、当网络就绪后,设备会自动执行HTTPDNS解析任务,默认解析以下域名:
|
||||
- 通过阿里DNS解析 "luatos.com"
|
||||
- 通过腾讯DNS解析 "openluat.com"
|
||||
|
||||
5、通过串口调试工具,可以查看设备的运行日志,包括域名解析结果:
|
||||
|
||||
```lua
|
||||
[2025-10-29 11:10:21.571][000000000.689] I/user.main HTTPDNS 001.000.000
|
||||
[2025-10-29 11:10:22.614][000000007.414] D/mobile NETIF_LINK_ON -> IP_READY
|
||||
[2025-10-29 11:10:22.615][000000007.415] I/user.已联网
|
||||
[2025-10-29 11:10:22.633][000000007.454] D/mobile TIME_SYNC 0
|
||||
[2025-10-29 11:10:23.726][000000008.548] I/user.httpdns luatos.com 49.232.89.122
|
||||
[2025-10-29 11:10:23.882][000000008.697] I/user.httpdns openluat.com 121.40.220.186
|
||||
|
||||
```
|
||||
|
||||
6、如需修改解析的域名,只需修改httpdns_task.lua文件中的域名参数:
|
||||
|
||||
```lua
|
||||
-- 示例:修改为解析其他域名
|
||||
local ip = httpdns.ali("example.com") -- 使用阿里DNS解析example.com
|
||||
local ip = httpdns.tx("example.org") -- 使用腾讯DNS解析example.org
|
||||
```
|
||||
Reference in New Issue
Block a user