漫談LiteOS-端雲互通元件-MQTT開發指南(上)

華為IoT小助手發表於2020-04-24

1.介紹

SDK簡介

Agent Tiny是部署在具備廣域網能力、對功耗/儲存/計算資源有苛刻限制的終端裝置上的輕量級互聯互通中介軟體,您只需呼叫API介面,便可實現裝置快速接入到物聯網平臺以及資料上報和命令接收等功能。

Agent Tiny SDK是Huawei Agent Tiny軟體開發工具包(Software Development Kit),通過Agent Tiny SDK端雲互通元件,簡單快速地實現與華為物聯網平臺安全可靠連線,可以大大減少開發週期,快速構建IoT產品。端雲互通元件可以採用MQTT、CoAP和LWM2W協議接入物聯網平臺。Agent Tiny SDK全景圖如圖1所示。

iot-architecture.png

2. 開發環境

2.1硬體需求

開發計算機、執行win7及以上作業系統

野火開發板STM32F429IG、資料線

Jlink下載器、網線、USB轉串列埠

2.2軟體需求

IDE(包括GCC編譯器、JDK執行環境、make工具、Jlink驅動、Eclipse)

串列埠工具(QCOM-V1.6)

實名認證的華為雲賬號

SDK原始碼

3.接入物聯網平臺流程

根據裝置中的接入地址,可以將接入物聯網平臺分為兩種模式:

  • 直接接入物聯網平臺模式

  • 通過裝置發放服務接入物聯網平臺模式

兩種接入方式的對比:

  • 直接接入物聯網平臺示意圖

 

direct_connect_mode.png

 

  • 通過裝置發放服務接入物聯網憑條示意圖

BS_connect_mode.png

4.直接接入例項

下面以野火STM32F429IG開發板通過乙太網直接接入物聯網平臺為例,詳細講述接入流程。總體操作流程參考下圖。

zh-cn_image_dmp_process.png

說明:野火STM32F429IG開發板的詳細資料可以從http://www.firebbs.cn/forum.php下載。

產品模型參考

zh-cn_dmp_operate_001.png

裝置資訊參考

zh-cn_dmp_operate_002.png

4.1平臺側開發

進入開發中心,根據上圖,依次在開發中心中新建專案->新建產品->定義產品模型->註冊裝置。

新建專案

選擇開發者中心並進入。

 

zh-cn_bmp_cloud_004.png

點選“我的專案”中“+”,建立自己的專案。

zh-cn_bmp_cloud_005.png

 

輸入專案資訊後點選“確定”。

zh-cn_bmp_cloud_006.png

點選“進入專案”。

zh-cn_bmp_cloud_007.png

新建產品

選擇產品開發新建產品,即可跳轉到產品模型定義介面。

zh-cn_bmp_cloud_008.png

選擇自定義產品方式建立產品。

zh-cn_bmp_cloud_009.png

補全產品的各類資訊,點選“建立”,提示建立成功後點選“確定”,前往產品開發。

zh-cn_bmp_cloud_010.png

定義產品模型

選擇新建服務,開始新增產品的相關特性

zh-cn_bmp_cloud_011.png

給產品定義一個屬性:batteryLevel,用於裝置向平臺上報,定義為int型,最大值設定為100,訪問模式RWE全部勾選,完成後點選確定;

zh-cn_bmp_cloud_012.png

給產品增加一個命令:cmd,設定下發命令屬性名稱:ioswitch,用於平臺向裝置傳送命令,定義為int型,最大值99。通過上報和下發,構成了我們演示的上行和下行通道。

zh-cn_bmp_cloud_013.png

zh-cn_bmp_cloud_014.png

新增完後儲存:

zh-cn_bmp_cloud_016.png

建立裝置

建立了產品模型之後,我們需要根據模型建立具體的裝置。點選裝置管理->新增真實裝置,即可進入新增裝置介面。

zh-cn_bmp_cloud_017.png

