阿里云IOT-C-SDK系列(4)SDK配置选项理解

阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录
阿里云IOT-C-SDK系列(2)快速体验:移植+示例C代码
阿里云IOT-C-SDK系列(3)快速体验:不使用SDK自带编译系统进行移植示例及Makefile的编写示范
在前面的文章中,我们了解到,无论是使用SDK自带的编译系统进行开发,还是使用代码抽取功能,都需要使用SDK自带的配置脚本或程序,通过选择我们需要的功能,获取配置文件make.setting,然后编译系统或抽取脚本根据配置文件实现功能代码的抽取,所以SDK的配置选项的理解就尤为重要。下面我们就结合官方手册,进一步理解一下各配置选项。
官方手册:配置选项

一、功能选型定义。

1、FEATURE_MQTT_COMM_ENABLED

MQTT上云功能开关,也就是使用MQTT协议与云服务器进行连接和交互,这基本上是最常用的连接协议。

2、FEATURE_COAP_COMM_ENABLED

CoAP上云功能开关,另外一种连接协议,一种物联网受限应用协议,这个以后会详细解释,这里对于网关而言,不经常用。

3、FEATURE_HTTP_COMM_ENABLED

HTTP/S上云功能开关, 所谓HTTP/S上云是指搭载了C-SDK的嵌入式设备和阿里云服务器之间使用 HTTP 协议或 HTTPS 协议进行连接和交互.

4、FEATURE_DYNAMIC_REGISTER

一型一密/动态注册功能开关,所谓动态注册是指不需要为同个品类下的不同设备烧录不同的三元组, 只需烧录相同的productSecret, 每个设备在网络通信中动态注册自己,目前我们还是使用一型一密的方式,这个更安全一些。

5、FEATURE_DEPRECATED_LINKKIT

高级版接口风格的开关,这里deprecated(弃用)。配置进行高级版物模型相关的编程时,C-SDK是提供
linkkit_xxx_yyy()风格的旧版接口,还是提供IOT_Linkkit_XXX()风格的新版接口,很明显我们要使用新版接口。

6、FEATURE_DEV_BIND_ENABLED

绑定功能开关,只有SDK连接飞燕平台的客户才需要关注并打开它,用于使能设备被飞燕的公版app控制,可以绑定设备和用户账号。

7、FEATURE_DEVICE_MODEL_GATEWAT

高级版网关能力的开关,配置进行高级版物模型相关的编程时,C-SDK提供linkkit_xxx_yyy()风格的单品接口,还是提供linkkit_gateway_xxx_yyy()风格的网关接口,这里应该是使能。

8、FEATURE_HTTP2_COMM_ENABLED

HTTP2上云功能开关, 所谓HTTP2上云是指搭载了C-SDK的嵌入式设备和阿里云服务器之间使用 HTTP2 协议进行连接和交互,目前不需要。

9、FEATURE_MQTT_DIRECT

MQTT直连功能开关, 所谓MQTT直连是指设备和阿里云服务器之间使用 MQTT 协议进行连接, 而不会前置基于 HTTP 协议认证的交互过程,这个对于我们使用高级版物模型来说,是不需要的。

10、FEATURE_OTA_ENABLED

固件升级功能开关,所谓固件升级是指设备从阿里云服务器上下载用户在IOT控制台中上传的固件文件功能,这个是必须的。

11、FEATURE_DEVICE_MODEL_ENABLE

高级版物模型能能力的功能开关,是指设备可以基于服务/属性/事件三要素的Alink洗衣和服务端通信。

12、FEATURE_SUPPORT_TLS

在TLS层是否使用TLS的功能开关, 关闭则代表用不带TLS加密的TCP连接连云,这个几乎是必备的。

13、FEATURE_WIFI_PROVISION_ENABLED

WiFi配网的功能开关, 所谓WiFi配网是阿里巴巴自研的一种从手机app发送WiFi网络的SSID和密码给设备端的通信协议。

