1. 案例簡介
linksdk_gateway_demo是Link SDK網關代理子設備上云最簡示例。
其完成的主要功能包括:
系統(tǒng)板級初始化
內核基礎組件初始化
網絡配置
網絡配置成功(獲取ip)后創(chuàng)建Link SDK主線程
Link SDK參數(shù)配置
Link SDK初始化
創(chuàng)建獨立線程用于MQTT保活及QoS1消息重發(fā)
創(chuàng)建獨立線程用于下行數(shù)據(jù)接收
初始化子設備模塊
批量添加子設備topo關系
子設備批量上線
子設備下線
該示例的運行依賴下述基本功能完成對接:
AOS API
LwIP
MbedTLS
Link SDK
2. 基礎知識
2.1 基礎目錄結構
.
├── main.c # 網絡配置及SDK啟動入口
├── maintask.c # 系統(tǒng)主任務入口處理,入口**aos_maintask**
├── Makefile # aos make編譯時入口
├── package.yaml # 編譯系統(tǒng)配置文件
├── README.md # 本說明文檔
├── SConstruct # Makefile => Scon => aostools
└── subdev_basic_demo.c # Link SDK 網關(代理子設備上云)演示示例
3. 物料清單
3.1 HaaS100 硬件
4. 案例實現(xiàn)
4.1 硬件連接
該案例只需要連接電源線以及串口線,如下圖所示:
注意:由于本案例需要使用Wi-Fi聯(lián)網,需將標有2.4G/5.8G的天線連接到HaaS100 靠近USB口的天線端子上,如上圖所示。
4.2 軟件實現(xiàn)
4.2.1 云端創(chuàng)建產品
請先點擊登錄物聯(lián)網平臺(未注冊阿里云賬戶的用戶,請先完成賬戶注冊),按下面步驟一步步去打造。
1、創(chuàng)建項目
注冊登入后,如下圖所示,前往管理控制臺。
點擊公共實例,進行產品創(chuàng)建。
2、創(chuàng)建網關演示產品
點擊創(chuàng)建產品,見下圖所示,這里創(chuàng)建了一個名稱“haas_gateway”產品。
3、創(chuàng)建網關設備
在設備列表中增加對應產品的設備。
4、創(chuàng)建子設備演示產品
點擊創(chuàng)建產品,見下圖所示,這里創(chuàng)建了一個名稱“haas_subdev”產品。
5、創(chuàng)建多個子設備
在設備列表中增加對應產品的設備。
創(chuàng)建后的設備設備證書(ProductKey、DeviceName、DeviceSecret)信息需要同步到設備端的開發(fā)代碼段中,在4.2.2章節(jié)會介紹。待設備端開發(fā)結束,就可以在物聯(lián)網平臺中參看設備在線狀態(tài)。
4.2.2 AliOS Things開發(fā)環(huán)境搭建
開發(fā)環(huán)境的搭建請參考《AliOS Things集成開發(fā)環(huán)境使用說明之搭建開發(fā)環(huán)境》,其中詳細的介紹了AliOS Things 3.3的IDE集成開發(fā)環(huán)境的搭建流程。
4.2.3 linksdk_gateway_demo代碼下載
物模型上云的代碼下載請參考《AliOS Things集成開發(fā)環(huán)境使用說明之創(chuàng)建工程》,其中,選擇解決方案:“l(fā)inksdk_gateway_demo”選擇開發(fā)板:HaaS100。
4.2.4 設備端代碼修改
演示用例路徑為solutions/{your_project}/data_model_basic_demo.c 此演示用例演示Link SDK物模型單品上云的功能。注意:{your_project} 為studio中創(chuàng)建的工程名(基于linksdk_gateway_demo模板)。
1.修改網關設備證書(ProductKey、DeviceName、DeviceSecret),使用4.2.1章節(jié)得到的設備證書(ProductKey、DeviceName、DeviceSecret)填入代碼如下區(qū)域:
int32_t demo_mqtt_start(void **handle)
{
...
/* TODO: 替換為自己設備的設備證書(ProductKey、DeviceName、DeviceSecret) */
char *product_key = "替換為上章節(jié)創(chuàng)建的product_key";
char *device_name = "替換為上章節(jié)創(chuàng)建的device_name";
char *device_secret = "替換為上章節(jié)創(chuàng)建的device_secret";
...
2.修改子設備證書(ProductKey、DeviceName、DeviceSecret),使用4.2.1章節(jié)得到的設備證書(ProductKey、DeviceName、DeviceSecret)填入代碼如下區(qū)域:
aiot_subdev_dev_t g_subdev[] = { { "替換為上章節(jié)創(chuàng)建的子設備1的product_key", "替換為上章節(jié)創(chuàng)建的子設備1的product_secret", "替換為上章節(jié)創(chuàng)建的子設備1的device_name", "替換為上章節(jié)創(chuàng)建的子設備1的device_secret" }, { "替換為上章節(jié)創(chuàng)建的子設備2的product_key", "替換為上章節(jié)創(chuàng)建的子設備2的product_secret", "替換為上章節(jié)創(chuàng)建的子設備2的device_name", "替換為上章節(jié)創(chuàng)建的子設備2的device_secret" }, ... };
4.2.5 代碼編譯、燒錄
編譯linksdk_gateway_demo的過程如下:
-- 編譯固件可參考《AliOS Things集成開發(fā)環(huán)境使用說明之編譯固件》。
-- 燒錄固件可參考《AliOS Things集成開發(fā)環(huán)境使用說明之燒錄固件》。
4.3 調試
CLI命令行輸入聯(lián)網命令:
netmgr -t wifi -c ssid password
注意:ssid和password需要替換成自己的路由的ssid及密碼。
連上路由器后會自動連接到阿里云物聯(lián)網平臺。
4.3.1 關鍵日志
CLI日志:
success to establish mbedtls connection, fd = 3(cost 0 bytes in total, max used 0 bytes)
[104.526][LK-0313] MQTT connect success in 1908 ms
AIOT_MQTTEVT_CONNECT
云端查看創(chuàng)建的主設備及子設備是否顯示在線。
5. 總結
本用例簡單介紹了如何使用AliOS Things及HaaS開發(fā)板進行端云一體網關設備的開發(fā)。了解更多連云相關知識請參考Link SDK編程手冊。