设备端对接(C语言)

更新时间:

1 整体架构

image.png

2 业务流程

image.png

3 对接LinkVisual SDK

3.1 C语言SDK对接

车行设备由多功能停车摄像头、LED显示屏、道闸等设备组成,其中多功能停车摄像头负责车牌识别、车辆权限判定、云端通信,以及LED和道闸控制。多功能停车摄像头在标准摄像头功能基础上,扩展了与车行相关的服务与能力,是车行设备端对接的主要部件。

对接C语言SDK参见:概述

3.2 创建车行产品

1)访问地址:

https://iot.console.aliyun.com/product

在物联网平台上创建产品,所属品类选择“智能园区/多功能停车摄像头”:

image.png

2)在产品详情页面,选择“功能定义-编辑草稿”:

image.png

3)然后在编辑草稿页面,选择“添加标准功能”:

image.png

4)在弹出的对话框中选择所需要的属性、服务、事件。例如:选择服务“下发LED数据”,事件“异常抬杆”:

image

5)选择完成后将物模型发布上线:

image.png

3.3 创建车行设备

1)在产品列表中选择“设备管理”:

image.png

2)为产品添加设备,然后在设备列表中选择“查看”:

image.png

3)获得设备证书(ProductKey、DeviceName、DeviceSecret)信息:

image.png

3.4 设备连接物联网平台

复制车行设备证书(ProductKey、DeviceName、DeviceSecret),将设备连入物联网平台。

3.5 设备物模型开发

根据物模型定义的属性、事件、服务,完成设备端开发。

4 多功能停车摄像头物模型

与标准的“摄像头”物模型相比,多功能停车摄像头增加(或复用)了以下属性、事件、服务:

4.1 属性

名称

类型

描述

LedRowNumber

Integer

屏幕行数,只读属性,取值范围: -100 ~ 100

  • 数字绝对值表示屏幕支持的行数

  • 负号表示支持<br>换行符,调用费显屏显示服务时指定行数为1,内容为带<br>的字符串

LedNoticeMode

Enum

屏幕通知模式,只读属性:

  • 0 分离模式(支持单行刷新,语音、文字分别下发)

  • 1 混合模式(仅支持语音、文字同时下发)

IsSurportQrCode

Bool

是否支持二维码,只读属性:

  • 0 不支持

  • 1 支持

GateState

Enum

道闸设备状态,只读属性:

  • 0 已打开

  • 1 已关闭

  • 2 开闸中

  • 3 关闸中

VehicleState

Enum

车辆等待状态,只读属性:

  • 0 无车

  • 1 有车

  • 2 不支持

Volume

Integer

音量大小,取值范围:0 - 100

Brightness

Integer

屏幕亮度,取值范围:0 - 100

4.2 服务

4.2.1 下发车辆权限

名称

AddVehicleIOfPermission

描述

通过文件异步下发车辆权限到设备。

入参:

参数

类型

描述

VehiclePermissionUrl

String

车辆权限文件URL

出参:

参数

类型

描述

VehiclePermissionStatus

Enum

车辆权限文件下载状态:

  • 0 文件下载成功

  • 1 文件下载失败

车辆权限通过JSON文件下发、上报。JSON文件中字段定义如下:

参数

类型

描述

是否必须

total

Integer

文件包含的记录数量

permList

List

车辆权限数组

-type

Integer

操作类型:1-增加(或覆盖),2-删除

是-下发权限时

否-返回权限时

-plateNumber

String

车牌号

-effectiveDate

String

生效时间(UTC)单位精确到毫秒

是-下发、返回权限

否-黑白名单

-expiryDate

String

终止时间(UTC)单位精确到毫秒

是-下发、返回权限

否-黑白名单

-permissionType

Integer

权限类型:1-普通,2-白名单,3-黑名单

下发车辆权限文件示例:

{
    "total": 100,
    "permList": [
    {
        "type": 1,
        "plateNumber": "京N1***45",
        "effectiveDate": "时间戳",
        "expiryDate": "时间戳",
        "permissionType": 1
    },
    {
        "type": 2,
        "plateNumber": "京N***67",
        "effectiveDate": "",
        "expiryDate": "",
        "permissionType": 2
    }
    ]
}

