您可通過物聯網平臺提供的C LinkSDK Extended簡化開發過程、快速連接設備和物聯網平臺,將海量設備數據采集上云。本文簡要介紹C LinkSDK Extended的架構和功能。
SDK架構
C LinkSDK Extended以C99編寫,開源發布,目前僅支持Linux系統設備。
源碼目錄結構
/device-core
設備的核心模塊,必選功能模塊,功能包括:
功能 | 說明 |
設備認證 |
|
設備連接 | 將設備與物聯網平臺建立MQTT協議的連接,實現設備與物聯網平臺的通信。 將設備與物聯網平臺建立HTTPS協議的連接,實現設備向物聯網平臺上報數據。 |
設備消息收發 | 設備可以通過MQTT、HTTPS將設備數據上報給物聯網平臺,如果設備需要遠程管理、特別是需要從云端主動發送消息給設備,那么只能選擇使用MQTT連接物聯網平臺。 |
設備分發 | 引導設備就近連接服務器。 |
設備動態注冊 | 從云端獲取共享密鑰,批量燒錄設備統一固件。 |
/device-modules
設備組件模塊,可選的功能模塊,組件內模塊支持刪除,編譯前刪除不使用即可,可以減少資源開銷。
功能 | 說明 |
物模型 | 基于物模型對設備進行管理,無需關心設備與物聯網平臺之間的數據交互格式,降低開發成本,幫助用戶快速進行設備的業務開發。 |
設備標簽 | 為設備自定義標識,以便靈活管理設備。 |
網關與子設備 | 將設備的網關接入物聯網平臺,使不具備IP地址的設備間接地接入物聯網平臺。 |
設備日志 | 將設備的日志上報到云端,以便存儲查詢分析。 |
時間同步 | 設備通過物聯網平臺獲取標準時間。 |
設備升級 | 設備通過物聯網平臺進行升級。 |
設備影子 | 緩存設備狀態。設備在線時,可以直接獲取云端指令;設備離線后,再次上線可以主動拉取云端指令。 |
安全隧道 | 通過建立訪問端與設備端間的WebSocket通道,實現遠程連接企業內部網物聯網平臺設備的功能。 |
遠程配置 | 在不用重啟設備或中斷設備運行的情況下,在線遠程更新設備的系統參數、網絡參數等配置信息。 |
數據壓縮 | 支持設備與物聯網平臺之間的傳輸壓縮數據,節約設備流量,提高傳輸效率。 |
單設備多連接 | 支持設備消息每秒請求數QPS的擴展。 |
/external
SDK所依賴的外部開源的庫,包含cJSON、MbedTLS、noPoll等。
/utils
SDK實現的內部工具庫,包含文件下載工具及簽名校驗工具。
portfiles
SDK跨平臺移植的接口實現,目前僅支持Linux。
Demo簡介
Demo | 功能 |
device_basic_demo | 演示設備基礎建連,發送接收消息,包含自定義消息的使用。 |
device_bootstrap_demo | 演示設備就近接入功能的使用。 |
device_dynamic_register_demo | 演示設備就近接入功能的使用。 |
ota_basic_demo | 演示設備OTA功能的使用。 |
dm_basic_demo | 演示設備使用物模型功能。 |
logpost_basic_demo | 演示設備上報本地日志的功能。 |
tunnel_basic_demo | 演示設備使用遠程登錄的功能。 |
shadow_basic_demo | 演示設備使用設備影子的功能。 |
gateway_****_demo | 演示網關與子設備相關功能的使用。 |
集成C Link SDK所需的環境要求,詳細信息請參見環境要求與配置。
設計原則
API函數接口和數據結構, 在
xxx/aiot_xxx_api.h
頭文件中列出,以aiot_xxx_yyy
命名。組件能力的使用范例,如
xxx/demos/xxx_{basic,posix}_demo.c
所示。組件的API函數原型,如下所示:
aiot_device_***
: 設備核心模塊接口。aiot_device_xxx_***
: 設備組件接口。
API的返回值是
int32_t
的非正數整型,即狀態碼,狀態碼返回0
表成功,其它值表示運行狀態。使用
retval = aiot_xxx_yyy()
方式獲取返回值。所有返回值唯一對應內部運行分支,詳情請參見
aiot_state_api.h
或aiot_xxx_api.h
。所有組件返回值的值域互不重疊,共同分別分布在
0x0000 - 0xFFFF
。