nRF5 SDK for Thread and Zigbee v1.0.0
Door lock controller

Door Lock Controller device has 4 clusters (see spec 7.4.12):

Door Lock Controller device sample

Example
Declaring clusters
/******************* Declare attributes ************************/
/* Basic cluster attributes data */
zb_uint8_t g_attr_zcl_version = ZB_ZCL_VERSION;
ZB_ZCL_DECLARE_BASIC_ATTRIB_LIST(basic_attr_list,
&g_attr_zcl_version,
&g_attr_power_source);
/* Identify cluster attributes data */
zb_uint16_t g_attr_identify_time = 0;
ZB_ZCL_DECLARE_IDENTIFY_ATTRIB_LIST(identify_attr_list,
&g_attr_identify_time);
/* Groups cluster attributes data */
zb_uint8_t g_attr_name_support = 0;
ZB_ZCL_DECLARE_GROUPS_ATTRIB_LIST(groups_attr_list,
&g_attr_name_support);
/********************* Declare device **************************/
ZB_HA_DECLARE_DOOR_LOCK_CONTROLLER_CLUSTER_LIST(door_lock_controller_cluster,
basic_attr_list,
identify_attr_list,
groups_attr_list);
ZB_HA_DECLARE_DOOR_LOCK_CONTROLLER_EP(door_lock_controller_ep,
HA_DOOR_LOCK_CONTROLLER_ENDPOINT,
door_lock_controller_cluster);
ZB_HA_DECLARE_DOOR_LOCK_CONTROLLER_CTX(door_lock_controller_cluster_ctx,
door_lock_controller_ep);
Registering device list
ZB_AF_REGISTER_DEVICE_CTX(&door_lock_controller_cluster_ctx);
ZB_AF_SET_ENDPOINT_HANDLER(HA_DOOR_LOCK_CONTROLLER_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;
switch( cmd_info -> cmd_id )
{
case ZB_ZCL_CMD_DOOR_LOCK_UNLOCK_DOOR_RES:
TRACE_MSG(TRACE_ZCL3,
"Got cluster command res 0x%04x",
(FMT__D, cmd_info->cmd_id));
TRACE_MSG(TRACE_ZCL1,
"Response: ZB_ZCL_CMD_DOOR_LOCK_UNLOCK_DOOR_RES",
(FMT__0));
/** [Parse Unlock Door response] */
pupayload = ZB_ZCL_DOOR_LOCK_READ_UNLOCK_DOOR_RES(zcl_cmd_buf);
/** [Parse Unlock Door response] */
if( pupayload )
{
if( pupayload -> status != ZB_ZCL_STATUS_SUCCESS )
{
TRACE_MSG(TRACE_ERROR, "Error, unknown response received", (FMT__0));
}
else
{
TRACE_MSG(TRACE_ZCL2, " Command \" Unlock Door\" OK", (FMT__0));
}
}
else
{
TRACE_MSG(TRACE_ERROR, "Error, no payload received", (FMT__0));
}
break;

See ha/devices_closures sample


Documentation feedback | Developer Zone | Subscribe | Updated