首次配置

1.有线联网
2.无线联网
3.获取设备IP地址
4.设备发现协议

需要使用IPC的API就要求对接系统能够获取到IPC的IP地址,然后通过IP与IPC通信,调用相关的API来获取对应的服务。

因此调用IPC前需要先获取到IPC的IP地址,故第一步是把IPC接入网络,IPC连接网络的方式有有线连接和无线连接两种方式。

由于有线网络相对不容易受到环境干扰,稳定性和可靠性较高,故首选是有线方式接入网络。

1. 有线联网

对于有以太网网口的IPC设备,可以使用以太网线连接IPC设备和网关(例如无线路由器),使得IPC通过DHCP服务获取到IP地址。

如果连接的网络是可以正常上网的话,IPC获取到IP后很快就会亮蓝灯,此时表明IPC可以正常连接Internet了。

2. 无线联网

无线配网方式相对要复杂点,步骤如下:

  1. 使用手机/PC的无线网卡扫描IPC的AP热点,一般AP热点的名称为SUNMI_XXXX,其中XXXX为MAC地址最后2个字节的16进制数字,MAC地址可以通过设备机身后背的标贴或者包装盒的标贴查到,AP热点本身是无加密的。
  2. 使用手机/PC的无线网卡连接IPC的AP热点,此时手机/PC就会获取到IPC分配的IP地址,一般会是192.168.200.XXX,手机/PC的网关地址就是IPC的地址,一般会是192.168.200.1。
  3. 使用IPC的IP地址(一般是192.168.200.1),调用无线配置 API(见3.2.1一节的描述)设置IPC要连接的无线网络(例如无线路由器的SSID和密码),使得IPC能够从网关处获取到IP地址。
  4. 如果网络是可以正常上网的话,IPC取到IP地址后很快就会亮蓝灯,此时表明IPC可以正常连接Internet了。

3. 获取设备IP地址

完成IPC的网络接入后,接下来就是要获取到IPC的IP地址。

商米提供一套协议,用于发现同一局域网内所有支持此协议的设备,以获取到设备的基本信息,其中包括SN和IP地址。此协议叫设备发现协议。

4. 设备发现协议

商米发现协议简单来说,就是通过在局域网内广播UDP报文来询问同一局域网内有哪些商米设备,支持此协议的商米设备会在收到询问报文后单播响应报文,响应报文中就包括了设备的基本信息。这样就完成了一次设备发现的过程。

4.1 协议报文格式

UDP报文的载荷部分,格式如下图所示,整个协议报文有报头Head、载荷Payload和CRC校验和组成。

  • Header

协议报头,包括标记为Flag、协议版本Version、报文类型 Type和长度Len。

Flag:为报文的开头部分,是一个标记,目前固定为0xFFFF33FF。

Version:为协议版本,目前只支持版本号0x1。

Type:为报文类型,发起方一般Type为0x01,表示发现请求,Discovery Request;响应方回复的报文Type为0x02,表示Discovery Response。

Len: 表示Payload部分的长度,要求是原始的数据部分进行base64编码前的长度。

  • Payload

真正的载荷部分,原始的数据采用json格式,json数据需要进行base64编码,然后放到Payload上。

接收方接收到后,需要进行base64解码才能还原为json数据。

  • CRC

发送的数据需要进行简单的CRC32校验,校验字段包括Header和Payload。

接收方接收到数据后,会对CRC进行校验,校验通过才能使用。

4.2 协议通信端口

端口号10001,发送端和接收端双方使用相同的端口号。

4.3 Discovery Request

当发送方想知道局域网内有哪些设备,就需要发送UDP广播报文,报文内容如下:

类型为0x01,长度为0x0,即没有载荷部分。

4.4 Discovery Response

由响应方回复,告诉发送方自己的设备信息,类型为0x02,长度根据实际情况计算。

回复的载荷内容如下图所示,也即是json格式的设备信息,具体含义解析如下。

ip:设备的IP地址。

mac:设备的MAC地址。

firmware:设备的固件版本,如1.0.0。

name:设备名称标记,目前固定为SUNMI。

model:设备型号,如FM020。

type:设备类型,IPC设备回复的值为IPC。

network:发送端的网络连接方式,如果发送端连接的是IPC的AP热点则值为AP,如果发送端与IPC同时连接在另一个路由器的局域网内,则值为LAN。

deviceid:设备序列号SN。

4.5 超时处理

建议发送端发送Discovery Request报文后,间隔1s再次发送,最多发送3次,每次间隔都是1s。之所以发送3次,是防止丢失有些设备没有收到的情况。

发送完3次后,设置超时时间为2s,2s后不再接收Discovery Response报文,即从发送第一个Discovery Request后,5s内接收Discovery Response报文,并解析所有设备的信息。

接收端接收到Discovery Request报文后,立即单播回复Discovery Response报文。

错误码

API调用返回结果的所有错误码列表如下:

错误码 描述
0 正常,操作成功
1 app_id不合法
2 合法性检查失败
3 未知错误
4 请求激活的设备没有联网
5 app_id或者secret key错误
6 URL错误
7 设备未激活
8 设备激活失败
9 设备已激活,不需要重复激活
10 设备已绑定,激活失败
11 SN错误,激活失败
12 操作不允许
13 操作不支持
100 SSID不符合规范
101 密码不合法
102 不支持无线联网
110 焦距范围不合法
111 聚焦范围不合法
112 自动聚焦的百分比错误
113 夜视模式参数不合法
114 动态侦测画面灵敏度不合法
115 动态侦测声音灵敏度不合法
116 动态侦测日期不合法
117 动态侦测开始时间或者结束时间不合法
118 名字长度超出范围
119 指示灯开关参数错误
120 旋转参数不合法
121 指定时间段内的视频数据不存在
122 指定的页码不存在
200 人脸分组重名
201 人脸分组名称不合法
202 分组容量超出范围
203 人脸分组ID不存在
204 指定人脸分组不存在
205 要删除的人脸分组还有人脸,请先删除分组中的所有人脸
206 存在同样的人脸ID
207 指定人脸ID不存在
208 超出人脸分组的容量大小
209 人脸ID操作不允许
210 人脸照片不合格
211 人脸服务未开启
212 人脸分组描述不合法
220 SD卡不存在
221 SD卡格式化失败,原因未知
230 回放时间参数不正确
231 查询录像时间参数不正确
232 RTSP服务未开启
233 截图不成功
234 查询录像page参数不正确
235 录像不存在
240 人脸属性名称不合法
241 人脸属性重名
242 人脸属性数量超过最大限制
243 指定人脸属性不存在
260 拌线左边端点X坐标超出范围
261 拌线左边端点Y坐标超出范围
262 拌线右边端点X坐标超出范围
263 拌线右边端点Y坐标超出范围
264 分辨率设置超出范围
265 人流统计信息粒度参数超出范围
266 开始时间设置异常,必须使用UNIX时间戳
267 结束时间设置异常,必须使用UNIX时间戳
268 查询参数order设置异常
269 查询参数group name设置异常
270 查询参数gender设置异常
271 查询参数age设置异常
272 查询参数age_range设置异常
273 查询参数page_num设置异常
274 查询参数page_size设置异常
275 查询参数faceid设置异常
276 拌线右边端点X坐标-拌线左边端点X坐标差值小于100,距离不足
277 传入参数不是合理的json table格式
278 配置保存失败
279 配置读取失败
280 数据库中未发现人脸信息
281 查询参数 用户新增人脸属性 设置异常
282 查询参数 用户新增人脸属性值 数据类型设置异常
310 订阅的消息事件不存在

IPC消息中心

IPC设备产生的实时消息客户端可通过两种方式获得:一是用户通过订阅相关事件并给出回调地址,IPC产生相关消息时会向对应回调地址发送一个POST消息; 二是用户可通过与IPC建立长连接来传递 。

1. 消息推送

消息推送是客户端向IPC订阅相关的消息事件,当IPC产生消息事件是,会像订阅的回调地址发送一条http post消息,通知客户端,其实现的功能与消息通道一节一致。

1. 1 签名规则

签名规则一节一致。

1.2 订阅管理

1.2.1 订阅消息

描述

订阅消息接口用于向IPC设备端订阅相关的消息,一旦订阅了消息,当设备端产生了相关消息的时候,便会向订阅时传入的回调接口发送一个HTTP POST消息,从而达到通知订阅者的目的。

请求地址

https://192.168.0.1/openapi/hook/add,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须
event_listarray[string]事件类型,可以是[“face_recog_event”,”dynamic_detect_event”]或者其中一个,其中” face_recog_event “仅FM020支持 Y
http_callbackstring回调含函数地址,当IPC产生相关消息时,会向该地址发送一个http post消息Y

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有0、1、2、5、310、311,见错误码的描述

请求示例

POST openapi/hook/add HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
event_list=[“face_recog_event”,”dynamic_detect_event”]&http_callback=http://192.168.0.100/msg

返回示例

{
     ‘code’:          0,
}

1.2.2 取消已订阅消息

描述

用于取消已经向IPC设备端订阅过的消息,取消订阅后,当设备端产生相关消息时,便不会向对应的回调地址发送HTTP POST消息。

请求地址

https://192.168.0.1/openapi/hook/delete,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须
event_listarray[string]事件类型,可以是[“face_recog_event”,”dynamic_detect_event”]或者其中一个,其中” face_recog_event “仅FM020支持 Y
http_callback string 之前订阅的回调函数地址,指定此参数,设备端只取消此地址的订阅,不指定此参数,设备端将取消所有地址的订阅 N

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有0、1、2、5、310,见错误码的描述

请求示例

POST openapi/hook/delete HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
event_list=[“dynamic_detect_event”,”face_recog_event”]&http_callback=http://192.168.0.100/msg

返回示例

{
     ‘code’:          0,
}

1.2.3 查询所有已订阅消息

描述

用于查询IPC设备端所有订阅的消息,当设备端产生相关消息时,会向对应的回调地址发送HTTP POST消息。

