

## mqtt  工具使用
### 工具下载
[MQTT Explorer | An all-round MQTT client that provides a structured topic overview (mqtt-explorer.com)](https://mqtt-explorer.com/)   
各环境mqtt服务器地址
* 云南蒙自地址    112.116.71.17:1883
* 测试地址    121.40.120.163:1883
* 正式地址    39.174.88.210:12468

按照下图输入IP和端口，暂时不需要用户名和密码可以直接登录

![[Pasted image 20230331153159.png]]

订阅消息
/ah/#  订阅所有消息
/ah/uav/# 只订阅全部无人机消息
/ah/hangar/# 只订阅全部机库消息
/ah/设备类型/设备序列号/#  订阅指定设备的全部消息

按照下面步骤新增订阅并连接到服务器

![[Pasted image 20230331153426.png]]
![[Pasted image 20230331153752.png]]

![[Pasted image 20230331153718.png]]

## app  日志查看
日志目前都存储在自己部署的minio 云存储。
下面是地址和账号  ”/“之前的是账号，后面是密码
云南
http://112.116.71.17:9000/
device-application/s&F4dGN9Q1taErBOuBPVrd3hXhMNhsCt
正式服务器
http://39.174.88.210:12490/login
device-application/s&F4dGN9Q1taErBOuBPVrd3hXhMNhsCt
测试服务器
http://39.174.88.209:10790/buckets/aihang/browse
device-application/s&F4dGN9Q1taErBOuBPVrd3hXhMNhsCt

![[Pasted image 20230331161609.png]]
![[Pasted image 20230331161707.png]]
![[Pasted image 20230331162020.png]]
![[Pasted image 20230331165136.png]] 


##  查问题流程
* 当有人反馈问题时，先初步判断是否为app 相关问题，一般涉及到飞机相关的操作都有可能是app 端的问题。
* 然后根据提供的任务ID去查日志，日志文件名称为飞机序列号+任务名称+任务ID+ 时间戳+时间戳转换出来的日期和时间。如果查不到任务ID 就需要根据问题反馈人反馈时间去找附近时间段的日志文件。
* 找到日志文件之后一般需要解析日志文件，我用这个也可以用别的 [在线JSON转Excel工具 - UU在线工具 (uutool.cn)](https://uutool.cn/json2excel/)
![[Pasted image 20230331171748.png]]
一般只需要看actioninfo 这个字段的东西就行，里面都是关键信息。

任务整个流程为，流程为同步任务，一步出错则后续都不执行：
* 前端页面用户下发任务
* 后端对任务数据、天气、设备状态等进行校验
* 后端下发开库开机    机库端返回成功
* 后端下发遥控器开机 app 返回成功
* 后端下发自检，app 返回自检成功
* 后端下发任务执行，app 返回执行成功
* 后端关闭机库
* 任务中  就正常飞行，也可能会收到远程控制指令这时候会暂停任务，响应远程控制的指令
* 任务结束app调用任务结束接口，接口返回成功飞机返航，三次失败就飞机前往备降点
* 任务结束接口调用成功，后端执行开库动作
* 开库成功后后端发送降落请求这时app 控制无人机进行降落流程
* 降落请求长时间未响应，后端会在降落请求发送后的30分钟执行关库指令
* 降落成功后，app进行图片传输，后端操作机库执行关库夹紧推杆动作
* app图片传输结束后app 调用后端的飞机关机接口，整个任务流程结束

当用户判断出现问题时，先查对应的指令，首先看对应设备有没有收到指令，未收到则为后端或者前端问题。
app 这边对每次收到的指令都会做出响应，无响应说明app有问题。
app 响应且响应为成功结果，则后端或者前端有问题。如果响应结果为错误则根据报错信息查问题

### 暂存已知问题
执行任务起飞后不关库   后端偶发性问题暂未定位到问题
机库开库无人机不开机   后端偶发性问题暂未定位到问题
降落后关库，但是关机失败，已解决，但是测试量不够不确定是否会复现
开库开机后，app 显示传输数据完成，关闭无人机   已解决待测试

### app  指令接收和响应

#### 指令接收
接收执行的  mqtt  topic为 /ah/uav/无人机序列号/command/
指令消息体如下，app 日志会保存下 code 和requestId的内容

```json
{
  "code": "task_stop",
  "data":"",
  "sdkType": "msdk",
  "deviceId": "1ZNDH8500B72MM",
  "requestId": "1111",
  "time": 1667467817551
}
```

#### 指令响应
接收执行的 mqtt  topic为 /ah/uav/无人机序列号/commandResponse/
消息结构如下，当code 不为0是属于指令执行异常，msg 字段会加上原因

``` json
{

"code": 0,
"data": "camera_vertical",
"msg": "on",
"requestId": "1111"
}
```

### app 指令类别参考接口文档
