HDC.Cloud | 漫談LiteOS-端云互通組件-LwM2M開發指南(下)
1 前言
本文檔主要通過實例講述如何通過Agent Tiny SDK的端云互通組件,使用LwM2M協議快速接入華為物聯網平臺。
2 Agent Tiny SDK簡介
Agent Tiny是部署在具備廣域網能力、對功耗/存儲/計算資源有苛刻限制的終端設備上的輕量級互聯互通中間件,您只需調用API接口,便可實現設備快速接入到物聯網平臺以及數據上報和命令接收等功能。 Agent Tiny SDK是Huawei Agent Tiny軟件開發工具包(Software Development Kit),通過Agent Tiny SDK端云互通組件,簡單快速地實現與華為物聯網平臺安全可靠連接,可以大大減少開發周期, 快速構建IoT產品。端云互通組件可以采用MQTT、CoAP和LwM2W協議接入物聯網平臺。
IOT SDK 架構圖
圖2-01
3接入物聯網平臺流程
本章分別從 IoT 平臺側和端側闡述通過端云互通組件接入物聯網平臺的開發流程,旨在幫助開發者在 IoT 設備上集成端云互通組件,進行IoT應用開發和調測。 端云互通組件接入華為 OceanConnect IoT 云平臺默認采用的是以太網方式(即以太網口驅動+LwIP網絡協議棧+LwM2M協議+Agent Tiny SDK 對接云平臺), 同時也支持WIFI、GSM、NB-IoT等無線方式。OceanConnect 即華為IoT聯接管理平臺(IoT Connection Management Platform)是面向運營商和企業/行業領域的統一開放云平臺, 支持SIM和非SIM場景的各種聯接和聯接管理。通過開放的APIs,向上集成各種行業應用,向下接入各種傳感器、終端和網關,幫助運營商和企業/行業客戶實現多種行業終端的快速接入, 多種行業應用的快速集成。華為IoT聯接管理平臺提供安全可控的全聯接管理,使能行業革新,構建IoT生態(本章中提到的IoT平臺指OceanConnect)。
平臺對接信息
圖3-01
設備接入云端可分為直連接入和BS引導接入,如下示意圖
圖3-02直連接入物聯網平臺示意圖
圖3-03 BS引導接入物聯網平臺示意圖
4直連接入實例(https://bbs.huaweicloud.com/blogs/148751)
5經 BS 接入實例
(參考)LINUX設備平臺接入實例
圖5.0-01
5.1平臺側開發
BS引導模式平臺側開發包括:產品導入,設備導入,配置發放策略,發放設備。
1 環境準備
在開發之前,需要提前獲取如下信息:
物聯網平臺的訪問賬號/密碼,需要向OceanConnect IoT平臺申請
2 產品導入
產品導入用于導入用戶已開發和定義的產品模型。產品模型是指接入平臺的設備的類型,產品信息包括產品名稱、廠商、協議等信息。
如果使用設備接入和設備管理服務,需要提前在開發中心完成產品模型定義并發布到產品中心,選擇“從產品中心導入”。 如果僅使用設備接入服務,則選擇“創建產品”。創建產品僅支持創建MQTT協議產品。
(1)登錄IoT云平臺。IoT云平臺的訪問賬號和密碼需要向IoT平臺服務商申請。
(2)進入設備發放服務,點擊“從產品中心導入”。
圖5.1-01 產品導入
在新彈出界面中,產品名稱輸入“EVB”,協議類型選擇“LwM2M”,點擊“搜索”,在搜索結果列表中選擇產品點擊“導入”。
圖 5.1-02 選擇產品
說明:如上產品選擇僅為參考舉例,具體配置請以實際產品模型為準。
圖 5.1-03 產品導入成功
3 設備導入
設備導入用于將設備基本信息導入設備發放平臺中,用于后續發放至不同的物聯網平臺,支持批量導入和單個導入。設備導入成功后,可在設備倉庫中查看設備的詳細信息。
登錄IoT平臺的開發者中心。
進入設備發放服務頁面,選擇“設備導入”,點擊頁面右上角“單個導入”。
圖 5.1-04 設備導入
(3)在配置設備基本信息界面中,產品信息選擇上一步導入的產品、設置好設置設備標識碼、設備名稱、訪問方式選擇“IP”,點擊“確認導入”
圖5.1-05配置設備基本信息
說明:如上配置僅為參考舉例,具體配置請以現網需求為準。
4 配置發放策略
發放策略用于控制設備按照指定策略或規則發放至不同的物聯網平臺。當前支持按照設備名稱中的關鍵字設置發放示例,最多可添加20個發放實例。
在設備發放服務頁面選擇“發放策略”,點擊“設備名稱篩選”,添加實例。
圖5.1-06添加實例
在添加實例配置框內填寫關鍵字,關鍵字為設備導入中的設備名稱、選擇發放區域、點擊“確定”。
圖5.1-07配置發放策略
5 發放設備
發放設備會將設備發放到指定站點的物聯網平臺(設備接入),對于首次發放的設備,設備上電后會自動引導設備接入指定的物聯網平臺。
選擇“設備倉庫”,在設備列表選擇要發放的設備,點擊“發放設備”,彈出對話框點擊“確定”,點擊“立即啟動”。
圖5.1-08發放設備
圖5.1-09 立即啟動
5.2設備側開發
BS引導模式設備側開發包括: 配置Demo中對接云端設備的信息、編譯、運行SDK、數據上報功能調測。
設備側開發環境準備
在開發之前,需要提前進行如下操作:
在虛擬機中搭建好Ubuntu操作系統
獲取端云互通組件代碼:https://github.com/LiteOS/LiteOS/tree/iot_link
配置Demo中對接云端設備的信息
(1)將組件代碼源文件復制到Ubuntu用戶目錄下
圖5.2-01復制組件代碼源文件到用戶目錄
(2)在Demo源文件中設置云平臺IP以及設備EP Name。
oc_lwm2m_bs_demo.c位于 LiteOS-iot_link/demos。
這些參數將作為入參傳入oc_lwm2m_config()以對LiteOS端云互通組件進行初始化。EP Name就是在云平臺上注冊設備時開發者設定的驗證碼,必須保證是唯一的;oc_lwm2m_bs_demo.c中示例如下:
#define?cn_app_server?????????"iot-bs.cn-north-4.myhuaweicloud.com" #define?cn_app_server?????????"119.3.251.30" #define?cn_endpoint_id??????? ?"test_lwm2m10" #define?cn_app_port???????? "5683"
(3)修改編譯配置文件。
config.mk位于 LiteOS-iot_link/targets/LINUX/GCC。
參考如下配置:
CONFIG_OS_TYPE?:=?"linux" ? ?CONFIG_ARCH_CPU_TYPE?:=?"x86-64" ? ?CONFIG_SHELL_ENABLE?:=?n ? ?CONFIG_STIMER_ENABLE?:=?y ? ?CONFIG_DRIVER_ENABLE?:=?n ? ?CONFIG_AT_ENABLE?????:=?n ?CONFIG_CJSON_ENABLE?:=?y ? ?CONFIG_TCPIP_ENABLE?:=?y ?CONFIG_TCPIP_TYPE?:=?"linux_socket" ? ?CONFIG_DTLS_ENABLE???:=?n ?CONFIG_DTLS_TYPE?????:=?"mbedtls_psk" ? ?CONFIG_MQTT_ENABLE???:=?n ?CONFIG_MQTT_TYPE?????:=?"lite_mqtt" ? ?CONFIG_LWM2M_ENABLE???:=?y ?CONFIG_LWM2M_TYPE?????:=?"wakaama_lwm2m" ? ?CONFIG_COAP_ENABLE???:=?n ?CONFIG_COAP_TYPE?????:=?"lite_coap" ? ?CONFIG_OC_COAP_ENABLE?:=?n ?CONFIG_OC_COAP_TYPE???:=?"soft" ? ?CONFIG_OC_MQTT_ENABLE?:=?n ?CONFIG_OC_MQTT_TYPE???:=?"soft" ? ?CONFIG_OC_LWM2M_ENABLE?:=?y ?CONFIG_OC_LWM2M_TYPE???:=?"soft" ? ?CONFIG_OTA_ENABLE??????:=?n ?CONFIG_PCP_ENABLE??????:=?n ? ?CONFIG_DEMO_ENABLE?:=?y ?CONFIG_DEMO_TYPE???:=?"oc_lwm2m_bs_demo"
include $(TOP_DIR)/iot_link/iot.mk
(4)編譯并運行。
進入到LiteOS-iot_link/targets/LINUX/GCC目錄下執行“make”命令,編譯成功后會在當前文件夾下生成"build"目錄,輸入“./build/Huawei_LiteOS.elf”運行。
圖5.2-02make
圖5.2-03 運行程序
圖5.2-04連接云平臺
(5)查看設備狀態。
登錄IoT平臺進入設備管理服務,選擇“所有設備”,在設備列表中查看對應設備的狀態。如果狀態為“在線”,則表示設備已經成功接入IoT平臺。
圖5.2-05 查看設備狀態
5.3調測
數據上報
對于開發者來說,只需在app\_report\_task\_entry\(\)中將其傳遞給數據上報結構體 light 即可。具體調測過程如下:
(1)設備側執行app_report_task_entry函數,使設備上報數據。
oc_lwm2m_bs_demo.c中的函數app_data_report如下:
static?int?app_report_task_entry() ?{ ??????????int?ret?=?-1; ??????????int?lux?=?0; ? ??????????oc_config_param_t??????oc_param; ??????????app_light_intensity_t??light; ? ??????????memset(&oc_param,0,sizeof(oc_param)); ? ??????????oc_param.app_server.ep_id?=?cn_endpoint_id; ? ? ??????????oc_param.boot_server.address?=?cn_app_server; ??????????oc_param.boot_server.port?=?cn_app_port; ??????????oc_param.boot_server.ep_id?=?cn_endpoint_id; ? ??????????oc_param.boot_mode?=?en_oc_boot_strap_mode_client_initialize; ??????????oc_param.rcv_func?=?app_msg_deal; ? ??????????while(1)?//--TODO?,you?could?add?your?own?code?here ??????????{ ??????????????if(NULL?==?s_lwm2m_context) ??????????????{ ??????????????????oc_lwm2m_config(&oc_param); ??????????????} ??????????????else?if(s_lwm2m_reconnect) ??????????????{ ???????????????????s_lwm2m_reconnect?=?0; ? ???????????????????oc_lwm2m_deconfig(); ? ? ???????????????????oc_lwm2m_config(&oc_param); ? ??????????????} ??????????????else ??????????????{ ???????????????????lux++; ???????????????????lux=?lux%10000; ? ???????????????????light.msgid?=?cn_app_light; ???????????????????light.intensity?=?htons(lux); ???????????????????oc_lwm2m_report((char?*)&light,sizeof(light),1000);?///
oc_lwm2m_bs_demo.c位于 LiteOS-iot_link/demos。
(2)查看設備狀態
登錄IoT平臺進入設備管理服務,選擇“所有設備”,在設備列表中,點擊上報數據的設備,查看設備信息”,驗證設備數據上報的情況。
圖5.3-01查看數據上報結果
IoT LiteOS 物聯網
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。