Once you have created your projects, it's time to use App Builder to configure the projects for the types of devices they are going to. As we introduce new parts of app builder, we will do our best to explain to you the pieces which you are using and hopefully educate you on making the best use of app builder.
Let's take a look at the MyLight.isc file.
By default you should be on the General tab of your project. It consist of the Application configuration panel and the Information configuration panel. The application configuration panel gives you information about location of the project and the name of the device. This panel also allows you the view the Board, chip and compiler and configure them with the Edit Architecture button.
Pre 6.6.0: By default you should be on the General tab of your project. This gives some basic settings for your project, such as board, chip, and compiler. Below this is the Application configuration, which outlines the version of EmberZNet you are using and the location of the project. If you had an example project from the stack, this would give you a description of the operation of the application. And directly underneath this is multi-network configuration. This isn't something we will use today, but if you are looking for details, AN724 will outline multi-networking.
Pre 6.6.0: The next tab is the ZCL global tab. This is identification and versioning information for your part. You don't want to make any changes here for this project.
After this is the ZCL clusters tab, here is where we will make our first changes. On this tab you configure the ZCL elements of your device, namely your endpoints, the clusters which are enabled on your endpoints, and the attributes and commands that are supported by these clusters. After version 6.6.0 the Manufacturer ID and Default response policy can be changed on this tab as well as the ZCL global tab has been removed.
For our light device we only need a single endpoint, which is the default, but we need to pick a device type that will work for our needs. While you can build custom devices with whatever clusters and attributes you want supported, AppBuilder includes a number of ZCL device types which contain the preconfigured clusters and attributes which are normal for a particular device type. Since we are building a light, we can use a default device included with the stack, for this project find the LO On/Off Light Switch under the LO devices. This light definition has a number of default clusters for you, such as Basic, Identify, Groups, Scenes and On/Off. For this project we are going to focus on the On/Off cluster. But after you are done you can explore the other settings or even extend this light to be dimmable or color control, to add more functionality.
Moving to the Zigbee stack tab (Pre 6.6.0: Znet stack tab) we will configure the Zigbee device and security level. This tab is where many of the Zigbee options are set. For the light, it will be a Coordinator/Router and utilize Zigbee 3.0 Security. These should be the default settings for this device, but if these settings aren’t correct they can be changed here. There are also some settings here for Radio configugration, ZDO and Inter-PAN settings, but they are beyond the scope of this project. After 6.6.0 you can also configure multi-networking related features on this tab and add custom ZCL additions.
Proceeding to the Printing and CLI tab we find the configuration of Debug printing as well as the setup of the CLI. Debug printing allows you to add additional printing options beyond the ones that are supported by a standard application. The Cluster debugging includes print statements that are specific to the clusters enabled for your device. The General-purpose debug printing gives you additional printing within different aspects of your application, such as security or service discovery. You can even created your own custom messaging within this block. Along the bottom you will settings for customizing your CLI. In this section you can enable different CLI commands for your device beyond the standard ones which are included. For our needs, we are going to enable the On/Off cluster printing can be found in the Debug Configuration panel under Application specific debug printing (Pre 6.6.0: On/off cluster printing can be found along the top), so check box boxes next to this so that these print statements are compiled in and enabled at startup. But the normal CLI as it's built will be fine for our needs, so there are no changes needed for the bottom section.
The next tab is the HAL configuration tab. As noted, this is where some hardware settings are made. You want to be sure that your device is setup for the Application bootloader, any other changes, we will make in a future step. This is also one of the places where you can access Hardware Configurator which we will use in a later step.
Finally, we need to configure the required plugins, which can be found on the corresponding tab. Plugins are the EmberZNet method to quickly enable or disable functionality supported by our application layer with a simple click of the button. For plugins, you should use all of the plugins which are included by default with the project and add the following:
Just to be safe, save your project to prevent anything from being lost. We aren't quite done yet, so don't hit the generate button just yet.
Now, let's open up MySwitch.isc and configure the Switch similar to the light. Since you know where to find these settings, they should be much easier to set up.
Like the light, your device will have 1 endpoint. But the ZCL device type will be an LO On/Off Light Switch.
It will utilize Zigbee 3.0 Security but will be an End Device. Don't make it a sleepy end device, you won't be able to get as much response from the CLI, and we need to be able to interact with the device as we make our settings.
For plugins, you should use all of the plugins which are included by default with the project and add the following:
Because the switch is an end device you can exchange the Zigbee PRO Stack Library Plugin for the Zigbee Pro Leaf Library. This is an optional step, but the leaf library removes many of the additional stack libraries which are only needed for routers and coordinators. The result is a smaller library which consumes less power. While we aren't using the sleepy end device, this would help you achieve a much lower current draw when your device sleeps.
Finally, located the Binding Table Library plugin. It has one option to configure – the size of the binding table, we need to make sure our table has at least 6 entries. We probably won't need this many entries, but we want to make sure we have them, just in case.
There is one final setting you need to make to both devices to make sure you can run the CLI. This involves making sure that the serial port is configured correctly.
On both mySwitch and myLight go back to the plugins tab and you want to make sure that the Serial plugin is enabled. From within the Serial plugin you need to ensure both SERIAL and USART0 are enabled (select each in the peripheral box). Finally, because the Thunderboard doesn’t support hardware flow control, we need to change the flow control type within the USART0 peripheral (in the serial plugin), make sure that Flow Control mode is set to Xon-Xoff.
Once you have configured both applications, you want to save each project.
Next, click the Generate button on each project. Just like our bootloader this will create or link to all of the files necessary to build the project. It shouldn't take too long, but you will have a few moments of waiting until the Generation successful window appears. Once you get that, click OK.
Finally, you can click the hammer icon on the toolbar
(or any other command that will begin building your application) and build your application. This will take a minute or two, depending on the speed of your computer. You can follow the progress in your Console window at the bottom. Once the files are compiled and linked, some post build scripts will run. If these run correctly you will get the following message:
Image-builder not invoked since "OTA Bootload Cluster Policy plugin" is not enabled 16:55:26 Build Finished (took 48s.142ms)
The key is the Image-builder message. Image-builder is run after your project compiles correctly. Once you see that, you know that your project has compiled successfully. Next we need to flash it to our device and test it.
If you get some sort of error during your build, return to your project .ISC file and check your work setting on your device and see if you missed any steps or have an incorrect setting.
With respect to adding the plugins for the light, where are the last two "On/Off Server cluster plugin" and "Identify plugin". Is it the on/off from the HA category or ZLL?. Is the Identify plugin the one under Common.
It is not clear from the page how to configure Serial interface. I have done it following way but after compiling and flashing the program and after hitting multiple 'enter' key presses, I can't see the prompt on terminal.
I'm using SLWSTK6102A xGM210P Wireless Module Starter Kit - Silicon Labs (silabs.com) development board. Can someone confirm if this is correct and what would be wrong if I'm not getting the prompt on serial (which is part of next step)?