-
Notifications
You must be signed in to change notification settings - Fork 257
Home
物联网套件是阿里云专门为物联网领域的开发人员推出的, 其目的是帮助开发者搭建安全且性能强大的数据通道, 方便终端(如传感器, 执行器, 嵌入式设备或智能家电等等)和云端的双向通信.
具体来说, 物联网套件提供了如下的能力:
- 嵌入式设备快速接入(设备端SDK)
- 设备管理
- 设备和数据信息安全
- 桥接到阿里云其他产品, 对设备数据存储/计算
在物联网套件场景架构图中, 物联网设备端SDK就是将嵌入式设备连接到阿里云的部分, 也是这组维基页面将要详细介绍的
+-- build-rules : 编译构建系统, 基于GNU Make和bash脚本
+-- doc : 阿里云产品帮助文档页面(https://help.aliyun.com/product/30520.html)的文档镜像
+-- layout.mk : 编译系统配置, 指定SDK的目录排布
+-- LICENSE : 软件许可证, 物联网套件设备端SDK使用的是Apache-2.0版本软件许可证
+-- makefile : 基于GNU Make编译SDK的Makefile
+-- make.settings : 功能裁剪配置, 可编辑该文件裁剪通信模块如MQTT|CoAP, 或裁剪服务模块如OTA|Shadow
+-- README.md : 快速开始导引, 可浏览该文件快速体验如何注册自己的阿里云设备ID, 并结合设备端SDK连接
+-- sample : 例程目录, 演示通信模块和服务模块的使用
| +-- mqtt : 演示如何使用通信模块MQTT的API
| +-- coap : 演示如何使用通信模块CoAP的API
| +-- device-shadow : 演示如何使用服务模块DeviceShadow的API
| +-- http : 演示如何使用通信模块HTTP的API
| +-- ota : 演示如何使用服务模块OTA的API
+-- src
+-- sdk-impl : SDK的接口层, 提供总体的头文件, 和一些API的接口封装
+-- sdk-tests : SDK的单元测试
+-- mqtt : 通信模块, 实现以MQTT协议接入
+-- guider : 通信模块, 允许以HTTPS+MQTT协议接入, 保持向下兼容
+-- coap : 通信模块, 实现以CoAP协议接入
+-- http : 通信模块, 实现以HTTP协议接入
+-- ota : 服务模块, 实现基于MQTT|CoAP+HTTP+TLS的固件下载通道
+-- shadow : 服务模块, 实现设备影子
+-- platform : 硬件平台抽象层, 存放不同嵌入式设备的抽象层接口实现, 支撑以上模块形成跨平台
+-- import : 外部输入目录, 存放芯片/模组厂商提供的头文件/二进制库, 如高通NBIoT芯片MDM9206和芯讯通开发板SIM7000C相关文件
+-- configs : 硬件平台编译配置, 存放编译系统需要读入的各平台编译方式, 如交叉编译工具链的设置, 软件模块的裁剪等
+-- scripts : 编译过程将要外部引用的脚本, 用户不必关注
+-- packages : SDK引用的外部软件模块, 用户不必关注
+-- log : 基础模块, 实现运行日志
+-- system : 基础模块, 实现全局信息保存, 如预置的TLS/DTLS连接时的阿里云官方根证书, 设备标识ID等
+-- tls : 基础模块, 实现TLS/DTLS, 来自裁剪过的开源软件mbedtls
+-- utils : 基础模块, 实现工具函数, 如连接鉴权时的SHA1摘要计算, 或NTP服务器的epoch对时等
根据所编译目标硬件平台的不同, SDK编译的产物也会不同, 但是大体上都一致的呈现如下的结构
output/release/
+-- bin
+-- include
| +-- exports
| | +-- iot_export_coap.h
| | +-- iot_export_errno.h
| | +-- iot_export_http.h
| | +-- iot_export_mqtt.h
| | +-- iot_export_ota.h
| | +-- iot_export_shadow.h
| +-- imports
| | +-- iot_import_coap.h
| | +-- iot_import_config.h
| | +-- iot_import_dtls.h
| | +-- iot_import_ota.h
| +-- iot_export.h
| +-- iot_import.h
+-- lib
| +-- libiot_sdk.a
+-- src
+-- coap-example.c
+-- http-example.c
+-- Makefile
+-- mqtt-example.c
概要说明如下:
-
include/iot_import.h
: 这个头文件中列出为SDK适配新硬件平台时, 需要实现的平台抽象层函数, 以HAL_*()
的方式命名; 编写平台抽象层实现时, 包含此头文件即可 -
include/imports/iot_import_*.h
: 这组头文件按功能模块分列各模块依赖的平台抽象层函数, 例如iot_import_coap.h
中列出用CoAP协议通信需要实现的那些, 若不使用CoAP, 可直接忽略该文件 -
include/iot_export.h
: 这个头文件中列出SDK能提供的所有用户级别API, 也就是供用户调用编写业务应用程序的函数 -
include/exports/iot_export_*.h
: 这组头文件按功能模块分列各模块提供的用户级别API, 例如iot_export_coap.h
中列出用CoAP协议通信时可用的那些, 若不使用CoAP, 可直接忽略该文件 -
lib/libiot_sdk.a
: 这个二进制的压缩库文件就是编译好的所谓**"物联网套件设备端SDK"**, 它配合上面的include/iot_export.h
文件, 分别提供API的接口实现和接口声明, 供用户link到自己的业务应用程序中 -
src/Makefile
: 示例用Makefile, 演示得到lib/libiot_sdk.a
之后, 如何在SDK之外链接它使用起来
以下为华东2站点V2.0+版本的C-SDK提供的功能和对应的API, 用于让用户编写业务逻辑, 封装AT命令时, 也是基于这些API
具体的API列表和对每个API的说明, 可以访问API参考手册页面
更加准确详细和权威的描述, 以代码output/release/include/iot_export.h
, 以及output/release/include/exports/*.h
中的注释为准
如何使用这些API编写应用逻辑, 以代码sample/*/*.c
的示例程序为准
SDK顶层目录的make.settings
文件, 列出了对功能进行裁剪时可以选择打开或者关闭的开关, 可以说明如下:
$ cat make.settings
FEATURE_MQTT_COMM_ENABLED = y
FEATURE_MQTT_DIRECT = y
FEATURE_MQTT_DIRECT_NOTLS = n
FEATURE_COAP_COMM_ENABLED = y
FEATURE_HTTP_COMM_ENABLED = y
它们的含义是:
配置选项 | 含义 |
---|---|
FEATURE_MQTT_COMM_ENABLED | 是否使能MQTT通道功能的总开关 |
FEATURE_MQTT_DIRECT | 是否用MQTT直连模式代替HTTPS三方认证模式做设备认证 |
FEATURE_MQTT_DIRECT_NOTLS | 使用MQTT直连模式做设备认证时, 是否要关闭MQTT over TLS |
FEATURE_COAP_COMM_ENABLED | 是否使能CoAP通道功能的总开关 |
FEATURE_HTTP_COMM_ENABLED | 是否使能Https通道功能的总开关 |
可以编辑make.settings
文件, 把不需要的功能模块关闭, 来减小最终编译出output/release/lib/libiot_sdk.a
库文件的大小, 来节省嵌入式设备上的资源
例如只需要以MQTT
的方式连接, 不需要CoAP
和HTTP
的通道, 可以将默认的make.settings
改动为:
FEATURE_MQTT_COMM_ENABLED = y
FEATURE_MQTT_DIRECT = y
FEATURE_MQTT_DIRECT_NOTLS = n
FEATURE_COAP_COMM_ENABLED = n
FEATURE_HTTP_COMM_ENABLED = n
又比如所使用的嵌入式硬件平台资源非常有限, 不能够运行TLS
加密通道甚至根本没有TLS/DTLS
加解密库, 打算以MQTT over TCP
的方式连接, 则可改动为:
FEATURE_MQTT_COMM_ENABLED = y
FEATURE_MQTT_DIRECT = y
FEATURE_MQTT_DIRECT_NOTLS = y
以上列出的只是功能开关的其中一部分, SDK被编译完成之后, 会显示所有的功能开关和当前配置, 以y
表示打开, 以n
表示关闭, 例如:
$ make
...
...
=========================================================================
o BUILD COMPLETE WITH FOLLOWING SWITCHES:
----
FEATURE_MQTT_COMM_ENABLED : y
FEATURE_MQTT_SHADOW : y
FEATURE_MQTT_DIRECT : y
FEATURE_MQTT_DIRECT_NOTLS : n
FEATURE_COAP_COMM_ENABLED : y
FEATURE_COAP_DTLS_SUPPORT : y
FEATURE_OTA_ENABLED : y
FEATURE_OTA_SIGNAL_CHANNEL : MQTT
FEATURE_OTA_FETCH_CHANNEL : HTTP
FEATURE_MQTT_ID2_AUTH : n
FEATURE_MQTT_ID2_CRYPTO : n
FEATURE_MQTT_ID2_ENV : online
FEATURE_HTTP_COMM_ENABLED : y
设备端SDK大约每个月都会迭代更新一次, 可访问迭代历史页面查看更新历史
- src/configs
- src/scripts
- layout.mk
- make.settings
- makefile
- build-rules/
- src/log
- src/tls
- src/utils
- src/system
- src/platform/os
- src/platform/ssl
- src/mqtt
- src/guider
- src/coap
- src/http
- src/shadow
- src/ota
- sample