Occupancy Sensor

The Occupancy Sensor device reports the presence (or not) of occupants in an area.

  • The Device ID is 0x0107.

  • The header file for the device is occupancy_sensor.h.

  • The clusters supported by the device are listed in Section 3.8.1.

  • The device structure, tsZLO_OccupancySensorDevice, is listed in Section 3.7.2.

  • The endpoint registration function for the device, eZLO_RegisterOccupancySensorEndPoint(), is detailed in Section 3.7.3.

Supported clusters

The clusters used by the Occupancy Sensor device are listed in the table below.

Clusters for Occupancy Sensor device

Server (input) side

Client (output) side

Mandatory

Basic

Identify

Identify

Occupancy sensing

Optional

OTA upgrade

Groups

The mandatory attributes within each cluster for this device type are indicated in the ZigBee Lighting and Occupancy Device Specification (15-0014-01).

Parent topic:Occupancy Sensor

Device Structure

The following tsZLO_OccupancySensorDevice structure is the shared structure for an Occupancy Sensor device:

typedef struct
{
    tsZCL_EndPointDefinition sEndPoint;
    /* Cluster instances */
    tsZLO_OccupancySensorDeviceClusterInstances sClusterInstance;
    /* Mandatory server clusters */
  #if (defined CLD_BASIC) && (defined BASIC_SERVER)
    /* Basic Cluster - Server */
    tsCLD_Basic sBasicServerCluster;
  #endif
    #if (defined CLD_IDENTIFY) && (defined IDENTIFY_SERVER)
    /* Identify Cluster - Server */
    tsCLD_Identify sIdentifyServerCluster;
    tsCLD_IdentifyCustomDataStructure sIdentifyServerCustomDataStructure;
    #endif
    #if (defined CLD_OCCUPANCY_SENSING) && (defined OCCUPANCY_SENSING_SERVER)
        /* Occupancy Sensing Cluster - Server */
        tsCLD_OccupancySensing sOccupancySensingServerCluster;
    #endif
        /* Optional server clusters */
    #if (defined CLD_POLL_CONTROL) && (defined POLL_CONTROL_SERVER)
        tsCLD_PollControl sPollControlServerCluster;
        tsCLD_PollControlCustomDataStructure
            sPollControlServerCustomDataStructure;
    #endif
        /* Mandatory client clusters */
    #if (defined CLD_IDENTIFY) && (defined IDENTIFY_CLIENT)
            /* Identify Cluster - Client */
            tsCLD_Identify sIdentifyClientCluster;
            tsCLD_IdentifyCustomDataStructure sIdentifyClientCustomDataStructure;
    #endif
        /* Recommended Optional client clusters */
    #if (defined CLD_POLL_CONTROL) && (defined POLL_CONTROL_CLIENT)
        tsCLD_PollControl sPollControlClientCluster;
        tsCLD_PollControlCustomDataStructure
        sPollControlClientCustomDataStructure;
    #endif
    #if (defined CLD_GROUPS) && (defined GROUPS_CLIENT)
        /* Groups Cluster - Client */
        tsCLD_Groups sGroupsClientCluster;
        tsCLD_GroupsCustomDataStructure sGroupsClientCustomDataStructure;
    #endif
    #if (defined CLD_OTA) && (defined OTA_CLIENT)
        tsCLD_AS_Ota sCLD_OTA;
        tsOTA_Common sCLD_OTA_CustomDataStruct;
    #endif
} tsZLO_OccupancySensorDevice;;

Parent topic:Occupancy Sensor

Registration Function

The following eZLO_RegisterOccupancySensorEndPoint() function is the endpoint registration function for an Occupancy Sensor device.

teZCL_Status eZLO_RegisterOccupancySensorEndPoint(
    uint8 u8EndPointIdentifier,
    tfpZCL_ZCLCallBackFunction cbCallBack,
        tsZLO_OccupancySensorDevice *psDeviceInfo);

Description

This function is used to register an endpoint which supports an Occupancy Sensor device. The function must be called after eZCL_Initialise().

The specified identifier for the endpoint is a number in the range 1 to 240 (endpoint 0 is reserved for ZigBee use). Application endpoints are normally numbered consecutively starting at 1. The specified number must be less than or equal to the value of ZLO_NUMBER_OF_ENDPOINTS defined in the zcl_options.h file, which represents the highest endpoint number used for applications.

While invoking this function, specify a user-defined callback function, which is invoked when an event associated with the endpoint occurs. This callback function is defined according to the typedef:

typedef void(* tfpZCL_ZCLCallBackFunction)
    (tsZCL_CallBackEvent *pCallBackEvent);

Also provide a pointer to a tsZLO_OccupancySensorDevice structure, described in Section 3.8.2. This structure stores all variables relating to the color Controller device associated with the endpoint. The sEndPoint and sClusterInstance fields of this structure are set by this function and must not be directly written to by the application.

The function is called multiple times if more than one endpoint is being used - for example, if more than one Occupancy Sensor device is housed in the same hardware, sharing the same module.

Parameters

  • u8EndPointIdentifier: Endpoint that is to be associated with the registered structure and callback function.

  • cbCallBack: Pointer to the function that is used to indicate events to the application for this endpoint.

  • psDeviceInfo: Pointer to the structure that acts as storage for all variables related to the device being registered on this endpoint (see Section 3.8.2). This function sets the sEndPoint and sClusterInstance fields of this structure and these fields must not be directly written to by the application.

Returns

  1. E_ZCL_SUCCESS

  2. E_ZCL_FAIL

  3. E_ZCL_ERR_PARAMETER_NULL

  4. E_ZCL_ERR_PARAMETER_RANGE

  5. E_ZCL_ERR_EP_RANGE

  6. E_ZCL_ERR_CLUSTER_0

  7. E_ZCL_ERR_CALLBACK_NULL

  8. E_ZCL_ERR_CLUSTER_NULL

  9. E_ZCL_ERR_SECURITY_RANGE

  10. E_ZCL_ERR_CLUSTER_ID_RANGE

  11. E_ZCL_ERR_MANUFACTURER_SPECIFIC

  12. E_ZCL_ERR_ATTRIBUTE_TYPE_UNSUPPORTED

  13. E_ZCL_ERR_ATTRIBUTE_ID_ORDER

  14. E_ZCL_ERR_ATTRIBUTES_ACCESS

The above codes are described in the ZCL User Guide (JNUG3132).

Parent topic:Occupancy Sensor

Parent topic:Lighting and Occupancy Device Types