边缘计算AI盒子视频分析智能识别算法协议对接文档

发布时间: 2024-03-28 15:57:53

第一章 概要说明

智慧工地-智能AI算法的实现机制,https://www.besovideo.com/detail?t=1&i=129

边缘计算AI盒子、执法记录仪、一体化布控球等目前支持的AI智能算法、视频智能分析算法有哪些,

https://www.besovideo.com/detail?t=1&i=297

AI盒子使用手册,https://www.besovideo.com/detail?t=1&i=340

一.1. 框架简介

本应用框架向上以MQTT为通讯协议对接服务平台,向服务平台提供心跳上报的信息更新。同时接受服务平台向下的各种配置命令。通过一系列的控制命令使得边缘计算设备拥有对视频媒体通道、识别计算任务、系统配置、任务计划、告警记录的管理。来完成对边缘计算设备的配置,完成特定的识别任务。向下可根据适配的不同的硬件接口层,实现同一套框架完成对多种边缘计算设备的接入。

一.2. 拓扑说明

一.2.1. 对接系统拓扑

一.1.1. 对接数据流程

第二章 通讯协议说明

一.1. 上报接口

一.1.1. 视频上传接口

盒子发生告警时,如果开启视频录制功能则会同步录制视频。视频录制阶段,同一个多个通道的多个告警将关联同一个视频文件。因此服务端需要提供一个视频上传接口并配置在盒子后台(参数配置-ServiceUpload),通过HTTP(FORM-DATA)接口上报文件。并返回唯一标识,在上报告警报文时会携带该标识已关联视频文件。

Ø 上传参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

TaskSession

必选

String

所属任务标识

 

1

GBDeviceId

必选

String

盒子国标设备号

不存在则是空字符串 0.0.48+

1

GBTaskChnId

必选

String

所属任务国标通道号

不存在则是空字符串 0.0.48+

1

Video

必选

File

视频文件

 

Ø 返回参数

层级

参数

选项

类型

描述

示例

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

接口状态错误码

 

2

Desc

必选

String

错误码描述

 

1

VideoId

必选

String

视频标识

 

 

Ø 示例

{

"Result":{

"Code":0,

"Desc":""

},

"VideoId":"xxxxxxxxxxxx"

}

 

一.1.1. 自带告警上报接口

盒子的某一路视频检测到某个新增的违规事件时触发告警。触发告警后会在持续5秒内继续收集告警信息,并录制视频。告警上报时先上传视频,再上传告警报文。告警报文采用JSON格式提交。JSON 报文中部分字段根据配置参数以及不同算法上报,参数值或参数名略有不同,因此建议手动解析JSON参数而不是使用框架的功能自动转实体对象。

告警类别参见网页中"其他配置-告警类别"

 

Ø 关于上传告警失败的返回

0.0.37及以上版本可以通过给上报接口响应来告诉识别盒子上报是否成功。格式如下:

{

"Result":{

"Code":0,

"Desc":""

}

}

仅当返回正确的JSON 并且 Code 字段非0,认为失败。否则只要HTTP Status Code  200 都认为成功。

 

Ø 上传参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Addition

可选

Json

透传字段

 

1

AlarmId

必选

String

报警标识

 

1

ImageData

必选

String

原图数据

无标注告警图JPEG的Base64编码

默认无此字段 通过参数配置-上报图类型切换:原图,标注图或则二者都传

默认640X360 通过参数配置-告警图尺寸可切换为相机原始分辨率大小

1

ImageDataLabeled

必选

String

标注图数据

有标注告警图JPEG的Base64编码

默认640X360 通过参数配置-告警图尺寸可切换为相机原始分辨率大小

1

Media

必选

Json

配置的媒体通道

包含通道名、描述、流地址等

1

Summary

必选

String

违规描述

NoHelmet等,其类型见附件【内置算法能力】

等同于Result.Type字段

1

LocalRawPath

必选

String

无标注告警图在盒子中的相对路径

一般作为内置网页显示使用

1

LocalLabeledPath

必选

String

有标注告警图在盒子中的相对路径

一般作为内置网页显示使用

 

 

 

 

 

 

1

TaskSession

必选

String

任务编号

创建时定义

1

GBDeviceId

必选

String

 

国标设备编号,不存在则为空字符串

1

GBTaskChnId

必选

String

 

任务对应的国标通道编号,不存在则为空字符串

1

TaskDesc

必选

String

任务描述

创建时定义

1

Time

必选

Long

告警时间戳

毫秒

1

VideoFile

必选

String

关联的视频标识

视频上传接口返回

1

GPS

必选

Json

当前位置信息

部分硬件设备支持

2

available

必选

Boolean

是否有GPS功能

 

2

kSpeed

必选

Double

对地速度

单位KM/h

2

nSpeed

必选

Double

对地速率

单位 节

2

latitude

必选

Double

纬度

 

2

longitude

必选

Double

经度

 

1

Result

必选

Json

违规情况

 

2

Type

必选

String

违规类型

NoHelmet等,其类型见附件【内置算法能力】

2

RelativeBox

可选

Array

矩形目标位置

【X,Y,Width,Height】百分比坐标

2

RelativeRegion

可选

Array

多边形目标未知

支持检测目标是多边形,百分比XY

2

Properties

可选

Array

 

0.0.34新增,用于存放一些特殊算法的上报信息,上报信息包含property的标识、描述、值、详细信息。如违章停车中,

{"property":"ParkingSec",

"value":30.0,

"desc":"已停靠时间",

"display":"30.00秒"}

3

property

可选

String

 

属性标识

3

desc

可选

String

 

属性描述

3

value

可选

-/-

String/Int/Float

属性值

3

display

可选

String

 

属性详细信息

1

Addition

可选

Json

透传字段

 

 

Ø 上报信息中关于国标信息特别说明:

n GBTaskChnId:当前任务配置的国标通道编号

n GBDeviceId: 当前盒子配置的国标设备编号

 

n Media.SubId: 当前任务使用的  视频通道配置的国标通道编号

 

 

Ø 上传报文示例-区域入侵

{

"Addition": null,

"AlarmId": "1DFEF6F0-D11D-447E-8BF0-2B647D2AA934",

"BoardId": "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5",

"BoardIp": "192.168.0.84",

"DataId": 0,

"GBDeviceId": "",

"GBTaskChnId": "",

"GPS": {

"angleCourse": 0.0,

"available": false,

"kSpeed": 0.0,

"latitude": 0.0,

"longitude": 0.0,

"nSpeed": 0.0

},

"Id": 0,

"ImageData": "/9j/2wBDAAU***",   //无标注告警图的Base64数据,默认640X360,通过参数配置-告警图尺寸可切换为相机原始分辨率大小

"ImageDataLaebled":"/***",//

"LocalLabeledPath": "",

"LocalRawPath": "Images/DAY_20231108/IMAGBF4427599C_raw.jpg",

"Media": {

"GBTransport": false,

"MediaDesc": "",

"MediaHeight": 720,

"MediaName": "1",

"MediaUrl": "rtsp://192.168.0.8:8556/smoking",

"MediaWidth": 1280,

"Params": null,

"RtspTransport": false

},

"Result": {

"Cropped": false,

"Description": "人员闯入",

"Intrude": true,

"Properties": [{

"desc": "区域中人数",

"display": "区域中人数:2",

"property": "PeopleInForbiddenArea",

"type": "integer",

"value": 2

}, {

"desc": "闯入区域标识",

"display": "闯入区域标识:1",

"property": "IntrudeRegionId",

"type": "string",

"value": "1"

}],

"RegType": "Rectangle",

"RelativeBox": [0.78125, 0.861111104, 0.07968749888, 0.1361111128],

"Type": "Intrude"

},

"Summary": "Intrude",

"TaskDesc": "",

"TaskSession": "1",

"Time": "2023-11-08 14:58:18",

"TimeStamp": 1699426698084625,

"Type": 0,

"UniqueId": "ALARM_6E2218F2-434F-4DCA-A739-5517FAB4263A",

"VideoFile": ""

}

 

Ø 上传报文示例-人员越线

