使用cli.py控制mower-ng实现自动更新 #35

Open
opened 2025-03-09 20:32:14 +08:00 by li-xiaochen · 0 comments
Owner

cli命令

命令 描述
status 获取mower-ng实例状态
launch 启动mower-ng进程
exit 停止mower-ng进程
kill 强制退出mower-ng进程
start 开始运行调度器
stop 停止运行调度器
webui 在浏览器中打开网页面板
log 通过WebSocket获取日志

web api

接口 请求类型 描述
/start GET 开始运行调度器
/stop GET 停止运行调度器
/exit GET 让mower-ng进程主动退出
/profile-name POST 设置网页标题
/scheduler GET 获取调度器的运行状态

/scheduler接口返回json,包含如下两个属性

  • idle 是否正在执行任务
  • next_time 下个任务的时间
idle next_time 含义
true null 调度器没有运行
true ISO 8601格式的时间 调度器正在休息,下次任务时间是next_time
false null 调度器正在执行任务

4HCODNPJ_7O)8YO8C4H3S}U

cli.py里演示了怎样从外部控制一个mower-ng进程
大致的思路是:mower-ng运行之后,会在多开目录下生成一个lockfile.json文件,里面有三项:pid、port、token
pid用来检测进程是否正在运行,以及强制杀死进程
port和token用来访问HTTP API,获取mower-ng的调度器运行状况,控制调度器开始运行、停止运行,也能用来让mower-ng进程主动退出
具体来说有以下几个接口:
GET /start:开始运行调度器
GET /stop:停止运行调度器
GET /exit:让mower-ng进程主动退出
POST /profile-name:设置网页标题
GET /scheduler:获取调度器的运行状态
GET /scheduler返回JSON,有idle和next_time两个字段,前者表示是否正在执行任务,后者表示下个任务的时间,有三种可能的组合:
idle=true,next_time=null:调度器没有运行
idle=true,next_time是ISO 8601格式的时间:调度器正在休息,下次任务时间是next_time
idle=false:调度器正在执行任务
顺便一提,手机上的那个mower-ng helper就是用这个接口来获取状态的
启动器这边,主要有两方面的事情:一是托盘图标,二是自动更新
我已经把mower-ng的托盘图标干掉,刚刚推到main分支上了,等启动器有托盘图标了再合到fast和slow上
webview_ui.py现在改名叫webui.py了,这个比较重要
实际上托盘图标不是那么重要,只要启动器里有一个“打开网页面板”的功能就行
自动更新的话,姑且不论怎么“更新”,“自动”的问题是解决了
趁mower-ng进程休息的时候给它掐掉,更新代码,再给它跑起来,就成了

cli命令 | 命令 | 描述 | |----|----| | status | 获取mower-ng实例状态 | | launch | 启动mower-ng进程 | | exit | 停止mower-ng进程 | | kill | 强制退出mower-ng进程 | | start | 开始运行调度器 | | stop | 停止运行调度器 | | webui | 在浏览器中打开网页面板 | | log | 通过WebSocket获取日志 | web api | 接口 | 请求类型 | 描述 | |----|----|----| | /start | GET | 开始运行调度器 | | /stop | GET | 停止运行调度器 | | /exit | GET | 让mower-ng进程主动退出 | | /profile-name | POST | 设置网页标题 | | /scheduler | GET | 获取调度器的运行状态 | /scheduler接口返回json,包含如下两个属性 - idle 是否正在执行任务 - next_time 下个任务的时间 | idle | next_time | 含义 | |----|----|----| | true | null | 调度器没有运行 | | true | ISO 8601格式的时间 | 调度器正在休息,下次任务时间是next_time | | false | null | 调度器正在执行任务 | ![4HCODNPJ_7O)8YO8C4H3S}U](/attachments/e220b8dc-ba71-4ca4-9ede-8fb0856ed5d2) >cli.py里演示了怎样从外部控制一个mower-ng进程 大致的思路是:mower-ng运行之后,会在多开目录下生成一个lockfile.json文件,里面有三项:pid、port、token pid用来检测进程是否正在运行,以及强制杀死进程 port和token用来访问HTTP API,获取mower-ng的调度器运行状况,控制调度器开始运行、停止运行,也能用来让mower-ng进程主动退出 具体来说有以下几个接口: GET /start:开始运行调度器 GET /stop:停止运行调度器 GET /exit:让mower-ng进程主动退出 POST /profile-name:设置网页标题 GET /scheduler:获取调度器的运行状态 GET /scheduler返回JSON,有idle和next_time两个字段,前者表示是否正在执行任务,后者表示下个任务的时间,有三种可能的组合: idle=true,next_time=null:调度器没有运行 idle=true,next_time是ISO 8601格式的时间:调度器正在休息,下次任务时间是next_time idle=false:调度器正在执行任务 顺便一提,手机上的那个mower-ng helper就是用这个接口来获取状态的 启动器这边,主要有两方面的事情:一是托盘图标,二是自动更新 我已经把mower-ng的托盘图标干掉,刚刚推到main分支上了,等启动器有托盘图标了再合到fast和slow上 webview_ui.py现在改名叫webui.py了,这个比较重要 实际上托盘图标不是那么重要,只要启动器里有一个“打开网页面板”的功能就行 自动更新的话,姑且不论怎么“更新”,“自动”的问题是解决了 趁mower-ng进程休息的时候给它掐掉,更新代码,再给它跑起来,就成了
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: mower-ng/launcher#35
No description provided.