请求地址

https://192.168.0.1/openapi/hook/query,192.168.0.1需要替换成实际的IPC地址。

请求参数

此接口不需要私有参数,公共参数见公共参数一节描述。

响应参数

字段名称类型 描述
code int 返回码,表示操作的结果; 本接口返回码有0、1、5,见错误码的描述
sub_event array 订阅列表
event string 订阅的事件类型
http_callback array 订阅该事件的所有回调地址列表
num string 订阅事件的个数

请求示例

POST openapi/hook/query HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&

返回示例

{
    “data”: {
        “num”: 2,
        “sub_event”: [
            {
                “event”: “face_recog_event”,
                “http_callback”: [
                    “10.10.61.206:8000”
                ]
            },
            {
                “event”: “dynamic_detect_event”,
                “http_callback”: [
                    “10.10.61.206:8000”
                ]
            }
        ]
    },
    “code”: 0
}

1.3 推送消息

IPC通过HTTP POST的方式推送消息,会提交form表单,Content-Type为multipart/form-data,消息内容封装在payload中。

动态侦测消息

动态侦测消息如下:

POST / HTTP/1.1
Host: 10.10.61.206:8000
User-Agent: libcurl/7.52.1 OpenSSL/1.0.2p
Accept: */*
Content-Length: 826
Expect: 100-continue
Content-Type: multipart/form-data; boundary=————————c83c36cd4ee4082f
 
————————–c83c36cd4ee4082f
Content-Disposition: form-data; name=”app_id”
 
123
————————–c83c36cd4ee4082f
Content-Disposition: form-data; name=”random”
 
692777
————————–c83c36cd4ee4082f
Content-Disposition: form-data; name=”timestamp”
 
1579158766
————————–c83c36cd4ee4082f
Content-Disposition: form-data; name=”sign”
 
372F669601E8347737744FFC88B74665
————————–c83c36cd4ee4082f
Content-Disposition: form-data; name=”payload”  

{“event_id”:1,”detect_type”:2,”video_url”:”https://10.10.63.19/mnt/sd-card/sunmi_video/video_detect/1579158761.flv?auth_key=1579158765-d701e761fecf0df84853440d4dbc3fe1″,”event_type”:”dynamic_detect_event”,”sn”:”SS101D8BS00080″,”report_time”:1579158765}
————————–c83c36cd4ee4082f–

消息有效载荷在payload中,各字段内容如下:

参数名称 类型 描述
event_id long 事件ID
event_type string 事件类型
report_time long 事件发生的时间戳
detect_type int 动态侦测检测到的类型,1表示画面变化,2表示声音变化,3表示既有画面变化,也有声音变化
video_url string 视频下载路径
sn string 发出此消息的IPC序列号

人脸识别消息

人脸识别消息如下:

POST / HTTP/1.1
Host: 192.168.103.173:8010
User-Agent: libcurl/7.52.1 OpenSSL/1.0.2p
Accept: */*
Content-Length: 906
Content-Type: multipart/form-data; boundary=————————7faeecefd4fb5aaf

————————–7faeecefd4fb5aaf
Content-Disposition: form-data; name=”app_id”

KJQJ89V956U9O9UI
————————–7faeecefd4fb5aaf
Content-Disposition: form-data; name=”random”

956429
————————–7faeecefd4fb5aaf
Content-Disposition: form-data; name=”timestamp”

1597894809
————————–7faeecefd4fb5aaf
Content-Disposition: form-data; name=”sign”

004B3CD3FACB562E06CC04A0935410A5
————————–7faeecefd4fb5aaf
Content-Disposition: form-data; name=”payload”
{“event_id”:2,”faceid”:”358526″,”group_name”:”db_0″,”age”:0,”age_range”:5,”gender”:0,”arrive_times”:3,”pic_url”:”https://192.168.103.117/mnt/sd-card/sunmi_image/snap/1597894624456_7.jpg?auth_key=1597894624-f88c2f9a6e69834430648c2f4931ffae”,”event_type”:”face_recog_event”,”sn”:”FS101D8BS00080″,”report_time”:1597894809}
————————–7faeecefd4fb5aaf–

消息有效载荷在payload中,各字段内容如下:

参数名称 类型 描述
event_id long 事件ID
event_type string 事件类型
sn string 发出此消息的IPC序列号
report_time long 事件发生的时间戳
faceid string 人脸ID
group_name string 所在分组名称
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 所属年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_times int 到达过的总次数
pic_urlstring人脸照片下载地址
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

2. 消息通道

消息通道是客户端与IPC设备维持的一条长连接,用于IPC设备主动向客户端实时推送消息事件。其实现的功能与消息推送一节一致。

2.1. 消息协议

通信协议端口

通信协议采用TCP连接,同时为了保证数据的安全性,采用SSL套接字,是C/S模式,IPC设备是Server。Server端的端口暂时固定为10021。

通信格式

本节简述报文格式,主要由头部、载荷和CRC校验和构成;如下图所示。

  • 头部

Flag

为协议标识符,暂定为0xFF3E3EFF。

Version

本协议的版本号,目前为0x01,高版本兼容低版本。

Packet Type

包类型,目前支持如下:

类型 方向 描述
保留 0 禁止 保留
CONNECT 1 客户端到服务端 客户端发起建立消息通道的报文
CONNACK 2 服务端到客户端 连接确认报文,报文内容会标志连接是否合法
PINGREQ 3 客户端到服务端 心跳请求
PINGRESP 4 服务端到客户端 心跳响应
SUBSCRIBE 5 客户端到服务端 客户端订阅消息事件
SUBACK 6 服务端到客户端 订阅请求确认
UNSUBSCRIBE 7 客户端到服务端 客户端取消订阅消息事件
UNSUBACK 8 服务端到客户端 取消订阅请求确认
PUBLISH 9 两个方向都可以 目前来说只支持服务端到客户端的消息发布
PUBACK 10 两个方向都可以 发布消息收到确认
DISCONNECT 11 客户端到服务端 断开连接

Length

为载荷长度,范围是0 ~ N,N最大是65535。

  • 载荷Payload

载荷就是实际的报文内容,采用json格式。根据Packet Type的不同而不一样。

  • CRC校验和

是Payload的CRC校验和,占用4B。

2.2 建立连接

由客户端发起到IPC服务端的连接。

  • 发起连接

报头包类型为0x01,报文载荷格式如下,客户端带上一些参数,并用secret key做签名,详见签名规则一节的介绍。服务端会采用同样的规则来检查客户端的连接是否合法。

{
“app_id”:”mdk923idkf”,
“timestamp”:”15930292837″,
“random”:”289192″,
“sign”:”IDKNFLK392038KDS932K”,
“keep_alive”:30
}

keep_alive:心跳包的周期,以秒为单位,有客户端根据实际情况指定心跳周期。

  • 响应连接

报头包类型为0x02,报文内容如下。code 为返回码,表示操作的结果。本接口返回码有 0、1、2、3、5、7,见错误码描述。

{
“code”:0
}

2.3 心跳

客户端根据预定好的心跳周期,周期性地向服务端发送心跳报文,服务端会在3次都没有收到心跳报文后,断开连接。

  • 心跳请求

报头类型为0x03,没有载荷。

  • 心跳响应

报头类型为0x04,没有载荷。

2.4 订阅消息

由客户端向服务端订阅消息事件。

  • 发起订阅(或取消订阅)

报头类型为0x05(或0x07),载荷内容如下:

{
“event_list”:[
“dynamic_detect_event”,
“face_recog_event”
]
}

字段解释如下

参数名称 类型 描述
event_list string 需要订阅的消息事件列表

目前支持事件列表如下

事件类型 描述
dynamic_detect_event 动态侦测消息
face_recog_event 人脸识别消息(仅FM020支持)
  • 响应订阅(或响应取消订阅)

报头类型为0x06(或0x07),载荷内容如下。code 为返回码,表示操作的结果。本接口返回码有 0、1、2、3、5、7、310、311,见错误码描述。

{
“code”:0
}

2.5 发布消息

  • 发布消息

由IPC服务端推送消息到客户端,报头类型为0x09,内容因事件类型不同而有所不同。

  • 动态侦测消息

报文载荷内容如下:

{
“event_id”:1,
“event_type”:”dynamic_detect_event”,
“sn”:”FS101D8BS00106″,
“report_time”:15930292837,
“detect_type”:1,
“video_url”:”https://192.168.0.1/mnt/sd-card/sunmi_video/video_detect/1565535983.flv?auth_key=1564129415215f61f3c5f552c5bf8f43ccef5c66a9″
}

各字段如下:

参数名称 类型 描述
event_id long 事件ID
event_type string 事件类型
report_time long 事件发生的时间戳
detect_type int 动态侦测检测到的类型,1表示画面变化,2表示声音变化,3表示既有画面变化,也有声音变化
video_url string 视频下载路径
sn string 发出此消息的IPC序列号
  • 人脸识别消息

报文内容如下:

{
“event_id”:2,
“event_type”:”face_recog_event”,
“sn”:”FS101D8BS00106″,
“report_time”:15930292837,
“group_name”:”vip”,
“faceid”:”00000001″,
“age”:10,
“gender”:2,
“arrive_times”:4,
“pic_url”:”https://192.168.103.117/mnt/sd-card/sunmi_image/snap/1597894545153_5.jpg?auth_key=1597894545-acb4f1ba497caeef146de1d4a0e926d9″,
“vip_level”:”1″, //自定义属性,用户定义了才会有,这里是举例
“hobby”:”tennis”, //自定义属性
“weight”:”60″, //自定义属性
“height”:”180″ //自定义属性
}

各字段描述如下

参数名称 类型 描述
event_id long 事件ID
event_type string 事件类型
sn string 发出此消息的IPC序列号
report_time long 事件发生的时间戳
faceid string 人脸ID
group_name string 所在分组名称
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 所属年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,
5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_times int 到达过的总次数
pic_urlstring人脸照片下载地址
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回
  • 发布消息确认

如果订阅者收到此消息,则返回确认。报头类型为0x0a,内容如下。

{
“event_id”:1
}

报文字段描述如下:

参数名称 类型 描述
event_id long 正常接收的消息ID

2.6 断开连接

报头类型为0x11,载荷内容为空。

人流统计API

1.设置进门拌线坐标

描述

进门拌线是IPC设备用来判断某个人是否已经进来的基础,因此对于人脸识别和客流统计,需要通过此接口来设置这个拌线的坐标。

请求地址

https://192.168.0.1/openapi/peopleFlow/setDoorLine,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述是否必须示例
resolutionint只能取值0和1,0表示1080P的分辨率,1表示720P的分辨率Y0
start_xint拌线的左边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280Y500
start_yint拌线的左边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720Y 500
end_xint拌线的右边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280Y 500
end_yint拌线的右边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720Y 500

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、277,278,见错误码的描述

请求示例

POST openapi/peopleFlow/setDoorLine HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&resolution=0&start_x=1200&start_y=900&end_x =1500&end_y=900

返回示例

{
    "code":  0
}

2.获取进门拌线坐标

描述

获取进门拌线的坐标信息。

请求地址

https://192.168.0.1/openapi/peopleFlow/getDoorLine,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

响应参数

字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、260、261、262、263、264、276、277、279,见错误码的描述
resolutionint取值0和1,0表示1080P的分辨率,1表示720P的分辨率
start_xint拌线的左边端点X坐标
start _yint拌线的左边端点Y坐标
end_xint拌线的右边端点X坐标
end_yint拌线的右边端点Y坐标

请求示例

POST openapi/peopleFlow/getDoorLine HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    "code": 0,
    "data": {
    "resolution": 0,
    "start_x": 1200,
    "start_y": 900,
    "end_x": 1500,
    "end_y": 900
    }
}

