nRF5 SDK for Thread and Zigbee v1.0.0
Simple sensor

Simple Sensor device has 3 clusters (see spec 7.4.13):

Simple Sensor device sample

Example
Declaring clusters
/******************* Declare attributes ************************/
/* Basic cluster attribute variables */
zb_uint8_t g_attr_zcl_version = ZB_ZCL_BASIC_ZCL_VERSION_DEFAULT_VALUE;
zb_uint8_t g_attr_power_source = ZB_ZCL_BASIC_POWER_SOURCE_DEFAULT_VALUE;
ZB_ZCL_DECLARE_BASIC_ATTRIB_LIST(basic_attr_list, &g_attr_zcl_version, &g_attr_power_source);
/* Identify cluster attribute variables */
zb_uint16_t g_attr_identify_time = 0;
ZB_ZCL_DECLARE_IDENTIFY_ATTRIB_LIST(identify_attr_list, &g_attr_identify_time);
/* Binary input attribute variables */
zb_bool_t g_out_of_service = ZB_ZCL_BINARY_INPUT_OUT_OF_SERVICE_DEFAULT_VALUE;
zb_bool_t g_present_value = ZB_FALSE;
zb_bool_t g_status_flag = ZB_ZCL_BINARY_INPUT_STATUS_FLAG_DEFAULT_VALUE;
ZB_ZCL_DECLARE_BINARY_INPUT_ATTRIB_LIST(binary_input_attr_list, &g_out_of_service, &g_present_value, &g_status_flag);
/********************* Declare device **************************/
ZB_HA_DECLARE_SIMPLE_SENSOR_CLUSTER_LIST(simple_sensor_clusters, basic_attr_list, identify_attr_list,
binary_input_attr_list);
ZB_HA_DECLARE_SIMPLE_SENSOR_EP(simple_sensor_ep, HA_SIMPLE_SENSOR_ENDPOINT, simple_sensor_clusters);
ZB_HA_DECLARE_SIMPLE_SENSOR_CTX(simple_sensor_ctx, simple_sensor_ep);
Registering device list
ZB_AF_REGISTER_DEVICE_CTX(&simple_sensor_ctx);
ZB_AF_SET_ENDPOINT_HANDLER(HA_SIMPLE_SENSOR_ENDPOINT, zcl_specific_cluster_cmd_handler);
Example of command handler
zb_uint8_t zcl_specific_cluster_cmd_handler(zb_uint8_t param)
{
zb_buf_t *zcl_cmd_buf = (zb_buf_t *)ZB_BUF_FROM_REF(param);
zb_bool_t cmd_processed = ZB_FALSE;
/* Command from client to server */
switch (cmd_info->cluster_id)
{
if (cmd_info->is_common_command)
{
switch (cmd_info->cmd_id)
{
TRACE_MSG(TRACE_ZCL3, "Got response in cluster 0x%04x",
( FMT__D, cmd_info->cluster_id));
/* Process default response */
cmd_processed = ZB_TRUE;
break;
default:
TRACE_MSG(TRACE_ZCL2, "Unsupported general command %hd", (FMT__H, cmd_info->cmd_id));
break;
}
}
else
{
TRACE_MSG(TRACE_ERROR, "Cluster-specific commands not supported for Binary Input cluster", (FMT__0));
}
break;
default:
TRACE_MSG(TRACE_ERROR, "Cluster 0x%d is not supported", (FMT__D, cmd_info->cluster_id));
break;
}
}

See ha/devices_generic sample


Documentation feedback | Developer Zone | Subscribe | Updated