接入边缘车辆通行服务
更新时间:2019-07-24 10:13:03
API
1. 创建边缘网关产品
登录阿里云物联网平台
创建产品
产品名称:按自身需要随意填写
所属分类:选择 边缘计算/边缘网关
节点类型:选择 网关
连网方式:按照网关实际入网模式选择
数据格式:选择 ICA 标准数据格式(Alink JSON)
使用ID2认证:选择 否
2. 创建网关设备
产品:选择 步骤1创建产品时候指定的 产品名称
DeviceName:根据需要填写
3. 创建边缘实例
实例名称:根据需要自行填写
网关产品:选步骤1创建的产品
网关设备:选步骤2创建的设备
4. 上传车行驱动
语言类型:固定类型 Python 3.5.2
驱动名称:固定值 ParkingAccessDriver
停车驱动文件请联系网关团队获得支持
5. 运行LinkEdge
5.1 安装Docker
5.2 启动网关程序
登入到你的网关机器(root权限)。执行如下命令下载启动网关的脚本。
#wget https://parking-access.oss-cn-shanghai.aliyuncs.com/link-iot-edge-parking.sh
#chmod a+x link-iot-edge-parking.sh
执行如下命令,启动网关。(使用网关的设备三元组在物联网控制台上查看步骤2创建的网关设备详情可以获得)
#./link-iot-edge-parking.sh v1.8.4 {gw_productKey} {gw_deviceName} {gw_deviceSecret}
需要按下图配置启动参数
脚本执行完后,可以在边缘实例中看到网关设备状态为“在线”。
** 清理边缘环境(如果配置有问题,想重新运行LinkEdge),执行如下命令可停止当前运行的Link IoT Edge相关容器 ,并会删除所有已安装的相关镜像,删除相关数据卷以及启动配置文件。
#./link-iot-edge-face-recognition.sh --clean
6. 创建“车行区域”产品和“车行通道”产品。
6.1 停车区域
产品名称:按自身需要随意填写
所属分类:选择 智能园区/社区车行停车区域
节点类型:选择 设备
是否接入网关:选择 是
接入网关协议:选择 自定义
数据格式:选择 ICA 标准数据格式(Alink JSON)
使用ID2认证:选择 否
6.2 车行通道
产品名称:按自身需要随意填写
所属分类:选择 智能园区/社区车行停车通道
节点类型:选择 设备
是否接入网关:选择 是
接入网关协议:选择 自定义
数据格式:选择 ICA 标准数据格式(Alink JSON)
使用ID2认证:选择 否
7. 人居控制台创建项目
用登录物联网控制台的账号登录人居平台 创建个web项目拿一个新的appKey。妥善保管应用中的Appkey和AppSecret,不要随意将AppSecret告诉他人。
8. 下载https客户端
所有API都是HTTPS请求的,这里有一个Java的示例(使用方法参考API网关客户端)。
这个客户端里用到的appKey和appSecret由步骤7产生。
注意:使用https格式调用所有的API接口。如下所示
syncClient.postBody(host, path, request, true);
9. 调API批量导入自建用户账号
10. 创建OSS空间
OSS用作车牌照片的存储,车场摄像头拍摄的车牌照片会通过边缘网关上传到OSS。
进入阿里云OSS控制台,选择新建Bucket
Bucket 名称:根据自己需要自行定义
区域:选 华东2(上海)
进入RAM给IoT授予OSS访问权限
调用 https 接口 /parking/paas/gateway/oss/config 向步骤2创建的边缘网关配置OSS访问地址。
该接口的传参详见 API 接口文档(此API文档由商务同学提供)
11. 边缘网关对接本地系统
网关团队提供网关和本地停车系统对接,安装,调试的支持。
12. 开始使用
前面8步完成之后,开始进行业务上的配置。
内容包括:
停车区域、停车通道的增删改查功能;
车辆信息管理;
业务功能管理;
以上三部分功能参考 API 接口文档
13. 关于数据订阅
停车的车行通道会推送两种数据:收费事件、车辆通行事件
调用如下接口订阅指定车行通道的事件
path | 版本 | 是否需要登录 |
---|---|---|
/entrance/paas/device/subscription/modify | 1.0.0 | 否 |
入参
字段 | 类型 | 是否必传 | 备注 |
---|---|---|---|
iotIds | JASONArray |
是 | 待订阅的设备iotId列表,上限50 |
subscribed | Integer | 否 | 1 订阅,0取消订阅;默认是1 |
入参示例
{
"code": 200,
"id":"4a70179d-47d8-4fdf-9067-8a5eedf63483",
"message": null,
"localizedMsg": null
}
出参
字段 | 类型 | 备注 |
---|---|---|
code | Integer | 返回码 |
message | String | 返回信息 |
data | List |
订阅设置失败的设备iotId |
ModifyResultDTO定义
字段 | 类型 | 备注 |
---|---|---|
iotId | String | 门禁设备的iotId |
可以查询订阅消息推送设备列表,用如下接口
path | 版本 | 是否需要登录 |
---|---|---|
/entrance/paas/device/subscription/query | 1.0.0 | 否 |
入参
pageSize | Integer | 是 | 分页查询一页内的记录数,上限100 |
---|---|---|---|
pageNo | Integer | 是 | 分页数,从1开始 |
出参
字段 | 类型 | 备注 |
---|---|---|
code | Integer | 返回码 |
message | String | 返回信息 |
data | JSONObject |
返回的分页数据对象 |
分页PageDTO
pageSize | Integer | 传入的pageSize |
---|---|---|
pageNo | Integer | 传入的pageNo |
total | Long | 总记录数 |
data | JSONArray |
订阅数据列表 |
UserDTO对象
字段 | 类型 | 备注 |
---|---|---|
iotId | String | 设备iotId |
deviceName | String | 设备dn |
productKey | String | 设备pk |
categoryKey | String | 设备品类 |
tenantId | String | 租户Id |
subscribed | Integer | 是否订阅消息 |
gmtCreate | Date | 订阅创建时间 |
gmtModified | Date | 订阅更新时间 |
出参示例
{
"code": 200,
"data": {
"total": 1,
"data": [{
"bizCode": "bizTypeTest",
"categoryKey": "categoryKeyTest",
"deviceName": "deviceNameTest",
"gmtCreate": 1556517249000,
"gmtModified": 1556517249000,
"iotId": "iotTest",
"productKey": "productKeyTest",
"subscribed": 1,
"tenantId": "tenantTest"
}]
},
"id": "4a70179d-47d8-4fdf-9067-8a5eedf63483",
"message": null,
"localizedMsg": null
}