2.20 Haas506 2.0开发教程-高级组件库-http ota(2.2版本接口有更新)

haas506 2.0开发教程-高级组件库-http ota

  • HTTP OTA
    • (1)获取URL
    • (2)功能代码
    • (3)日志输出
  • 总结

最新2.2版本hota升级相关接口:
hota(仅支持2.2以上版本)

HTTP OTA

案例说明:

使用HTTP协议实现OTA空中升级,更新开发板的python程序。只需要获取存储位置相应的URL就可以进行更新。(案例使用阿里云OSS进行演示,用户根据需要自行更改存储位置)

(1)获取URL

将最新程序上传阿里云OSS。获取存储位置的URL。

  1. 将main.py和board.json文件压缩成zip格式文件
    2.20 Haas506 2.0开发教程-高级组件库-http ota(2.2版本接口有更新)_第1张图片
  2. 阿里云创建Bucket

2.20 Haas506 2.0开发教程-高级组件库-http ota(2.2版本接口有更新)_第2张图片

  1. 上传文件zip文件

2.20 Haas506 2.0开发教程-高级组件库-http ota(2.2版本接口有更新)_第3张图片

  1. 点击详情 - 复制文件URL(可适当加长时间,超时后URL将会失效)

2.20 Haas506 2.0开发教程-高级组件库-http ota(2.2版本接口有更新)_第4张图片

(2)功能代码

  • 2.2版本获取IMEI号接口有更新,需要更改以下内容(Ctrl+F 查找modem)
import utime as time
#2.02版本替换成
#from modem import net as mynet
import net as mynet
#################################

...


if __name__ == '__main__':
    connect_network()#连接网络
    #2.02版本替换成
    #pacversion = modem.info.getDevFwVersion()
    #print('---------------------------pacversion={}'.format(pacversion))
    #sntp.settime()#SNTP对时
    #print("csq:",mynet.getCsq())
    
    pacversion = modem.getDevFwVersion()
    print('---------------------------pacversion={}'.format(pacversion))
    sntp.settime()#SNTP对时
    print("csq:",mynet.csqQueryPoll())
    #####################################################

mian.py

#!/usr/bin/env python
# -*- encoding: utf-8 -*-


import utime as time
#2.02版本替换成
#from modem import net as mynet
import net as mynet
#################################
import modem
###############
import usys
import http
import network
import sntp


pyversion="202203281800"
#pyversion="202203281620"
g_connect_status = False

def on_4g_cb(args):
    global g_connect_status
    pdp = args[0]
    netwk_sta = args[1]
    if netwk_sta == 1:
        g_connect_status = True
    else:
        g_connect_status = False

def connect_network():
    global net,on_4g_cb,g_connect_status
    net = network.NetWorkClient()
    g_register_network = False
    if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
        g_register_network = True
    else:
        g_register_network = False
    if g_register_network:
        net.on(1,on_4g_cb)
        net.connect(None)
    else:
        print('network register failed')
    while True:
        if g_connect_status:
            print('network register successed')
            break
        time.sleep_ms(20)

#py升级包里包含的是haas506的python脚本升级包,.zip格式的文件
def ota_py_app():
    global ota_flag
    ota_url = "your url"
   
    htp = http.client()
    ota_flag = 0
    if htp.fotaPy(ota_url) == 0:  #py固件下载成功,重启设备
        print('------------------htp.pyfotaPy')
        time.sleep_ms(1000)
        modem.reboot()
    else:
        print('pyota failed!')

#pac升级包里包含的是haas506的pac差分升级包,.pack格式的文件
def ota_pac_app():
    global ota_flag
    htp = http.client()
    ota_url = "your url"
    if htp.fotaSys(ota_url) == 0:  #pac固件下载成功,重启设备
        print('------------------htp.pacfotaPy')
        time.sleep_ms(1000)
        modem.reboot()
    else:
        print('pacota failed!')
   

if __name__ == '__main__':
    connect_network()#连接网络
    #2.02版本替换成
    #pacversion = modem.info.getDevFwVersion()
    #print('---------------------------pacversion={}'.format(pacversion))
    #sntp.settime()#SNTP对时
    #print("csq:",mynet.getCsq())
    
    pacversion = modem.getDevFwVersion()
    print('---------------------------pacversion={}'.format(pacversion))
    sntp.settime()#SNTP对时
    print("csq:",mynet.csqQueryPoll())
    #####################################################
    print('pyversion:{}'.format(pyversion))
    time.sleep(5)
    ota_py_app()
    # ota_pac_app()
    while True:
        print('httpota test')
        time.sleep(3)

(3)日志输出

  • 程序更新成功后会重启
  • 重启后运行更新程序
network register successed
csq: 31
pyversion:202203281800
------------------htp.pyfotaPy
#重启


start led test

总结

代码中包含上传整包和pac差分包,上传整包操作如上,上传pac差分包需要安装工具比较麻烦,有需要后续会更新。

你可能感兴趣的:(haas506,嵌入式硬件,python,物联网,haas506,2.0)