進入介面之後,選擇我們剛才建立的產品模型“sdk_test_001”,進行裝置建立。
裝置標識(nodeid)是識別該裝置的唯一識別符號,要求唯一,此處為示範,使用者使用時以實際命名為準。

zh-cn_bmp_cloud_018.png

此處注意,確認之後自動生成產品裝置ID(deviceid)及金鑰(password),請記錄下裝置標識(nodeid)、裝置ID(deviceid)及金鑰(password),這三個資訊主要用於對接華為雲時的裝置鑑權。

zh-cn_bmp_cloud_019.png

建立完畢之後,即可在裝置管理中看到剛剛建立的裝置,此時裝置狀態為離線。

1579510523963938.png

到此為止,平臺側開發完畢。

4.2裝置側開發

裝置側開發前準備

  •   下載SDK原始碼

  •   獲取接入資訊(進入開發中心的“sdk_test_098”專案中,在“應用 > 對接資訊”頁面檢視“裝置接入資訊”中的“MQTT接入方式”)

 說明:SDK採用的是GCC+MakeFile模式,使用者可以根據自己的IDE開發環境靈活適配。

修改mk檔案

整合開發環境搭建好後,修改targets\STM32F429IGTx_FIRE\config.mk

CONFIG_OS_TYPE := "liteos"
CONFIG_ARCH_CPU_TYPE := "armv7-m"
CONFIG_SHELL_ENABLE := y
CONFIG_STIMER_ENABLE := y
CONFIG_DRIVER_ENABLE := y
CONFIG_AT_ENABLE     := y
CONFIG_CJSON_ENABLE := y
CONFIG_TCPIP_ENABLE := y
CONFIG_TCPIP_TYPE := "lwip_socket"
CONFIG_DTLS_ENABLE   := y
CONFIG_DTLS_TYPE     := "mbedtls_cert"
CONFIG_MQTT_ENABLE   := y
CONFIG_MQTT_TYPE     := "paho_mqtt"
CONFIG_OC_MQTT_ENABLE := y
CONFIG_OC_MQTT_TYPE   := "soft"
CONFIG_DEMO_ENABLE := y
CONFIG_DEMO_TYPE   := "oc_tls_mqtt_demo"      ### 產品邏輯 ###

修改接入資訊

參考如下內容,修改demos/oc_tls_mqtt_demo.c

#define DEFAULT_LIFETIME            10
#define DEFAULT_SERVER_IPV4         "49.4.93.24"               //物聯網平臺MQTT接入地址
#define DEFAULT_SERVER_PORT         "8883"                     //物聯網平臺MQTT接入埠
#define CN_MQTT_EP_NOTEID           "device_001"               //平臺側新建的裝置標識碼
#define CN_MQTT_EP_DEVICEID         "c4ef0d27-8ea5-41aa-837f-361cff947601"  //平臺側裝置建立成功後提供的裝置ID
#define CN_MQTT_EP_PASSWD           "314483483108d92db143"     //平臺側裝置建立成功後提供的金鑰

編譯執行

修改完成,編譯然後debug。

zh-cn_dmp_test_001.png

zh-cn_dmp_test_007.png

4.3調測

通過串列埠工具,可以看到裝置已經和物聯網平臺建立連線。

zh-cn_dmp_test_002.png

登入開發平臺->“sdk_test_098”專案 ->裝置管理,可以看到我們的裝置已經上線,點選除錯產品,可以進入我們平臺的裝置除錯介面。

zh-cn_dmp_test_003.png

可以看到所建立的裝置已經上報的資料

zh-cn_dmp_test_004.png

輸入ioswitch值88,點選“傳送”。

zh-cn_dmp_test_005.png

在串列埠工具可以看到接收到的命令

zh-cn_dmp_test_006.png

到此調測完成。

新增華為IoT小助手(微訊號:huawei-iot,回覆“部落格園”)獲取更多LiteOS課程。

相關文章