{

"Addition": null,

"AlarmId": "C728BD48-13DE-4717-BDBF-A83506C779CD",

"BoardId": "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5",

"BoardIp": "192.168.0.84",

"DataId": 0,

"GBDeviceId": "",

"GBTaskChnId": "",

"GPS": {

"angleCourse": 0.0,

"available": false,

"kSpeed": 0.0,

"latitude": 0.0,

"longitude": 0.0,

"nSpeed": 0.0

},

"Id": 0,

"ImageData": "/9j/2wBDAA***",

"LocalLabeledPath": "",

"LocalRawPath": "Images/DAY_20231108/IMAGE_05E9A6D1-94C1-42E2-9D03-BC1E44C6D097_raw.jpg",

"Media": {

"GBTransport": false,

"MediaDesc": "",

"MediaHeight": 720,

"MediaName": "1",

"MediaUrl": "rtsp://192.168.0.8:8556/smoking",

"MediaWidth": 1280,

"Params": null,

"RtspTransport": false

},

"Result": {

"Cropped": false,

"Description": "\u4eba\u5458\u8d8a\u7ebf",

"PeopleCross": true,

"Properties": [],

"RegType": "Rectangle",

"RelativeBox": [0.32187500, 0.394444435, 0.089062, 0.4388888],

"Type": "PeopleCross"

},

"Summary": "PeopleCross",

"TaskDesc": "",

"TaskSession": "1",

"Time": "2023-11-08 14:54:20",

"TimeStamp": 1699426460444245,

"Type": 0,

"UniqueId": "ALARM_64385101-07DD-4599-A154-52AE830504BD",

"VideoFile": ""

}

 

Ø 上传报文示例-未佩戴口罩

{

"Addition" : null,

"AlarmId" : "2875E782-0D8D-42FE-AAFF-815D57FC7C6E",

"BoardId" : "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5",

"BoardIp" : "192.168.0.84",

"GPS" :

{

"angleCourse" : 0.0,

"available" : false,

"kSpeed" : 0.0,

"latitude" : 0.0,

"longitude" : 0.0,

"nSpeed" : 0.0

},

"ImageDataLabeled" : "***********jpeg base64***********",

"ImageData" : "***********jpeg base64***********",

"Media" :

{

"GBTransport" : false,

"MediaDesc" : "",

"MediaHeight" : 1080,

"MediaName" : "te",

"MediaUrl" : "rtsp://192.168.0.8:8556/street1",

"MediaWidth" : 1920,

"Params" : null,

"RtspTransport" : false

},

"Result" :

{

"Cropped" : false,

"Description" : "未佩戴口罩",

"NoMask" : true,

"Properties" : [],

"RegType" : "Rectangle",

"RelativeBox" :

[

0.46562498807907104,

0.12777778506278992,

0.012500000186264515,

0.025925925001502037

],

"Type" : "NoMask"

},

"Summary" : "NoMask",

"TaskDesc" : "",

"TaskSession" : "te",

"Time" : "2023-06-17 15:20:48",

"TimeStamp" : 1686986448561973,

"Type" : 0,

"UniqueId" : "ALARM_1EADD779-AE9A-46AD-923A-4D9545F20F8E",

"VideoFile" : "*****"

}

 

Ø 上传报文示例-人脸抓拍

{

"Addition" : null,

"AlarmId" : "176B2ECC-FA6E-4B41-A40E-AE5625B56AF9",

"BoardId" : "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5",

"BoardIp" : "192.168.0.84",

"GPS" :

{

"angleCourse" : 0.0,

"available" : false,

"kSpeed" : 0.0,

"latitude" : 0.0,

"longitude" : 0.0,

"nSpeed" : 0.0

},

"ImageDataLabeled" : "***********jpeg base64***********",

"ImageData" : "***********jpeg base64***********",

"Media" :

{

"GBTransport" : false,

"MediaDesc" : "",

"MediaHeight" : 1080,

"MediaName" : "te",

"MediaUrl" : "rtsp://192.168.0.8:8556/street1",

"MediaWidth" : 1920,

"Params" : null,

"RtspTransport" : false

},

"Result" :

{

"CaptureFace" : true,

"Cropped" : true,

"Description" : "抓拍到人脸",

"Properties" :

[

{

"desc" : "人脸置信度",

"display" : "94%",

"property" : "FrontFaceScore",

"type" : "float",

"value" : 0.94267600774765015

},

{

"desc" : "抓拍图",

"display" : "抓拍图",

"property" : "cropped_face_image",

"type" : "image",

"value" : "***********jpeg base64***********"

}

],

"RegType" : "Rectangle",

"RelativeBox" :

[

0.46625000238418579,

0.34962961077690125,

0.054999999701976776,

0.087259262800216675

],

"Type" : "CaptureFace"

},

"Summary" : "CaptureFace",

"TaskDesc" : "",

"TaskSession" : "te",

"Time" : "2023-06-17 15:20:55",

"TimeStamp" : 1686986455081019,

"Type" : 0,

"UniqueId" : "ALARM_04A1B7DA-DA63-447B-A9C1-2583E55C254D",

"VideoFile" : "*******"

}

 

Ø 上报报文实例-客流计数

{

"Addition": null,

"AlarmId": "057D5AFA-1CEE-4F11-AFCD-2968C26BF863", 

"BoardId": "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5", //设备标识

"BoardIp": "192.168.0.84", //设备IP

"DataId": 71580, 

"GBDeviceId": "",    //设备的国标设备ID,不存在则为空

"GBTaskChnId": "", //告警所属任务配置的国标通道ID,不存在则为空

"GPS": {            //设备位置信息,不支持则available为false

"angleCourse": 0.0,

"available": false,

"kSpeed": 0.0,

"latitude": 0.0,

"longitude": 0.0,

"nSpeed": 0.0

},

"Id": 71580,

"ImageData": "/9j/2wBDAAUDBAQEAwUEBAQ",  //上报时的截图,不设置则为空

"LocalLabeledPath": "",

"LocalRawPath": "Images/DAY_20231016/RAWA8741.jpg",  //上报图本地路径,不设置则为空

"Media": {   //告警所属任务使用的视频通道信息

"GBTransport": false,  //通道是否接入GB28181

"MediaDesc": "",       //通道配置的描述信息

"MediaHeight": 1080,  //通道视频的高度

"MediaName": "1",     //通道标识

"MediaUrl": "rtsp://admin:ruijing123@192.168.0.67",  //通道的视频地址

"MediaWidth": 1920,  //通道视频的宽度

"Params": null,        //预留其他参数

"RtspTransport": false  //是否开启RTSP转发

},

"Result": {

"Count": [0, 1],  //计数信息,第一、二个数字分别表示时间段内进、出的数量(目前可能是0,1或1,0)

"Cropped": false,

"Description": "出",

"HeadCount": true,

"Properties": [{

"desc": "计数时间段",

"display": "2023-10-16 09:40:22 ~ 2023-10-16 09:40:22",

"property": "TimeRange",

"type": "json",

"value": [1697420422336720, 1697420422336720]

}, {

"desc": "统计数量",

"display": "1",

"property": "Count",

"type": "json",

"value": [0, 1]

}, {

"desc": "客流方向",

"display": "出",

"property": "Direction",

"type": "integer",

"value": 2

}],

"RegType": "Line",   //上报的点集类型

"RelativeRegion": [{  //点集,这里表示统计到人员进出时的轨迹

"X": 0.5411666035652161,

"Y": 0.5921277403831482

}, {

"X": 0.5411666035652161,

"Y": 0.5957587361335754

}, {

"X": 0.5411666035652161,

"Y": 0.5961535573005676

}, {

"X": 0.5411666035652161,

"Y": 0.5961535573005676

}, {

"X": 0.5411666035652161,

"Y": 0.5957587361335754

}, {

"X": 0.5389134287834167,

"Y": 0.5925225615501404

}, {

"X": 0.5369532108306885,

"Y": 0.5890265703201294

}, {

"X": 0.5345761775970459,

"Y": 0.5853485465049744

}, {

"X": 0.5296907424926758,

"Y": 0.582474946975708

}, {

"X": 0.5221085548400879,

"Y": 0.5685375928878784

}, {

"X": 0.49287739396095276,

"Y": 0.5488307476043701

}, {

"X": 0.46239492297172546,

"Y": 0.5153772830963135

}, {

"X": 0.429618239402771,

"Y": 0.5408515930175781

}],

"Tags": ["出"], //标识

"TimeRange": [1697420422336720, 1697420422336720],//统计时间段

"Type": "HeadCount"//客流统计的告警标识

},

"Summary": "HeadCount",  //客流统计的告警标识

"TaskDesc": "",  //任务描述

"TaskSession": "3", //任务标识

"Time": "2023-10-16 09:40:22", //告警产生的时间

"TimeStamp": 1697420422345521,//告警产生的时间戳 微秒

"Type": 0, //预留字段

"UniqueId": "ALARM_5AF9BCA8-C968-4AAB-8103-ED4F9B6DEECA",

"VideoFile": ""//录像小视频,未开启则为空

}

Ø 上传报文实例-区域车辆禁停

