概述
前面已经将芯科的Z3GatewayHost应用移植到了ESP32上,基本完成了在zigbee方面的host-ncp架构搭建,接下来就是考虑怎么将其应用在业务上。目前,物联网主流的方向是业务上云,多端应用,场景驱动。
但是,对于初创公司或者小型公司,他们往往没有太多的资源和精力去搭建自己的物联网应用平台,因此选择合适的大型物联网平台进行对接,使用这些平台所提供的能力和服务,将有利于加快自己产品推出市场的速度。
目前,国内在物联网方面比较成熟、著名的解决方案平台,有阿里的物联网平台、移动的ONENET平台、电信的天翼物联平台等;其中阿里的物联网平台又细分为面向企业的“企业物联网”平台和面向智能家居的“生活物联网”平台。
在这里将记录一下将ESP32-EFR32网关对接到阿里生活物联平台的一些关键内容。
参考文档
1.《ESP 设备对接阿里云生活物联网平台 & 天猫精灵 IoT 开放平台》
乐鑫官方的开源项目,里面有较为详细的文档描述了如何将ESP32、ESP8266模组快速地接入阿里生活物联网平台,并且有对应的示例代码:三色灯控制;项目实现了通过天猫精灵或者app来控制三色灯的调光等功能,并且集成了方便用户使用的“一键配网”功能,如下图所示。
阿里生活平台的官网指导文档,可以在开发前先属性了解相关的概念,特别是阿里的“物模型”概念。
阿里物模型的介绍:https://help.aliyun.com/document_detail/73727.html
准备工作
在乐鑫的官方项目里面也将得很清楚了,主要就是以下几个步骤:
1.硬件准备:这里使用ESP32-EFR32的开发板
2.生活物联网平台准备:包括产品的创建、设备的创建等;最主要的是拿到生活物联网平台分配的product key, product secert, device name, device secret四元组信息
3.环境、SDK准备:乐鑫编译环境、SDK的准备工作。这里采用ESP-IDF4.1版本
4.编译 ali-smartliving-device-sdk-c 库:在linux环境下编译生成ESP32项目所需的阿里物联网静态库“libiot_sdk.a”
备注:这里因为我们的静态库是需要具备网关能力的,所以在编译的时候,需要打开相关配置项;在ali-smartliving-device-sdk-c目录下的make.settings文件中配置
FEATURE_DEVICE_MODEL_GATEWAY=y
5.将阿里为网关设备分配的product key, product secert, device name, device secret四元组信息,烧录到ESP32中。具体操作方法,可以参考《量产说明》
备注:在ESP-IDF4.1中,相关的“NVS 分区生成工具”调整为以下:
$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate my_single_mfg_config.csv my_single_mfg.bin 0x4000
项目集成
1.链接生活物联网平台的库文件、头文件到项目中,如下所示:(具体可以参考乐鑫的smart_light示例代码)
2.引入乐鑫示例项目中的“factory_restore”和“linkkit_handle”(与阿里平台交互的主要功能)模块,并且注册相关的子设备处理方法(通过网关代理,将子设备上报到生活物联网平台,并接收平台控制指令等)。
3.配置子设备的入网信息,模拟子设备入网,如下图所示
具体的网关示例代码可以参考乐鑫开源项目中以下文档:
《智能生活C-SDK适配FreeRTOS帮助文档.pdf》
《智能生活网关产品参考应用程序说明.pdf》
gateway_main.c、gateway_ut.c:阿里提供的网关开发参考代码。
备注:但参考的时候注意ESP32是采用freeRTOS的,所以某些地方实现有所不同,建议还是直接在乐鑫的linkkit_solo.c的基础上进行开发。
另外,ESP32中用于存储四元组信息的nvs分区,需要和“wrapper_product.c”中的配置相一致,如下所示
4.编译工程,烧录项目到ESP32-EFR32开发板上,第一次启动,需要进行配网设置;配网的二维码可以在网关的产品详情中找打。
5.配网成功后,网关设备连接wifi,能正常上网后,将启动与阿里生活平台的mqtt对接,可以看到相关子设备也上线,定时上报属性值。
6.在阿里的“云智能”app和管理后台,也能查看到网关、子设备的在线信息;对于支持天猫精灵控制的设备,也可以通过天猫精灵app或者语音进行控制。
总结
因为乐鑫的ESP32模组已经通过了阿里生活物联网平台的认证,并且有乐鑫官方的对接示例,所以整个移植工作并不复杂。
到此,我们的网关在具备了zigbee网关能力后,又增加了阿里物联网平台接入功能;也可以利用阿里的app或者天猫精灵的app,快速地推广自己的产品。
但如果产品量产后,要向阿里生活物联网平台购买激活码(测试期间,一个产品能接入50个测试终端,这个已经相当慷慨了;移动的ONENET平台在个人认证后,测试时也只能创建3个产品,接入10个终端),相关的费用要考虑进去。
另外,阿里生活物联网平台提供了数据解析服务;如果你的网关是通过二进制方式进行数据交换,那可以通过这个服务,将上下行数据在生活物联网平台端进行转换,而不用在网关端进行;这样有助于网关功能的解耦,增加系统的可扩展性。如下图所示,具体参考地址为:https://help.aliyun.com/document_detail/68702.html
阿里生活物联网平台简化了很多智能家居产品生产方面的工作,对于中小企业来说,应该是一个可以考虑的方案。
补充
阿里生活物联网平台,提供了设备OTA功能,入口位于项目管理页面的右侧的“运营中心”里面的“设备运维”->"固件升级"
ota代码调用主要参考linkkit_solo.c中的user_fota_event_handler、user_cota_event_handler(为什么有2个ota?)
esp32平台的ota实现代码主要参考wrapper_ota.c
设备OTA相关的帮助文档地址,如下:https://help.aliyun.com/document_detail/131448.html