基于開放API實作IoT平台裝置動态注冊方案
0.背景(裝置無需燒錄IoT三元組)
IoT場景需要每個裝置有唯一身份辨別,
- 如果裝置産線不具備針對裝置燒錄三元組能力。
- 已出貨裝置從自建平台,或三方平台(極光IoT,aws,華為雲IoT,百度天工)遷移到阿裡雲IoT物聯網平台
運作時動态注冊方案允許裝置固件可以無差别燒錄,在裝置售賣給消費者手上後,第一次使用時動态注冊三元組,然後再與IoT平台建立網絡連接配接。
步驟
1.裝置端固件更新
- 固件燒錄如下三元組擷取邏輯
涉及到系統互動如下
1. 應用伺服器API設計
企業業務伺服器提供IotDeviceRegister 接口
入參:
字段 | 描述 |
---|---|
deviceId | 由裝置唯一辨別根據規則生成的字元串。比如mac,序列号sn等 |
傳回資料:
productKey | 産品Id |
deviceName | 裝置name |
deviceSecret | 裝置秘鑰 |
endpointURL | 接入點域名 |
業務邏輯:
- 根據deviceId查詢OTS表,如果查不到裝置,傳回裝置非法
- 如果有裝置,有三元組,直接傳回三元組
- 如果有裝置,無三元組,去IoT動态注冊裝置,存儲三元組,并傳回三元組和域名
2. 表格存儲OTS庫設計參考
字段列 | 備注 | |
---|---|---|
由mac位址根據規則生成的字元串 | 主鍵 | |
registerTime | 裝置注冊時間 | |
activateTime | 裝置激活時間 | |
三元組productKey(裝置所屬産品) | ||
三元組deviceName | ||
三元組deviceSecret | ||
. |
3. IoT裝置動态注冊POP API
RegisterDevice API文檔
https://help.aliyun.com/document_detail/69470.html請求參數
名稱 | 類型 | 是否必需 | |
---|---|---|---|
Action | String | 是 | 要執行的操作,取值:RegisterDevice。 |
ProductKey | 指定要為其注冊裝置的産品的Key。 | ||
DeviceName | 否 | 為要注冊的裝置命名。裝置名稱應包含4-32個字元 |
傳回參數
RequestId | 阿裡雲為該請求生成的唯一辨別符。 | |
Success | Boolean | 是否調用成功。ture表示調用成功,false表示調用失敗。 |
ErrorMessage | 調用失敗時,傳回的出錯資訊。 | |
Data | DeviceInfo | 調用成功時,傳回注冊的裝置資訊。詳情參見 。 |
DeviceInfo 名稱 | ||
---|---|---|
裝置隸屬的産品Key。 | ||
裝置名稱。 | ||
DeviceSecret | 裝置密鑰。 | |
IotId | IoT平台為該裝置頒發的裝置ID,作為該裝置的唯一辨別符。 |
{
"RequestId":"57b144cf-09fc-4916-a272-a62902d5b207",
"Success": true,
"Data": {
"DeviceName": "CqXL5h5ysRTA4NxjABjj",
"ProductKey": "a1ysRTA4N0",
"DeviceSecret": "tXHf4ezGEHcwdyMwoCDHGBmk9a"
}
}
這樣我們裝置激活時,先通路企業伺服器業務API,擷取IoT平台的三元組身份後,發起MQTT的長連接配接建立,最終實作裝置上雲的目的。