您可通过物联网平台提供的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
。