Tmall Genie control the Zigbee devices via cloud with Micrium OS - MarkDing/IoT-Developer-Boot-Camp GitHub Wiki
本项目的主要目的开发一个Zigbee的bridge,通过这个bridge将Zigbee设备连接到阿里云,从而实现使用天猫精灵来控制Zigbee网络中的设备。项目的示意图如下:
此外,在本项目中,使用Amazon的Echo Plus作为Zigbee的coordinator,首先将Zigbee设备加入由echo plus创建的Zigbee网络中,通过echo plus可以直接控制。另外一方面,本项目开发的router bridge也是加入到echo plus的网络中,然后通过这个bridge将zigbee网络中的设备加入阿里云。最终可以实现同时使用天猫精灵和echo plus来控制。
-
项目中涉及的平台和组件包括:
-
天猫精灵平台,只需购买一台天猫精灵智能音箱,使用淘宝账号登录即可。
-
阿里物联生活平台,需要注册帐号,并创建相关产品。
-
Zigbee router bridge, 即本项目开发的目标。由WiFi和Zigbee两部分组成,用UART接口连接二者。
- Zigbee部分,基于Silicon Labs公司的EFR32MG12以及EmberZnet SDK开发;
- WiFi部分,基于Silicon Labs公司的WGM110模组开发;
-
Amazon Echo Plus,用户需要在手机端下载Alexa APP来控制echo plus
-
-
涉及的资源和资料链接:
Silicon Labs公司的Simplicity Studio可以从官网下载,建议安装到默认的路径(C盘预留20GB以上的空间)。由于需要下载Zigbee协议SDK, 需要购买Zigbee开发套件才能拥有下载权限。本项目基于EmberZnet SDK 6.7.6版本开发。此外,此项目中还是用到了Micrium OS操作系统,也需要从Simplicity Studio中下载安装。最后由于EmberZnet中支持Micrium OS的插件现在只支持使用IAR来编译,因此需要安装IAR。对于没有IAR的用户,可以通过如下的方式来支持Micrium OS,但是Silicon Labs官方不提供技术支持。
- 下载Micrium RTOS plugin的配置文件, 替代
protocol\zigbee\app\framework\plugin-soc\micrium-rtos\plugin.properties. (请提前做好备份) - 下载BLE plugin的配置文件, 替代
protocol\zigbee\app\framework\plugin-soc\ble\plugin.properties. (请提前做好备份)
推荐使用GCC来编译,因为使用IAR来编译阿里云的SDK的时候,会出现很多编译错误,需要逐条修改,这些编译错误大部分都是一些类型不严格匹配的问题。
主要步骤如下:
- 启动Simplicity Studio, 打开菜单
File-->New-->Project; - 选择
Silicon Labs AppBuilder Project, 然后点击Next继续; - 选择
Silicon Labs Zigbee, 然后点击Next继续; - 选择
EmberZnet 6.7.6.0 GA Soc 6.7.6.0, 然后点击Next继续; - 选择
ZigbeeMinimal, 然后点击Next继续; - 输入工程名称
Z3Aliyun, 然后点击Next继续; - 在
Boards列表框, 选择BRD4162A, 然后Part框会自动更新成对应的芯片型号。在编译器中选择GCC,最后点击Finish完成。 上述步骤完成后,Simplicity Studio会自动打开锁创建的工程对应的isc文件。
- 选择
ZCL Clusterstab, 选中Endpoint 1, 然后在下面的ZCL device type一栏选择Zigbee Custom->HA Devices->HA Color Dimmer Switch。然后选择如下的Cluster:- On/Off Cluster client side
- Level Control Cluster client side
- Shade Configuration Cluster client side
- Color Control Cluster client side
- 选择
Zigbee Stacktab, 修改设备类型为Coordinator or Router。 - 选择
Pluginstab, 勾选或取消如下plugins:- Counters
- Device Table
- Ember Minimal Printf
- Standard Printf Support
- Idle/Sleep
- Micrium-RTOS
- CPU Usage Tracking
- Application Task 1,
Stack Sizeset to2048
- Network Creator
- Network Creator Security
- Network Steering
- Optimize scans
-
Radio output powerset to10dbm
- RAIL Library
- RAIL Library Multiprotocol
- Simple main
- Source Route Library
-
Source Route Table Sizeset to32
-
- Stack Diagnostics
- NVM3 Library
-
Cache Sizeset to254
-
- Zigbee PRO Stack Library
-
Child Table Sizeset to32 -
Packet Buffer Countset to32 -
Broadcast Table Sizeset to32
-
- 选择
Printing and CLItab, 勾选Add Custom CLI sub-menu - 选择
Callbackstab, 勾选/取消如下callbacks函数:- emberAfPluginNetworkSteeringCompleteCallback
- emberAfStackStatusCallback
- emberAfHalButtonIsrCallback
- emberAfMainInitCallback
- emberAfMainTickCallback
- emberAfReadAttributesResponseCallback
- emberAfPluginMicriumRtosAppTask1InitCallback
- emberAfPluginMicriumRtosAppTask1MainLoopCallback
- 选择
Includestab, 添加如下自定义宏:-
NO_LED值为1 -
MBEDTLS_CIPHER_MODE_CBC值为1 -
MBEDTLS_CIPHER_MODE_CFB值为1
-
- 选择