设备管理

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消息中心