{

"Addition" : null,

"AlarmId" : "1F3704C9-E5F7-47FA-B7C9-E733EAC2A61E",

"BoardId" : "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5",

"BoardIp" : "192.168.0.84",

"GPS" :

{

"angleCourse" : 0.0,

"available" : false,

"kSpeed" : 0.0,

"latitude" : 0.0,

"longitude" : 0.0,

"nSpeed" : 0.0

},

"ImageDataLabeled" : "",

"ImageData" : "***********jpeg base64******************",

"Media" :

{

"GBTransport" : false,

"MediaDesc" : "",

"MediaHeight" : 1080,

"MediaName" : "1",

"MediaUrl" : "rtsp://192.168.0.8:8556/plate",

"MediaWidth" : 1920,

"Params" : null,

"RtspTransport" : false

},

"Result" :

{

"Cropped" : false,

"Description" : "车辆长时间停泊",

"NoParking" : true,

"Properties" :

[

{

"desc" : "已停靠时间",

"display" : "60.19秒",

"property" : "ParkingSec",

"type" : "float",

"value" : 60.193077087402344

},

{

"desc" : "车牌",

"display" : "苏D83555",

"property" : "ParkingPlate",

"type" : "string",

"value" : "苏D83555"

}

],

"RegType" : "Rectangle",

"RelativeBox" :

[

0.0,

0.067061461508274078,

0.28854167461395264,

0.50555557012557983

],

"Type" : "NoParking"

},

"Summary" : "NoParking",

"TaskDesc" : "",

"TaskSession" : "123",

"Time" : "2023-06-17 15:22:52",

"TimeStamp" : 1686986572791520,

"Type" : 0,

"UniqueId" : "ALARM_E5B1795C-B693-4ECE-9CDF-AF7ABF53739F",

"VideoFile" : "××××"

}

 

Ø  特定算法字段[Properties]说明

 

算法

KEY

类型

含义

拥挤度

CrowdPeopleNUmber

INTEGER

人员估算数量

非机动车停靠

ParkingSec

FLOAT

停靠时间(秒)

非机动车停靠

ParkingPlate

String

当开启车牌识别时,如果识别到违停车辆的车牌将通过此属性上报

人脸抓拍

FrontFaceScore

FLOAT

人脸置信度

人脸抓拍

cropped_face_image

JPEG_BASE64

抓拍人脸图

人员入侵

PeopleInForbiddenArea

Integer

区域中人数

人员入侵

IntrudeRegionId

STRING

闯入的区域标识

车牌号

CarPlateInfo

STRING

车牌识别算法上报识别到的车牌嘻嘻你

禁止检测

StationarySec

FLOAT

禁止时长

人员徘徊

PeopleInWanderArea

INT

徘徊区域中人数

人员徘徊

WanderRegionId

STRING

徘徊区域标识

人数监控

people_number

INT

人员数量

人员聚集

people_gather_num

INT

聚集人数

人员聚集

people_gather_points

JSON ARRAY

聚集人员

按钮指示灯

light_id

STRING

指示灯标定区域标识

按钮指示灯

light_color

STRING

指示灯颜色

按钮指示灯

last_light_status

STRING

变化前亮灭状态

按钮指示灯

current_light_status

STRING

当前亮灭状态

乙炔瓶放置

angle_of_acetylene

FLOAT

乙炔瓶倾斜角度

电梯占用

elevator_occupy_sec

FLOAT

电梯占用时长

通道占用

OccupySec

FLOAT

通道占用时长

拥挤度

CrowdPeopleNUmber

INT

人员估算数量

 

 

 

 

 

一.1.1. 显示上报失败的自查办法

Ø 点击告警记录中的“查看”或鼠标放在 “等待重试”上将显示失败原因

Ø 上传失败需要检查

n 如果开启了视频录制是否设置视频上报地址(“参数配置”->“ServiceUpload”)

n 如果开启了视频录制视频上报接口是否按照协议正确返回

n 检查网关及DNS的设置确认盒子中是否可以正常访问设置的“视频上传地址”和“告警上报地址”

n 其他情况可下载日志分析查看 http://xx.xx.xx.xx/Content/app.log

一.1.2. 特殊客户二次开发上报接口说明[0.0.37+]

当自带告警上报不满足某些客户的需求时,二次开发上报接口允许客户按照规定格式实现动态库(规定名称为: libAlarmReport.so), 上报时优先检测动态库的有效性并使用动态库提供之函数进行上传.这样对于特殊客户的私有协议、私有数据格式可以有更好的拓展性。

动态库中需要包含名为: api_result do_alarm_report(const std::string,const std::string);的函数实现.

简要示例:

#include <iostream>
struct api_result {
    int code;
    char desc[256];
};


extern "C" {
api_result do_alarm_report(const std::string &url, const std::string &body) {
    api_result resp;
    printf("%s\n", address.c_str());
    printf("%s\n", body.c_str());
    resp.code = 1;
    resp.desc = "未实现上传";
    return resp;
}
};

其中:

(1) 入参 address 是的当前告警所属任务的上报地址(创建任务时填写)

(2) 入参 body 是当前告警的所有数据,其格式为JSON字符串.

(3) 返回值 api_result  返回上报是否成功以及失败的描述

body 示例同自带告警上报的JSON类似,开发者可以解析后按照私有格式或私有协议进行上报:

{

        "Addition" : null,

        "AlarmId" : "18B3EE6D-77C4-4494-900A-B8114F715C6C",

        "BoardId" : "RJ-BOX3-6570DE7B8E6500883C203262C575981D",

        "BoardIp" : "192.168.0.110",

        "GPS" :

        {

                "available" : false,

                "kSpeed" : 0.0,

                "latitude" : 0.0,

                "longitude" : 0.0,

                "nSpeed" : 0.0

        },

        "LocalLabeledPath" : "Images/DAY_20230130/LABELED_IMAGE_EFE8A76A-C835-4049-B6A4-37B46073745E1.jpg",

        "LocalRawPath" : "",

        "Media" :

        {

                "GBTransport" : false,

                "MediaDesc" : "",

                "MediaHeight" : 1080,

                "MediaName" : "1",

                "MediaUrl" : "rtsp://192.168.0.8:8556/office",

                "MediaWidth" : 1920,

                "Params" : null,

                "RtspTransport" : false

        },

        "Result" :

        {

                "NoHelmet" : true,

"Display" : "无安全帽",

                "Properties" : [],

                "RegType" : "Rectangle",

                "RelativeBox" :

                [

                        0.066559880971908569,

                        0.27217996120452881,

                        0.02604166604578495,

                        0.066666670143604279

                ],

                "Type" : "NoHelmet"

        },

        "Summary" : "NoHelmet",

        "TaskDesc" : "",

        "TaskSession" : "1",

        "Time" : "2023-01-30 11:51:18",

        "TimeStamp" : 1675050678606426,

        "Type" : 0,

        "VideoFile" : ""

}

 

一.1. MQTT版本交互控制协议

使用MQTT协议实现对系统内所有功能的信息查询、修改、配置功能。需要注意的是:MQTT目前实现了基于TCP和WebSocket的规范。需要根据实际情况选择及配置(参数配置——RemoteBrokerUrl)。如:当需要在前端使用MQTT则可能需要使用基于WebSocket的MQTT协议,其连接字符串如:ws://192.168.0.1:1883。否则如:tcp://192.168.0.1:1883。支持通过tcp://account:passwd@192.168.9.1:1883的格式传入用户名密码。

所有约定的下行交互控制报文,必须在JSON根节点携带“BoardId”字段来指定操作设备。并且均会通过 {$topic}_reply主题进行响应。

Ø 公共参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

业务编码

 

 

一.1.1. 日志上报

在MQTT接入时,系统设置中开上报选项。将向特定主题上报产生的关键日志。

Ø 监听主题

/edge_app_notify

Ø 上报参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

EventType

必选

String

业务标识

/app_error_log

1

Content

必选

String

日志信息

 

 

一.1.2. 主动心跳上报

在MQTT接入时,按照设定的上报间隔时间(默认5秒)对系统主要参数及状态信息进行数据上报。服务端可订阅心跳报文,对于过期未收到心跳的设备作为异常事件进行人工干预。

Ø 监听主题

/board_ping

Ø 上报参数

