Tmall Genie control the Zigbee devices via cloud with Micrium OS - MarkDing/IoT-Developer-Boot-Camp GitHub Wiki

Zigbee Router Bridge连接到阿里云

目录

1. 简介

本项目的主要目的开发一个Zigbee的bridge,通过这个bridge将Zigbee设备连接到阿里云,从而实现使用天猫精灵来控制Zigbee网络中的设备。项目的示意图如下:

此外,在本项目中,使用Amazon的Echo Plus作为Zigbee的coordinator,首先将Zigbee设备加入由echo plus创建的Zigbee网络中,通过echo plus可以直接控制。另外一方面,本项目开发的router bridge也是加入到echo plus的网络中,然后通过这个bridge将zigbee网络中的设备加入阿里云。最终可以实现同时使用天猫精灵和echo plus来控制。

  1. 项目中涉及的平台和组件包括:

    • 天猫精灵平台,只需购买一台天猫精灵智能音箱,使用淘宝账号登录即可。

    • 阿里物联生活平台,需要注册帐号,并创建相关产品。

    • Zigbee router bridge, 即本项目开发的目标。由WiFi和Zigbee两部分组成,用UART接口连接二者。

      • Zigbee部分,基于Silicon Labs公司的EFR32MG12以及EmberZnet SDK开发;
      • WiFi部分,基于Silicon Labs公司的WGM110模组开发;
    • Amazon Echo Plus,用户需要在手机端下载Alexa APP来控制echo plus

  2. 涉及的资源和资料链接:


2. 创建Zigbee工程

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官方不提供技术支持。

推荐使用GCC来编译,因为使用IAR来编译阿里云的SDK的时候,会出现很多编译错误,需要逐条修改,这些编译错误大部分都是一些类型不严格匹配的问题。

2.1. 创建工程

主要步骤如下:

  1. 启动Simplicity Studio, 打开菜单File-->New-->Project;
  2. 选择Silicon Labs AppBuilder Project, 然后点击Next继续;
  3. 选择Silicon Labs Zigbee, 然后点击Next继续;
  4. 选择EmberZnet 6.7.6.0 GA Soc 6.7.6.0, 然后点击Next继续;
  5. 选择ZigbeeMinimal, 然后点击Next继续;
  6. 输入工程名称Z3Aliyun, 然后点击Next继续;
  7. Boards列表框, 选择BRD4162A, 然后Part框会自动更新成对应的芯片型号。在编译器中选择GCC,最后点击Finish完成。 上述步骤完成后,Simplicity Studio会自动打开锁创建的工程对应的isc文件。

2.2. 配置工程

  1. 选择ZCL Clusters tab, 选中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
  2. 选择Zigbee Stack tab, 修改设备类型为Coordinator or Router
  3. 选择Plugins tab, 勾选或取消如下plugins:
    • Counters
    • Device Table
    • Ember Minimal Printf
    • Standard Printf Support
    • Idle/Sleep
    • Micrium-RTOS
      • CPU Usage Tracking
      • Application Task 1, Stack Size set to 2048
    • Network Creator
    • Network Creator Security
    • Network Steering
      • Optimize scans
      • Radio output power set to 10dbm
    • RAIL Library
    • RAIL Library Multiprotocol
    • Simple main
    • Source Route Library
      • Source Route Table Size set to 32
    • Stack Diagnostics
    • NVM3 Library
      • Cache Size set to 254
    • Zigbee PRO Stack Library
      • Child Table Size set to 32
      • Packet Buffer Count set to 32
      • Broadcast Table Size set to 32
  4. 选择Printing and CLI tab, 勾选Add Custom CLI sub-menu
  5. 选择Callbacks tab, 勾选/取消如下callbacks函数:
    • emberAfPluginNetworkSteeringCompleteCallback
    • emberAfStackStatusCallback
    • emberAfHalButtonIsrCallback
    • emberAfMainInitCallback
    • emberAfMainTickCallback
    • emberAfReadAttributesResponseCallback
    • emberAfPluginMicriumRtosAppTask1InitCallback
    • emberAfPluginMicriumRtosAppTask1MainLoopCallback
  6. 选择Includes tab, 添加如下自定义宏:
    • NO_LED 值为 1
    • MBEDTLS_CIPHER_MODE_CBC 值为 1
    • MBEDTLS_CIPHER_MODE_CFB 值为 1
  7. 选择