物聯網NB-IoT之電信物聯網開放平臺對接流程淺析

電信物聯網開放平臺對接流程如下圖所示:

1、創建 APP 應用

登錄中國電信物聯網開放平臺對接測試環境SP Portal(https://180.101.147.135:8843),初次登錄需要修改初始密碼。

選擇【應用管理】->【應用】點擊右上角“+創建應用”。

典型的 NB-IoT 應用的參數設置可參考如下設置:

所屬行業:

公用事業(NB-IoT)

關聯API包:

基礎API包和公用事業(NB-IoT) API包

平臺能力:

規則引擎

數據存儲時間:

當超過了數據存儲時間以後,應用將不能再獲取到已上報的數據。

短信服務器:

使用戶可以通過短信服務器實現與工程師的緊密聯絡。服務器可以選擇平臺已經支持的服務器之一,也可以選擇第三方服務器。

郵件服務器:

使用戶可以通過郵件服務器實現與工程師的緊密聯絡。服務器可以選擇平臺已經支持的服務器之一,也可以選擇第三方服務器。

CA證書:

第三方應用通過HTTPS對接中國電信物聯網開放平臺時服務器下發的證書,用於身份識別和電子信息加密,實現雙向認證。證書文件限制爲不超過1M的PEM格式文件。當第三方應用通過HTTP對接中國電信物聯網開放平臺時,不需要上傳CA證書。

2、設置 NB-IoT 參數

點擊已經創建好的應用,並對NB-IoT參數進行設置。

目前平臺支持設置如下三種模式:

PSM模式:

power saving mode,省電模式。對下行業務時延無要求,對於下行業務消息,可等待設備發送上行數據進入連接態後再發送,可進一步節省終端功耗。如智能水錶。

DRX模式:

discontinuous reception,不連續接收模式。對下行業務時延要求高,可認爲設備一直在線,消息能夠立即下發。如路燈。

eDRX模式:

Extended idle mode DRX,擴展不連續接收模式。DRX的擴展模式,對下行業務時延有較高要求,可根據系統配置立即下發消息或者緩存消息。如智能穿戴設備。

當省電模式設置爲PSM模式時,ACTIVE TIMER可以不設置,無影響;當省電模式設置爲eDRX模式時,eDRX週期的設置需要與網絡側的一致,請聯繫中國電信物聯網開放平臺支持人員獲取參數配置數據。

這裏參數的設置要與網絡側保持一致,參數的設置只是配置到中國電信物聯網開放平臺中,不會配置到網絡或者設備。

3、定義設備模型

Profile 定義設備模型有兩種方式:

方式一:從 Portal 在線製作 Profile 文件

方式二:參考《中國電信物聯網開放平臺_設備能力描述文件profile開發指南》離線製作 Profile

設備模型是指中國電信物聯網開放平臺支持註冊新的設備模型,並支持對設備模型進行管理。設備模型包括:產品、設備模板和服務模板。

產品由設備模板、製造廠商、型號、協議等構成的具體實例,SP Portal 支持用戶根據需求自定義產品(移動oneNET遵循一套標準,相比電信平臺更簡單但靈活相稍差)。設備模板通過設備服務定義設備基本特性和能力。設備模板由多個服務模板組成。SP Portal 支持用戶使用預置設備模板,也支持用戶根據需求自定義設備模板。服務模板定義設備能力,包括屬性、命令、事件等。SP Portal 支持用戶使用預置服務模板,也支持用戶根據需求自定義服務模板。

3.1、定義產品設備模型

設備模型定義了一個類型的設備具備哪些服務能力,每個服務有哪些屬性(即上報的數據有哪些字段),有哪些命令以及命令的參數。每個廠家在接入 NB-IoT 之前必須先定義自己的產品的設備模型。

下面通過一個例子介紹一下如何定義產品設備模型:

例如:

某產品設備的製造信息如下:

廠商ID:ChinaTelecom
廠商名字:ChinaTelecom
設備類型:SmartDevice
設備型號:NBIoTDevice
該設備具有三個服務能力:

分別爲亮度(Brightness)、溫度(Temperature)、電力(Electricity)。

其中,亮度(Brightness)服務擁有一個亮度屬性及設置該屬性值的命令方法;

溫度(Temperature)服務具有一個溫度(temperature)屬性及一個設置溫度的方法命令;

電力(Electricity)具有四個屬性,分別爲:電壓(votage),電力當前值(current),頻率(frequency)及功率因數(powerfactor)。

下面通過在 SP portal 設置該設備能力到平臺:

3.2、新增服務模板

使用瀏覽器登錄SP Portal;單擊左側,打開“設備管理”頁面;單擊“模型”下拉選項,單擊“服務模板”,打開“服務模板”頁面;單擊界面右上角“+新增服務模板按鈕”。例如,增加溫度(Temperature)服務。

3.3、新增服務屬性

以溫度服務爲例,該服務具有一個屬性即溫度(temperature),現新增該屬性。點擊剛新增的溫度服務。

單擊“屬性”,單擊“新增屬性”,彈出“新增屬性”頁面。根據實際情況設置下列參數。

名稱:屬性名稱,且系統唯一。
屬性類型:包括int、long、decimal、string、DateTime、jsonObject。
最小、最大、步長、單位:當屬性類型爲int、long和decimal時,纔會出現。
長度:當選擇屬性類型爲string、jsonObject或DateTime時,纔會出現。
訪問模式:屬性能夠訪問的模式。
是否必選:屬性是否必選。

3.4、新增服務命令

以溫度服務爲例,該服務具有一個命令即一個設置溫度的命令(SET_TEMPERATURE)現新增該服務命令。點擊剛剛新增的溫度服務,單擊“命令”,單擊“新增命令”,彈出“新增命令”頁面。

3.5、新增設備模板

使用瀏覽器登陸SP Portal;單擊左側,打開“設備管理”頁面;單擊“模型”下拉選項,選擇“關於模型”,打開“關於模型”頁面;單擊“自定義設備模板”,打開“設備模板”頁面。單擊右上角“新增設備模板”,彈出“新增設備模板”頁面。根據實際情況設置下列參數:

設備模板:設備模板名稱,且系統唯一,這裏填寫SmartDevice。
描述(可選):設備模板描述內容。

3.6、新增自定義產品

使用瀏覽器登錄SP Portal;單擊左側,打開“設備管理”頁面;單擊“模型”下拉選項,選擇“關於模型”,打開“關於模型”頁面;單擊“自定義產品”,打開“產品”頁面。單擊右上角“新增設備”按鈕,彈出“添加設備產品”頁面。根據實際情況設置下列參數:

設備類型:產品所屬的設備類型。作爲例子,這裏填寫3.6節設備模板名稱。
型號:產品所屬的型號。
廠商ID:產品所屬的廠商ID。
廠商:產品所屬的廠商名稱。
協議:產品所屬的協議類型。NB-IoT目前僅有CoAP和LWM2M兩種協議,請正確選擇接入協議。
單擊“點擊上傳文件”上傳產品圖像。
(可選)描述:產品描述內容。

單擊,完成自定義設備產品創建。

創建完設備後,設備產品模型中的服務項還是空的,需要將溫度(Temperature)、電力(Electricity)兩個已創建好的服務添加。

另外還需要添加預置服務亮度(Brightness)。

單擊已創建好的設備產品, 單擊服務列表中的“添加服務”,打開“添加服務類型”頁面,選定需要加入的服務能力。單擊即可完成。

向產品中添加服務:

3.7、編寫 profile 文件

針對方式二使用《中國電信物聯網開放平臺_設備能力描述文件profile開發指南》離線製作 Profile 文件後再導入到中國電信物聯網開放平臺的場景。

模型 profile 文件包的組成:

profile 文件夾中,包含devicetype-capability、devicetype-display兩個JSON文件;

其中devicetype-capability描述了設備的manufacturerId(製造商ID)、manufacturerName(製造商名稱)、model(設備型號)、protocolType(協議類型)、deviceType(設備類型)、serviceTypeCapabilities(服務能力)。

service 文件夾主要描述profile文件夾的devicetype-capability文件中serviceTypeCapabilities字段提到的各項服務能力,並對每一項能力進行描述:

3.8、上傳 profile 文件

上傳 profile 文件功能菜單的路徑爲:

設備管理>模型>導入模型

4、開發編解碼插件並安裝

4.1、開發編解碼插件

設備模型是設備的抽象模型,把設備的功能抽象爲服務,對編解碼庫插件而言,其定義了 decode 接口的輸出,encode 接口的輸入格式。編解碼插件開發可參考《中國電信物聯網開放平臺V100R001C30編解碼庫開發與升級指南》文檔。

4.1.1、編解碼插件質檢

編解碼插件的質檢是檢測編解碼是否能夠正常使用的關鍵步驟,請參照編解碼插件檢查工具說明,來進行操作。

工具下載地址:http://www.tianyiiot.com/attchment/174/中國電信物聯網開放平臺編解碼插件檢測工具.zip

4.2、對插件包進行離線簽名

當編解碼插件開發完後,在安裝到平臺之前,需要先對插件包進行簽名。此時需要下載離線簽名工具並進行簽名操作。操作步驟如下:

單擊左側圖標,打開管理頁面。
單擊左側導航欄“工具”,在右側區域單擊“下載”,下載離線簽名工具。
在下載路徑找到壓縮包“signtool.zip”,右鍵菜單中選擇“Extract to signtool\”解壓縮至文件夾“signtool”。
進入signtool文件夾,運行“signtool.exe”。操作界面如下所示。

4.2、生成數字簽名公私鑰對

根據實際情況選擇簽名算法。
目前提供兩種簽名算法:
ECDSA_256K1+SHA256
RSA2048+SHA256
設置“私鑰加密口令”。
口令複雜度說明:
口令長度至少爲6個字符
口令必須包含如下至少兩種字符的組合:
至少一個小寫字母
至少一個大寫字母
至少一個數字
至少一個特殊字符:`~!@#$%^&*()-_=+|[{}];:’",<.>/?和空格
單擊“生成公私密鑰”,在彈出的窗口中選擇需要保存的目錄,單擊“確定”。
可在保存的目錄下查看生成的公私密鑰文件。
公鑰文件:public.pem
私鑰文件:private.pem
2 對軟件包進行數字簽名。
離線簽名工具只能對.zip格式的壓縮包進行數字簽名。
在“軟件包數字簽名”區域,單擊“導入私鑰文件”,選擇步驟5.3中生成的私鑰文件,單擊“打開”。
在彈出的對話框中,輸入步驟2中設置的口令,單擊“確定”。
在“需要數字簽名的軟件包”區域,選擇需要進行數字簽名的軟件包。單擊“打開”。
單擊“進行數字簽名”。
簽名成功後,在原軟件包所在目錄生成名爲“XXX_signed.XXX”的帶簽名的軟件包。
軟件包簽名驗證
在“軟件包簽名驗證”區域,單擊“導入公鑰文件”,選擇步驟5.3中生成的公鑰文件,單擊“打開”。
在“需要驗籤的軟件包”區域,選擇步驟6中生成的名爲“XXX_signed.XXX”的帶簽名的軟件包。單擊“打開”。
單擊“進行軟件包驗籤”。
驗證成功則彈出“驗證簽名成功!”提示框。
驗證失敗則彈出“驗籤異常!”提示框。
4.3、上傳公鑰及簽名後的插件包

編解碼插件化能夠動態的新增編解碼庫,這樣新增設備接入時,只需要把對應的編解碼庫動態導入到平臺,就能夠兼容新增的設備。

請將公鑰以及簽名後的插件包發送給中國電信物聯網開放平臺支持人員,由中國電信完成公鑰和簽名後的插件包的上傳配置。

5、設備接入平臺

5.1、登錄應用

應用訪問中國電信物聯網開放平臺時必須首先進行登陸,登陸成功後獲取訪問令牌(accessToken)。這一步消息中的appId和secret就是在“創建APP應用”步驟裏獲取的信息。

消息示例:

Method:POST
request:(非JSON格式)
https://server:port/iocm/app/sec/v1.1.0/login
Content-Type:application/x-www-form-urlencoded
Body:

appId=******&secret=******

response:
Status Code: 200 OK
Content-Type: application/json
Body:
{
“accessToken”: “",
“tokenType”: "
”,
“expiresIn”: “",
“refreshToken”: "
”,
“scope”: “*******”
}
5.2、訂閱

爲了能接受設備上報的數據,NA需要向中國電信物聯網開放平臺訂閱通知消息。

訂閱設備數據上報通知:

POST https://server:port/iocm/app/sub/v1.1.0/subscribe
Header:
app_key: ******
Authorization:Bearer ******
Content-Type:application/json
Body:
{
“notifyType”: “deviceDataChanged”,
“callbackurl”: “https://183.4.11.104:9999/”
}
5.3、註冊設備

5.3.1、有應用服務器設備註冊

所有設備必須先在北向進行註冊,才允許連接到平臺。

通過註冊設備,平臺會爲每個設備分配一個唯一的標識deviceId,後續應用操作這個設備時都通過deviceId來指定設備。另外,還返回psk參數(如果用戶未指定psk參數,平臺會隨機分配一個參數),南向設備綁定時,如果設備與平臺之間走DTLS加密通道,則須用到該參數,請保存。在SP portal上也可以通過deviceId來找到設備。

Method:POST
request:
https://server:port/iocm/app/reg/v1.1.0/devices
Header:
app_key: "
Authorization:Bearer ******
Content-Type:application/json
Body:
{
“verifyCode”:“447769804451095”,
“nodeId”:“447769804451095”,
“psk”: “12345678”,
“timeout”:0
}
response:
Status Code: 201 CREATED
Content-Type: application/json
Body:
{
“deviceId”: "
",
“verifyCode”: "
******",
“psk”: “12345678”,
“timeout”: 0
}
5.3.2、無應用服務器設備註冊

無應用服務器情況下,廠商可以用設備模擬器來進行設備的模擬註冊。方便廠商進行聯調開發。

工具下載地址:http://www.tianyiiot.com/attchment/173/中國電信物聯網開放平臺北向API調試工具-_GUI_APPDemo-master.zip

IP:180.101.147.89,端口:8743

設備註冊工具登錄:

填寫設備Node ID等信息,並進行註冊,其中Node ID爲設備唯一編碼ID,Verify Code與Node ID相同;Time Out參數填寫,請根據設備傳輸情況填入(如果即時傳輸,請填“0”),設備註冊:

註冊成功後可以看到設備:

5.4、設置設備信息

這一步是爲了把設備的廠商、型號、設備類型等信息設置到平臺,平臺在處理過程中需要這些信息:

Method:PUT
request:
https://server:port/iocm/app/dm/v1.1.0/devices/{deviceId}
Header:
app_key: ******
Authorization:Bearer ******
Content-Type:application/json
Body:
{
“manufacturerId”: “",
" manufacturerName ": "
”,
“deviceType”: “",
“protocolType”: " CoAP",
“model”: "

}
response:
Status Code: 200 OK
5.5、設備接入

接入端口與協議

目前中國電信物聯網開放平臺支持加密與非加密兩種接入設備接入方式,其中加密業務數據交互端口是5684端口。5684端口走DTLS+CoAP協議通道接入,非加密端口爲5683,接入協議爲CoAP。

NB-IOT設備端使用加密端口接入時提供必要的數據憑證,並支持標準DTLS協議。

設備在登錄平臺前,需將設備對接平臺的端口設置爲5684(即走DTLS加密通道)。
建議將設備出廠前的PSK祕鑰預置到中國電信物聯網開放平臺中,PSK祕鑰的數據類型爲String型,長度範圍爲8-32位。調用5.3註冊設備接口,即可將設備PSK設置到平臺。
使用用非加密端口接入時,只需要使用原生的CoAP協議進行傳輸,同時將對接平臺設置爲5683即可。
註冊接口
無論是加密方式還是非加密方式,設備都只需使用標準OMA接口進行註冊,CoAP url裏帶的參數可能有: ep = {Endpoint Client Name}&lt={Lifetime}&sms={MSISDN}&lwm2m={version}&b={binding mode}&{ObjectLinks},爲兼容舊協議,除ep外其餘均爲可選。
5.6、設備上線

完成這一步時,設備已經可以接入到平臺。配置好網絡,開啓設備,觀察設備是否成功接入到平臺。

登陸SP Portal的設備管理頁面,查看設備列表,字段ID即爲在第三步裏註冊設備時生成的deviceId,status字段表示設備的在線狀態,如果狀態是在線(online)表示設備已經成功的接入到平臺,接着就可以接收設備的數據。

6、示例

6.1、註冊:微信公衆號搜索“天翼物聯產業聯盟”,關注後申請註冊,第二天就能獲得兩封郵件

6.1.1、【中國電信物聯網開放平臺(對接測試)】開戶密碼通知

6.1.2、 服務郵件:

    測試平臺地址
    開發者門戶地址   
    測試平臺應用對接地址(企業應用接入地址)
    測試平臺設備對接地址(終端設備接入地址)

6.2、進入下載專區下載全部資料

6.3、準備工作

6.3.1、安裝 jdk1.8

6.3.2、準備一個 HTTPS 服務器及相應證書(建議使用阿里的免費證書)

6.4、註冊應用: 登錄測試平臺,註冊一個應用,一定要選擇“基礎API包”“公用事業(NB-Iot)API包”

6.5、上傳證書: 登錄開發者平臺,選擇對接信息,點擊應用列表,上傳 HTTPS 的證書,格式爲 PEM

6.6、上傳 profile 文件:

可以通過在線編輯生成;

登錄開發者平臺->Profile開發->Profile導入: 選擇《 中國電信物聯網開放平臺profile樣例》中一個zip文件例子(WaterMeter_Huawei_NBIoTDevice.zip)

6.7、插件編寫及上傳:

6.7.1、導入《中國電信物聯網開放平臺設備編解碼插件源碼及樣例》中的源碼,打包jar,注意看源碼中的com.thrid.party.codec.demo這幾個文件,這是數據上傳下載的核心所在

6.7.2、登錄開發者平臺->插件管理->編解碼插件管理,上傳插件,直接用例程就好,調試通過了後面再根據業務修改。

6.8、設備管理

6.8.1、設備模板:名稱與選擇的 profile 文件一致 如你選擇的 WaterMeter_Huawei_NBIoTDevice.zip,解壓它,打開profile文件夾,打開裏面的json文件,找到"serviceId": “WaterMeterBasic”,服務名及id都填WaterMeterBasic

6.8.2、服務模板:內容和屬性與profile文件 一致,命令先定義一個"SET_DEVICE_LEVEL"(隨便選的一個下發命令,以後自己改),事件選擇"deviceDataChanged"(數據上傳需要)

6.9、使用 中國電信物聯網開放平臺北向API調試工具-_GUI_APPDemo-master

6.9.1、註冊設備:兩個下拉框,分別選擇
NB-IOT Device Manager
Register Direct Device

6.9.2、修改設備: Modify Device Info

6.9.3、設備上線: 《平臺接入流程描述》有指導手冊,在SSCOM中通過一系列AT指令操作

6.9.4、檢查激活狀態 Query Device Status 輸入 device id ,點擊按鈕"check status",返回 “evice Status: ONLINE.
”成功

6.10、數據上報

6.10.1、在平臺訂閱服務,可以使用 API調試工具-_GUI_APPDemo,兩個下拉框,分別選擇NB-IOT Subscribe Manager
Notify Type選擇 “deviceDataChanged” callback URL 填回調的htts地址

6.10.2、設備上報數據的前八位是AA720000,其它隨意,形式類似AA720000AAAAAAAAAAAAAAAAAAAAAAAAAA

6.11、命令下發

6.11.1、在平臺訂閱服務,可以使用 API調試工具-_GUI_APPDemo,Notify Type選擇 “commandRsp” callback URL 填回調的htts地址

6.11.2、下發命令的json

  {"expireTime":"0","callbackUrl":"https://回調地址","deviceId":"111-111-11-11","command":{"method":"SET_DEVICE_LEVEL","paras":{"value":"自定義"},"serviceId":"服務ID"}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章