{

"BoardId" : "RJ-BMOX-63CB1933*******761FC", //当前盒子唯一表示

"BoardIp" : "192.168.0.84",

"BoardPlatform" : "BM-BOX", //当前设备硬件类型

"BoardTemp" : "44 (C)", //当前设备芯片温度

"BoardType" : "WAN",  //当前设备接入方式 WAN/4G

"GBClientId" : "",    //GB28181 设备号配置后透传

"GrantCode" : 101,

"GrantDesc" : "已授权",

"HostDisk" :   //当前设备硬盘情况kB

{

"Available" : 11588396,  //可用

"Total" : 15913876, //总量

"Used" : 3633824  //已用

},

"HostMemory" :  //当前设备内存使用情况

[

1300.578125,  //已使用

0.63504791259765625  //总利用率

],

"Key" : "运行中",

"Latitude" : 0.0, //GPS 信息 部分设备支持

"Longitude" : 0.0, //GPS 信息 部分设备支持

"Malloc" : 103480,  // 当前应用VmRSS信息

"Medias" : //当前设备添加的通道信息(0.0.46+引入)

[

{

"MediaName" : "1", //通道名称

"MediaStatus" :  //通道状态描述

{

"label" : "正常",

"type" : 4

},

"MediaUrl" : "rtsp://192.168.0.8:8556/led", //通道视频流地址

"SubId" : ""  //通道关联GB28181通道号,配置后透传

}

],

"Pid" : 1942, //本次应用PID

"Se6ip" : "192.168.0.124", //特定设备时透传主控端IP(0.0.46+引入)

"Status" : "在线",

"System" : "BM1684-16 2.7.0",  //当前设备系统版本

"Tasks" :  //当前设备配置的任务信息(0.0.46+引入)

[

{

"AlgItem" :  //该任务的算法配置信息

[

{

"lineDesc" : "",

"lineRequired" : false,

"majorId" : 211,

"majorOnly" : false,

"minorId" : 210,

"name" : "LED读数", //算法名称

"zoneDesc" : "标定每个LED显示区域识别其示数",

"zoneRequired" : true

}

],

"AlgTaskSession" : "1", //任务号

"AlgTaskStatus" :  //任务状态描述

{

"label" : "运行中",

"type" : 4

}

}

],

"Time" : 1690943852071, //当前时间戳豪妙

"Tpu" : //当前设备的算力资源使用情况(0.0.46+引入)

[

{

"mem_total" : 7983, // 内存总量

"mem_usage" : 376, // 内存使用情况

"tpu_usage" : 6 // TPU

}

],

"Version" : "0.0.45", //软件版本

"angleCourse" : 0.0, //GPS 信息 部分设备支持

"kSpeed" : 0.0,//GPS 信息 部分设备支持

"nSpeed" : 0.0//GPS 信息 部分设备支持

}

 

Ø HTTP上报心跳(版本0.0.43+)

在参数配置-RemoteInfo中配置HTTP心跳接收地址(HTTP+POST JSON),设备将按照默认频率5秒上报当前设备信息。上报信息内容同MQTT上报一致。示例如下:

{

"Info": {

 此部分内容同上述MQTT心跳

},

"MsgType": "Keepalive"

}

 

一.1.3. 软件升级

通过给特定盒子发送指定报文,控制盒子执行相应的操作完成软件升级。升级内容可包括:应用程序部分、模型部分、网页部分。升级过程中所有准备工装结束后会自动重启来完。成最终的升级。一次升级命令下发,可能会有多个回复报文来通知升级情况。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

固定: /app_upgrade_cmd

1

Upgrade

必选

Json

升级信息

 

2

file_url

必选

String

下载地址

升级包HTTP下载地址

2

file_name

必选

String

保存文件名

 

2

md5

必选

String

文件MD5校验值

32字节MD5值

2

version

必选

String

版本号

 

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_upgrade_cmd

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

注:

 

本文在如下参数参数列表中当标识层级为1时表示该字段再Json中位于顶层。层级标识为2时则是标识该字段是上一个层级为1的子元素。如果存在层级为3的则是上一个层级为2的子元素。以此类推。

例如当前接口中发送参数Json形式如下,其中所有层级为2的时Upload节点内的元素。

 

{"BoardId":"","Event":"/app_upgrade_cmd","Upgrade":{"file_url":"http://10.0.0.1/0.0.1.tar.gz","file_name":"0.0.1.tar.gz","md5":"****","version":"0.0.1"}}

 

 

一.1.4. 新增计划模板

计划模板是一组用来标识任务工作时间区间的配置,将创建的模板编号设置到任务配置中即可实现任务工作时间的控制。默认系统提供模板编号为-1的“默认模板”,默认模板的工作时间是7*24小时。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_schedule_create

1

name

必选

String

模板名称

 

1

summary

必选

String

模板描述

 

1

value

必选

String

工作时间配置

按照周为单位循环,将一周七天分为7*48个单位,每个单位代表半个小时。也就是使用336个0或1代表指定半小时的工作使能。如 10110……00,代表周一的凌晨0点0分-0点30分,1点0分到2点0分处于工作时间段。

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

ScheduleId

必选

Long

创建的模板计划标识

可用于删除计划

1

Event

必选

String

功能标识

/alg_schedule_create

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","Event":"/alg_schedule_create","name":"mqtt_create","summary":"周一00:00-00:30","value":"100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_schedule_create","Result":{"Code":0,"Desc":"保存成功"}}

 

一.1.1. 查询模板计划

计划模板是一组用来标识任务工作时间区间的配置,将创建的模板编号设置到任务配置中即可实现任务工作时间的控制。默认系统提供模板编号为-1的“默认模板”,默认模板的工作时间是7*24小时。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_schedule_fetch

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_schedule_fetch

1

Result

必选

Object

 

 

2

Code

必选

Integer

错误码

0成功/其他失败

2

Desc

必选

String

错误码描述

 

2

Content

必选

Array

模板数组

 

3

Id

必选

Integer

模板编号

 

3

Name

必选

String

模板名称

 

3

Value

必选

String

模板时间配置

 

3

Summary

必选

String