3.获取指定时间内的进入人流统计信息

描述

获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

请求地址

https://192.168.0.1/openapi/peopleFlow/getComeInPeopleStat,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述是否必须 示例
start_timelongUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小
时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳。
Y1578969264
end_timelongUnix格式时间戳,精确至秒,结束时间。时间要求同上。Y1579055640
periodint人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别
为1,2和3。
Y2

响应参数

字段名称 类型 描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
totalint总人流数量/统计粒度内的人流数量
start_timelong统计粒度的开始时间
end_timelong统计粒度的结束时间
male_num_statarray整数数组,表示男性统计数据,共有8个整数,从第一个整数开始依次表
示1~6岁、7~12岁、13~18岁、19~28岁、29~35岁、36~45岁、46~55岁、
56岁~100岁的男性人数。
female_num_statarray整数数组,表示女性统计数组,含义同上

请求示例

POST openapi/peopleFlow/getComeInPeopleStat HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&start_time=1561910400&end_time=1562083200&period=3

注:本示例表示获取2019-07-01到2019-07-02这两天的统计信息,且统计信息以天为粒度的人流统计信息。

返回示例

{
    "code": 0,
    "data": {
    "total": 2998,
    "stat_list": [{
            "start_time": 1561910400,
            "end_time": 1561996800,
            "total": 1499,
            "male_num_stat": [10, 20, 50, 109, 280, 380, 156, 10],
            "female_num_stat": [11, 34, 50, 78, 132, 45, 123, 11]
        },
        {
            "start_time": 1561996800,
            "end_time": 1562083200,
            "total": 1499,
            "male_num_stat": [10, 20, 50, 109, 280, 380, 156, 10],
            "female_num_stat": [11, 34, 50, 78, 132, 45, 123, 11]
    	}]
    }
}

4.获取指定时间内的路过人流统计信息

描述

获取指定某一时间内的经过人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

请求地址

https://192.168.0.1/openapi/peopleFlow/getPassByPeopleStat ,192.168.0.1 需要替换成实际的 IPC 地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelongUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小
时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳。
Y1578969264
end_timelongUnix格式时间戳,精确至秒,结束时间。时间要求同上。Y1579055640
periodint人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别
为1,2和3。
Y2

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
totalint总人流数量/统计粒度内的人流数量
start_timelong统计粒度的开始时间
end_timelong统计粒度的结束时间

请求示例

POST openapi/peopleFlow/getPassByPeopleStat HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&start_time=1561910400&end_time=1562083200&period=3

注:本示例表示获取2019-07-01到2019-07-02这两天的统计信息,且统计信息以天为粒度的人流统计信息。

返回示例

{
    "code": 0,
    "data": {
    "total": 2998,
    "stat_list": [{
        "start_time": 1561910400,
        "end_time": 1561996800,
        "total": 1513
    	}, {
    	"start_time": 1561996800,
        "end_time": 1562083200,
        "total":1485
    	}]
    }
}

5.获取指定时间内的外出人流统计信息

描述

获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。

请求地址

https://192.168.0.1/openapi/peopleFlow/ getGoOutPeopleStat ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelongUnix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小
时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者
2019-07-01 10:30这样的时间对应的时间戳。
Y1578969264
end_timelongUnix格式时间戳,精确至秒,结束时间。时间要求同上。Y1579055640
periodint人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别
为1,2和3。
Y2

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
totalint总人流数量/统计粒度内的人流数量
start_timelong统计粒度的开始时间
end_timelong统计粒度的结束时间

请求示例

POST openapi/peopleFlow/getGoOutPeopleStat HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192& timestamp=15930292837&sign=IDKNFLK392038KDS932K&start_time=1561910400&end_time=1562083200&period=3

注:本示例表示获取2019-07-01到2019-07-02这两天的统计信息,且统计信息以天为粒度的人流统计信息。

返回示例

{
    "code": 0,
    "data": {
    "total": 2998,
    "stat_list": [{
    	"start_time": 1561910400,
        "end_time": 1561996800,
        "total": 1513
    	}, {
    	"start_time": 1561996800,
        "end_time": 1562083200,
        "total":1485
    	}]
    }
}

6.获取指定时间内的来访列表

描述

获取指定时间内,来过次数排名前N的人脸ID列表信息。

请求地址

https://192.168.0.1/openapi/peopleFlow/getVisitorList,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数公共参数一节描述。

参数名称 类型 描述是否必须 示例
start_timelongUnix时间戳Y1578969264
end_timelongUnix时间戳Y1579055640
orderint表示抵达次数排名前order的人脸信息Y50
group_namestring指定某个人脸分组,默认为所有人脸分组Nvip
genderint性别,1表示男性,2表示女性,默认不分性别N1
age_rangeint年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,
5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
N4
ageint年龄,与上面age_range是或的关系,不是与的关系。即查询age_range或
者age满足的人脸,只要有一个符合即可。
N4
item1string可以根据自定义属性来匹配,自定义属性1的匹配。如果需要使用自定义属
性查询,请确保指定的人脸分组添加过对应的自定义属性,否则查询失败(生
人与熟人分组不能添加自定义属性)
N value1
item2string自定义属性2的匹配N value2
item3string自定义属性3的匹配N value3
item4string自定义属性4的匹配N value4
item5string自定义属性5的匹配N value5
page_numint当前页码,默认值和最小值为1N1
page_sizeint当前页面条目数,默认为10,范围为[1, 100]N10

响应参数

参数名称 类型 描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
total_numint符合条件的总人脸数量
return_numint当前人脸数量
faceidstring人脸ID
group_namestring所属分组
agestring年龄,为空则表示没有设置真实年龄
age_rangeint1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示
29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
genderint性别, 0表示未知,1表示男性,2表示女性
arrive_timesint到达过的次数
item1string自定义属性1,用户添加过才会返回
item2string自定义属性2,用户添加过才会返回
item3string自定义属性3,用户添加过才会返回
item4string自定义属性4,用户添加过才会返回
item5string自定义属性5,用户添加过才会返回

请求示例

如下是获取VIP贵宾中30岁男性在2019-06-14到2019-06-15两天内到过次数最多的人脸ID列表信息。

POST openapi/peopleFlow/getVisitorList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
order=2&start_date=1560441600&end_date=1560528000&gropu_name=vip&age=30&gender=1&item1=value1&&item2=value2&&item3=value3&&item4=value5&&item5=value5

返回示例

{
    "code": 0,
    "data": {
    "total_num": 2,
    "return_num": 2,
    "face_list": [{
    	"faceid": "000001",
    	"group_name": "vip",
    	"age": "32",
    	"age_range": 5,
    	"gender': 1, 
    	"arrive_times": 100,
    	"item1": value1, //自定义属性 
    	"item2": value2, //自定义属性 
    	"item3": value3, //自定义属性 
    	"item4": value4, //自定义属性 
    	"item5": value5 //自定义属性 
    	}, {
    	"faceid": "000002",
    	"group_name": "vip",
    	"age": "30",
    	"age_range": 5,
    	"gender": 1,
    	"arrive_times": 99,
    	"item1": value1, //自定义属性 
    	"item2": value2, //自定义属性 
    	"item3": value3, //自定义属性 
    	"item4": value4, //自定义属性 
    	"item5": value5 //自定义属性 
    	}]
    }
}

7.获取指定人脸的来访记录

描述

查询指定某个人在指定时间内的到访记录。

请求地址

https://192.168.0.1/openapi/peopleFlow/getFaceVisitDetail,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数公共参数一节描述。

参数名称类型描述是否必须示例
start_timelongUnix时间戳,开始时间Y1578969264
end_timelongUnix时间戳,结束时间Y1579055640
faceidstring人脸IDY 000001

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述
total_timesint总到访次数
came_in_timelong array到访的具体时间戳

请求示例

POST openapi/peopleFlow/getFaceVisitDetail HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&start_time=1561910400&end_time=1562083200&faceid=000002

注:本示例表示获取2019-07-01到2019-07-02这两天faceid为000002的人脸的到访时间记录。

