Link SDK是阿里云物聯網平臺提供的設備端軟件開發工具包,可簡化開發過程,實現設備快速接入阿里云物聯網平臺。設備廠商獲取SDK后,根據需要選擇相應功能進行移植,即可快速集成Link SDK,實現設備的接入。
前提條件
設備端開發前,需要完成物聯網平臺控制臺所需操作,獲取設備開發階段的必要信息,包括設備信息、Topic信息等。具體請參見設備接入引導。
背景信息
物聯網平臺支持海量異構的設備接入,阿里云物聯網平臺提供設備端軟件開發工具包Link SDK,也提供標準ALink協議。
使用ALink協議開發,請參見基于Alink協議自主開發。
(推薦)使用Link SDK進行開發,實現設備的快速接入。設備基于Link SDK的開發流程可以分為以下步驟。
相關名詞的解釋,請參見基本概念。
集成方式
根據設備類型的不同,集成Link SDK的方式也有差異:
IP設備:指支持TCP/IP協議棧的設備,例如Wi-Fi設備,可以直接集成Link SDK。
非IP設備:指不支持TCP/IP協議棧的設備,例如ZigBee、BT、KNX、ModBus等,需要通過集成了Link SDK的網關設備,再接入到阿里云物聯網平臺。子設備需要通過網關代理建連,網關集成LinkSDK,子設備與網關之間的通信方式由用戶自定義,C Link SDK子設備接入,請參考概述。
Link SDK選型
Link SDK目前支持C、Java、Python、Node.js、Android、iOS等多種語言,用戶可根據產品選擇相應語言的SDK。
SDK類型 | 使用場景 | 配置鏈接 | 使用示例 |
C Link SDK | 適用于嵌入式C環境的資源受限設備。 | ||
C Link SDK Extended | 適用于通用C環境的資源豐富設備。 | ||
Android Link SDK | 適用于Android設備。 | ||
Python Link SDK | 適用于Python語言開發的設備,不適用Python輕應用開發。 | ||
Java Link SDK | 適用于Java語言開發的設備。 | ||
Node.js Link SDK | 適用于Node.js語言開發的設備。 | ||
iOS Link SDK | 適用于iOS設備。 |
C語言SDK版本 | 功能特性 | 注意事項 | 參考文檔 |
C Link SDK Extended |
|
| |
C Link SDK 4.x |
|
| |
C Link SDK 3.x | 提供代碼抽取工具,功能裁剪更便捷。 | 不再迭代更新,不推薦新用戶使用。 | |
C Link SDK 1.x/2.x | 初始版本。 | 不推薦使用。 | 無。 |
如需更多語言的Link SDK,請提交工單。
如不使用Link SDK,可以參考協議標準自行接入設備,請參見基于Alink協議開發。
常見的開源MQTT庫包括paho.mqtt.c、paho.mqtt.embedded-c、paho.mqtt.android、paho.mqtt.python等。
Link SDK適配移植
硬件環境 | 操作系統 | 說明 | 相關文檔 |
PC/SoC | Linux | 如果是嵌入式設備,請注意配置交叉編譯。 | |
Windows | 無參考實現,需自行移植。 | ||
MCU + 通信模組 | RTOS | MCU與通信模組之間采用AT指令通信,完成設備聯網。 | |
noneOS | MCU通過裸機開發連接。 | ||
模組OpenCPU | RTOS | 基于ESP-IDF框架集成LinkSDK。 |
設備開發:連接與消息
物聯網平臺為滿足不同的設備接入需求,支持多種協議和多種認證方式,下面介紹設備接入物聯網平臺的幾種方案。
功能 | 說明 | 相關文檔 |
多協議接入 | 支持MQTT、CoAP、HTTP等協議接入,大部分設備使用MQTT協議。 | |
一機一密 | 每個設備使用單獨的密鑰進行認證。 | |
一型一密 | 每個型號設備使用共同的密鑰,簡化設備燒錄的工作。 說明 一型一密和一機一密可以結合使用,設備第一次接入物聯網平臺通過一型一密(動態注冊)獲取到設備單獨的密鑰,之后再通過一機一密接入。 | |
X.509證書認證 | 每個設備擁有獨立的證書,在TLS階段就可以完成設備的認證,該方式有更高的安全性。 | |
網關子設備 | 網關代理子設備接入物聯網平臺,子設備接入后可以使用子設備的topic與云平臺通信。 |
功能項 | C Link SDK Extended | C(v4.x) | C(v3.x) | Android | Java | Python | Node.js | |
設備接入與消息通信 | 一機一密認證 | |||||||
一型一密認證 | ||||||||
X.509證書認證 | 不支持 | |||||||
消息通信 | ||||||||
網關與子設備 | 不支持 |
設備開發:業務功能
設備在接入物聯網平臺后,可以通過物聯網平臺收發消息。設備將業務數據上報到物聯網平臺,可以通過以下方式。
自定義:用戶完成自定義消息的topic和Payload,請參見使用自定義Topic通信。
物模型:用戶基于物模型定義設備屬性、事件、服務,通過物模型的格式上報/下發,請參見什么是物模型和設備使用物模型通信。物模型是物聯網平臺的核心能力,使用物模型的優勢:
數據結構化存儲:簡化后續數據開發流程。
狀態緩存(設備影子):設備/服務端在任意時間都可查詢設備狀態/數據。
數據可視化:在物聯網平臺頁面可以查看數據。
在線調試:支持在線調試設備。
功能項 | C Link SDK Extended | C(v4.x) | C(v3.x) | Android | Java | Python | Node.js | iOS | |
設備管理 | 物模型 | 不支持 | |||||||
設備標簽 | 不支持 | ||||||||
文件管理 | 不支持 | 不支持 | |||||||
設備分發 | 不支持 | ||||||||
設備影子 | 不支持 | ||||||||
設備任務 | 不支持 | 不支持 |
設備開發:運維功能
設備在完成業務功能開發后,在正式量產前,建議再增加運維功能,方便設備后續的迭代、配置及問題排查。物聯網平臺主要提供以下運維能力。
功能 | 說明 | 相關文檔 |
OTA | 設備升級,提供設備遠程固件升級的能力。 | |
遠程登錄 | 基于安全隧道,提供控制臺通過SSH協議遠程登錄設備的能力。 | |
日志上報 | 設備上報運行日志到物聯網平臺,通過該日志可進行設備問題排查。 | |
遠程配置 | 遠程配置設備。 | |
NTP服務 | 提供設備時間同步的能力。 |
功能項 | C Link SDK Extended | C(v4.x) | C(v3.x) | Android | Java | Python | Node.js | |
監控運維 | OTA | 不支持 | 不支持 | |||||
遠程登錄 | 不支持 | |||||||
日志上報 | 不支持 | 不支持 | ||||||
遠程配置 | 不支持 | |||||||
NTP服務 | 不支持 |