模板描述

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","Event":"/alg_schedule_fetch"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_schedule_fetch","Result":{"Code":0,"Content":[{"Id":-1,"Name":"默认模板","Summary":"全部日期","Value":""},{"Id":2,"Name":"mqtt_create","Summary":"周一","Value":"100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},{"Id":1,"Name":"测试","Summary":"[\"星期一 00:00~00:30\"]","Value":"100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}],"Desc":"成功"}}

 

 

一.1.2. 算法能力获取

算法能力是指盒子提供的识别算法。在系统中一个完整的算法可分为 “主算法” “子算法”两个部分组成。如小动物检测中只需要识别到动物这种场景下可能仅需要一个“主算法”就能完成识别功能。再比如人员分析,首先需要一个主算法来定位人员未知,然后再对改目标进行分析。获取更详细的判别,如 安全帽佩戴状态、口罩佩戴状态、有无抽烟打电话等违规行为。这就可能需要一个“主算法”+多个“子算法协同完成”。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

固定: /alg_ability_fetch

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Ability

必选

Array

算法列表

 

2

attribute

必选

Json

 

 

3

lineRequired

必选

Boolean

是否必须配置辅助线

该算法是否必须配置辅助线

3

lineDesc

必选

String

 

配置辅助线的描述文字

3

zoneRequired

必选

Boolean

是否必须配置算法专用区域

该算法是否必须配置算法专用区域

3

zoneDesc

必选

String

 

配置算法专用区域的描述文字

2

parameters

必选

Array

 

该算法可设置的配置项

3

class

必选

String

设置项数据真实类型描述

FLOAT/BOOLEAN/SELECTOR/INTEGER

3

type

必选

Int

设置项数据真实类型

FLOAT=> 2

BOOLEAN=>4

SELECTOR=>5

INTEGER=>0

3

max

可选

ANY

可设置最大值

FLOAT/INTEGER 时存在

3

min

可选

ANY

可设置最小值

FLOAT/INTEGER 时存在

3

default

必选

ANY

设置项默认值

其类型跟随 class

3

key

必选

String

设置项标识

 

3

name

必选

String

设置项名称

 

3

required

必选

Boolean

是否必填

 

3

value

必选

ANY

设置值

其类型跟随 class

3

options

可选

Array

SELECTOR待选列表

SLECTOR时使用,描述了当前有那些待选选项

4

enable

必选

Boolean

当前选项是否可选

 

4

key

必选

String

选项标识

 

4

value

必选

Int

选项序号

 

4

name

必选

String

选项名称

 

2

permitted

必选

Boolean

算法是否已授权

 

2

code

必选

Integer

主算法编号

 

2

sub

必选

Boolean

是否是子算法

 

2

name

必选

String

算法名称

 

2

desc

必选

String

算法描述

 

2

item

必选

Integer

子算法编号

 

2

policy

必选

Array

报警规则

当前算法可能输出的告警类型

3

property

必选

String

违规的属性名

告警类型

3

name

必选

String

属性名描述

告警类型的中文描述

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 示例

 


{

"Ability": [

{

"attribute": {

"lineDesc": "",

"lineRequired": false,

"zoneDesc": "标定违停区域,车辆在该区域超过设定时间触发告警",

"zoneRequired": true

},

"code": 62,

"desc": "区域车辆禁停",

"item": 48,

"name": "区域车辆禁停",

"parameters": [{

"class": "FLOAT",

"default": 5,

"key": "parking_minute",

"max": 0,

"min": 0,

"name": "停靠时长(分)",

"required": true,

"type": 2,

"value": 5

}],

"permitted": true,

"policy": [{

"name": "车辆长时间停泊",

"property": "NoParking"

}],

"sub": true

},{

"attribute": {

"lineDesc": "",

"lineRequired": false,

"zoneDesc": "标定工作区,区域内人数超过设定值处罚告警",

"zoneRequired": true

},

"code": 1,

"desc": "人数超员检测",

"item": 57,

"name": "人数超员检测",

"parameters": [{

"class": "INTEGER",

"default": 5,

"key": "limit_number",

"max": 0,

"min": 0,

"name": "人数上限",

"required": true,

"type": 0,

"value": 5

}],

"permitted": true,

"policy": [{

"name": "工作区人员超限",

"property": "ZoneOverload"

}],

"sub": true

},{

"attribute": {

"lineDesc": "",

"lineRequired": false,

"zoneDesc": "",

"zoneRequired": false

},

"code": 1,

"desc": "人数监控",

"item": 230,

"name": "人数监控",

"parameters": [{

"class": "BOOLEAN",

"default": true,

"key": "upload_on_people_num_changed",

"name": "仅人数变化时上报",

"required": false,

"type": 4,

"value": true

}],

"permitted": true,

"policy": [{

"name": "画面人数上报",

"property": "CurrentPeopleNum"

}],

"sub": true

},

{

"attribute" :

{

"lineDesc" : "",

"lineRequired" : false,

"zoneDesc" : "",

"zoneRequired" : false

},

"code" : 52,

"desc" : "人脸识别",

"item" : 207,

"name" : "人脸识别",

"parameters" :

[

{

"class" : "FLOAT",

"default" : 0.40000000596046448,

"key" : "face_reg_similarity",

"max" : 1.0,

"min" : 0.34999999403953552,

"name" : "相似度阈值",

"required" : true,

"type" : 2,

"value" : 0.40000000596046448

},

{

"class" : "BOOLEAN",

"default" : false,

"key" : "face_reg_enable_gat1400",

"name" : "启用 GA/T-1400",

"required" : false,

"type" : 4,

"value" : false

},

{

"class" : "FLOAT",

"default" : 0.30000001192092896,

"key" : "face_low_similarity",

"max" : 0.60000002384185791,

"min" : 0.0,

"name" : "陌生人阈值",

"required" : true,

"type" : 2,

"value" : 0.30000001192092896

},

{

"class" : "SELECTOR",

"default" : 1,

"key" : "face_repositories",

"name" : "选择人脸库",

"options" :

[

{

"enable" : true,

"key" : "FaceRepo001",

"name" : "FaceRepo001 [1]",

"value" : 1

}

],

"required" : true,

"type" : 5,

"value" : 1

}

],

"permitted" : true,

"policy" :

[

{

"name" : "识别到在册人脸",

"property" : "FaceId"

},

{

"name" : "识别到陌生人",

"property" : "Stranger"

}

],

"sub" : true

}],

"BoardId": "RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5",

"BoardIp": "192.168.0.84",

"Event": "/alg_ability_fetch",

"Result": {

"Code": 0,

"Desc": "成功"

}

}

一.1.1. 媒体通道配置

媒体通道即一个个需要识别接入的视频流。目前仅支持RTSP协议。编码格式要求:标准版H264/H265。视频分辨率要求:720P/1080P。根据接入硬件不同可支持9\16路媒体通道设置。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_media_config

1

MediaName

增删改时必选

String

标识

 

1

MediaUrl

增改时必选

String

流地址

 

1

MediaDesc

增改时可选

String

通道别名

 

1

RtspTransport

增改时可选

Boolean

是否开启RTSP代理

开启后将原视频流代理到盒子上

1

GBTransport

增改时可选

Boolean

是否开启国标代理

开启后将原视频流转发到国标服务器

1

SubId

增改时可选

String

国标通道号

 开启国标代理后必填的通道号

1

Params

增改时可选

Array

自定义配置

 SDK二次开发定义

2

Value

自定义参数值

String

 

 

2

Type

自定义参数类型

String

 

RADIOBOX,INPUT,CHECKBOX

2

Key

自定义参数标识

String

 

 

2

Name

自定义参数名

String

 

 

Ø 自定义参数说明

1) RADIOBOX

当SDK定义为RADIOBOX时,前端页面表现为单选框并根据设置的键值对渲染前端页面,此时保存提交的Value字段为选中的键值对的Value。

2) INPUT

当SDK定义参数为INPUT时,前端页面表现为输入框,此时保存提交的Value字段为输入内容

3) CHECKBOX

当SDK定义参数为CHECKBOX时,前端表现为多选框并根据设置的键值对渲染前端页面,此时保存提交的Value字段为选中的键值对的Value对应的JSONArray字符串形式如:["apple","banana"]

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_media_delete

1

MediaName

必选

String

媒体名称

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_media_config","MediaName":"67","MediaUrl":"rtsp://192.168.0.250:8556/smoking","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_media_config","MediaName":"67","Result":{"Code":0,"Desc":"已保存"}}

 

一.1.1. 删除媒体通道

删除已创建的媒体通道,如果有任务正在使用该通道则无法删除。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_media_delete

1

MediaName

必选

String

标识

 

Ø 响应示例

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_media_delete

1

MediaName

必选

String

媒体名称

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_media_delete","MediaName":"SMOKING","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_media_delete","MediaName":"SMOKING","Result":{"Code":0,"Desc":"已删除"}}

一.1.1. 查询媒体通道

查询已存在的所有通道并返回状态

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_media_fetch

Ø 响应示例

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Content

必选

Array

通道列表

 

2

MediaName

必选

String

通道标识

通道唯一标识

2

MediaDesc

必选

String

通道别名

描述文字

2

MediaUrl

必选

String

RTSP地址

通道流地址如 tsp://admin:123@10.0.0.1

2

RtspTransport

可选

Boolean

是否以RTSP转发

转发地址rtsp://ip/channel/[MediaName]

2

GBTransport

可选

Boolean

是否对接国标平台

 

2

SubId

可选

String

国标平台通道ID

GBTransport True时必填

2

MediaStatus

必选

Json

通道状态

 

3

type

必选

Intger

状态级别标识

0\1\2\3\4

3

style

必选

String

状态级别

info\normal\warning\danger\success

3

label

必选

String

状态描述

取流中、正常、取流异常

1

Result

必选

String

盒子芯片温度

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_media_fetch","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Content":[{"GBTransport":false,"MediaDesc":"","MediaName":"smoking","MediaStatus":{"label":"正常","style":"success","type":4},"MediaUrl":"rtsp://192.168.0.250:8556/smoking","RtspTransport":false,"SubId":""}],"Event":"/alg_media_fetch","Result":{"Code":0,"Desc":"Success"}}

 

一.1.2. 算法任务配置

通过给指定媒体通并道添加算法作为算法任务,提供任务停止、启动、删除控制命令。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

版本

1

BoardId

必选

String

盒子唯一标识

 

 

1

Event

必选

String

功能标识

/alg_task_config

 

1

AlgTaskSession

增删改时必选

String

任务标识

 

 

1

TaskDesc

增改时可选

String

任务描述

 

 

1

AlgInfo

增改时可选

Array

运行的主算法列表

 

 

1

MediaName

增改时可选

String

使用的媒体通道号

 

 

1

MetadataUrl

增改时可选

String

接受告警的目标地址

告警报文上报主地址

 

1

ScheduleId

可选

Integer

计划模板编号

默认-1,全天执行

0.0.15

1

UserData

增改时必选

Json

可存放用户数据

 

 

2

MethodConfig

增改时必选

Array

子算法配置

 

 

1

RuleProperty

增改时可选

Array

配置的辅助区域

可以是辅助区域、辅助线

 

2

RuleId

父节点存在必选

String

辅助形状标识

 

 

2

RuleType

父节点存在必选

Integer

辅助形状类型

0兴趣区域

1禁入区域

2 辅助线段

4 岗位区域

*********************

 

2

Algo

可选

Json

设定该区域适用算法

算法可能由2个阶段组成

0.0.38+

3

majorId

必选

Integer

一阶段算法ID

 

 

3

minorId

可选

Integer

二阶段算法ID

可不填默认0

 

2

Points

父节点存在必选

Array

辅助形状点列表

区域时最低3个点,

辅助线时2个点

 

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Result

必选

Json

接口状态返回

 

1

AlgTaskSession

必选

String

任务标识

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 示例

 

 

{

"AlgTaskSession": "222",

"MediaName": "2",

"MetadataUrl": "",

"TaskDesc": "",

"ScheduleId": -1,

"GB28181Channel": "",

"AlgInfo": [1, 45],

"AlarmProtocol": 0,

"AlarmBody": 0,

"Restart": true,

"RuleProperty": [{

"Algo": {

"majorId": 1,

"minorId": 7,

},

"Points": [{

"X": 0.7713989287007458,

"Y": 0.6094874310656

}, {

"X": 0.872651605946793,

"Y": 0.7208305813018033

}, {

"X": 0.9154491293188338,

"Y": 0.3533981855223322

}],

"RuleId": "2",

"RuleType": 4,

"RuleTypeName": "专用算法区域"

}],

"UserData": {

"MethodConfig": [7, 194],

"staff_sec": 8,

"staff_number": 1,

"staff_repeat_alarm_sec": 8,

"hand_up_angle_threshold": 8,

"hand_up_double_raise": true

}

}

 

Ø  其他业务参数

层级

参数

选项

类型

描述

示例

1

staff_sec

可选

Integer

离岗算法设置时间

离岗算法使用。单位秒,默认180

1

staff_number

可选

Integer

离岗设置在岗数量

离岗算法使用。默认1

 

一.1.3. 算法任务控制

默认任务创建后自动运行,可通过此接口对以有任务进行停止、启动的命令控制。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_control

1

ControlCommand

必选

Integer

启停标识

0停止  1 启动

1

AlgTaskSession

必选

String

任务标识

 

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

AlgTaskSession

必选

String

任务标识

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_task_control","ControlCommand":0,"AlgTaskSession":"A","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_task_control","AlgTaskSession":"A","Result":{"Code":0,"Desc":"已停止"}}

 

一.1.4. 算法任务删除

用来删除已停止的任务

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_control

1

AlgTaskSession

必选

String

任务标识

 

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_control

1

AlgTaskSession

必选

String

任务标识

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

Ø 示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_task_delete","AlgTaskSession":"AA","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

 

一.1.5. 算法任务查询

查询当前已配置的任务详情

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_fetch

Ø 响应参数

层级

参数

选项

类型

描述

取值范围

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_fetch

1

BaseAlgItem

必选

Array

任务识别内容

 

1

AlgTaskStatus

必选

Object

任务运行状态

 

2

type

必选

Intger

状态级别标识

1\2\3\4

2

style

必选

String

状态级别

normal\warning\danger\success

2

label

必选

String

状态描述

1 默认状态一般是:未运行

2 启动过程中的状态:连接失败、取图超时(一般可恢复的状态)

3 错误状态:取图异常、密码错误等(一般不会自动恢复)

4 正常

其他参数同设置接口

Ø 示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_task_fetch","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

 

Ø 返回示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Content":[{"AlarmBody":0,"AlarmProtocol":0,"AlgInfo":[1],"AlgTaskSession":"A","AlgTaskStatus":{"label":"正常","style":"success","type":4},"MediaName":"smoking","MetadataUrl":["http://192.168.0.1/receive"],"TaskDesc":"","UserData":{"MethodConfig":[2]}}],"Event":"/alg_task_fetch","Result":{"Code":0,"Desc":"Success"}}

一.1.1. 获取任务预览图

获取指定任务当前预览图,一般用于前端给任务配置区域时用来参考标注的底图。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_snap

1

AlgTaskSession

必选

String

任务标识

 

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_task_snap

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

1

AlgTaskSession

必选

String

任务标识

 

1

Base64

必选

String

截图的JPEG数据

分辨率640X360

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_task_snap","AlgTaskSession":"A","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"Base64":"/9j/*****","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","AlgTaskSession":"A","Event":"/alg_task_snap","Result":{"Code":0,"Desc":"成功"}}

 

