ZigBee 3.0: Adding Clusters

Document created by Shweta Chauhan Employee on Jul 27, 2017Last modified by Shweta Chauhan Employee on Jan 18, 2018
Version 2Show Document
  • View in full screen mode

This document describes how to add additional cluster to the Router application in the JN-AN-1217 ZigBee 3.0 Base Device Application Note.

 

The Router application's main endpoint contains Basic, Groups, Identify and OnOff server. The steps below describe how to add two clusters to Router: Temperature Measurement server and OnOff client.

Note that these changes only go as far as making the new clusters added and discoverable, no functionality has been added to these clusters.

 Common/Source/app.zpscfg

The first step is to update the ZigBee PRO Stack Configuration file to add the new clusters (OnOff Client, Temperature Measurement Server) to the Router application endpoint.

The HA profile already contains few clusters but Temperature Measurement cluster was added:

 

The OnOff client was already present in Router endpoint but the Temperature Measurement cluster was then added into Router application endpoint:

 

Router/Build/Makefile

For cluster belonging to General domain, the cluster code is automatically build and linked but for other domains, the compiling and linking needs to be enabled. As Temperature Measurement belongs to Measurement and Sensing domain, enable the cluster code in Makefile:

Router/Source/zcl_options.h

This file is used to set the options used by the ZCL.

Enable Clusters

The cluster functionality for the router endpoint was enabled:

 

Enable any optional Attributes and Commands for the clusters

 Add the cluster creation and initialization into ZigBee Base device definitions

The cluster functionality for some of the clusters is already present on ZigBee Base Device. For Temperature Measurement cluster the functionality was added into ZigBee Base Device.

<Path to JN-SW-4x70 SDK>/ Components/ZCL/Devices/ZHA/Generic/Include/base_device.h

The first step was including the Temperature Measurement header files into base device header file as shown below:

 

The second step was adding cluster instance into base device Instance as shown below:

The next step was to define the cluster into the base device structure as below:

<Path to JN-SW-4x70 SDK>/ Components/ZCL/Devices/ZHA/Generic/Include/base_device.c

The cluster create function for Temperature Measurement cluster for server was called in ZigBee base device registration function:

 

Router/Source/app_zcl_task.c

Temperature Measurement Server Cluster Data Initialization - APP_vZCL_DeviceSpecific_Init()

The default attribute values for the Temperature Measurement clusters are initialized:

3 people found this helpful

Outcomes