返回示例

{
    "code": 0,
    "data": {
    "total_times": 2,
    "came_in_time": [1561910400, 1561996800]
    }
}

8.获取人流统计设置

描述

查询指定某个人在指定时间内的到访记录。

请求地址

https://192.168.0.1/openapi/peopleFlow/getConfig,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见公共参数一节描述。

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211,见错误码的描述
facerecog_intervalint设备端人脸识别去重时间间隔,单位秒。

请求示例

POST openapi/peopleFlow/getConfig HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    "code": 0,
    "data": {
        "facerecog_interval": 60
    }
}

9.更新人流统计设置

描述

查询指定某个人在指定时间内的到访记录。

请求地址

https://192.168.0.1/openapi/peopleFlow/setConfig,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数公共参数一节描述。

参数名称类型描述是否必须示例
facerecog_intervalint设备端人脸识别去重时间间隔,单位秒,取值范围[0,86400]。 Y60

响应参数

字段名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211,见错误码的描述

请求示例

POST openapi/peopleFlow/getConfig HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&facerecog=60

返回示例

{
    "code": 0
}



人脸识别API

  1. 新建人脸分组
  2. 编辑人脸分组
  3. 设置生人到熟人的迁移条件
  4. 删除人脸分组
  5. 获取人脸分组列表
  6. 新增人脸的属性
  7. 删除人脸的属性
  8. 获取指定人脸分组新增属性列表
  9. 新增人脸
  10. 删除人脸
  11. 更新人脸
  12. 获取人脸
  13. 获取人脸列表
  14. 获取人脸ID列表
  15. 获取到达时间最旧的人脸
  16. 清空指定人脸分组

1. 新建人脸分组

描述

通过此接口新建一个人脸分组,并配置其属性。人脸分组当前最多支持10个,系统默认存在两个人脸分组,分别是生人分组和熟人分组,即用户最多还可以创建8个分组。

请求地址

https://192.168.0.1/ openapi/face/createGroup, 192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型 描述是否必须 示例
name string 分组名称,不长于32个汉字,目前系统默认存在“生人”和 “熟人”两个分组Y生人
capacity int 分组容量,所有分组容量加起来不得超过3WY10000
description string分组的描述,不超过50个汉字。Y黑卡的客户

注:

1. 名称第一个字符不得为空格 ;

2. 默认生人库名为stranger,默认熟人库名为regular 。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、200、201、202、211、212、220,见错误码的描述

请求示例

POST openapi/face/createGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& name=vip&capacity=10000&description=贵宾人脸分组

返回示例

{
    “code”: 0
}

2. 编辑人脸分组

描述

通过此接口编辑指定人脸分组的属性。

请求地址

https://192.168.0.1/openapi/face/updateGroup,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
old_name string 要编辑的人脸分组名称 Y 黑卡客户
name string 修改后的分组名称,可与旧的一样 Y 金卡客户
capacity int 修改后的分组容量,可与旧的一样 Y 10000
description string 分组的描述,不超过50个汉字。 Y 办卡升级

注:

1.修改默认生人分组和熟人分组的属性时候,name必须与old_name一致,即不允许修改默认分组的组名;

2.名称第一个字符不得为空格。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、200、201、202、204、211、212、220,见错误码的描述

请求示例

POST openapi/face/updateGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& old_name=stranger&name=vip&capacity=10000&description=贵宾人脸分组

返回示例

{
    “code”: 0
}

3. 设置生人到熟人的迁移条件

描述

系统在激活时会默认创建生人分组和熟人分组两个组,且设备会默认把某个生人来的次数满足一定条件(默认7天内来了5次)的情况下,自动把这个生人移动到熟人分组。

通过此接口可修改生人移动到熟人分组的移动条件。

请求地址

https://192.168.0.1/openapi/face/updateMigration,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型 描述 是否必须 示例
arrive_times int 必选,生人分组才需要的属性,取值范围1~10 Y 5
period int 必选,生人分组才需要的属性,取值范围1~100,单位为天 Y 20

注:

arrive_times和period是生人分组才需要修改的属性,代表一个生人在一定时间内(period设置,单位为天)来过多少次(arrive_times设置)就移动到熟人分组中去。 

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述

请求示例

POST openapi/face/updateMigrationHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&arrive_times=5&period=3

返回示例

{
    “code”: 0
}

4. 删除人脸分组

描述

删除指定人脸分组。

请求地址

https://192.168.0.1/openapi/face/deleteGroup,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
name string 要删除的分组名称,生人和熟人分组不能被删除,分组中有人脸也不能删除,只能先清空。 Y 黑卡客户

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、201、204、205、211、220,见错误码的描述

请求示例

POST openapi/face/deleteGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& name=vip

返回示例

{
    “code”: 0
}

5. 获取人脸分组列表

描述

通过此接口获取IPC上所有的人脸分组信息。

请求地址

https://192.168.0.1/openapi/face/getGroupList,192.168.0.1需要替换成实际的IPC地址。

请求参数

此接口不需要私有参数,公共参数见公共参数一节描述。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220,见错误码的描述
num int 分组的数量
name string 分组名称
capacity int 分组的容量
description string 分组的描述
times int 生人分组才有的属性
period int 生人分组才有的属性
count int 当前分组的大小,即有多少人脸记录

请求示例

POST openapi/face/getGroupList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
“data”: {
“face_group”: [
{
“capacity”: 5000,
“count”: 0,
“name”: “regular”,//熟人分组
“description”: “this is regular group”
},
{
“capacity”: 1000,
“count”: 0,
“name”: “employee”,
“description”: “this is employee group”
},
{
“capacity”: 1000,
“count”: 0,
“name”: “blacklist”,
“description”: “this is blacklist group”
},
{  
“name”: “stranger”,//生人分组
“times”: 5,
“capacity”: 1000,
“count”: 0,
“period”: 2,
“description”: “this is stranger group”
}
],
“num”: 4
},
“code”: 0
}  

6. 新增人脸的属性

描述

库中给每个人脸预置了一些属性,可以通过此接口为指定人脸分组中的人脸增加最多5个属性。

强烈建议在创建新分组后添加人脸前,按需求先调用本接口添加人脸的属性,而不是在添加人脸后中途调用本接口添加人脸ID属性。

请求地址

https://192.168.0.1/openapi/face/addFaceInfoItem,192.168.0.1需要替换成实际的IPC地址。

请求参数

私有参数如下,公共参数见公共参数一节描述。

字段名称 类型 描述 是否必须 示例
num int 新增属性数量 Y 1
group_name string 人脸分组名称 Y stranger
name_list string array 类型为数组,属性名称列表,每个属性类型是string,属性长度最大为50字节 Y [“stranger”]

注:

1. 默认库不允许添加人脸ID属性;

2. 以下字段作为保留字段,不允许作为新添加的属性名: group_name, pic, age, gender, faceid, age_range, arrive_times, pic_url, total_num, return_num。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220、240、241、242,见错误码的描述

请求示例

POST openapi/face/addFaceInfoItem HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& num=2&group_name=vip&name_list=[“phone_num”, “weight”]

返回示例

{
    “code”: 0
}

7. 删除人脸的属性

描述

对于指定分组中的自定义属性,用户可以在不需要的时候删除,这里建议用户不要轻易删除。

请求地址

https://192.168.0.1/openapi/face/removeFaceInfoItem,192.168.0.1需要替换成实际的IPC地址。

请求参数

私有参数如下,公共参数见公共参数一节描述。

字段名称 类型 描述 是否必须 示例
num int 删除的属性数量 Y 1
group_name string 人脸分组名称 Y stranger
name_list string 数组,属性名称列表,属性长度最大为50字节 Y [“stranger”]

注:

默认库不允许删除人脸ID属性

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220、240、241、242、243,见错误码的描述

请求示例

POST openapi/face/removeFaceInfoItem HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& num=2&group_name=vip&name_list=[“phone_num”, “weight”]

返回示例

{
    “code”: 0
}

8. 获取指定人脸分组新增属性列表

描述

通过此接口可以查询某个特定人脸分组中用户通过2.4.6指令添加的所有属性列表。

请求地址

https://192.168.0.1/openapi/face/getFaceInfoItem,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 分组名称 Y stranger

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述
num int 属性的数量
name_list string 属性名称列表

请求示例

POST openapi/face/getFaceInfoItemHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& num=2&group_name=vip

返回示例

{
“code”: 0
“data”: {
“num”: 3,
“name_list”: [
“phone”,
“address”,
“vip_level”
]
},
}  

9. 新增人脸

描述

通过此接口可以向某个特定的人脸分组增加新人脸,并给每个人脸配置相关属性值。一次增加一个人脸。

请求方式

Content-Type为multipart/form-data,并对除文件以外的参数按照签名规则进行签名。

请求地址

https://192.168.0.1/openapi/face/addFace,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否 必须 示例
faceidstring 人脸id,64位正整数字符串。若不提供则内部生成 N123456
pic file jpg/png格式的人脸图片文件,最大分辨率为1920*1080,大小在1MB以内 Y 11024.jpg
group_name string 分组名称 Y stranger
age int 预置属性,年龄 N 14
gender int 预置属性,性别,0表示未知,1表示男性,2表示女性 N 1
item1 string 自定义属性1 N value1
item2 string 自定义属性2 N value2
item3 string 自定义属性3 N value3
item4 string 自定义属性4 N value4
item5 string 自定义属性5 N value5

注:

1.上面的预置属性是IPC数据库中内置的人脸具备的属性,其他的item1/item2/item3/item4/item5是用户自定义属性,若要使用自定义属性,则要调用2.4.6一节的接口来添加自定义属性,如果用户没有先添加人脸属性,直接在这个接口加上对应属性的key-value,IPC设备是不会处理那些属性的;

2.对于age属性,如果不设定,则会由摄像头自动设置此人的年龄段;

3.对于gender,如果不设定,则会由摄像头自动设置此人的性别。

响应参数

