摘要:華為雲物聯網平台承載着南北向資料互通的功能職責。
本文分享自華為雲社群《如何基于華為雲IoT物聯網平台進行産品開發》,作者: Super.雯 。
華為雲物聯網平台承載着南北向資料互通的功能職責。在華為雲物聯網平台基礎上實作端到端物聯網業務的過程中,開發者需要基于該平台進行二次開發。本文先跟大家一起聊一聊産品開發。
産品開發
在物聯網平台內建解決方案中,物聯網平台作為承上啟下的中間部分,向應用伺服器開放API接口,向各種協定的裝置提供API對接。為了提供更加豐富的裝置管理能力,物聯網平台需要了解接入裝置具備的能力以及裝置上報資料的消息格式,是以,使用者需要在控制台上完成産品模型和編解碼插件的開發。基于IoT平台去實作一個物聯網解決方案時,需完成的詳細操作如下表所示:

開通裝置接入服務後,使用裝置接入服務的完整流程主要分為産品開發、應用側開發、裝置側開發和日常管理。
産品開發:開發者在進行裝置接入前,基于控制台進行相應的開發工作,包括建立産品、建立裝置、線上開發産品模型、線上開發插件、線上調試、自助測試和釋出産品。
裝置側開發:裝置側可以通過內建SDK、模組或者原生協定接入物聯網平台。
應用側開發:通過API的形式對外開放物聯網平台豐富的裝置管理能力,應用開發人員基于API接口開發所需的行業應用,如智慧城市、智慧園區、智慧工業、車聯網等行業應用,滿足不同行業的需求
日常管理:真實裝置接入後,基于控制台或者API接口,進行日常的裝置管理。
産品模型介紹
産品模型又稱Profile,用于定義一款接入裝置所具備的屬性(如顔色、大小、采集的資料、可識别的指令或者裝置上報的事件等資訊),然後通過廠家、裝置類型和裝置型号,唯一辨別一款裝置,便于平台識别。産品模型可以在裝置接入控制台進行無碼化開發。
産品模型是用來描述一款裝置“是什麼”、“能做什麼”以及“如何控制該裝置”的檔案。開發者通過定義産品模型,在物聯網平台建構一款裝置的抽象模型,使平台了解該款裝置支援的服務、屬性、指令等資訊,如顔色、開關等。當定義完一款産品模型後,在進行注冊裝置時,就可以使用在控制台上定義的産品模型。
在華為雲物聯網平台中,産品模型是裝置接入的關鍵内容,裡面包含了這個裝置所提供的能力與服務,同時還包含了裝置上下行的資料格式。例如,在裝置上報資料到平台時,平台會根據上報資料的關鍵字進行産品模型比對,并将資料格式與比對上的産品模型檔案進行校驗,隻有比對成功的資料才會在平台上儲存。如果比對不成功,物聯網平台會将上報的資料作為非法資料進行抛棄。
産品資訊:描述一款裝置的基本資訊,包括廠商ID、廠商名稱、裝置類型、協定類型。例如:水表的廠商名稱為“HZYB”,廠商ID為“TestUtf8ManuId”,裝置類型為“WaterMeter”,協定類型為“CoAP”。
服務能力:描述裝置具備的業務能力。将裝置業務能力拆分成若幹個服務後,再定義每個服務具備的屬性、指令以及指令的參數。以水表為例,水表具有多種能力,如上報水流、告警、電量、連接配接等各種資料,并且能夠接受伺服器下發的各種指令。産品模型檔案在描述水表的能力時,可以将水表的能力劃分五個服務,每個服務都需要定義各自的上報屬性或指令。
産品模型案例:智能水表
華為雲物聯網平台提供了多種定義産品模型的方法,開發者可以根據自己需求,選擇對應的方法定義産品模型:
- 導入庫模型(平台預置産品模型)
- 上傳模型檔案(離線開發)
- Excel導入
- 自定義功能(線上開發)
裝置編解碼插件
編解碼插件簡介
什麼是編解碼插件?
編解碼插件能夠将終端上報的資料(二進制格式)解碼為應用伺服器所能“閱讀”的資料(JSON格式),将伺服器端下行指令資料(JSON格式)編碼為終端裝置所能“了解執行”的資料(二進制格式)。
為什麼要使用編解碼插件?
NB-IoT裝置采用二進制格式或者tlv格式資料。
NB-IoT裝置和IoT平台之間采用的是CoAP協定通訊,CoAP消息的payload為應用層協定資料,應用層資料的格式由裝置自行定義。鑒于NB-IoT裝置一般對省電要求較高,是以應用層資料一般不采用JSON格式資料。
應用伺服器端并不了解二進制格式或者tlv格式資料。
如何開發編解碼插件?
編解碼插件的開發手段有圖形化開發、離線開發和腳本化開發三種,由于插件離線開發較為複雜,且耗時比較長,推薦使用圖形化開發編解碼插件。
圖形化開發是指在裝置接入控制台,通過可視化的方式快速開發一款産品的編解碼插件。
離線開發是指使用編解碼插件的Java代碼Demo進行二次開發,實作編解碼功能、完成插件打包和質檢等。
腳本化開發是指使用JavaScript腳本實作編解碼的功能。
華為雲物聯網平台圖形化編解碼插件開發采用了将原有的插件開發代碼進行抽象封裝技術,開發者無需了解java程式設計語言,隻需在開發界面将裝置碼流的格式完成定義,并将碼流與profile中的屬性關系通過拖拽的方式完成映射,點選部署後Portal會根據開發者的設計自動生成插件并打包部署到物聯網平台。
對于裝置發來的上行消息,首先解析CoAP封包得到應用層資料,然後調用裝置廠商提供的插件解碼,進而将消息發送到應用平台;對于來自應用平台的下行消息,需要調用裝置廠商提供的編解碼插件,組裝CoAP消息發送到裝置,如下圖所示。此外編解碼插件還負責對平台下發指令和對上報資料的響應進行編碼。
資料上報
消息處理流程包括資料上報處理流程和指令下發處理流程,資料上報處理流程如下圖所示。
當裝置和物聯網平台完成對接後,一旦裝置上電,裝置基于在裝置上定義的業務邏輯進行資料采集和上報,可以是基于周期或者事件觸發。裝置可通過以下方式發送資料到物聯網平台:
裝置消息上報:裝置可以通過消息上報接口将裝置的自定義資料上報到平台,平台對裝置上報的消息不進行解析和存儲,通過資料轉發規則轉發到華為雲其他雲服務上進行存儲和處理,然後通過其他雲服務的控制台或者API接口進行進一步的資料處理。
裝置原始資料(二進制)上報:裝置可以通過二進制上報接口上報裝置的原始碼流,平台通過編解碼插件将裝置原始資料解析為産品模型定義的JSON格式,解析後的資料上報給裝置接入服務進行相關業務處理。
裝置屬性上報:裝置通過屬性上報接口,将産品模型中定義的屬性資料上報給平台,平台解析後的資料上報給裝置接入服務進行相關業務處理。
網關批量屬性上報:網關裝置将批量裝置的資料一次性上報到平台,平台解析後的資料上報給裝置接入服務進行相關業務處理。
在資料上報處理流程中,有兩處需要用到編解碼插件。
- 将裝置上報的二進制碼流的資料解碼成JSON格式的資料,發送給應用伺服器。
- 将應用伺服器響應的JSON格式資料編碼成二進制碼流格式的資料,下發給裝置。
指令下發
指令下發是指平台将指令下發到裝置,裝置響應并執行指令,進而達到平台到裝置遠端控制的效果。
這裡分别列舉了LwM2M/CoAP和MQTT這兩種協定的立即下發和緩存下發的流程,如圖所示。
應用下發指令到物聯網平台,平台會根據對應的産品資訊找到對應的編解碼插件,對指令請求進行編碼,将指令下發給裝置;下發指令成功或失敗,會根據下發結果更新指令狀态,若裝置對指令做出了響應,會将指令狀态更新為“執行成功”或“執行失敗”。
由于使用MQTT是不需要編解碼插件的,直接使用透傳的形式,當指令立即下發時,應用下發指令到物聯網平台,平台将指令下發至裝置,傳回執行結果,消息執行結果通知。
應用緩存下發指令,當裝置不線上時,将指令寫入緩存隊列,更新消息狀态,直到裝置上報資料,裝置上線,訂閱消息下發Topic,消息下發,更新消息狀态。
裝置編解碼插件示例:
更多學習内容,請[關注IoT物聯網社群]
添加華為雲IoT小助手微信号(hwc-iot),回複“閱讀”擷取更多資訊