跳转至

update - 远程升级

适用范围

层面 说明
运行环境 LuatOS-Air 脚本框架,展锐 8910 平台(Air724UG / Air722UG / Air795UG / Air720UH 等)
前提条件 需已联网、固件支持 FOTA、服务器上有对应升级包
不适用 Air780E 及以后跑 LuatOS 的 Cat.1 模组;这些模组的同名库在 osapi 里是另一套接口,不能照抄

update.request(cbFnc, url, period, redir)

启动远程升级功能

参数

名称 传入值类型 释义
cbFnc function 可选参数,默认为nil 每次执行远程升级功能后的回调函数,回调函数的调用形式为:
cbFnc(result),result为true表示升级包下载成功,其余表示下载失败
如果没有设置此参数,则升级包下载成功后,会自动重启
url string 可选参数,默认为nil 使用http的get命令下载升级包的url,如果没有设置此参数,默认使用Luatiot平台的url
如果用户设置了url,注意:仅传入完整url的前半部分(如果有参数,即传入?前一部分),http.lua会自动添加?以及后面的参数,例如:
设置的url="www.userserver.com/api/site/firmware_upgrade",则http.lua会在此url后面补充下面的参数
"?project_key="..G.PRODUCT_KEY
.."&imei="..misc.getimei()
.."&device_key="..misc.getsn()
.."&firmware_name=".._G.PROJECT.."
"..rtos.get_version().."&version=".._G.VERSION
如果用户设置了url,且url前面增加三个井号"###",http.lua会自动忽略"###"并以用户填入的url作为请求地址,不会自动添加模块信息,例如:
设置的url="###www.userserver.com"/api/site/firmware_upgrade?customparam=test",则http.lua会将此url开头的"###"忽略,并以此url为地址进行请求
"www.userserver.com"/api/site/firmware_upgrade?customparam=test"
如果redir设置为true,还会补充.."&need_oss_url=1"
period number 可选参数,默认为nil 单位毫秒,定时启动远程升级功能的间隔,如果没有设置此参数,仅执行一次远程升级功能
redir bool 可选参数,默认为nil 是否访问重定向到阿里云的升级包,使用Luat提供的升级服务器时,此参数才有意义
为了缓解Luat的升级服务器压力,从2018年7月11日起,在iot.openluat.com新增或者修改升级包的升级配置时,升级文件会备份一份到阿里云服务器
如果此参数设置为true,会从阿里云服务器下载升级包;如果此参数设置为false或者nil,仍然从Luat的升级服务器下载升级包

返回值

nil

例子

update.request()
update.request(cbFnc)
update.request(cbFnc,"www.userserver.com/update")
update.request(cbFnc,nil,4*3600*1000)
update.request(cbFnc,nil,4*3600*1000,true)

update.setDownloadProcessCbFnc(cbFnc)

设置升级包下载过程中的下载进度通知回调函数

参数

名称 传入值类型 释义
cbFnc function 下载进度通知回调函数,回调函数的调用形式如下:
cbFnc(step)
step表示下载进度:取值范围是0到100,下载进度更新很快,建议在回调函数中,每隔5或者10执行一次实际动作

返回值

nil

例子

update.setDownloadProcessCbFnc(function(step) end)

update.getUpdateMsg()

获取请求升级包时服务器返回的信息

参数

无

返回值

updateMsg, 若没有请求升级或服务器未返回相关信息,则返回值为nil,否则返回服务器返回的相关信息

例子

local msg = getUpdateMsg()

搜索