Zigbee End Device Switch Example App
Introduction
This document discusses how to use the Zigbee Switch Example App and the different parts that compose it. Zigbee Switch Application is an example which exercises different features of TI Z-Stack.
Some of the features exercised include:
- Base Device Behavior attribute configuration.
- Switch device that acts as Initator of Finding and Binding.
- Bind table usage to send messages.
Hardware Prerequisites
Software Prerequisites
Code Composer Studio™ (CCS) v7.3 or newer
Functional Description
Software Overview
This section describes software components and the corresponding source file.
Application Files
- zcl_samplesw.c/.h: Contains the application’s event loop, device initialization function calls (for timers, peripherals, Nvm, LEDs, Switches, Serial interface), Zigbee stack notifications and all Switch specific logic.
- zcl_samplesw_data.c/.h: Contains the endpoint, cluster and attribute definitions for this sample application.
- main.c Defines the application task, the application stack size.
- bdb_interface.h Defines commissioning parameters to be used and configured in the application upon calling commissioning methods (see zclSampleSw_initParameters()).
Example Usage
This section describes how to use this sample application.
Buttons
BTN-1
: Starts the commissioning process.BTN-2
: Toggles the Light devices binded during the commissioning process.
Serial interface
- Open a serial session (e.g.
PuTTY
, etc.) to the appropriate COM port.- The COM port can be determined via Device Manager in Windows or via
ls /dev/tty*
in Linux.
- The COM port can be determined via Device Manager in Windows or via
The connection will have the following settings:
Baud-rate: 115200
Data bits: 8
Stop bits: 1
Parity: None
Flow Control: None
Note: The serial output is known to be formatted incorrectly in Tera Term and in the CCS Terminal.
The serial interface allows you to control the commissioning configuration as well as application behavior. The commissioning interface is common for all applications and is implemented in the module zcl_sampleapps_ui.c/.h. Any application specific behavior of the serial interface is implemented in the example application files.
The serial interface implements a common set of menus described in Application Overview. This common menu has to be used to commission the device into a network.
Commissioning the Device Into the Network
Zigbee end devices can only join networks, this is done using the Steering Mode and executing the commissioning process in the Commissioning Screen. Zigbee end devices must also have a router parent device (this can be either Zigbee Coordinator or Zigbee Router), which is the device that allows it to join. End Devices cannot transmit/receive frames unless these goes through its parent. If an end device lost its parent, then it cannot be active in the network until it find another suitable parent. This sample application uses stack notifications (zstackmsg_CmdIDs_BDB_NOTIFICATION) to automatically find a new suitable parent if it is lost (unresponsive due to any reason).
Interfacing with the Light Example App
Once the Light and Switch device are in the same network, enable the Finding and Binding Mode and excecute it from the Commissioning Screen. When Finding and Binding is executed, the Light device be set in Identify mode for 180 seconds, during this time Switch device must perform Finding and Binding as well to find the Light device in Identify mode and create a bind to it. The status of the Identify process is shown in Commissioning Screen
Finding and binding status screen
IdXXX shows the remaining XXX seconds in Identify mode, SrchYYY/ZZ shows the remaining YYY seconds searching for devices in Identify mode and ZZ the number of binds created during this process. Once the Switch device has the bind, it will be able to toggle the Light in the ToggleLight screen.
Light device will set IdXXX, while Switch device will set SrcYYY and count the binds in ZZ. Multiple devices can perform this procedure at the same time, by default up to 4 lights can be binded to a single Switch (defined by NWK_MAX_BINDING_ENTRIES). There is no limit on the number of Switches that can control a single Light.
Enter into App Menu to access to application specific application controls.
Application menu entrance screen
Now the Light can be Toggled in the Toggle Screen. This can be done in the Light device to Toggle the Light locally, or can be done remotely by Switch device.
Toggle light screen