14、FEATURE_ATM_ENABLED

这里是ATM功能使能,所谓ATM功能,一般是MCU+GPRS 模组的方式连接云服务器,而GPRS模组通过AT指令进行配置和数据收发,所以需要使能该功能,SDK中提供了SIM800C和MK3060这两种模组的案例,当我们使用GPRS模组时,可以参考着两个案例进行移植修改。

15、FEATURE_AT_TCP_ENABLED

当我们选择FEATURE_ATM_ENABLED后,进入下一级菜单,会选择GPRS模组使用AT+TCP的方式连接服务器,还是AT+MQTT的方式连接服务器。默认是AT+TCP的方式,只有我们不选择AT+TCP的方式时,才会弹出AT+MQTT的选项。

16、FEATURE_AT_MQTT_ENABLED

模组通过AT+MQTT命令方式与云服务器连接,只有不选择AT+TCP的时候,该选项才会弹出。

二、常用功能选型案例。

1、使用MCU + GPRS模组连接云服务器。

主要配置选择如下:

FEATURE_MQTT_COMM_ENABLED    = y          # 虽然CoAP更省电, 但不能做云端消息的及时下推, 所以目前蜂窝网模组仍主要用MQTT的方式上云
FEATURE_MQTT_DIRECT          = y          # MQTT直连效率更高, 对网络远慢于WiFi的蜂窝网模组而言, 直连开关必须打开
FEATURE_OTA_ENABLED          = y          # 一般蜂窝网模组的客户, 也会使用阿里提供的固件升级服务
FEATURE_DEVICE_MODEL_ENABLED = n          # 蜂窝网模组网速很慢, 资源较少, 所以这种模组的客户一般不会用高级版, 而只需要基础版的MQTT上云
FEATURE_DEVICE_MODEL_GATEWAY = n          # 蜂窝网模组一般不集成高级版(物模型)功能, 并且它也不会下联其它嵌入式设备分享MQTT上云通道
FEATURE_WIFI_PROVISION_ENABLED = n        # 蜂窝网模组不通过WiFi协议连接公网, 因此关闭WiFi配网的开关
FEATURE_SUPPORT_TLS          = y          # 绝大多数的客户都是用标准的TLS协议连接公网, 对蜂窝网模组, 甚至可能连这个选项都关闭

2、基于Linux系统的网关

FEATURE_MQTT_COMM_ENABLED    = y          # 一般Linux网关都有固定供电, 所以都采用MQTT的方式上云
FEATURE_MQTT_DIRECT          = y          # MQTT直连效率更高, 该选项只在部分海外设备上才会关闭
FEATURE_OTA_ENABLED          = y          # 一般Linux网关的客户, 都会使用阿里提供的固件升级服务
FEATURE_DEVICE_MODEL_ENABLED = y          # 一般Linux网关片上资源充足, 可以容纳高级版, 所以打开
FEATURE_DEVICE_MODEL_GATEWAY = y          # 如上述说明, 要具备高级版网关功能的场景, 当然打开这个选项
FEATURE_WIFI_PROVISION_ENABLED = y        # 取决于Linux网关是否用WiFi做上行并使用阿里的配网app/sdk, 如果皆是, 则打开这个选项
FEATURE_SUPPORT_TLS          = y          # 绝大多数的客户都是用标准的TLS协议连接公网

三、使用注意

这个配置选项直接决定了我们抽取出的源码的功能,这个一定是要根据实际的软硬件功能进行选择,比如说我们开发的是一个网关,那么我们就必须要选择 FEATURE_DEVICE_MODEL_GATEWAY,因为当我们翻看SDK的源码时,发现源码中使用了“条件编译”,而条件编译的条件判断就是我们选择的 功能配置 宏定义,所以一定需要根据自己的实际软硬件环境来进行功能配置。

发布了247 篇原创文章 · 获赞 257 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/99765636