设备端下载并解析JSON权限文件,按照指定操作类型更新本地车辆权限数据库。

4.2.2 获取车辆权限

名称

GetVehiclePermission

描述

获取设备本地存储的车辆权限,用于校验云端与设备端权限是否一致

请求参数:无

出参:

参数

类型

描述

VehiclePermissionUrl

String

设备端权限文件URL

设备端按约定格式导出权限文件,使用OSS STS Token将文件上传到指定位置,并返回文件URL。

4.2.3 查询车辆权限下发状态

名称

GetPermissionDownloadProgress

描述

查询车辆权限下发状态

请求参数:无

出参:

参数

类型

描述

DownloadStatus

Enum

车辆权限下发状态:

  • 0 完成

  • 1 进行中

4.2.4 下发OSS STS Token

名称

SendOssStsToken

描述

云端下发OSS STS Token到设备,允许设备使用临时访问权限上传文件

入参:

参数

类型

描述

Credentials

String

加密的STS Token证书,包含如下信息:

  • AccessKeyId 访问密钥标识

  • AccessKeySecret 访问密钥

  • StsToken 安全令牌

  • Expiration 失效时间

BucketName

String

允许设备访问的OSS Bucket Name

ObjectName

String

指定设备上传文件的路径

EndPoint

String

允许设备访问的OSS接入地址

出参:

参数

类型

描述

Status

Enum

STS Token下发状态:

  • 0 完成

  • 1 进行中

设备端通过解密STS Token证书,获取上传文件所需的权限。当证书过期后,设备端上报OSS STS Token请求事件,云端重新下发有效的STS Token证书。

4.2.5 下发LED显示数据

根据设备属性LedNoticeMode定义的模式,下发屏幕提示数据。以分离模式下发需要实现以下服务:

  • NoticeBroadcast:下发提示语音

  • NoticeDisplay:下发提示显示

  • DefaultDisplay:下发默认显示

以混合模式下发需要实现以下服务:

  • AddLedData:提示语音、提示显示同时下发

1)下发提示语音

名称

NoticeBroadcast

描述

下发提示语音信息

入参:

参数

类型

描述

VoiceContent

String

语音播报内容,最大长度不超过2048

PlaySpeed

Integer

语音播报速度,取值范围:1 - 10,步长:1

返回参数:无

2)下发提示显示

名称

NoticeDisplay

描述

下发提示显示信息

入参:

参数

类型

描述

DisplayContent

String

显示内容,最大长度不超过2048

RowNumber

Integer

屏幕行号,取值范围:1 - 100

MovingSpeed

Integer

文字移动速度,取值范围:1 - 10,步长:1

DisplayTime

Integer

显示时长,取值范围1-3600,单位:秒

MovingType

Enum

文字移动方式:0:禁止 (默认)1:从右到左2:从左到右3:从下到上4:从上到下

返回参数:无

3)下发默认显示

名称

DefaultDisplay

描述

下发默认显示信息

入参:

参数

类型

描述

DisplayContent

String

显示内容,最大长度不超过2048

RowNumber

Integer

屏幕行号,取值范围:1 - 100

DefaultSituation

Enum

默认显示场景:0:空闲1:普通权限车辆、白名单车辆过车2:黑名单车辆过车3:临时车量过车4:无牌车辆过车

返回参数:无

4)混合下发LED提示数据

名称

AddLedData

描述

下发LED显示数据,控制LED在不同场景下的显示与播报内容

入参:

参数

类型

描述

LedData

JSON

以JSON描述的LED显示内容,最大长度不超过2048

出参:

参数

类型

描述

Result

Enum

LED内容解析状态:

  • 0 解析正常

  • 1 解析异常

云端通过JSON字符串下发LED显示数据,JSON字符串内容定义如下:

属性名

类型

描述

Type

Integer

下发内容的类型:

  • 0 固定场景

  • 1 临时场景

  • 2 个性化场景

Situation

Integer

固定场景(Type=0)下的场景类型:

  • 0 空闲

  • 1 普通权限车辆、白名单车辆过车

  • 2 黑名单车辆过车

  • 3 临时车量过车

  • 4 无牌车辆过车