一.1.1. 查询盒子网络配置

通过命令查询指定盒子的网络配置情况

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_network_query

Ø 响应参数

层级

参数

选项

类型

描述

取值范围

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

1

Event

必选

String

功能标识

/app_network_query

1

ipaddr

必选

String

网络地址

 

1

mask

必选

String

子网掩码

 

1

gateway

必选

String

网关地址

 

1

mac

必选

String

网卡物理地址

只读

1

name

必选

String

网卡名称

只读

1

dns

必选

String

域名解析服务器

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/app_network_query","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/app_network_query","Network":[{"dns":"114.114.114.114","gateway":"192.168.0.1","ipaddr":"192.168.0.11","mac":"00:1b:0f:f1:86:fd","mask":"255.255.255.0","name":"eth0"}],"Result":{"Code":0,"Desc":"成功"}}

一.1.1. 通用系统命令

给盒子发送系统命令,可实现一些拓展功能,如设备重启、对时等。在收到命令后延时一秒后执行。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_system_cmd

1

cmd

必选

String

网络地址

如 reboot

1

reboot

可选

Boolen

执行后是否重启

默认否

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_system_cmd

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{ "BoardId" : "RJ-BOX3-2228B91DEDF8C625E874088D282555AC", "Event":"/app_system_cmd","reboot":false,"cmd":"echo '123'>123" }'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/app_network_apply","Result":{"Code":0,"Desc":"命令已提交"}}

 

一.1.1. 增改参数配置

修改系统内置的配置变量、新增用户参数。系统的内置配置参数是用来在系统工作运行中,暴露给用户使用的设置项,见附录2.3。当设置的参数标识已存在时则修改该参数,不存在时则新建。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_config_save

1

key

必选

String

参数标识

 

1

desc

可选

String

参数说明

 

1

value

必选

String

参数值

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m'{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","Event":"/alg_config_save","key":"HourKeepAlarmInfo","value":"23"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_config_save","Result":{"Code":0,"Desc":"已保存"}}

一.1.1. 导入参数配置

批量通过JSON数据导入预制的配置清单

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_config_import

1

Config

必选

Array

配置数组

 

2

key

必选

String

参数标识

 

2

desc

必选

String

参数说明

 

2

value

必选

String

参数值

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m'{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","Event":"/alg_config_import","Config":[{"key":"k1","value":"1","desc":"测试1"},{"key":"k2","value":"2","desc":"测试2"}]}

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_config_import","Result":{"Code":0,"Desc":"导入成功:2"}}

 

一.1.1. 删除用户参数

用户可以通过接口删除用户参数,系统参数被限制无法删除。用户参数目前在整个系统中将在告警上报和心跳报文中携带。在用户自定义开发中,可以自行使用。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_config_delete

1

key

必选

String

参数标识

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m'{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","Event":"/alg_config_delete","key":"k1"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_config_delete","Result":{"Code":0,"Desc":"删除成功"}}

 

 

一.1.2. 查询参数配置

查询当前所有配置

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_config_fetch

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_config_fetch

1

Content

必选

Array

配置列表

 

2

key

必选

String

参数标识

 

2

value

必选

String

参数值

 

2

desc

必选

String

参数说明

 

2

type

必选

Integer

类型

