設(shè)備端對接(C語言)
1 整體架構(gòu)
2 業(yè)務(wù)流程
3 對接LinkVisual SDK
3.1 C語言SDK對接
車行設(shè)備由多功能停車攝像頭、LED顯示屏、道閘等設(shè)備組成,其中多功能停車攝像頭負(fù)責(zé)車牌識別、車輛權(quán)限判定、云端通信,以及LED和道閘控制。多功能停車攝像頭在標(biāo)準(zhǔn)攝像頭功能基礎(chǔ)上,擴展了與車行相關(guān)的服務(wù)與能力,是車行設(shè)備端對接的主要部件。
對接C語言SDK參見:概述
3.2 創(chuàng)建車行產(chǎn)品
1)訪問地址:
https://iot.console.aliyun.com/product,
在物聯(lián)網(wǎng)平臺上創(chuàng)建產(chǎn)品,所屬品類選擇“智能園區(qū)/多功能停車攝像頭”:
2)在產(chǎn)品詳情頁面,選擇“功能定義-編輯草稿”:
3)然后在編輯草稿頁面,選擇“添加標(biāo)準(zhǔn)功能”:
4)在彈出的對話框中選擇所需要的屬性、服務(wù)、事件。例如:選擇服務(wù)“下發(fā)LED數(shù)據(jù)”,事件“異常抬桿”:
5)選擇完成后將物模型發(fā)布上線:
3.3 創(chuàng)建車行設(shè)備
1)在產(chǎn)品列表中選擇“設(shè)備管理”:
2)為產(chǎn)品添加設(shè)備,然后在設(shè)備列表中選擇“查看”:
3)獲得設(shè)備證書(ProductKey、DeviceName、DeviceSecret)信息:
3.4 設(shè)備連接物聯(lián)網(wǎng)平臺
復(fù)制車行設(shè)備證書(ProductKey、DeviceName、DeviceSecret),將設(shè)備連入物聯(lián)網(wǎng)平臺。
3.5 設(shè)備物模型開發(fā)
根據(jù)物模型定義的屬性、事件、服務(wù),完成設(shè)備端開發(fā)。
4 多功能停車攝像頭物模型
與標(biāo)準(zhǔn)的“攝像頭”物模型相比,多功能停車攝像頭增加(或復(fù)用)了以下屬性、事件、服務(wù):
4.1 屬性
名稱 | 類型 | 描述 |
LedRowNumber | Integer | 屏幕行數(shù),只讀屬性,取值范圍: -100 ~ 100
|
LedNoticeMode | Enum | 屏幕通知模式,只讀屬性:
|
IsSurportQrCode | Bool | 是否支持二維碼,只讀屬性:
|
GateState | Enum | 道閘設(shè)備狀態(tài),只讀屬性:
|
VehicleState | Enum | 車輛等待狀態(tài),只讀屬性:
|
Volume | Integer | 音量大小,取值范圍:0 - 100 |
Brightness | Integer | 屏幕亮度,取值范圍:0 - 100 |
4.2 服務(wù)
4.2.1 下發(fā)車輛權(quán)限
名稱 | AddVehicleIOfPermission |
描述 | 通過文件異步下發(fā)車輛權(quán)限到設(shè)備。 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
VehiclePermissionUrl | String | 車輛權(quán)限文件URL |
出參:
參數(shù) | 類型 | 描述 |
VehiclePermissionStatus | Enum | 車輛權(quán)限文件下載狀態(tài):
|
車輛權(quán)限通過JSON文件下發(fā)、上報。JSON文件中字段定義如下:
參數(shù) | 類型 | 描述 | 是否必須 |
total | Integer | 文件包含的記錄數(shù)量 | 是 |
permList | List | 車輛權(quán)限數(shù)組 | 是 |
-type | Integer | 操作類型:1-增加(或覆蓋),2-刪除 | 是-下發(fā)權(quán)限時 否-返回權(quán)限時 |
-plateNumber | String | 車牌號 | 是 |
-effectiveDate | String | 生效時間(UTC)單位精確到毫秒 | 是-下發(fā)、返回權(quán)限 否-黑白名單 |
-expiryDate | String | 終止時間(UTC)單位精確到毫秒 | 是-下發(fā)、返回權(quán)限 否-黑白名單 |
-permissionType | Integer | 權(quán)限類型:1-普通,2-白名單,3-黑名單 | 是 |
下發(fā)車輛權(quán)限文件示例:
{
"total": 100,
"permList": [
{
"type": 1,
"plateNumber": "京N1***45",
"effectiveDate": "時間戳",
"expiryDate": "時間戳",
"permissionType": 1
},
{
"type": 2,
"plateNumber": "京N***67",
"effectiveDate": "",
"expiryDate": "",
"permissionType": 2
}
]
}
設(shè)備端下載并解析JSON權(quán)限文件,按照指定操作類型更新本地車輛權(quán)限數(shù)據(jù)庫。
4.2.2 獲取車輛權(quán)限
名稱 | GetVehiclePermission |
描述 | 獲取設(shè)備本地存儲的車輛權(quán)限,用于校驗云端與設(shè)備端權(quán)限是否一致 |
請求參數(shù):無
出參:
參數(shù) | 類型 | 描述 |
VehiclePermissionUrl | String | 設(shè)備端權(quán)限文件URL |
設(shè)備端按約定格式導(dǎo)出權(quán)限文件,使用OSS STS Token將文件上傳到指定位置,并返回文件URL。
4.2.3 查詢車輛權(quán)限下發(fā)狀態(tài)
名稱 | GetPermissionDownloadProgress |
描述 | 查詢車輛權(quán)限下發(fā)狀態(tài) |
請求參數(shù):無
出參:
參數(shù) | 類型 | 描述 |
DownloadStatus | Enum | 車輛權(quán)限下發(fā)狀態(tài):
|
4.2.4 下發(fā)OSS STS Token
名稱 | SendOssStsToken |
描述 | 云端下發(fā)OSS STS Token到設(shè)備,允許設(shè)備使用臨時訪問權(quán)限上傳文件 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
Credentials | String | 加密的STS Token證書,包含如下信息:
|
BucketName | String | 允許設(shè)備訪問的OSS Bucket Name |
ObjectName | String | 指定設(shè)備上傳文件的路徑 |
EndPoint | String | 允許設(shè)備訪問的OSS接入地址 |
出參:
參數(shù) | 類型 | 描述 |
Status | Enum | STS Token下發(fā)狀態(tài):
|
設(shè)備端通過解密STS Token證書,獲取上傳文件所需的權(quán)限。當(dāng)證書過期后,設(shè)備端上報OSS STS Token請求事件,云端重新下發(fā)有效的STS Token證書。
4.2.5 下發(fā)LED顯示數(shù)據(jù)
根據(jù)設(shè)備屬性LedNoticeMode定義的模式,下發(fā)屏幕提示數(shù)據(jù)。以分離模式下發(fā)需要實現(xiàn)以下服務(wù):
NoticeBroadcast:下發(fā)提示語音
NoticeDisplay:下發(fā)提示顯示
DefaultDisplay:下發(fā)默認(rèn)顯示
以混合模式下發(fā)需要實現(xiàn)以下服務(wù):
AddLedData:提示語音、提示顯示同時下發(fā)
1)下發(fā)提示語音
名稱 | NoticeBroadcast |
描述 | 下發(fā)提示語音信息 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
VoiceContent | String | 語音播報內(nèi)容,最大長度不超過2048 |
PlaySpeed | Integer | 語音播報速度,取值范圍:1 - 10,步長:1 |
返回參數(shù):無
2)下發(fā)提示顯示
名稱 | NoticeDisplay |
描述 | 下發(fā)提示顯示信息 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
DisplayContent | String | 顯示內(nèi)容,最大長度不超過2048 |
RowNumber | Integer | 屏幕行號,取值范圍:1 - 100 |
MovingSpeed | Integer | 文字移動速度,取值范圍:1 - 10,步長:1 |
DisplayTime | Integer | 顯示時長,取值范圍1-3600,單位:秒 |
MovingType | Enum | 文字移動方式:0:禁止 (默認(rèn))1:從右到左2:從左到右3:從下到上4:從上到下 |
返回參數(shù):無
3)下發(fā)默認(rèn)顯示
名稱 | DefaultDisplay |
描述 | 下發(fā)默認(rèn)顯示信息 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
DisplayContent | String | 顯示內(nèi)容,最大長度不超過2048 |
RowNumber | Integer | 屏幕行號,取值范圍:1 - 100 |
DefaultSituation | Enum | 默認(rèn)顯示場景:0:空閑1:普通權(quán)限車輛、白名單車輛過車2:黑名單車輛過車3:臨時車量過車4:無牌車輛過車 |
返回參數(shù):無
4)混合下發(fā)LED提示數(shù)據(jù)
名稱 | AddLedData |
描述 | 下發(fā)LED顯示數(shù)據(jù),控制LED在不同場景下的顯示與播報內(nèi)容 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
LedData | JSON | 以JSON描述的LED顯示內(nèi)容,最大長度不超過2048 |
出參:
參數(shù) | 類型 | 描述 |
Result | Enum | LED內(nèi)容解析狀態(tài):
|
云端通過JSON字符串下發(fā)LED顯示數(shù)據(jù),JSON字符串內(nèi)容定義如下:
屬性名 | 類型 | 描述 |
Type | Integer | 下發(fā)內(nèi)容的類型:
|
Situation | Integer | 固定場景(Type=0)下的場景類型:
|
ShowTime | Integer | 內(nèi)容顯示時長,單位為秒 |
AudioContextInfo | String | 自定義語音播報內(nèi)容 |
ScreenLineNum | Integer | 屏幕行數(shù) |
ContextList | JSONArray | 屏幕內(nèi)容數(shù)組,每個元素代表一行 |
-RunType | Integer | 文字滾動方式:
|
-ColorType | Integer | 文字顏色:
|
-CustomContext | String | 自定義內(nèi)容,長度1-128。內(nèi)容支持以下通配符:
|
-Audio | Integer | 是否進(jìn)行語音播報:
|
以支持四行文字,紅、綠兩種顏色的LED顯示器為例,下發(fā)“固定場景-空閑”時顯示的內(nèi)容:
{
"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 下發(fā)二維碼
名稱 | QrCodeDisplay |
描述 | 下發(fā)二維碼信息 |
入?yún)ⅲ?/p>
參數(shù) | 類型 | 描述 |
QrCode | String | 二維碼信息,最大長度不超過2048 |
返回參數(shù):無
4.2.7 手動觸發(fā)車牌識別
名稱 | TriggerRecognition |
描述 | 觸發(fā)設(shè)備上報智能告警事件 |
請求參數(shù):無,或者返回參數(shù):無
設(shè)備端抓拍車輛圖片,并通過智能告警事件上報圖片和相關(guān)信息。
4.3 事件
4.3.1 智能告警事件
名稱 | IntelligentAlarm |
描述 | 上報智能告警事件,包含車輛圖片和車牌識別結(jié)果等信息 |
與其他事件不同,設(shè)備端需要調(diào)用LV SDK提供的“
lv_post_intelligent_alarm”接口上報智能告警事件,相關(guān)參數(shù)和接口定義以LV SDK為準(zhǔn):
/* 智能事件參數(shù)集 */
typedef struct {
lv_intelligent_event_type_e type; //智能事件類型,車輛識別為10005
lv_media_format format; //智能事件的媒體數(shù)據(jù)類型,圖片類型為0
struct {
char *p;
uint32_t len;
} media; //智能事件的媒體數(shù)據(jù),不大于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);
參數(shù)說明:
參數(shù) | 類型 | 描述 |
type | Enum | 告警類型,固定值10005(車輛識別) |
format | Enum | 媒體數(shù)據(jù)類型,固定值0(JPEG格式圖片) |
media | Struct | 媒體數(shù)據(jù),不大于1MB |
addition_string | Struct | 告警內(nèi)容字段定義參見2 車輛通行記錄。 以下字段不需要上報:
|
4.3.2 OSS STS Token請求事件
名稱 | OssStsTokenRequest |
描述 | 上報OSS STS Token請求事件,請求云端下發(fā)OSS STS Token |
上報參數(shù):
參數(shù) | 類型 | 描述 |
RequestType | Enum | 請求上傳的文件類型:
|
4.3.3 異常抬桿事件
名稱 | AbnormalOpenGate |
描述 | 當(dāng)閘機非自動抬桿時,上報異常抬桿事件 |
上報參數(shù):
參數(shù) | 類型 | 描述 |
OpenType | Enum | 抬桿類型:0 遙控器控制抬桿1 設(shè)備自身按鍵抬桿99 其他方式 |
ImagePath | String | 抓拍圖片地址,數(shù)據(jù)長度2048 |
5 通過OSS STS Token上傳文件
設(shè)備端集成OSS SDK參見:安裝
設(shè)備端使用簽名URL上傳文件示例參考:授權(quán)訪問