字段名称 类型 描述 示例
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、206、208、210、211、220,见错误码的描述
faceidstring人脸id123456

请求示例

POST /openapi/face/addFace HTTP/1.1
Host: 192.168.0.1
Content-Type: multipart/form-data; boundary=————————–962974737227706390007700
Content-Length: 1683

—————————-962974737227706390007700
Content-Disposition: form-data; name=”app_id”

mdk923idk
—————————-962974737227706390007700
Content-Disposition: form-data; name=”faceid”

Vip11024
—————————-962974737227706390007700
Content-Disposition: form-data; name=”random”  

289192
—————————-962974737227706390007700
Content-Disposition: form-data; name=”timestamp”  

15930292837
—————————-962974737227706390007700
Content-Disposition: form-data; name=”sign”  

IDKNFLK392038KDS932K
—————————-962974737227706390007700
Content-Disposition: form-data; name=”group_name”  

VIP
—————————-962974737227706390007700
Content-Disposition: form-data; name=”age”  

21
—————————-962974737227706390007700
Content-Disposition: form-data; name=”gender”  

1
—————————-962974737227706390007700
Content-Disposition: form-data; name=”hobby”  

hiking
—————————-962974737227706390007700
Content-Disposition: form-data; name=”vip_level”  

2
—————————-962974737227706390007700
Content-Disposition: form-data; name=”weight”  

60
—————————-962974737227706390007700
Content-Disposition: form-data; name=”phone_num”  

1234
—————————-962974737227706390007700
Content-Disposition: form-data; name=”pic”; filename=”11024.jpg”
Content-Type: image/jpeg  

(图片二进制数据)
—————————-962974737227706390007700–

注:

上述hobby、vip_level、weight、phone_num是用户自定义属性,对应item1/item2/item3/item4,自定义属性可以通过2.4.6一节的接口来添加。添加之后方可使用。

返回示例

{
    “code”: 0,
    “data”: {
        “faceid”: “123456”
    }
}

10. 删除人脸

描述

通过此接口可以删除指定人脸分组中的某些人脸。

请求地址

https://192.168.0.1/openapi/face/deleteFace,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
num int 删除的人脸数量 Y 1
group_name string 分组名称 Y example
faceid_list string array 删除的人脸ID列表 Y [“105”]

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述
success_list string array 删除成功的人脸ID列表
failed_list string array 删除失败的人脸ID列表
not_exist_list string array 不存在的人脸ID列表

请求示例

POST openapi/face/deleteFace HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP&faceid_list=[“000001”, “0000002”]&num=2

返回示例

{
“code”:     0,
“data”: {
“success_list”:
[
“000001”,
“000002”    
],
“failed_list”: [],
“not_exist_list”: [
“000003”     
]    
}
}

11. 更新人脸

描述

更新指定的人脸信息。

请求地址

https://192.168.0.1/openapi/face/updateFace,192.168.0.1需要替换成实际的IPC地址。

请求方式

Content-Type为multipart/form-data,并对除文件以外的参数按照签名规则进行签名。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y stranger
faceid string 人脸id,64位正整数字符串 Y 123456
new_group_name string 新人脸分组名称 N VIP
pic file jpg/png格式的人脸图片文件,最大分辨率为1920*1080,大小不超过1MB N example.jpg
age int 预置属性,年龄 N 10
gender int 性别,可更新为1表示男性、2表示女性 N 1
item1 string 自定义属性1 N value1
item2 string 自定义属性2 N value2
item3 string 自定义属性3 N value3
item4 string 自定义属性4 N value4
item5 string 自定义属性5 N value5

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、207、208、210、211、220,见错误码的描述

请求示例

POST /openapi/face/addFace HTTP/1.1
Host: 192.168.0.1
Content-Type: multipart/form-data; boundary=————————–962974737227706390007700
Content-Length: 1683  

—————————-962974737227706390007700
Content-Disposition: form-data; name=”app_id”  

mdk923idk
—————————-962974737227706390007700
Content-Disposition: form-data; name=”random”  

289192
—————————-962974737227706390007700
Content-Disposition: form-data; name=”timestamp”  

15930292837
—————————-962974737227706390007700
Content-Disposition: form-data; name=”sign”  

IDKNFLK392038KDS932K
—————————-962974737227706390007700
Content-Disposition: form-data; name=”group_name”  

stranger
—————————-962974737227706390007700
Content-Disposition: form-data; name=”facdid”  

21
—————————-962974737227706390007700
Content-Disposition: form-data; name=”new_group_name”  

VIP
—————————-962974737227706390007700
Content-Disposition: form-data; name=”hobby”  

hiking
—————————-962974737227706390007700
Content-Disposition: form-data; name=”vip_level”  

2
—————————-962974737227706390007700
Content-Disposition: form-data; name=”weight”  

60
—————————-962974737227706390007700
Content-Disposition: form-data; name=”phone_num”  

1234
—————————-962974737227706390007700–

注:

上述 hobby、vip_level、weight、phone_num 是用户自定义属性,对应item1/item2/item3/item4,自定义属性可以通过 2.4.6 一节的接口来添加。添加之后方可使用。

返回示例

{       
“code”: 0
}

12. 获取人脸

描述

通过指定人脸ID获取人脸信息。

请求地址

https://192.168.0.1/openapi/face/getFace,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
faceid string 人脸ID Y 4

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211,见错误码的描述
faceid string 人脸ID
group_name string 所在分组名称
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 所属年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_count int 到达过的总次数
arrive_time int 最后到达时间戳
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

请求示例

POST openapi/face/getFace HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
faceid=4

返回示例

{    
“code”: 0,    
“data”: {        
“arrive_time”: 1566215943,        
“arrive_count”: 2,        
“faceid”: “4”,        
“group_name”: “VIP”,        
“point”: “113”,         //自定义属性        
“gender”: 1,        
“age”: 10,        
“age_range”: 2,        
“vip_level”: “1”,       //自定义属性        
“hobby”: “tennis”,      //自定义属性        
“weight”: “60”,         //自定义属性        
“height”: “180”        //自定义属性    
}
}

注:

上述point、hobby、vip_level、weight、height是用户自定义属性,对应item1/item2/item3/item4/itme5,自定义属性可以通过2.4.6一节的接口来添加。添加之后才有返回这些属性。

13. 获取人脸列表

描述

获取指定人脸分组的所有人脸信息。

请求地址

https://192.168.0.1/openapi/face/getFaceList,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y VIP
page_num int 当前页码,默认值和最小值为1 N 4
page_size int 当前页面条目数,默认为10,范围为[1, 100] N 10

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211,见错误码的描述
total_num int 总人脸数量
return_num int 当前返回人脸数量
faceid string 人脸ID
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 此人所属年龄段,用户不需用设置,由设备自动设置,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_count int 到达过的总次数
arrive_time int 最后到达时间戳
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

请求示例

POST openapi/face/getFaceIDList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP

返回示例

{    
“code”: 0,    
“data”: {        
“total_num”: 2,        
“num”: 2,        
“faceid_list”: [            
{                
“arrive_time”: 1566215929,                
“arrive_count”: 2,                
“faceid”: “3”,                
“point”: “113”,         //自定义属性                
“gender”: 2,                
“vip_level”: “3”,       //自定义属性                
“hobby”: “tennis”,      //自定义属性                 
“weight”: “60”,         //自定义属性                
“height”: “180”,        //自定义属性                
“age”: 10,                
“age_range”: 2            
},            
{                
“arrive_time”: 1566215998                
“arrive_count”: 1                 
“faceid”: “4”,                
“point”: “113”,         //自定义属性                
“gender”: 1,                
“vip_level”: “1”,       //自定义属性                
“hobby”: “tennis”,      //自定义属性                
“weight”: “60”,         //自定义属性                
“height”: “180”,        //自定义属性                
“age”: 10,                
“age_range”: 2            
}        
]    
}
}

14. 获取人脸ID列表

描述

获取指定人脸分组所有人脸ID列表。

请求地址

https://192.168.0.1/openapi/face/getFaceIdList,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
group_namestring人脸分组名称YVIP

响应参数

参数名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、207、211,见错误码的描述
total_numint指定人脸分组的人脸总数
faceid_listtable指定人脸分组的所有人脸ID列表

请求示例

POST openapi/face/getFaceIDList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP

返回示例

{
    "data": {
        "total_num": 30000,
        "faceid_list": [
            661848208,
            661848209,
            661848210,
            661848211,
            661848212,
            661848213,
            661848214,
            661848215,
            661848216,
            661848217,
            661848218
        ]
    },
    code: 0
}

15. 获取到达时间最旧的人脸

描述

获取指定人脸分组按到达时间排序最旧的N条人脸信息。

请求地址

https://192.168.0.1/openapi/face/getFaceByArrival,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y VIP
num int 获取人脸数量,默认值和最小值为1,最大值为10 N 2

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、207、211,见错误码的描述
return_num int 当前返回人脸数量
faceid string 人脸ID
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 此人所属年龄段,用户不需用设置,由设备自动设置,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_count int 到达过的总次数
arrive_time int 最后到达时间戳
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

请求示例

POST openapi/face/getFaceByArrival HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP&num=2

返回示例

{
    “code”: 0,
    “data”: {
        “return_num”: 2,
        “faceid_list”: [
            {
                “faceid”: “8”,
                “arrive_time”: 1566215929,
                “arrive_count”: 7,
                “age_range”: 5,
                “gender”: 1,
                “age”: 0,
                “item1”:value1, //自定义属性   
                “item2”:value2, //自定义属性   
                “item3”:value3, //自定义属性   
                “item4”:value4, //自定义属性   
                “item5”:value5 //自定义属性               
            },
            {
                “faceid”: “10”,
                “arrive_time”: 1566110525,
                “arrive_count”: 6,
                “age_range”: 4,
                “gender”: 2,
                “age”: 0,
                “item1”: value1, //自定义属性   
                “item2”:value2, //自定义属性   
                “item3”:value3, //自定义属性   
                “item4”:value4, //自定义属性   
                “item5”:value5 //自定义属性                   
            }
        ]
    }
}

