菜单

5.8 云端工程下载

下载

本节以海滩、汽车两个小工程互相切换为例,介绍我们的 4G 屏如何通过 HTTP 下载并更新工程。按钮、定时任务、业务条件都可以发起更新。

核心功能

  • 下载页面、图片和 Lua 脚本,完成后重新运行工程。
  • 工程包约 360 KB,未压缩;普通演示不使用 13 MiB 压力包。
  • 同一份屏幕脚本可用于我们的 4G 屏和配套电脑网络模拟器。

本例使用我们的 4G 屏 E070C1060(7 寸,1024×600),屏需支持云端工程下载。以下 http_download_* 函数由 Demo 脚本提供,需随工程加载。

1. 文件配置

在 Demo 的“脚本”目录查看以下文件。业务配置、LW 地址和显示放在 main.lua,各模块保持独立。

文件 作用
main.lua 加载模块、初始化、按钮命令和界面显示
stt_link.lua 共用串口收发和 JSON 报文处理
stt_http_ota.lua 发起工程下载、处理返回状态
stt_mqtt.lua 普通 MQTT 连接、发布和接收
stt_tuya.lua TuyaLink 连接、属性上报和接收
stt_cellular.lua 4G 信号和网络状态
stt_time.lua 上电及每小时同步北京时间
Demo 脚本目录与 main.lua 加载入口

图:main.lua 负责把各模块接入系统回调;业务辅助函数在文件下方,原有系统回调保留。

2. 使用方法

2.1 发起下载

lua 复制代码
http_download_start("http://81.70.242.63/ota/4g-261112-r5/guide/B.sttpkg")

地址可以在运行时修改,不绑定页面号或按钮 ID:

lua 复制代码
local url = "http://81.70.242.63/ota/4g-261112-r5/guide/A.sttpkg"
local ok, reason = http_download_start(url)
if not ok then print("下载请求未发出", reason) end

返回 true 只表示请求已发出。下载进度由固件显示,校验、安装完成后才算更新成功;不要在每次周期回调中反复发起下载。

2.2 Demo 的接入位置

位置 作用
on_init 初始化模块、串口和 1 秒定时器
on_timer 调用各模块的 *_tick(),处理超时、心跳和校时
on_uart_recv 将串口数据交给 stt_link_receive()
receive_message 将完整报文分发给对应模块
show_http_status 将提示写到 LW7080

Demo 的 LW7000 是下载地址,LW70F0 写入 1 发起下载。地址按十六进制填写。界面地址初值在 main.lua / on_init 修改;脚本直接触发时,传入当次 URL 即可。

3. 应用

文件 下载
海滩工程 A,可编辑 Cloud网络演示_A.zip
汽车工程 B,可编辑 Cloud网络演示_B.zip
云端工程打包工具 Cloud_OTA_Pack_Tool.zip

解开 ZIP 后,用 ApusTAI 打开其中的 .apustai 工程。打开 A,点击“下载并切换到工程 B”,完成后显示汽车页;B 的按钮可下载回 A。普通包分别约 353 KiB、360 KiB,OTA 下载包未压缩。

点击下载并切换工程的实际操作

图:电脑模拟器实际下载小包并切换页面;模拟器使用电脑网络,信号显示 --,我们的 4G 屏显示实际信号。

制作自己的下载包

用 ApusTAI 编译工程,再将本次生成的 Debug\tmp 打成 .sttpkg。工具需 Python 3.9+、OpenSSL 1.1.1+,具体步骤见包内《使用说明》。

bat 复制代码
pack-project.cmd "D:\Demo\Debug\tmp" "D:\Demo\B.sttpkg" 2026111301 "D:\keys\ota-private.pem"

签名私钥需与屏固件公钥匹配,由固件维护方使用;公开工具不含私钥。打包成功后上传 .sttpkg 到新 URL,再调用 http_download_start(url)。超容量会报错,失败不覆盖已有包。

.apustai 用于编辑工程,.sttpkg 用于云端下载,不能仅修改文件后缀。

4. 常见问题

断网、断电后怎么办?

我们的 4G 屏保存未完成任务,恢复联网后重新下载。采用单区覆盖,不保留旧工程,也不是断点续传;中途断电可能暂时进入工程恢复页,仍可重新下载。

能使用 HTTPS 吗?

入口接受 HTTP/HTTPS,演示使用 HTTP。HTTPS 服务器需有效证书,并按实际服务器验证连接;FTP 暂不支持。

能直接放任意文件到服务器吗?

请上传配套工具生成的签名 .sttpkg 工程包。服务器需支持 Range,响应不要压缩;新版本使用新地址,不要替换正在下载的文件。发布前检查容量,屏端还会检查实际空间。

上一个
5.7 SD卡文件读写
下一个
5.9 MQTT 消息收发
最近修改: 2026-11-13Powered by