0 系统参数; 1 用户参数

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m'{"BoardId" : "RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF", "Event":"/alg_config_fetch"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Content":[{"desc":"是否开启视频录制功能(默认否)","key":"EnableVideoRecord","type":0,"value":"0"},{"desc":"国标服务端接入编号(默认空,不开启)","key":"GB28181ServerId","type":0,"value":"34020000002000000001"},{"desc":"国标服务器IP地址(默认空,不开启)","key":"GB28181ServerIp","type":0,"value":"192.168.0.112"},{"desc":"国标服务器接入端口(默认0,不开启)","key":"GB28181ServerPort","type":0,"value":"15060"},{"desc":"国标服务器接入密码(默认空,不开启)","key":"GB28181ServerPwd","type":0,"value":"12345"},{"desc":"国标客户端接入编号(默认空,不开启)","key":"GB2818ClientId","type":0,"value":"34020000009000000100"},{"desc":"告警记录保存时间(小时,默认24)","key":"HourKeepAlarmInfo","type":0,"value":"24"},{"desc":"上传失败后重传的间隔时间(小时,默认1)","key":"HourReUploadAlarmInfo","type":0,"value":"1"},{"desc":"国标服务端接入编号(默认空,不开启)","key":"IdGB28181Server","type":0,"value":""},{"desc":"国标客户端接入编号(默认空,不开启)","key":"IdGB2818Client","type":0,"value":""},{"desc":"国标服务器IP地址(默认空,不开启)","key":"IpGB28181Server","type":0,"value":""},{"desc":"解码跳帧策略,大于0时每N帧跳一帧,小于0时每N帧取一帧(默认-3)","key":"PolicyAbandon","type":0,"value":"3"},{"desc":"某个任务同一种报警的上报间隔(秒,默认10)","key":"SecAlarmInterval","type":0,"value":"10"},{"desc":"Http上传连接超时时间","key":"SecHttpConnectTimeOut","type":0,"value":"1"},{"desc":"Http上传传输超时时间","key":"SecHttpReceiveTimeOut","type":0,"value":"10"},{"desc":"某个目标同一种报警的上报间隔(秒,默认10)","key":"SecObjectAlarmInterval","type":0,"value":"10"},{"desc":"心跳上报间隔(秒,默认5)","key":"SecPingInterval","type":0,"value":"5"},{"desc":"文件服务器HTTP地址,告警视频上传使用","key":"ServiceUpload","type":0,"value":"http://192.168.0.250:9999/mp4"},{"desc":"磁盘可用空间低于该设定值时开始清理空间(MB,默认100)","key":"SizeKeepDiskAvailable","type":0,"value":"100"}],"Event":"/alg_config_fetch","Result":{"Code":0,"Desc":"已读取"}}

一.1.1. 查询调试日志

盒子提供按照分页查询运行时调试日志查询功能。关键字过滤的优先级高于页码优先级,即程序会优先收集关键字相关条目再分页。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_log_fetch

1

page

必选

Integer

日志分页索引

1开始,每页50条

1

filter

必选

String

过滤关键字

支持StringArray多关键字

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_network_apply

1

Result

必选

Json

接口状态返回

 

2

Log

必选

Json

日志节点

 

3

Content

必选

Array

日志条目

 

3

Total

必选

Integer

总记录数

按照关键字过滤后的记录数

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","Event":"/app_log_query","page":0,"filter":"DEBUG"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/app_log_query","Result":{"Code":0,"Desc":"\u67e5\u8be2\u6210\u529f","Log":{"Content":["[DEBUG][2022/06/01 15:07:52.818] (on_success:36) - Subscribe Successfully!","[DEBUG][2022/06/01 15:07:50.706] (launch:189) - TaskChannels Loaded","[DEBUG][2022/06/01 15:07:50.698] (taskArchiveApply:157) - Task[11] Region:roi","[DEBUG][2022/06/01 15:07:50.695] (archiveUpdated:80) - Add Slot:ddd","[DEBUG][2022/06/01 15:07:50.685] (TaskChannel:17) - Task Building:11","[DEBUG][2022/06/01 15:07:50.683] (onTaskArrived:214) - Ready to build:11","[DEBUG][2022/06/01 15:07:50.683] (require_chn:111) - Required Task Chn 0","[DEBUG][2022/06/01 15:07:50.682] (launch:185) - TaskChannels fetched","[DEBUG][2022/06/01 15:07:50.674] (launch:182) - MediaChannels Loaded","[DEBUG][2022/06/01 15:07:50.193] (systemCreate:152) - MQTTService Loaded","[DEBUG][2022/06/01 15:07:50.192] (systemCreate:133) - BoardType:WAN","[DEBUG][2022/06/01 15:07:50.189] (MessageQueue:56) - Connect tcp://81.68.188.223:6001 With Password Client:RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","[DEBUG][2022/06/01 15:00:26.127] (shared_ptr<EdgeSystem>&):2442) - #################### Release EdgeSystem Successfully ####################"],"Total":418}}}

一.1.1. 新建工装组

在使用工装识别算法时需要先建立待比对的工装档案信息,考虑到光线、角度、色彩变化,一种工装可建立一个工装组,该组内可上传多种光线、角度、色变下的模板图。来降低外部因素导致的对比误差。组内工装模板过多可能会降低检测效率

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_create

1

name

可选

Integer

持续发送时间秒

工装标识

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_create

1

SuitId

必选

Integer

组标识

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_suit_create","name":"Blue","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_suit_create","Result":{"Code":0,"Desc":"成功"}}

一.1.1. 删除工装组

删除指定工装组及组内所有工装模板

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_group_remove

1

sid

必选

Integer

工装组编号

查询时获得的组编号

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_group_remove

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

一.1.2. 上传工装模板

工装组创建完成后,即可对工装组上传工装模板图。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_append

1

sid

必选

Integer

工装组编号

查询时获得的组编号

1

jpeg

必选

String

模板图

模板JPEG图片的Base64

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_append

1

SuitId

必选

Integer

组标识

 

1

FeatureId

必选

Integer

