全部課程
發(fā)布時間: 2018-03-31 01:42:26
?http://developer.huawei.com/ict/forum/forum.php?mod=viewthread&tid=25749&highlight=
開發(fā)者portal旨在幫助應(yīng)用開發(fā)者和設(shè)備開發(fā)者快速進行線上開發(fā)、調(diào)試工作。 無碼化編解碼插件開發(fā)、一鍵式插件部署、南向設(shè)備模擬器,您可以通過簡便的操作就來體驗整個NB-IoT全流程。 利用開發(fā)者設(shè)備的profile和demo【無 碼化】快速體驗開發(fā)者portal詳見帖子:http://developer.huawei.com/ict/forum/forum.php?mod=viewthread&tid=25753&page=1&extra=#pid106399 準(zhǔn)備資源 平臺資源 申請開發(fā)者portal資源的方式: 提交MAR合作電子流,通過審批后,會下發(fā)開發(fā)者portal資源。提交MAR合作電子流請參考:http://developer.huawei.com/ilink/esdk/download/HW_484292 資料參考 在開發(fā)Profile和編解碼插件之前,建議您先了解下Profile文檔和編寫編解碼插件的使用過程。 下載并查看如下的開發(fā)文檔。 Profile開發(fā)指南:登錄OceanConnect資源中心,下載“通用文檔”下面的“生態(tài)集成開發(fā)集成介紹”文檔。 編解碼開發(fā)與升級指南:登錄OceanConnect資源中心,下載“開發(fā)指南”下面的“公共事業(yè)集成指導(dǎo)”,查看文中的“編解碼庫開發(fā)與升級指南”。 開發(fā)Profile: ? 設(shè)備的Profile文件是用來描述設(shè)備類型和設(shè)備服務(wù)能力的文件。定義了同一類設(shè)備具備的服務(wù)能力,屬性,命令等。 Step 1 登錄開發(fā)者Portal,單擊“Profile開發(fā)>產(chǎn)品”,單擊頁面右上角的“自定義產(chǎn)品”,轉(zhuǎn)至“產(chǎn)品模板”頁面。 您可以使用模板定義您的產(chǎn)品,單擊產(chǎn)品模板右上角的“立即使用”,這里的參數(shù)需要根據(jù)您的設(shè)備進行定義。 您也可單擊右上角的“創(chuàng)建全新產(chǎn)品”,直接定義您的產(chǎn)品,這里以創(chuàng)建全新產(chǎn)品為例。 Step 2 根據(jù)實際填寫“設(shè)備類型”、“設(shè)備型號”、“廠商ID”、“廠商名稱”等數(shù)據(jù)。單擊“確定”,添加產(chǎn)品完成。 設(shè)備類型(DeviceType):指示設(shè)備的類型。下拉選擇類型。這里以WaterMeter為例。 設(shè)備型號(Model):指示設(shè)備的型號。這里以NBIoTDevice為例。 廠商ID(ManufacturerId):指示設(shè)備的廠商Id。這里以HuaweiSZ為例。 廠商名稱(manufacturerName):指示設(shè)備的廠商名稱。這里以HuaweiSZ為例。 Step 3 在產(chǎn)品詳情頁面單擊“新建服務(wù)”,根據(jù)界面提示信息,增加基本信息,屬性或命令,單擊“保存”。 新增服務(wù)基本信息,服務(wù)的名稱采用駝峰的命名方式,這里以Battery為例。描述可選,有多個服務(wù)就新增多條服務(wù)。
新增屬性
屬性名(propertyName):指示屬性名稱。這里以batteryLevel為例。
屬性類型(dataType):指示數(shù)據(jù)類型。取值范圍:int、float、datetime、string、jsonObject、array。這里以int類型為例。
上報數(shù)據(jù)時,復(fù)雜類型數(shù)據(jù)格式如下:
DateTime:yyyyMMdd’T’HHmmss’Z’如:20151212T121212Z
jsonObject:自定義json結(jié)構(gòu)體,平臺不理解只透傳。
最?。╩in)/較大值(max):指示最小/較大值。僅當(dāng)dataType為int、float時生效,邏輯大于等于/小于等于。
步長(step):指示步長。暫不使用,可填0即可。
單位(unit):指示單位,英文,取值根據(jù)參數(shù)確定。如:溫度單位:“°C”;百分比單位:“%”。
長度(maxLength):指示字符串長度。僅當(dāng)dataType為string、datetime、jsonObject、array時生效。
枚舉值(enumList):如煙感屬性activityStatus可有如下取值[ "STANDBY", "RECORDING", "LIVING" ]。
訪問模式(method):指示訪問模式。R:可讀;W:可寫;E可訂閱。取值范圍:R、RW、RE、RWE、null。
本例按照如上方法,創(chuàng)建三個屬性,分別為batteryLevel,batteryThreshold和batteryStatus。
新增命令
命令名稱:指示設(shè)備可以執(zhí)行的命令。如門磁的Lock命令、攝像頭的VIDEO_RECORD命令。這里以SET_DIVICE_LEVEL為例。
命令名與參數(shù) 共同構(gòu)成一個完整的命令,在頁面上單擊“新增字段”。
?
各字段的說明和屬性中的字段類似,這里不再贅述。各字段更詳細(xì)的命名規(guī)則請參考“資料參考”中的Profile開發(fā)指南。
Step 4 【可選】單擊產(chǎn)品詳情右上角的“導(dǎo)出該產(chǎn)品Profile”,可以直接生成Profile文件并把文件導(dǎo)出至本地某個位置。?
說明:若您自己線下編寫的profile文件,則單擊“Profile開發(fā)> 導(dǎo)入Profile”,可把已寫好的Profile文檔導(dǎo)入平臺,如下圖所示。
?
開發(fā)編解碼插件
開發(fā)完P(guān)rofile文件后,可以在界面上通過圖形化的方式完成設(shè)備與平臺之間的消息映射。在平臺中預(yù)集成了編解碼插件的模板,可以根據(jù)設(shè)備類型和接入?yún)f(xié)議在插件模板中選擇模板修改開發(fā)編解碼插件。
登錄開發(fā)者Portal,單擊“插件開發(fā)”,單擊右上角的“添加插件”,轉(zhuǎn)到“插件模板”頁簽,單擊“查看”,您可以查看各個模板的內(nèi)容。
若您的業(yè)務(wù)和模板中類似,可使用模板再根據(jù)實際來修改。
若您不需要使用模板,則可自己新建插件。下面以新建插件來說明如何開發(fā)編解碼插件。使用模板的類似修改即可。
Step 1 單擊頁面右上角的“新建插件”,進入設(shè)計插件頁面。
說明:您可以單擊右上角的“新手指導(dǎo)”,查看插件的實現(xiàn)原理。
Step 2 新增消息。單擊“新增消息”,輸入消息的名稱(這里以Battery為例)、描述和消息類型(包括數(shù)據(jù)上報、命令下發(fā)和命令下發(fā)響應(yīng))。
Step 3 添加字段。單擊“添加字段”,添加上報數(shù)據(jù)的字段。名字:建議和profile文件中設(shè)置的保持一致。便于和profile文件中的字段進行對應(yīng)。
數(shù)據(jù)類型:包括int8u,int16u,int24u,int32u,string,variablelength string,array,variant。與profile中的相對應(yīng)。
長度:指示該字段占多少字節(jié)長度。若長度為1,則在上報碼流時,這個字段占一位,即一個16進制的數(shù)值。本例均以長度為1為例。
默認(rèn)值:該字段在碼流中的參考值。
偏移值:當(dāng)前字段到本條消息碼流起始位置的字節(jié)數(shù),比如設(shè)置為2-3,則這個字段在碼流中的第2-3位。
說明:每個消息必須有消息地址域。地址域為標(biāo)識唯一此消息唯一ID的字段,即唯一標(biāo)識不同的消息。地址域的名稱必須為messageId,且只有地址域的名稱可以為messageId。
我們要模擬數(shù)據(jù)上報,命令下發(fā)的完整過程,需要創(chuàng)建“數(shù)據(jù)上報”、“命令下發(fā)”和“命令下發(fā)響應(yīng)”三種類型的消息。
?Step 4 導(dǎo)入Profile文件。在頁面右側(cè)“設(shè)備Profile”區(qū)域,單擊“更多操作”下的“選擇Profile”,選擇上述第二章節(jié)中開發(fā)的Profile。
?
說明:若您需要修改Profile,則可單擊“更多操作”下的“更換Profile”。
Step 5 建立profile屬性、命令與消息的映射關(guān)系。根據(jù)自己定義的profile,來設(shè)計插件中的消息。通過拖拉服務(wù)中的屬性或命令,與消息中的字段進行關(guān)聯(lián)。屬性對應(yīng)于數(shù)據(jù)上報中的字段列表。有多個服務(wù)就新增多個消息。為便于理解,字段名稱建議和屬性名設(shè)置為相同。
注意,命令下發(fā)的消息名稱必須和Profile中的相同。?
Step 6 完成映射關(guān)系后,單擊頁面右上角的“部署”,部署成功后,系統(tǒng)會將您的設(shè)計結(jié)果自動生成編解碼插件包。
?
4注冊設(shè)備
開發(fā)部署成功后,您可以將您的設(shè)備接入到IoT平臺。
Step 1 登錄開發(fā)者Portal,單擊“我的設(shè)備”,進入設(shè)備列表頁面。單擊右上角的“注冊設(shè)備”,轉(zhuǎn)向注冊設(shè)備頁面,選擇您需要注冊設(shè)備的Profile。
?Step 2 單擊Profile,進入Profile詳情頁面,在頁面底部填寫設(shè)備名稱和設(shè)備標(biāo)識碼,這里的設(shè)備名稱和設(shè)備標(biāo)識碼均以HuaweiSZ為例,單擊“注冊”,完成設(shè)備的注冊。
其中,在真實場景中,設(shè)備標(biāo)識碼為IMEI號。如果設(shè)備是在線狀態(tài),表示設(shè)備已經(jīng)成功的接入到平臺。
?
5添加非NB設(shè)備模擬器(可選步驟)
您無需真實設(shè)備,通過模擬設(shè)備的Json消息來完成與北向應(yīng)用的調(diào)試。若使用碼流來模擬,則可跳過該步驟。
Step 1 登錄開發(fā)者Portal,單擊“模擬器 > 非NB設(shè)備模擬器”,進入非NB設(shè)備模擬器列表頁面。單擊右上角的“設(shè)備模擬器”,彈出“創(chuàng)建設(shè)備模擬器”的頁面,如下圖所示。?
Step2 選擇您需要模擬的設(shè)備型號(即自己創(chuàng)建的設(shè)備),進入頁面后,輸入和“注冊設(shè)備”章節(jié)注冊的相同驗證碼(VerificateCode),這里即為HuaweiSZ。
Step 3 單擊“創(chuàng)建”,完成創(chuàng)建您的設(shè)備模擬器。單擊您創(chuàng)建的設(shè)備模擬器,進入詳情頁面,可以設(shè)置設(shè)備的狀態(tài)為在線或離線,如下圖所示。
6
上報數(shù)據(jù)
非NB設(shè)備模擬器
Step
1 單擊“模擬器 > 非NB設(shè)備模擬器”,進入非NB設(shè)備模擬器列表頁面。
Step 2 單擊自己創(chuàng)建的設(shè)備模擬器,進入詳情頁面,單擊需要上報數(shù)據(jù)的服務(wù),輸入各個字段的值(這里以batteryLevel取值1,batteryThreshold取值3,batteryStatus取值2為例)。如下圖所示:
?
Step 3 選擇發(fā)送模式(這里以手動發(fā)送模式為例)后,單擊“發(fā)送”,則在頁面右側(cè)彈出發(fā)送數(shù)據(jù)的詳細(xì)消息。如下圖所示。
?
Step 4 單擊“我的設(shè)備”,進入自己的設(shè)備詳情頁面,單擊“歷史數(shù)據(jù)”頁簽,可以看到上報的數(shù)據(jù)。此時,上報數(shù)據(jù)即成功。如下圖所示。
?
NB設(shè)備模擬器(碼流)
Step 1 單擊“模擬器 > NB設(shè)備模擬器”,進入NB設(shè)備模擬器列表頁面,單擊“綁定設(shè)備”,在彈出框中輸入第四章節(jié)注冊設(shè)備時的驗證碼,單擊“確定”即綁定設(shè)備。如下圖所:
Step 2 進入NB設(shè)備模擬器測試頁面,輸入十六進制碼流00010203,單擊“發(fā)送”,則在頁面右側(cè)彈出發(fā)送成功的消息。如下圖所示。
本例中,一共上報4個字節(jié),分別為“00”、“01”、“02”、“03”。其中,第一個字節(jié)“00”表示messageId,第二個字節(jié)“01”表示上報數(shù)據(jù)對應(yīng)的“batteryLevel”字段,第三個字節(jié)“02”表示batteryThreshold字段,第四個字節(jié)“03”表示batteryStatus字段。這些內(nèi)容與profile文件和編解碼插件是一一對應(yīng)的。?
??
7 命令下發(fā)
Step 1 單擊“我的設(shè)備”,進入設(shè)備列表頁面。單擊設(shè)備右側(cè)的命令下發(fā)圖標(biāo)
Step2 單擊“發(fā)送”,若發(fā)送成功,則會在頁面右側(cè)顯示下發(fā)數(shù)據(jù)的詳細(xì)消息。此時單擊設(shè)備,查看歷史命令,消息狀態(tài)為“已送達”狀態(tài)。如下圖所示。
8
消息訂閱
北向應(yīng)用除了通過RESTful類型的數(shù)據(jù)查詢接口,獲取設(shè)備的當(dāng)前數(shù)據(jù)和歷史數(shù)據(jù)外,還可以通過消息訂閱的方式來獲取實時數(shù)據(jù)。
當(dāng)南向設(shè)備上報數(shù)據(jù)到達平臺時,平臺將檢索是否有訂閱存在,如果存在,則向?qū)?yīng)的callbackUrl推送POST消息。
消息訂閱除了可以訂閱消息外,還可以訂閱設(shè)備綁定消息、設(shè)備刪除消息、規(guī)則時間、命令響應(yīng)等。更詳細(xì)的可以參見API接口參考。
下面詳細(xì)介紹整個訂閱流程,這里以獲取設(shè)備數(shù)據(jù)為例進行介紹。
Step1
首先要搭建服務(wù)器(這里以tomcat為例)。
配置https服務(wù)器具體步驟可參考:http://developer.huawei.com/ict/forum/thread-25457.html
Step2
寫一個簡單的RESTful接口webapp,部署到服務(wù)器,將服務(wù)器映射到公網(wǎng),調(diào)試Post接口能調(diào)通。
tomcat+restful接收https推送消息和校驗證書可參考如下帖子中:http://developer.huawei.com/ict/forum/forum.php?mod=viewthread&tid=47157
Step3
把Step1中制作好的CA證書(按照Step1中制作的證書為tomcat.pem)上傳到IoT平臺。
登錄開發(fā)者Portal平臺,單擊“對接信息”,單擊“上傳”,選擇制作好的CA證書(這里為tomcat.pem),上傳即可。
Step4
調(diào)用訂閱接口,訂閱接口傳入的callbackURL即部署的服務(wù)器地址(這里callbackurl:https://ip:port/RESTfulWS/rest/UserInfoService/subscriber1),平臺會把消息推送到服務(wù)器上。
a. 下載北向LiteDemo并導(dǎo)入到Eclipse中:http://developer.huawei.com/ict/cn/rescenter/CMDA_FIELD_OCEAN_CONNECT?developlan=Other
b.
修改全局參數(shù)。在Constant.java中設(shè)置平臺的基本信息和callbackURL。具體修改如下:
BASE_URL:設(shè)置為OceanConnect的平臺地址,如https://218.4.33.71:8743。
APPID和SECRET:設(shè)置為應(yīng)用的appID和密鑰。
CALLBACK_BASE_URL:部署的服務(wù)器IP和端口號,如https://172.31.26.81:8743。
DEVICE_APPID_CALLBACK_URL等地址為完整的callbackURL,這里為CALLBACK_BASE_URL+"RESTfulWS/rest/UserInfoService/subscriber1"。
訂閱的消息類型有deviceAdded、deviceInfoChanged、deviceDataChanged等類型??筛鶕?jù)需要選擇類型,這里以訂閱設(shè)備數(shù)據(jù)變化(notifyType為deviceDataChanged)為例。
?c. 調(diào)用訂閱接口。右鍵單擊SubscribeNotification.java文件,選擇“Run As >
Java Application”。若成功,則在控制臺Console中會返回201,如下圖所示:
Step5
觸發(fā)推送操作,此時我們上報數(shù)據(jù),則在服務(wù)器日志中可以查看到推送的消息。
進入服務(wù)器log目錄,輸入如下命令:
tail
-f catalina.out
則可以看到服務(wù)器中收到了推送消息,如下圖所示:
,彈出命令下發(fā)界面,根據(jù)界面信息,選擇命令,輸入命令參數(shù)的值。如下圖所示。