ZigbeeCore
About
The ZigbeeCore
class is the main entry point for all Zigbee operations. It serves as the central class that manages:
Network Operations: Starting, stopping, and managing the Zigbee network
Device Role Management: Configuring the device as Coordinator, Router, or End Device
Endpoint Management: Adding and managing multiple device endpoints
Network Discovery: Scanning for and joining existing networks
ZigbeeCore APIs
Network Initialization
begin
Initializes the Zigbee stack and starts the network.
bool begin(zigbee_role_t role = ZIGBEE_END_DEVICE, bool erase_nvs = false);
bool begin(esp_zb_cfg_t *role_cfg, bool erase_nvs = false);
role
- Device role (default:ZIGBEE_END_DEVICE
)role_cfg
- Custom role configuration structureerase_nvs
- Whether to erase NVS storage (default:false
)
This function will return true
if initialization successful, false
otherwise.
Available Roles:
ZIGBEE_COORDINATOR: Network coordinator, forms and manages the network
ZIGBEE_ROUTER: Network router, connects to existing network and extends network range and routes messages (if device is mains powered, always use this role)
ZIGBEE_END_DEVICE: End device, connects to existing network (typically battery-powered which can sleep)
Note
Depending on the Zigbee role, proper Zigbee mode and partition scheme must be set in the Arduino IDE.
- ZIGBEE_COORDINATOR and ZIGBEE_ROUTER:
Zigbee mode to
Zigbee ZCZR (coordinator/router)
.Partition scheme to
Zigbee ZCZR xMB with spiffs
(wherex
is the number of MB of selected flash size).
- ZIGBEE_END_DEVICE:
Zigbee mode to
Zigbee ED (end device)
.Partition scheme to
Zigbee xMB with spiffs
(wherex
is the number of MB of selected flash size).
Network Status
started
Checks if the Zigbee stack has been started.
bool started();
This function will return true
if Zigbee stack is running, false
otherwise.
connected
Checks if the device is connected to a Zigbee network.
bool connected();
This function will return true
if connected to network, false
otherwise.
getRole
Gets the current Zigbee device role.
zigbee_role_t getRole();
This function will return current device role (ZIGBEE_COORDINATOR
, ZIGBEE_ROUTER
, ZIGBEE_END_DEVICE
).
Endpoint Management
addEndpoint
Adds an endpoint to the Zigbee network.
bool addEndpoint(ZigbeeEP *ep);
ep
- Pointer to the endpoint object to add
This function will return true
if endpoint added successfully, false
otherwise.
Network Configuration
setPrimaryChannelMask
Sets the primary channel mask for network scanning and joining.
void setPrimaryChannelMask(uint32_t mask);
mask
- Channel mask (default: all channels 11-26, mask 0x07FFF800)
setScanDuration
Sets the scan duration for network discovery.
void setScanDuration(uint8_t duration);
duration
- Scan duration (1-4, where 1 is fastest, 4 is slowest)
getScanDuration
Gets the current scan duration setting.
uint8_t getScanDuration();
This function will return current scan duration (1-4).
Power Management
setRxOnWhenIdle
Sets whether the device keeps its receiver on when idle.
void setRxOnWhenIdle(bool rx_on_when_idle);
rx_on_when_idle
-true
to keep receiver on,false
to allow sleep
getRxOnWhenIdle
Gets the current receiver idle setting.
bool getRxOnWhenIdle();
This function will return current receiver idle setting.
setTimeout
Sets the timeout for network operations.
void setTimeout(uint32_t timeout);
timeout
- Timeout in milliseconds (default: 30000 ms)
Network Discovery
scanNetworks
Scans for available Zigbee networks.
void scanNetworks(uint32_t channel_mask = ESP_ZB_TRANSCEIVER_ALL_CHANNELS_MASK, uint8_t scan_duration = 5);
channel_mask
- Channels to scan (default: all channels)scan_duration
- Scan duration (default: 5)
scanComplete
Checks if network scanning is complete.
int16_t scanComplete();
This function will return:
* -2
: Scan failed or not started
* -1
: Scan running
* 0
: No networks found
* >0
: Number of networks found
getScanResult
Gets the scan results.
zigbee_scan_result_t *getScanResult();
This function will return pointer to scan results, or NULL
if no results.
Network Management (Coordinator only)
setRebootOpenNetwork
Opens the network for joining after reboot for a specified time.
void setRebootOpenNetwork(uint8_t time);
time
- Time in seconds to keep network open after reboot
openNetwork
Opens the network for device joining for a specified time.
void openNetwork(uint8_t time);
time
- Time in seconds to keep network open for device joining
Radio Configuration
setRadioConfig
Sets the radio configuration.
void setRadioConfig(esp_zb_radio_config_t config);
config
- Radio configuration structure
getRadioConfig
Gets the current radio configuration.
esp_zb_radio_config_t getRadioConfig();
This function will return current radio configuration.
Host Configuration
setHostConfig
Sets the host configuration.
void setHostConfig(esp_zb_host_config_t config);
config
- Host configuration structure
getHostConfig
Gets the current host configuration.
esp_zb_host_config_t getHostConfig();
This function will return current host configuration.
Debug and Utilities
setDebugMode
Enables or disables debug mode.
void setDebugMode(bool debug);
debug
-true
to enable debug output,false
to disable
getDebugMode
Gets the current debug mode setting.
bool getDebugMode();
This function will return current debug mode setting.
factoryReset
Performs a factory reset, clearing all network settings.
void factoryReset(bool restart = true);
restart
-true
to restart after reset (default:true
)
onGlobalDefaultResponse
Sets a global callback for default response messages.
void onGlobalDefaultResponse(void (*callback)(zb_cmd_type_t resp_to_cmd, esp_zb_zcl_status_t status, uint8_t endpoint, uint16_t cluster));
callback
- Function pointer to the callback function
This callback will be called for all endpoints when a default response is received.
Utility Functions
formatIEEEAddress
Formats an IEEE address for display.
static const char *formatIEEEAddress(const esp_zb_ieee_addr_t addr);
addr
- IEEE address to format
This function will return formatted address string.
formatShortAddress
Formats a short address for display.
static const char *formatShortAddress(uint16_t addr);
addr
- Short address to format
This function will return formatted address string.