特征标识

 

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_suit_append","sid":0,"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","jpeg":"/9j/*****"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_suit_append","Result":{"Code":0,"Desc":"成功"}}

 

一.1.1. 删除一个工装模板

根据工装组编号以及模板编号,删除已存在的模板。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

Ø 

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_remove

1

sid

必选

Integer

工装组编号

查询时获得的组编号

1

fid

必选

Integer

模板编号

查询时获得的模板编号

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_remove

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_suit_remove","sid":0,"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","fid":0}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_suit_remove","Result":{"Code":0,"Desc":"成功"}}

 

一.1.1. 获取当前配置的模板信息

获取当前配置的模板信息

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

示例

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_fetch

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/alg_suit_fetch

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

2

Content

必选

Array

 

 

3

id

必选

Integer

工装组编号

 

3

name

必选

String

工装组名称

 

3

features

必选

Array

模板列表

 

4

feature

必选

String

模板特征

 

4

fid

必选

Integer

模板编号

 

4

jpeg

必选

String

模板图JPEG

Base64数据

4

size

必选

Integer

特征大小

 

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/alg_suit_remove","sid":0,"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","fid":0}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/alg_suit_remove","Result":{"Code":0,"Desc":"成功",Content:[ { "features": [ { "feature": "AA×××", "fid": 0, "jpeg": "/9j/4A***", "size": 2048 } ], "id": 0, "name": "Blue" } ]}}

 

 

一.1.1. 人脸识别统一管理接口

 

https://kdocs.cn/l/cnqHdoaeo83T

 

一.1.2. 设置盒子网络参数(老版本接口)

给盒子配置网络参数:网络地址、子网掩码、网关、域名解析服务器

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_network_apply

1

ipaddr

必选

String

网络地址

如 192.168.0.168

1

mask

必选

String

子网掩码

如 255.255.255.0

1

gateway

必选

String

网关地址

如 192.168.0.1

1

dns

可选

String

域名解析服务器

如 114.114.114.114

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_network_apply

1

Result

必选

Json

接口状态返回

 

2

Code

必选

Integer

错误标识

0正常 其他错误

2

Desc

必选

String

描述信息

错误描述信息

 

Ø 发送示例

mosquitto_pub  -h 192.168.0.100 -p 6001 -t /edge_app_controller -m '{"Event":"/app_network_apply","ipaddr":"192.168.0.11","mask":"255.255.255.0","gateway":"192.168.0.1","dns":"8.8.8.8","BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF"}'

Ø 响应示例

{"BoardId":"RJ-BOX3-4E11AC085A5F699A4EAFBDDDD25E21AF","BoardIp":"192.168.0.11","Event":"/app_network_apply","Result":{"Code":0,"Desc":"已提交,即将重启"}}

 

一.1.3. 获取设备网络配置

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_network_query_v2

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/api_list_face

1

Network

必选

Json

人脸列表

 

2

adapter

必选

Array

人脸标识

 

3

address

必选

String

人脸底库图

base64

3

device

必选

Sring

网卡名称

 

3

name

必选

String

网络名称

 

3

dhcp_allow

必选

Bool

是否支持DHCP

 

3

dhcp_enable

必选

Integer

是否为DHCP模式

 

3

gateway

必选

String

网关地址

 

3

wired

必选

Bool

是否已连接

 

3

mac

必选

String

网卡物理地址

 

3

type

必选

String

网络类型

ethernet/wwan0

3

mask

必选

String

子网掩码

 

3

readonly

必选

Bool

是否可手动修改IP

 

3

dns

必选

Array

域名服务器列表

 

 

Ø 返回示例

{

"BoardId" : "RJ-BOX3-89F8EF18348AB4FFC2CB542B8421F2F7",

"BoardIp" : "192.168.0.10",

"Event" : "/app_network_query_v2",

"Network" :

{

"adapter" :

[

{

"address" : "192.168.0.10",

"device" : "eth0",

"dhcp_allow" : false,

"dhcp_enable" : false,

"dns" :

[

"114.114.114.114"

],

"gateway" : "",

"mac" : "00:d1:9c:86:79:39",

"mask" : "255.255.255.0",

"name" : "eth0",

"readonly" : false,

"type" : "ethernet",

"wired" : true

},

{

"address" : "10.162.173.3",

"device" : "wwan0",

"dhcp_allow" : true,

"dhcp_enable" : true,

"dns" :

[

"114.114.114.114"

],

"gateway" : "10.162.173.4",

"mac" : "b2:58:78:b1:7c:1a",

"mask" : "255.255.255.248",

"name" : "wwan0",

"readonly" : true,

"type" : "wwan",

"wired" : true

}

],

"dns" : []

},

"Result" :

{

"Code" : 0,

"Desc" : "Success"

}

}

一.1.1. 设置网络配置

需要根据返回的对应网卡参数中的readonly/dhcp_allow 进行控制。

Ø 相关主题

发送:/edge_app_controller 响应:/edge_app_controller_reply

Ø 发送参数

层级

参数

选项

类型

描述

取值范围

1

BoardId

必选

String

盒子唯一标识

 

1

Event

必选

String

功能标识

/app_network_apply_v2

1

name

必选

String

网卡名称

 

1

address

必选

String

网络地址

 

1

geteway

必选

String

网关地址

 

1

mask

必选

String

子网掩码

 

1

dns

必选

Array

域名解析服务器

 

Ø 响应参数

层级

参数

选项

类型

描述

示例

1

BoardIp

必选

String

盒子网络地址

 

1

BoardId

必选

String

盒子唯一标识

 

1

Result

必选

String

 

 

 

Ø 请求示例

{

"name": "eth0",

"address": "192.168.0.133",

"gateway": "192.168.0.161",

"mask": "255.255.255.0",

"dns": ["114.114.114.114", "223.5.5.5", "8.8.8.8"]

}

一.1. HTTP版本交互控制协议

HTTP协议同MQTT协议参数一致,需要改动的是将Event字段作为HTTP path使用。如 在MQTT中 Event 为 /alg_media_config ,则在HTTP请求时地址则是 http://ip:10002/alg_media_config 或 http://ip/api/alg_media_config

 

第一章 附件

一.1. 内置算法能力

 AlgInfo是指算法能力中第一层的识别模型,如下1表示人检测。MethodConfig表示再第一层检测后的基础上对目标进行的第二层模型计算。如2安全帽。

列表中表示已移植的可用算法,默认部署可能缺少部分算法,则需要更新至最新版本并申请使用该算法。

由于不同盒子的内置算法可能不同。可以使用接口 alg_ability_fetch 接口(2.2.6 章节)获取,下方是其中几个算法能力的例子。

明烟明火

主算法

8

子算法

46

辅助线

 

算法专用区域

 

可选告警标识

标识

描述

Smoke

检测到明烟

Fire

检测到明火

可设置参数

 

人脸识别

主算法

52

子算法

207

辅助线

 

算法专用区域

 

可选告警标识

标识

描述

FaceId

识别到在册人脸

Stranger

识别到陌生人

可设置参数

标识

描述

类型

默认值

face_reg_similarity

相似度阈值

FLOAT

0.4

face_reg_enable_gat1400

启用 GA/T-1400

BOOLEAN

false

face_low_similarity

陌生人阈值

FLOAT

0.3

face_repositories

选择人脸库

SELECTOR

 

 

指针表计检测

主算法

244

子算法

243

辅助线

 

算法专用区域

标识表计,在此区域内识别到标记将携带当前区域的标识

可选告警标识

标识

描述

MeterPointer

检测指针表计

可设置参数

 

 

一.1. 内置系统参数说明

黄色标记为常用参数,可着重关注

参数标识

描述

版本

DimOfAlarmImage

告警图片尺寸类型(0 宽高640x360,1原始相机尺寸,默认0)

 

EnableAlarmNotification

是否告警时向网页发出通知(默认0,不开启),影响WEB语音、弹窗

 

EnableAlarmVoice

是否开启设备语音输出(默认0不开启),影响设备音频口输出告警语音

 

EnableLogUploader

是否通过MQTT上报日志(0否,1是 默认0)

 

EnableOsdRender

特殊平台定制非通用参数

 

EnableVideoRecord

是否开启视频录制功能(0[不录制] 1[录制],默认0)

 

EncodeBitrate

编码输出码率,影响GB28181/RTSP 输出的画面质量

 

GAT1400AuthAccount

GAT1400链接参数,二次开发透传配置

 

GAT1400AuthPasswd

GAT1400链接参数,二次开发透传配置

 

GAT1400DeviceId

GAT1400链接参数,二次开发透传配置

 

GAT1400KeepAliveSec

GAT1400链接参数,二次开发透传配置

 

GAT1400ServerHost

GAT1400链接参数,二次开发透传配置

 

GAT1400ServerId

GAT1400链接参数,二次开发透传配置

 

GAT1400ServerPort

GAT1400链接参数,二次开发透传配置

 

GB28181GroupChn1

接入到GB28181平台时 “合流通道一”使用的国标通道编号

 

GB28181GroupChn2

接入到GB28181平台时 “合流通道二”使用的国标通道编号

 

GB28181ServerId

接入GB28181的SIP服务器ID

 

GB28181ServerIp

接入GB28181的SIP服务器IP

 

GB28181ServerPort

接入GB28181的SIP服务器端口

 

GB28181ServerPwd

接入GB28181的SIP服务器接入密码

 

GB2818ClientId

接入GB28181的SIP服务器使用的设备ID

 

HourReUploadAlarmInfo

告警重传的间隔时间(默认1h,也可以是分钟如:2m,或者秒如:2s)

 

LogLevel

MQTT 上报日志等级日志输出级别(默认1,1:调试;2:异常信息)

 

MQIdPattern

自定义MQTT 客户端编号规则(默认空,非空时必须包含$ID,$ID表示设备编码,如'zzz$IDzz' 对应 zzzRJ-BMOX-63CB19338C2B781761FC32991BD6F2C5zz)

 

MQRootTopic

给MQTT使用的所有主题加上父级主题

 

MQUniqueSubscribe

监听MQTT订阅消息时,监听主题上加入设备号,如 原先监听/edge_controller,启用后为/RJ-BMOX-63CB19338C2B781761FC32991BD6F2C5/edge_controller

 

PolicyAbandon

跳帧策略,大于0每N帧跳一帧,小于0每N帧取一帧(默认2)

 

QualityOfPreview

输出视频画面质量,影响WEB端输出的画面质量

 

RecordKeepAlarmInfo

告警记录保存数(默认1000条)

 

RemoteBrokerUrl

MQTT服务器信息([ws/tcp]://[account:pass@]10.0.0.0[:port],默认空)

0.0.24

SecAlarmFilterInterval

最小上报告警间隔(单位秒,默认0不开启),开启后任何告警都按照此间隔控制

 

SecAlarmInterval

某个任务同一种报警的上报间隔(秒,默认0)

 

SecHttpConnectTimeOut

Http上传连接超时时间(秒,默认1)

 

SecHttpReceiveTimeOut

Http上传传输超时时间(秒,默认10)

 

SecObjectAlarmInterval

某个目标同一种报警的上报间隔(秒,默认10)

 

SecPingInterval

接入MQTT时,通过MQTT上报设备状态(秒,默认5)

 

ServiceUpload

告警视频文件上传的HTTP接口地址,开启视频录制后必填否则告警无法上报

 

SizeKeepDiskAvailable

磁盘可用空间低于该设定值时开始清理空间(MB,默认100),自动清理日志、告警等

 

TimesReUploadAlarmInfo

告警上报重试次数(次,默认3)

 

TypeAlarmImage

上报图片类型(0[原图] 1[标注图] 2[原图+标注图],默认0)

 

VideoRecordPrefix

录制视频回溯比例(默认0.5,如时长10秒设置0.4则告警前4秒后6秒)

 

VideoRecordSec

视频录制时长(5~30,默认10)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

端口

功能

类型

必选

模块

80

WEB及数据服务

TCP

通用

554

视频输出

TCP

RTSP输出

5060

SIP服务

UDP

GB28181

随机

RTP服务

TCP

GB28181

订阅报警信息,持续主动上报

告警上报在每个任务创建时填写  可以填http://ip:port/path的 或tcp://user:pwd@ip:port/topic  (其中/topic包含/ 是订阅主题)