16. 清空指定人脸分组

描述

清空指定人脸分组内的所有人脸信息。

请求地址

https://192.168.0.1/openapi/face/ cleanFaceGroup ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y VIP

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、2、3、12、13、204、220,见错误码的描述

请求示例

POST openapi/face/cleanFaceGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP&num=2

返回示例

{
    “code”: 0
}

视频流API

1.获取直播流

描述

获取指定IPC直播流地址。

请求地址

https://192.168.0.1/openapi/media/getLiveStream

请求参数

本接口没有私有参数,公共参数见公共参数一节描述。

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、232,见错误码的描述
hd_live_urlstring高清直播地址,RTSP协议
fhd_live_urlstring全高清直播地址,RTSP协议

请求示例

POST /openapi/media/getLiveStreamHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K

返回示例

{
   “code”:              0,
   “data”: {
      “hd_live_url”:  “rtsp://192.168.0.1/ed98eeead4c843f898fef1c203313364/live_hd.sdp”,
      “fhd_live_url”:  “rtsp://192.168.0.1/ed98eeead4c843f898fef1c203313364/live_fhd.sdp”
  }
}

2.获取回放流

描述

获取指定IPC回放流地址。

请求地址

https://192.168.0.1/openapi/media/getPlaybackStream

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelong回放开始时间,unix格式的时间戳,秒级Y1578969264
end_timelong回访结束时间,unix格式的时间戳,秒级Y1579055640

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、230、235,见错误码的描述
playback_urlstring视频回放地址,RTSP协议

请求示例

POST /openapi/media/getLiveStream HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K&start_time=1564565637&end_time=1564565697

返回示例

{
   “code”:              0,
   “data”: {
       “playback_url”:  “rtsp://192.168.0.1/ed98eeead4c843f898fef1c203313364/pb.sdp”
    }
}

3.获取录像文件列表

描述

获取指定指定时间内的录像文件列表。此接口按文件返回结果,列表中可能包含多个文件下载地址。

请求地址

https://192.168.0.1/openapi/media/getRecordList

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelong指定开始时间,unix格式的时间戳,秒级Y1578969264
end_timelong指定结束时间,unix格式的时间戳,秒级Y1579055640
page_numint当前页码,默认值和最小值为1N1
page_sizeint当前页面条目数,默认为10,范围为[1, 100]N10

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、231、234、235,见错误码的描述
total_numint符合条件的视频总数量,每个视频大概1分钟时长
return_numint当前返回的视频数量
start_timelong视频的开始时间
end_timelong视频的结束时间
urlstring视频的下载链接

请求示例

POST /openapi/media/getRecordList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K&start_time=1564565216&end_time=1564565697&page_num=2&page_size=30

返回示例

{
   “code”:              0,
   “data”: {
    “total_num”: 100,
    “return_num”: 30,
    “record_list”:[{
    “start_time”: 1564565216,
    “end_time”: 1564565276,
    “url”:  “https://192.168.0.1/mnt/sd-card/sunmi_video/video_plan/20190731172656_20190731172756.flv?auth_key=1564643800-efc1f64efb0d1d8fab35f0fe8c823a34”}, …]
   }
}

4.获取当前快照

描述

获取指定IPC当前快照。

请求地址

https://192.168.0.1/openapi/media/getSnapshot

请求参数

本接口没有私有参数,公共参数见公共参数一节描述。

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、233,见错误码的描述
snapshot_urlstring快照下载地址

请求示例

POST /openapi/media/getSnapshot HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K

返回示例

{
   “code”:              0,
   “data”: {
      “snapshot_url”:  “https://192.168.0.1/tmp/snapshot/FM0101122334455_20190726162335.jpg?auth_key=1564129415-215f61f3c5f552c5bf8f43ccef5c66a9”
  }
}

5.获取当前视频片段

描述

获取当前时间往前(和/或)往后一点时间的视频片段。

获取视频片段的粒度为4s,用户在调用该接口的时候,设备会在截取当前时间之前的一段视频(以4s为单位)+当前时间点的4s片段+当前时间之后的一段视频片段 (以4s为单位) ,并返回用户视频下载连接。

视频下载连接在调用完成后4~12s生效,生效时间与用户传入的following参数有关。

请求地址

https://192.168.0.1/openapi/media/getCurVideos

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
precedingint当前时间点之前的视频片段长度,只能是0,4,8Y0
followingint 当前时间点之后的视频片段长度,只能是0,4,8 Y8

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、236、237,见错误码的描述
urlstring视频片段下载链接,在生成后4~12s生效

请求示例

POST /openapi/media/getCurVideos HTTP/1.1
Host: 10.10.61.206
Content-Type: application/json
Content-Length: 111
Connection: Keep-Alive
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,en,*
User-Agent: Mozilla/5.0
app_id=123&timestamp=1585743081&random=7783515117&following=0&preceding=0&sign=F4A04BDBE60D9C656A23CD945F703DA2

返回示例

{
“data”:
{
“url”:”https://10.10.63.19/mnt/sd-card/video_slicer/1585741874923_0_0.flv?auth_key=1585741878-c41f9a8751fe0c259b3d00b3842aa668″
},
“code”:0
}

6.获取录像片段下载地址

描述

获取指定指定时间内的录像片段下载地址。此接口会将多个录像片段合并为一个文件下载。

请求地址

https://192.168.0.1/openapi/media/getRecordUrl

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelong指定开始时间,unix格式的时间戳,秒级Y1578969264
end_timelong指定结束时间,unix格式的时间戳,秒级Y1579055640

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、231、234、235,见错误码的描述
urlstring录像片段的下载链接

请求示例

POST /openapi/media/getRecordUrl HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K&start_time=1564565216&end_time=1564565697

返回示例

{
   “code”:              0,
   “data”: {
    “url”:  “https://192.168.0.1/record/C101E96500009/1564565216_ 1564565697.flv?auth_key=efc1f64efb0d1d8fab35f0fe8c823a34”
   }
}

基本配置

  1. 设置无线参数
  2. 设置无线参数(无需签名校验)
  3. 获取无线参数
  4. 获取无线扫描AP列表
  5. 获取无线扫描AP列表(无需签名校验)
  6. 获取IP参数
  7. 设置IP参数
  8. 调焦
  9. 手动聚焦
  10. 自动聚焦
  11. 调焦聚焦复位
  12. 获取调焦和聚焦参数
  13. 设置夜视模式
  14. 获取夜视模式
  15. 设置动态侦测
  16. 获取动态侦测参数
  17. 设置IPC名称
  18. 获取IPC名称
  19. 设置指示灯开关
  20. 获取指示灯开关
  21. 设置画面旋转角度
  22. 获取画面旋转角度
  23. 获取支持的画面旋转角度
  24. 格式化存储卡
  25. 获取存储卡状态
  26. 设置人脸识别算法参数
  27. 获取人脸识别算法参数
  28. 获取图像基本参数
  29. 重置图像基本参数
  30. 设置图像亮度
  31. 设置图像对比度
  32. 设置图像饱和度

1. 设置无线参数

描述

配置IPC连接AP的SSID和密码。

请求地址

https://192.168.0.1/openapi/config/setWifiConf,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述是否必须 示例
ssid string要连接的AP的无线名称,也即SSID,不能超过32个字符Y WeWork
password string要连接的AP的密码,如果无加密,填空即可,不支持WEP,不能超过64个字符Y

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述

请求示例

POST /openapi/config/setWifiConf HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K& ssid=sunmi_ipc&password=1234567890

返回示例

{
    “code”: 0
}

2. 设置无线参数(无需签名校验)

描述

设备激活前无需签名校验配置 IPC 连接 AP 的 SSID 和密码;设备激活后此接口即失效。

请求地址

https://192.168.0.1/openapi/config/setWifiConfWithoutAuth,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有公共参数。

参数名称 类型 描述是否必须 示例
ssid string要连接的AP的无线名称,也即SSID,不能超过32个字符Y WeWork
password string要连接的AP的密码,如果无加密,填空即可,不支持WEP,不能超过64个字符Y

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、12、100、101,见错误码的描述

请求示例

POST /openapi/config/setWifiConfWithoutAuth HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

ssid=sunmi_ipc&password=1234567890

返回示例

{
    “code”: 0
}

3. 获取无线参数

描述

获取当前IPC的无线参数。

请求地址

https://192.168.0.1/openapi/config/getWifiConf,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
ssid string 当前连接的SSID
password string 当前SSID的密码

请求示例

POST /openapi/config/getWifiConf HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “ssid”: “SUNMI_IPC”,
        “password”: “1234567890”
    }
}

4. 获取无线扫描AP列表

描述

获取当前IPC无线扫描到的AP列表。

请求地址

https://192.168.0.1/openapi/config/getApList,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数 ,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
num int 返回扫描到的AP个数
ssid string 扫描到AP的ssid
key_mgmt string 扫描到AP的加密方式

请求示例

POST /openapi/config/getApList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”:0,
    “data”: 
    {
        “num”: 3,
        “ap_list”:[
            {
                “ssid”: “TP-LINK_3475”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWork”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWorkCorp”,
                “key_mgmt”: “WPA-PSK”
            }
        ]
    }
}

5. 获取无线扫描AP列表(无需签名校验)

描述

获取当前IPC无线扫描到的AP列表;设备激活后此接口即失效。

请求地址

https://192.168.0.1/openapi/config/getApListWithoutAuth,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数 ,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
num int 返回扫描到的AP个数
ssid string 扫描到AP的ssid
key_mgmt string 扫描到AP的加密方式

请求示例

POST /openapi/config/getApListWithoutAuth HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”:0,
    “data”: 
    {
        “num”: 3,
        “ap_list”:[
            {
                “ssid”: “TP-LINK_3475”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWork”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWorkCorp”,
                “key_mgmt”: “WPA-PSK”
            }
        ]
    }
}

