diff --git a/doc/方案/边缘网关/边缘网关升级功能.md b/doc/方案/边缘网关/边缘网关升级功能.md new file mode 100644 index 0000000..4a5e655 --- /dev/null +++ b/doc/方案/边缘网关/边缘网关升级功能.md @@ -0,0 +1,72 @@ +# 边缘网关升级程序 +>本文档描写IOT边缘网关升级的设计思想及方案概要,不涉及具体实现方案和技术实现方案。 +##功能 +实现边缘设备升级功能,edge server 下发软件信息(OTA.)即版本,watchdog间隔10s后台监听对比要升级的版本和设备版本,不同则升级,wd.shell监听watchdog保证进程运行。 +##模块框架设计 + +### edge server +web下发软件信息 +### edge +存储软件信息和当前设备版本信息,提供http接口方便获取以上信息 +### WatchDog +间隔对比版本信息,通过http方式获取。如果版本不一致,修改 +`docker-compose.yml`中版本信息,执行 +`docker-compose up` 自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器 +### wd.shell +10s定时监听WatchDog进程是否运行 + + +##系统处理流程 + Mqtt Topic:MSG_TOPIC_CONFIG_VER + EDGE SERVER: onSoftWareRequest 推送 + EDGE: onConfigVer 保存信息(SetUpdateVersion) + + HTTP: + WatchDog: http://localhost:8828/ver GetVerFromEdge 获取版本信息 + EDGE: VersionGet 收到请求返回保存信息 + +##开发和运行环境 +###开发环境 + 系统:win10x64 Goland 2021.3.3 go版本 1.16 +###硬件环境 + 飞凌OK3399C开发板 +###软件环境 + Unix/Docker + +##可靠性设计 + +###wd.shell +监听WatchaDog的看门狗,即在监控升级的进程后再放一只看门狗 + + #!/bin/bash + + #判断进程是否存在,如果不存在就启动它如果存在就重启它 + + while true; do + + cd /home/forlinx + + #启动一个循环,定时检查进程是否存在 + + server=`ps aux | grep WatchDog | grep -v grep` + + if [ ! "$server" ]; then + + #如果不存在就重新启动 + + #./WatchDog 8553 -c 1 & + + ./WatchDog 8553 & + + #启动后沉睡10s + + sleep 10 + + fi + + #每次循环沉睡10s + + sleep 10 + + done +