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服务 | 不支持 |