6. 获取IP参数

描述

获取IPC的IP地址相关信息。

请求地址

https://192.168.0.1/openapi/config/getIpConfiguration,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数 ,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
proto string dhcp或者static
ipaddr string IPC的IP地址
netmask string IPC的子网掩码
gateway string IPC的网关
dns1 string dns地址
dns2 string dns地址

请求示例

POST /openapi/config/getIpConfiguration HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
   “code”: 0,
   “data”: {
      “proto”: “dhcp”,
      “ipaddr”: “192.168.1.107”,
      “netmask”: “255.255.255.0”,
      “gateway”: “192.168.1.1” ,
      “dns1”: “202.96.128.86”,
      “dns2”: “202.96.134.166”,
     }
}

7. 设置IP参数

描述

设置IPC获取IP地址的方式。

请求地址

https://192.168.0.1/openapi/config/setIpConfiguration,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须示例
protostringIP地址的获取方式:dhcp或者staticYstatic
ipaddrstringIP地址,设置静态IP地址时必须传入N192.168.1.110
netmaskstring子网掩码,设置静态IP地址时必须传入N255.255.255.0
gatewaystring网关,设置静态IP地址时必须传入N192.168.1.100
dns1stringdns服务器地址N202.96.128.86
dns2string dns服务器地址 N202.96.134.166

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7,见错误码的描述

请求示例

POST /openapi/config/setIpConfiguration HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&proto=dhcp&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “errcode”: 0
}

8. 调焦

描述

用户根据实际环境,调节镜头的焦距,使得拍摄的画面放大或者缩小。

请求地址

https://192.168.0.1/openapi/config/setZoom,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
zoom int 焦距大小,合理范围是[0, 500] Y 200

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、110,见错误码的描述

请求示例

POST /openapi/config/setZoom HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& zoom=100

返回示例

{
    “code”: 0
}

9. 手动聚焦

描述

调焦后镜头会自动聚焦,如果对自动聚焦效果不满意,可以调用此接口手动进行微调。

请求地址

https://192.168.0.1/openapi/config/manualFocus,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
focus int 聚焦大小,合理范围是[0, 780] Y 200

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、111,见错误码的描述

请求示例

POST /openapi/config/manualFocus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& focus=100

返回示例

{
    “code”: 0
}

10. 自动聚焦

描述

设置焦距后,IPC会自动聚焦,可以设置自动聚焦以哪个点(坐标)为中心进行。

请求地址

https://192.168.0.1/openapi/config/autoFocus,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
focus_x int 聚焦点在x方向的像素百分比,合理范围是[0, 100] Y 50
focus_y int 聚焦点在y方向的像素百分比,合理范围是[0, 100] Y 50

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、112,见错误码的描述

请求示例

POST /openapi/config/autoFocus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& focus_x=50&focus_y=50

返回示例

{
    “code”: 0
}

11. 调焦聚焦复位

描述

用户可以通过此接口直接复位焦距和聚焦的参数。

请求地址

https://192.168.0.1/openapi/config/resetZoomFocus,192.168.0.1需要替换成实际的IPC地址。

请求参数

此接口没有私有参数,公共参数见HTTP接口调用

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述

请求示例

POST /openapi/config/resetZoomFocus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0
}

12. 获取调焦和聚焦参数

描述

获取当前IPC镜头的调焦聚焦参数。

请求地址

https://192.168.0.1/openapi/config/getZoomFocusConf,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
max_zoom int 能够调整的焦距最大值
max_focus int 能够调整的聚焦最大值
zoom int 当前的焦距
focus int 当前的聚焦值
focus_x int 聚焦点在x方向的像素百分比
focus_y int 聚焦点在y方向的像素百分比

请求示例

POST /openapi/config/getZoomFocusConf HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “zoom”: 0,
        “max_zoom”: 500,
        “max_focus”: 780,
        “focus”: 0,
        “focused_x”: 50,
        “focused_y”: 50
    }
}

13. 设置夜视模式

描述

配置镜头的夜视模式。

请求地址

https://192.168.0.1/openapi/config/setIrMode,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
irmode int 0表示关闭,1表示开启,2表示自动。一般选2。 Y 2

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、113,见错误码的描述

请求示例

POST /openapi/config/setIrMode HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& irmode=1

返回示例

{
    “code”: 0
}

14. 获取夜视模式

描述

获取当前IPC的夜视模式。

请求地址

https://192.168.0.1/openapi/config/getIrMode,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
irmode int 返回码成功才会有此字段,当前夜视模式

请求示例

POST /openapi/config/getIrMode HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
          “irmode”: 1
    }
}

15. 设置动态侦测

描述

IPC的动态侦测支持根据画面变化和声音变化灵敏度来检测和报警,通过本API可以设置相关灵敏度和动态侦测的时间。

请求地址

https://192.168.0.1/openapi/config/setDynamicDetect,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
motion_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。 Y 2
audio_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。 Y 2
weekday int 以周为一个循环,用0xYY来表示选择哪一天,具体是0x80直接表示7×24小时,其余的,
以7bit来表示哪一天被选上,0x01表示选择周一,0x02表示选择周二,0x40表示选择
周天,0x7f表示选择一个礼拜的7天,与0x80的区别只是0x80直接默认724小时,而
0x7f选了7天后,还可以设置具体的开始时间和结束时间。
Y 128(0x80 的十进制)
start_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]
Y 200
stop_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]
Y 400

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述

请求示例

POST /openapi/config/setDynamicDetect HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K motion_level=1&audio_level=1&weekday=128&start_time=1260&stop_time=540

返回示例

{
    “code”: 0
}

16. 获取动态侦测参数

描述

获取当前IPC镜头的动态侦测参数。

请求地址

https://192.168.0.1/openapi/config/getDynamicDetect,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
motion_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。
audio_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。
weekday int 以周为一个循环,用0xYY来表示选择哪一天,具体是0x80直接表示7×24小时,其余的,
以7bit来表示哪一天被选上,0x01表示选择周一,0x02表示选择周二,0x40表示选择
周天,0x7f表示选择一个礼拜的7天,与0x80的区别只是0x80直接默认724小时,而
0x7f选了7天后,还可以设置具体的开始时间和结束时间。
start_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]
stop_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]

请求示例

POST /openapi/config/getDynamicDetect HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded


app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
          “motion_level”: 1,
         “audio_level”: 1,
         “weekday”: 7,
         “start_time”: 120
         “stop_time”: 240,
    }
}

17. 设置IPC名称

描述

用户可以设置IPC的名称,以便区分不同的IPC设备。

请求地址

https://192.168.0.1/openapi/config/updateName,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
name string 36个字符以内,12汉字以内 Y 示例名称

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、118,见错误码的描述

请求示例

POST /openapi/config/updateName HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
name=front_door

返回示例

{
    “code”: 0
}

18. 获取IPC名称

描述

获取当前IPC的名称。

请求地址

https://192.168.0.1/openapi/config/getName,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
name int IPC名称

请求示例

POST /openapi/config/getName HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
         “name”: “front_door”
    }
}

19. 设置指示灯开关

描述

设置指示灯是否需要关闭。

请求地址

https://192.168.0.1/openapi/config/setLedSwitch,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
led_switch int 0表示关闭指示灯,1表示开启指示灯,即可以亮 Y 1

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、119, 见错误码的描述

请求示例

POST /openapi/config/setLedSwitch HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& led_switch=1

返回示例

{
    “code”: 0
}

20. 获取指示灯开关

描述

获取当前IPC的指示灯状态。

请求地址

https://192.168.0.1/openapi/config/getLedSwitch,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
led_switch int 0表示关闭指示灯,1表示开启指示灯,即可以亮

请求示例

POST /openapi/config/getLedSwitch HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
         “led_switch”: 1
    }
}

21. 设置画面旋转角度

描述

设置拍摄的画面是否需要旋转一定角度,可用的旋转角度可通过获取支持的画面旋转角度获取到。

请求地址

https://192.168.0.1/openapi/config/setRotation,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
rotation int 画面旋转角度
对于FM010,支持的参数有0,90,180,270;
对于FM020,支持的参数有0,180
Y 180

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、120, 见错误码的描述

请求示例

POST /openapi/config/setRotation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& rotation=180

返回示例

{
    “code”: 0
}

22. 获取画面旋转角度

描述

获取当前IPC当前的画面旋转角度。

请求地址

https://192.168.0.1/openapi/config/getRotation,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
rotation int 当前画面的旋转角度
对于FM010,支持的参数有0,90,180,270;
对于FM020,支持的参数有0,180

请求示例

POST /openapi/config/getRotation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “rotation”: 180
    }

23. 获取支持的画面旋转角度

描述

获取当前IPC设备支持的画面旋转角度。

请求地址

https://192.168.0.1/openapi/config/getRotationAngles,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
angles string list 当前IPC设备支持的画面旋转角度列表
对于FM010,支持的参数有0,90,180,270;
对于FM020,支持的参数有0,180

请求示例

POST /openapi/config/getRotation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “angles”: [
            “0”,
            “90”,
            “180”,
            “270”
        ]
    }
}

24. 格式化存储卡

描述

格式化插入IPC里面的存储卡。

请求地址

https://192.168.0.1/openapi/config/formatMemoryCard,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、220、221, 见错误码的描述

请求示例

POST /openapi/config/formatMemoryCard HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K
  • 返回示例
{
    “code”: 0
}

25. 获取存储卡状态

描述

获取IPC上存储卡状态

请求地址

https://192.168.0.1/openapi/config/getMemoryCardStatus,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
status int 0表示未插入SD卡;1表示已插入SD卡但未初始化;2表示SD卡已插入且正常;3表示SD卡无法识别

请求示例

POST /openapi/config/getMemoryCardStatus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
         “status”: 2
    }
}

26. 设置人脸识别算法参数

