乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

京東科技開發者發表於2019-09-29

乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

本文主要講解如何使用京東雲物聯網引擎產品,快速建立產品及裝置,並透過SDK將裝置安全地連線至雲端,實現裝置的資料上報與訂閱,讓剛接觸該產品的使用者能夠對京東雲物聯網平臺有個初步的認識。
目前京東雲 IoT Device SDK 提供了C語言開發包,訪問連結進行下載:
jdcloud-iot-device-sdk-c.zip  (https://docs.jdcloud.com/cn/iot-core/device-sdk-download-link)
京東雲IoT Device SDK,是提供給裝置廠商,用於整合在裝置之上,並透過SDK安全的將裝置連線至京東雲物聯網引擎進行管理。裝置必須要支援TCP/IP協議才能使用Device SDK,其他非IP裝置或非標準MQTT協議的裝置,需要透過閘道器,邊緣節點以及物聯網協議適配才能接入物聯網引擎。目前SDK面向MQTT C語言開發者,支援Linux系統環境。

SDK架構

應用業務邏輯、SDK、HAL的關係如下圖所示:
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊


應用只需關心使用SDK API組合業務邏輯,無需關心通訊細節,HAL層需要使用者根據自身的OS和裝置資訊進行適配,SDK提供了Linux的HAL層適配。

快速上手,裝置接入操作步驟

登入物聯網引擎控制檯(),使用者進行開通服務後,即可進入快速接入裝置頁面。
(您也可在左側選單欄點選【快速接入裝置】選單,進入快速接入裝置頁面)
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

1、新建產品和裝置

建立產品與裝置是使用物聯網引擎的第一步,填入產品名稱和裝置名稱,預設系統會自動為產品新增switch和message這兩條屬性。產品建立成功後,您也可以透過產品詳情中,修改編輯產品物模型定義。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

2、記錄裝置的配置資訊及接入域名,並下載SDK開發包以及配置檔案。

請注意:務必要下載並儲存好您的裝置配置檔案,用於後面做裝置的連線鑑權使用。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

3、根據頁面提示,在開發機上執行SDK開發包中的Demo程式,之後檢視裝置連線情況。

乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

4、完成快速接入裝置。

乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

裝置鑑權

京東雲裝置鑑權分 一機一密 和 一型一密 ,SDK中這兩種模式是透過 iot_config.h 中的 DYNAMIC_REGISTER 宏來控制。
建立產品後預設是一機一密鑑權,開啟產品的裝置動態註冊功能後,即會切換為一型一密鑑權。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

一機一密

開發者需要將服務端生成的 product key、identifier 和 device secret 燒錄至裝置儲存系統,並實現以下 HAL APIs,從而允許 SDK 從儲存系統裡獲取這些資訊。

乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊


SDK包含了這些 HAL APIs 的簡單實現檔案( hal_os_linux.c),其中 _product_key、_identifier、_device_secret示範了對這些資訊的儲存。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

一型一密

雲端根據 product key、product secret動態生成 identifier、device secret。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊
啟用 DYNAMIC_REGISTER 宏後
iot_mqtt_construct(iot_mqtt_param_t *pInitParams) 會自動去做一型一密認證,使用者需要額外實現幾個 HAL 層函式。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊
具體實現可以參考 platform/linux/hal_os_linux.c的實現。

建立裝置與雲端的連線

Host配置

在SDK檔案 src/utils/iot_config.h 中,透過 INDEPENDENT_MODE來控制 SDK 是否訪問物聯網引擎,物聯網引擎產品在使用者VPC內建立使用者私有例項,所有資源為該使用者獨立使用,享有獨立的接入入口。對物聯網引擎開發者需要將 platform/linux/hal_os_linux.c_device_host的地址替換為物聯網引擎的公網域名地址。

初始化資料

開發者從控制檯獲取到裝置三元組後,將資訊寫入儲存系統或 HAL 檔案後,即可從裝置 app 呼叫 iot_mqtt_construct()來建立連線。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊

建立 MQTT 連線例項

介面: void *iot_mqtt_construct(iot_mqtt_param_t *pInitParams)介面說明:建立 MQTT 例項,初始化資料,建立 MQTT 連線返回值:成功返回 MQTT 例項,否則返回 NULL

引數說明

乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊
示例程式碼
iot_mqtt_param_t mqtt_params;
pclient = iot_mqtt_construct(&mqtt_params);

銷燬MQTT連線和例項

介面:Int iot_mqtt_destroy (iot_mqtt_param_t *pInitParams) 介面說明:銷燬 Mqtt 例項,釋放資料和連線 返回值:成功返回SUCCESS_RETURN,否則返回其
示例程式碼
iot_mqtt_destroy (pInitParams);

以上,快速透過SDK進行裝置接入及通訊連線就算完成了。更多資訊可以訪問京東雲官網文件(


歡迎點選“ 京東雲 ”瞭解更多精彩內容


乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊


                                                            目前物聯網引擎產品2折促銷中,歡迎使用。
乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2658715/,如需轉載,請註明出處,否則將追究法律責任。

相關文章