ShowTime

Integer

内容显示时长,单位为秒

AudioContextInfo

String

自定义语音播报内容

ScreenLineNum

Integer

屏幕行数

ContextList

JSONArray

屏幕内容数组,每个元素代表一行

-RunType

Integer

文字滚动方式:

  • 0 禁止

  • 1 从右到左

  • 2 从左到右

  • 3 从下到上

  • 4 从上到下

-ColorType

Integer

文字颜色:

  • 1 红色

  • 2 绿色

-CustomContext

String

自定义内容,长度1-128。内容支持以下通配符:

  • #T 当前时间

  • #t 车辆到期时间

  • #p 车牌号码

-Audio

Integer

是否进行语音播报:

  • 0 否

  • 1 是

以支持四行文字,红、绿两种颜色的LED显示器为例,下发“固定场景-空闲”时显示的内容:

{
      "Type": 0,
      "Situation": 0,
      "PlateNumber": "",
      "ShowTime": ,
      "AudioContextInfo": "",
      "ScreenLineNum": 4,
      "ContextList":[
          {
              "RunType": 0,
              "ColorType": 1,
              "CustomContext":"智慧停车",
              "Audio": 0
          },
          {
              "RunType": 0,
              "ColorType": 1,
              "CustomContext":"智能识别",
              "Audio": 0
          },
          {
              "RunType": 0,
              "ColorType": 1,
              "CustomContext":"一车一杆",
              "Audio": 0
          },
          {
              "RunType": 0,
              "ColorType": 2,
              "CustomContext":"#T",
              "Audio": 0
          }
      ]
}

4.2.6 下发二维码

名称

QrCodeDisplay

描述

下发二维码信息

入参:

参数

类型

描述

QrCode

String

二维码信息,最大长度不超过2048

返回参数:无

4.2.7 手动触发车牌识别

名称

TriggerRecognition

描述

触发设备上报智能告警事件

请求参数:无,或者返回参数:无

设备端抓拍车辆图片,并通过智能告警事件上报图片和相关信息。

4.3 事件

4.3.1 智能告警事件

名称

IntelligentAlarm

描述

上报智能告警事件,包含车辆图片和车牌识别结果等信息

与其他事件不同,设备端需要调用LV SDK提供的“

lv_post_intelligent_alarm”接口上报智能告警事件,相关参数和接口定义以LV SDK为准:

/* 智能事件参数集 */
typedef struct {
    lv_intelligent_event_type_e type; //智能事件类型,车辆识别为10005
    lv_media_format format;           //智能事件的媒体数据类型,图片类型为0
    struct {
        char *p;
        uint32_t len;
    } media;                          //智能事件的媒体数据,不大于1MB
    struct {
        char *p;
        uint32_t len;
    } addition_string;                //智能事件的附加字符串信息,不大于2048B
} lv_intelligent_alarm_param_s;

/* 上报智能告警事件图片、告警信息 */
int lv_post_intelligent_alarm(const lv_intelligent_alarm_param_s *param);

参数说明:

参数

类型

描述

type

Enum

告警类型,固定值10005(车辆识别)

format

Enum

媒体数据类型,固定值0(JPEG格式图片)

media

Struct

媒体数据,不大于1MB

addition_string

Struct

告警内容字段定义参见2 车辆通行记录

以下字段不需要上报:

  • direction

  • channelSpaceId

4.3.2 OSS STS Token请求事件

名称

OssStsTokenRequest

描述

上报OSS STS Token请求事件,请求云端下发OSS STS Token

上报参数:

参数

类型

描述

RequestType

Enum

请求上传的文件类型:

  • 0 图片文件

  • 1 文本文件

  • 2 其他类型文件

4.3.3 异常抬杆事件

名称

AbnormalOpenGate

描述

当闸机非自动抬杆时,上报异常抬杆事件

上报参数:

参数

类型

描述

OpenType

Enum

抬杆类型:0 遥控器控制抬杆1 设备自身按键抬杆99 其他方式

ImagePath

String

抓拍图片地址,数据长度2048

5 通过OSS STS Token上传文件

设备端集成OSS SDK参见:安装

设备端使用签名URL上传文件示例参考:授权访问