hunting/middleware/AppManager/README.md
2024-06-15 08:35:07 +08:00

314 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 1. 打猎相机APPWiFi单机版设计文档
| 版本 | 时间 | 说明 |
| ---- | ---- | ---- |
| V1.0 | 2024-5-21 | 首次评审。 |
| V1.1 | 2024-5-25 | 增加标准设置项和动态设置参数协议。 |
| V1.2 | 2024-5-27 | 完善自定义协议描述。 |
## 1.1. 概述
    打猎相机手机APP是用于查看相机的实时视频回放保存在SD卡的MP4视频文件以及对相机进行设置/管理。
**备注:** 本文基于六帧探APP现有功能最小修改量实现APP的定制开发。
## 1.2. APP功能详解
### 1.2.1. 主页
<div style="text-align:center; width: 100%;">
<img src="./build/picture/main_page.png" alt="替代文本" style="text-align:center; width: 30%; height: auto; max-width: 400px; border: 2px solid black;">
<h5 style="text-align: center;">主页图示</h5>
</div>
&emsp;&emsp;主页分三大块相机管理本地相册更多APP相关
#### 1.2.1.1. 相机管理
* 相机管理-添加设备
&emsp;&emsp;手机连接设备的AP热点后自动搜索设备并添加到设备列表。可多次添加多个设备设备列表中可对设备进行删除。
* 相机管理-连接设备
&emsp;&emsp;APP只能连接当前WiFi设备如果当前WiFi未发现设备提示用户正确连接设备WiFi。连接设备后跳转到设备管理页面。
#### 1.2.1.2. 本地相册
<div style="text-align:center; width: 100%;">
<img src="./build/picture/phone_local_files.png" alt="替代文本" style="text-align:center; width: 30%; height: auto; max-width: 400px; border: 2px solid black;">
<h5 style="text-align: center;">本地相册图示</h5>
</div>
&emsp;&emsp;本地相册可查找从相机下载到手机本地的文件(视频/图片)。“紧急”分类里面显示记录仪碰撞时的文件。
&emsp;&emsp;在打猎机的产品形态中“紧急”分类显示PIR触发时拍摄的图片/视频。
#### 1.2.1.3. 更多
&emsp;&emsp;保持不变。
#### 1.2.1.4. 问题列表
1. 如果用户未对设备出厂设置进行修改,如何区分不同的设备?
通过wifi名称进行区分。
2. 如果APP面对多个出厂设备设备信息完全一样如何快速判断连接的是哪个设备
答:音频互动。滴一声表示链接成功。
### 1.2.2. 相机连接页
&emsp;&emsp;APP连接设备后可手动开始/停止录像;可手动拍照。可跳转到相机文件/相机设置界面。
<div style="text-align:center; width: 100%;">
<img src="./build/picture/device.png" alt="替代文本" style="text-align:center; width: 30%; height: auto; max-width: 400px; border: 2px solid black;">
<h5 style="text-align: center;">相机连接图示</h5>
</div>
#### 1.2.2.1. 实时播放界面
* 实时播放rtsp视频流
* 可手动开始/停止录像;
* 可手动拍照;
#### 1.2.2.2. 相机文件
&emsp;&emsp;对相机端的文件进行分类显示。可下载到手机本地/删除/编辑等操作。
<div style="text-align:center; width: 100%;">
<img src="./build/picture/device_local_files.png" alt="替代文本" style="text-align:center; width: 30%; height: auto; max-width: 400px; border: 2px solid black;">
<h5 style="text-align: center;">设备端相册图示</h5>
</div>
##### 1.2.2.2.1. 设备端文件分类
1. PIR触发图片/视频;
2. 手动抓拍图片/视频;
3. 定时抓拍图片/视频;
4. 全部文件;
**文件分类整改方案:**
&emsp;&emsp;目前APP支持的四种协议类型显示循环/拍照/紧急/停车。打猎相机的分类定义为全部/PIR/手动/定时,根据协议进行一一对应回复,全部-循环PIR-紧急,手动-拍照,定时-停车在不修改协议的情况下只需要修改APP的显示文字即可实现APP定制开发。
##### 1.2.2.2.2. 相机设置
&emsp;&emsp;对设备的参数进行读取/修改。目前基于记录仪产品的设置内容无法满足打猎机产品需求。
<div style="text-align:center; width: 100%;">
<img src="./build/picture/settings.png" alt="替代文本" style="text-align:center; width: 30%; height: auto; max-width: 400px; border: 2px solid black;">
<h5 style="text-align: center;">相机设置图示</h5>
</div>
**记录仪当前参数列表:**
| 参数名称 | 数据类型 | 取值说明 | 公版支持 | 备注 |
| ---- | ---- | ---- | ---- | ---- |
| 记录仪WiFi名称 | ---- | ---- | 支持 | ---- |
| 记录仪WiFi密码 | ---- | ---- | 支持 | ---- |
| 固件版本 | ---- | ---- | 支持 | ---- |
| 格式化存储卡 | ---- | ---- | 支持 | ---- |
| 恢复出厂设置 | ---- | ---- | 支持 | ---- |
**打猎机参数需求列表:**
&emsp;&emsp;**下述列表中未支持的设置项作为标准设置项需求APP在切换语言时需要做对应的翻译。**
| 参数名称 | 数据类型 | 取值说明 | 公版支持 | 备注 |
| ---- | ---- | ---- | ---- | ---- |
| 记录仪WiFi名称 | ---- | ---- | 支持 | ---- |
| 记录仪WiFi密码 | ---- | ---- | 支持 | ---- |
| 固件版本 | ---- | ---- | 支持 | 仅显示 |
| ---- | ---- | ---- | ---- | ---- |
| 电量 | ---- | ---- | 未支持 | 仅显示 |
| 工作模式 | 数字 | 0图片<br>1图片+视频 | 未支持 | ---- |
| 连拍|数字 | 1/2/3 | 未支持 | 单位P |
| 连拍间隔 | 数字 | 0~60 | 未支持 | 单位s |
| 图片大小 | 数字 | 8/16/24/32/40 | 未支持 | 单位M |
| 录像分辨率 | 数字 | 0WVGA<br>1HD<br>2FHD | 未支持 | ---- |
| 录像帧率 | 数字 | 15/30 | 未支持 | 单位fps |
| 视频长度 | 数字 | 10/15 | 未支持 | 单位s |
| PIR延时 | 时间 | 00:00:00-23:59:59 | 未支持 | 两个PIR之间的最小间隔 |
| 定时工作 | 时间 | 00:00:00-23:59:59 | 未支持 | 定时唤醒 |
| 工作时间 | 时间 | 起始的时间设置<br>例如起点2000至终点600 | 未支持 | ---- |
| 循环存储 | 数字 | 0OFF<br>1ON | 未支持 | ---- |
| 红外灯功率 | 数字 | 0/1/2 | 未支持 | 低/中/高 |
| PIR灵敏度 | 数字 | 0~9 | 未支持 | ---- |
| 恢复出厂 | ---- | ---- | 支持 | 功能 |
| 格式化SD卡 | ---- | ---- | 支持 | 功能 |
| 重启 | ---- | ---- | 未支持 | 功能 |
#### 1.2.2.3. 问题列表
1. 针对软件迭代需求除了一些和APP业务逻辑相关的参数需要特殊处理外是否可以通过协议来获取设备自定义的参数设置方便设备可以随意的增加/删除设置参数。
答:==已经支持==,看协议能力。
2. 没发现升级功能。
公版APP不支持升级功能。
## 1.3. APP定制整改总结
&emsp;&emsp;**基于WiFi公版基础未修改原有协议做界面显示定制和增量开发方案可控。**
1. “记录仪”统一修改为“相机”;
答:需要定制。
2. 本地相册-“紧急”分类改为“PIR”
3. **新增标准的设置项,见前面描述:打猎机参数需求列表;**
4. APP连接设备后自动录像改为默认不录像可手动录像
答:设备返回非记录仪即可,见能力集。
5. APP上的“循环”改成“全部”“拍照”改成“手动”“紧急”改成“PIR”“停车”改成“定时”**全部包括手动/PIR/定时**
6. **相机设置需要新增设备自定义设置项功能;**
## 1.4. 设置界面动态渲染方案设计
&emsp;&emsp;为了实现设置参数可自由定制,例如:可随意的增加/减少常见类型的参数设置。**此功能APP无需多语言翻译直接显示协议字符即可**。
### 1.4.1. 常见设置类型
| 参数类型 | 数据类型 | 取值说明 | 备注 |
| ---- | ---- | ---- | ---- |
| 显示参数 | ---- | 协议自定义 | 仅显示,无法修改 |
| 开关 | 数字 | 只有0和1<br>0 - 关<br>1 - 开 | 只能设置开/关 |
| 数字输入框 | 数字(带单位/取值范围) | 协议指定取值范围 | 手动输入 |
| 任意输入框 | 无限制 | 无限制 | 手动输入任意字符 |
| 时间 | 时间 | ---- | 设置时间 |
| 功能 | 功能按钮 | 取消/确定 | 例如:格式化/恢复出厂/重启<br>可通过协议自由定义,协议带显示字符 |
| 选项 | 数字 | ---- | 协议带选项对应的文字字符 |
### 1.4.2. 动态渲染设置界面
#### 1.4.2.1. 新增动态设置参数协议
**获取动态设置参数列表**
| | |
| ---- | ---- |
| 描述 | 获取动态设置参数列表。 |
| 接口 | http://192.168.1.100/app/getdynamicparam |
| 参数 | ?index=all&language=xx // 获取全部动态设置参数<br>?index=6&language=xx // 获取索引号为6的动态设置参数 |
| 参数说明 | index设置项索引all代表全部<br>languageAPP当前语言由六帧探定义值设备根据该值回传对应语言的字符串 |
| 返回参数 | result:0-成功,-1-失败<br>info:动态参数列表 |
**获取全部动态参数返回示例:**
```code
{
"result": 0, // 0代表成功-1代表失败
"info":
[
{
"name": "SettingName", // 直接显示在APP界面
"type": "label", // 显示控件类型,只显示
"value": "0-表示字符串", // 当前值
"index": 0 // 设置项索引,直接回传给设备
},
{
"name": "NumberName",
"type": "inputnum", // 数字输入框,带单位显示
"value": 123456789,
"length": 9, // 输入字符最大长度
"unit": "s", // 单位,可选,如果有则显示单位
"index": 1 // 设置项索引,直接回传给设备
},
{
"name": "SwitchName",
"type": "switch", // 开关0-关1-开
"value": 0, // 当前值0-关1-开
"index": 2 // 设置项索引,直接回传给设备
},
{
"name": "InputStringName",
"type": "inputstring", // 任意字符(数字/字母/常见字符)输入框
"value": "0123abcDEF!@#", // 当前值
"length": 15, // 输入字符最大长度
"index": 3 // 设置项索引,直接回传给设备
},
{
"name": "TimeSettingName",
"type": "time", // 时间设置(24小时制)格式hh-mm-ss
"value": "23:59:59", // 当前值格式hh-mm-ss
"index": 4 // 设置项索引,直接回传给设备
},
{
"name": "ConfirmName",
"tips": "Confirm?", // 提示信息没有时使用name
"type": "comfirm", // 功能按钮(确认框)
"index": 5 // 设置项索引,直接回传给设备
},
{
"name": "OptionName",
"type": "option", // 选项设置
"items": ["Option0","Option1"], // 选项列表,格式:["选项1","选项2",...]
"value": 1, // 当前值, 索引值0-Option01-Option1
"index": 6 // 设置项索引,直接回传给设备
}
]
}
```
响应值描述:
| 参数名 | 类型 | 描述 |
| ---- | ---- | ---- |
| name | String | 直接显示在APP |
| type | String | 控件类型:<br>label-字符串,仅显示内容,无法修改<br>inputnum-数字<br>switch-开关(0-关1-开) <br>inputstring-任意字符(数字/字母/常见字符)输入<br>time-时间设置<br>comfirm-功能按钮(确认框)<br>option-选项设置 |
| value | ---- | 当前值类型根据type定义来确定 |
| length | int | 输入框的长度限制 |
| unit | String | 单位如果有则在APP界面显示 |
| index | int | 索引值,设备使用,根据索引值知道修改哪个参数 |
**动态设置项设置协议**
| | |
| ---- | ---- |
| 描述 | 动态设置项设置协议 |
| 接口 | http://192.168.1.100/app/dynamicparamset |
| 参数 | ?index=1&value=0123456789 // 数字输入框<br>?index=2&value=0 // 开关0-关1-开<br>?index=3&value=0123abcDEF!@# // 任意字符输入框<br>?index=4&value=23:59:59 // 时间<br>?index=5&value=0 // 0-取消1-确认 <br>?index=6&value=1 // 0-Option01-Option1以此类推 |
| 返回参数 | result:0-成功,-1-失败<br>返回成功后重新获取动态参数显示 |
**动态设置项设置返回示例:**
```code
{
"result" : 0,
"info" : "success."
}
```
**动态参数显示/设置UML时序图**
```mermaid
sequenceDiagram
participant APP
participant CAMERA
APP ->> APP:进入设置界面
APP ->> +CAMERA:http:getdynamicparam?index=all&language=xx
CAMERA -->> -APP:return
loop 设置界面停留
opt 用户切换语言
note over APP: 语言切换后APP重新获取动态参数
APP ->> +CAMERA:http:getdynamicparam?index=2&language=xx
CAMERA -->> -APP:return
end
opt 用户修改参数
APP ->> APP:用户修改参数
APP ->> +CAMERA:http:dynamicparamset?index=2
CAMERA -->> -APP:return
alt result=0
APP ->> APP:修改成功
APP ->> +CAMERA:http:getdynamicparam?index=2&language=xx
CAMERA -->> -APP:return
APP ->> APP:刷新设置项显示
else result=-1
APP ->> APP:修改失败
end
end
end
opt 设备端修改参数
note over CAMERA: 设备端修改参数未能同步(未发现同步协议)
end
APP ->> APP:退出设置界面
```
### 1.4.3. 拓展规划
&emsp;&emsp;后续如何拓展为4G版本