您可通过物联网平台提供的C LinkSDK Extended简化开发过程、快速连接设备和物联网平台,将海量设备数据采集上云。本文简要介绍C LinkSDK Extended的架构和功能。


SDK架构

C LinkSDK Extended以C99编写,开源发布,目前仅支持Linux系统设备。

device

源码目录结构

/device-core 设备的核心模块,必选功能模块,功能包括:

功能

说明

设备认证

  • 支持通过设备密钥的方式对设备进行认证,并支持动态注册。

  • 支持X.509对设备进行认证。

设备连接

将设备与物联网平台建立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.haiot_xxx_api.h

    • 所有组件返回值的值域互不重叠,共同分别分布在0x0000 - 0xFFFF