描述

人脸识别算法分析视频数据时,需要从视频流中优选质量相对较好的图像进行识别匹配,此接口用于设置优选过程的参数。

请求地址

https://192.168.0.1/openapi/config/setFaceOption,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
optimize_secondsint优选图像的时间范围,单位为秒。在画面中出现人脸后则尝试 选出 在这个时间范围内最好的人脸图像进行特征提取。Y2

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7, 见错误码的描述

请求示例

POST /openapi/config/setFaceOption HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&optimize_seconds=2&sign=IDKNFLK392038KDS932K

返回示例

{
 "code": 0
} 

27. 获取人脸识别算法参数

描述

人脸识别算法分析视频数据时,需要从视频流中优选质量相对较好的图像进行识别匹配,此接口用于获取优选过程的参数。

请求地址

https://192.168.0.1/openapi/config/getFaceOption,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、279, 见错误码的描述

请求示例

POST /openapi/config/getFaceOption HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192sign=IDKNFLK392038KDS932K

返回示例

{
  "code": 0,
  "data": {
    "optimize_seconds": "2"
  }
} 

28. 获取图像基本参数

描述

该接口获取图像的亮度,对比度,饱和度参数。

请求地址

https://192.168.0.1/openapi/config/ get_pqparam,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述
brightnessint返回的亮度值范围0-100
contrastint返回的对比度值范围0-100
saturationint返回的饱和度值范围0-100

请求示例

POST /openapi/config/get_pqparam HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192sign=IDKNFLK392038KDS932K

返回示例

{
  "code": 0
} 

29. 重置图像基本参数

描述

该接口将图像的亮度,对比度,饱和度参数重置为默认值。

请求地址

https://192.168.0.1/openapi/config/ reset_pqparam ,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/reset_pqparam HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192sign=IDKNFLK392038KDS932K

返回示例

{
  "code": 0
} 

30. 设置图像亮度

描述

该接口将设置图像亮度为目标值。

请求地址

https://192.168.0.1/openapi/config/ set_brightness ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
brightnessint目标亮度值。Y50

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/set_brightness HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&compensation=50&sign=IDKNFLK392038KDS932K

返回示例

{
“code”: 0
}

31.设置图像对比度

描述

该接口将设置图像对比度为目标值。

请求地址

https://192.168.0.1/openapi/config/ set_contrast ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
contrastint目标对比度值。Y50

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/set_contrast HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&contrast=50&sign=IDKNFLK392038KDS932K

返回示例

{
“code”: 0
}

32.设置图像饱和度

描述

该接口将设置图像饱和度为目标值。

请求地址

https://192.168.0.1/openapi/config/ set_saturation ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
saturationint目标饱和度值。Y50

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/set_saturation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&saturation=50&sign=IDKNFLK392038KDS932K

返回示例

{
“code”: 0
}

设备管理

1.激活设备

  • 描述

使用设备前调用此接口激活设备,使用前确保设备是联网的。

激活设备后会在SD卡中新建两个默认的人脸分组,名称分别为stranger和regular,如果在SD卡中有人脸分组的条件下激活,则会先删除所有的人脸分组,然后再新建默认库。

  • 请求地址

https://192.168.0.1/openapi/device/activate,192.168.0.1需要替换成实际的IPC地址

  • 请求参数
参数名称类型描述是否必须
app_idstring用户应用ID,公共参数Y
timestamplongunix格式时间戳,秒级Y
randomlong随机数,6-10位Y
snstring设备snY
signstring整个请求参数的签名Y

sign的生成参照1.5.4节签名规则,参与签名计算的签名秘钥使用激活码代替secret key进行计算。

假如需要传入的参数如下:

app_id: JO83UNV983U9OR
random: 289192
sn: FS101D8BS00106
timestamp: 1593029283

openapi激活码为12345678

则按照规则生成签名为

str1=”app_id=JO83UNV983U9OR&random=289192&sn=FS101D8BS00106&timestamp=1593029283″
str2 = str1 + “&key=12345678”
sign = MD5(str2).upper()

最终HTTP报文请求中所带参数为

app_id:JO83UNV983U9OR
random:289192
sn:FS101D8BS00106
timestamp:1593029283
sign:72CB1C1031D3BA103D2FA1A57E171C2D
  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、4、8、9、10、11,见错误码章节的描述
  • 请求示例

POST /openapi/device/activate HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=JO83UNV983U9OR&random=289192&sn=FS101D8BS00106&timestamp=1593029283&sign=72CB1C1031D3BA103D2FA1A57E171C2D

  • 返回示例

{
    ‘code’:          0,
}

2.获取设备基本信息

  • 描述

使用此接口可以获取设备的基本信息。

  • 请求地址

https://192.168.0.1/openapi/device/getInfo,192.168.0.1需要替换成实际的IPC地址

  • 请求参数

此接口没有私有参数,公共参数见HTTP接口调用一章的公共参数一节描述

  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、5、7,见错误码章节的描述
snstring设备序列号
model_namestring设备型号
namestring设备名字
software_versionstring固件版本
hardware_versionstring硬件版本
ipstringIP地址
macstringMAC地址
  • 请求示例

POST /openapi/device/getInfo HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K&

  • 返回示例

{
‘code’:  0,

‘data’: {
‘sn’:   ‘SS101D8BS00083’,

‘model_name’:  ‘FS’,

‘name’:  ‘My FS’,

‘software_version’:   ‘1.1.0’,

‘hardware_version’:  ‘1.0.0’,

‘ip’:   ‘192.168.0.1’,

‘mac’: ’04:12:24:E3:45:12 ‘,
    }
}

3.恢复出厂设置

  • 描述

使用此接口可以使得设备恢复出厂设置。

  • 请求地址

https://192.168.0.1/openapi/device/reset,192.168.0.1需要替换成实际的IPC地址

  • 请求参数

此接口没有私有参数, 公共参数见HTTP接口调用一章的公共参数一节描述

  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、5、7,见错误码章节的描述
  • 请求示例

POST /openapi/device/reset HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

  • 返回示例

{
    ‘code’:          0,

}

4.重启设备

  • 描述

使用此接口可以重启设备。

  • 请求地址

https://192.168.0.1/openapi/device/reboot,192.168.0.1需要替换成实际的IPC地址

  • 请求参数

此接口没有私有参数, 公共参数见HTTP接口调用一章的公共参数一节描述

  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、5、7,见错误码章节的描述
  • 请求示例

POST /openapi/device/reset HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

POST /openapi/device/rebootHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

  • 返回示例

{
    ‘code’:          0,

}

HTTP接口调用

1.公共参数

公共接口参数是指每次调用API都需要带上的参数。如下表所示。

参数名称 类型 描述 是否必须
app_id string 用户应用ID,公共参数 Y
timestamp long unix格式时间戳,秒级 Y
random long 随机数,6-10位 Y
sign string 整个请求参数的签名 Y

2.请求结构

服务地址

对于每一个API调用,都是通过URL来标志具体调用哪个功能接口的。

URL格式形如https://ip/openapi/apiType/action 。

各字段描述如下:

ip 对应IPC的IP地址
openapi 统一标识符,表示开放API
apiType API类别
action 表示对应的接口动作名称

通信协议

为了通信安全,通过HTTPS通道来请求调用API。

请求方法

目前只支持HTTPS POST方法来进行请求调用。报文Content-Type为application/x-www-form-urlencoded。 如有特殊情况,会在对应的API接口中描述。

请求参数

每一次请求调用都需要带上参数,参数分为公共参数(见公共参数一节描述)和对应接口的特定参数。

3.签名规则

每个HTTPS请求报文都需要带上签名,IPC设备会验证签名是否合格。

对于所有的接入开发者,数字店铺开放平台会分配以下内容:

  • app_id: 唯一标识接入身份 (如果是专用接口,暂时可以不提供app id)
  • secret_key: 该用户独有的签名校验

签名规则

  1. 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位。
  2. 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考https://tool.chinaz.com/tools/unixtime.aspx。
  3. 参数必须包含app_id字段。
  4. 首先对于所有的非空参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串。
  5. 在字符串尾部拼接该开发者独有的签名秘钥secret key值。
  6. 对字符串进行MD5签名,对生成的MD5签名转化为全大写。

验证

IPC收到请求后,根据同样的规则来验证签名是否正确,以此判断请求是否合法。

签名示例

假如需要传入的参数如下:

product_id: 389238
user_id: 29389
content: newproductmask
environment: test

则按照规则生成签名为

str1= “app_id=2039dds&content=newproductmask&environment=test&product_id=389238&random=289192&timestamp=1593029283&user_id=29389”
str2 = str1 + “&key=kdsofkdsnflke9382938k”
sign = MD5(str2).upper()

最终HTTP报文请求中所带参数为

app_id:2039dds
product_id: 389238
user_id: 29389
content: newproductmask
environment: test
sign: 6200690DDBBB9719749D4277B420E8C0
timestamp: 1593029283
random:289192

4.示例

请求示例

POST /openapi/config/setWifiConf HTTP/1.1
Host: 192.168.1.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837& sign=IDKNFLK392038KDS932K&ssid=sunmi_ipc&password=1234567890

返回结果示例

HTTP请求的返回结果为json格式的内容,下面是一个简单示例。

如下,code字段是一定会有的,表示处理结果。data字段因不同的API而不同,有的API有返回data字段,有的则没有。

{
    ‘code’:              0,
    ‘data’: {
        ‘ssid’:              ‘SUNMI_IPC’,
        ‘password’:         ‘1234567890’
  }
}

API调用方式

开放API接口的调用方式主要分为两种 ,分别为HTTPS同步调用和消息通道异步返回结果的方式。

HTTPS调用方式

API调用后同步返回结果的接口主要用此种方式调用。

具体见HTTP接口调用

IPC消息中心

由IPC主动推送的消息,可以通过消息推送或者消息通道来获取,这样能够保证消息的实时性。

具体见IPC消息中心