@@ -55,20 +55,26 @@ bool ZigbeeEP::setManufacturerAndModel(const char *name, const char *model) {
5555
5656 // Get the basic cluster and update the manufacturer and model attributes
5757 esp_zb_attribute_list_t *basic_cluster = esp_zb_cluster_list_get_cluster (_cluster_list, ESP_ZB_ZCL_CLUSTER_ID_BASIC, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
58- esp_err_t ret_manufacturer = esp_zb_basic_cluster_add_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, (void *)zb_name);
58+ esp_err_t ret_name = esp_zb_basic_cluster_add_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, (void *)zb_name);
59+ if (ret_name != ESP_OK) {
60+ log_e (" Failed to set manufacturer: 0x%x: %s" , ret_name, esp_err_to_name (ret_name));
61+ }
5962 esp_err_t ret_model = esp_zb_basic_cluster_add_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, (void *)zb_model);
60- if (ret_manufacturer != ESP_OK || ret_model != ESP_OK) {
61- log_e (" Failed to set manufacturer ( 0x%x) or model (0x%x) " , ret_manufacturer, ret_model);
63+ if (ret_model != ESP_OK) {
64+ log_e (" Failed to set model: 0x%x: %s " , ret_model, esp_err_to_name ( ret_model) );
6265 }
63-
6466 delete[] zb_name;
6567 delete[] zb_model;
66- return ret_manufacturer == ESP_OK && ret_model == ESP_OK;
68+ return ret_name == ESP_OK && ret_model == ESP_OK;
6769}
6870
69- void ZigbeeEP::setPowerSource (zb_power_source_t power_source, uint8_t battery_percentage) {
71+ bool ZigbeeEP::setPowerSource (zb_power_source_t power_source, uint8_t battery_percentage) {
7072 esp_zb_attribute_list_t *basic_cluster = esp_zb_cluster_list_get_cluster (_cluster_list, ESP_ZB_ZCL_CLUSTER_ID_BASIC, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
71- esp_zb_cluster_update_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_POWER_SOURCE_ID, (void *)&power_source);
73+ esp_err_t ret = esp_zb_cluster_update_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_POWER_SOURCE_ID, (void *)&power_source);
74+ if (ret != ESP_OK) {
75+ log_e (" Failed to set power source: 0x%x: %s" , ret, esp_err_to_name (ret));
76+ return false ;
77+ }
7278
7379 if (power_source == ZB_POWER_SOURCE_BATTERY) {
7480 // Add power config cluster and battery percentage attribute
@@ -77,10 +83,19 @@ void ZigbeeEP::setPowerSource(zb_power_source_t power_source, uint8_t battery_pe
7783 }
7884 battery_percentage = battery_percentage * 2 ;
7985 esp_zb_attribute_list_t *power_config_cluster = esp_zb_zcl_attr_list_create (ESP_ZB_ZCL_CLUSTER_ID_POWER_CONFIG);
80- esp_zb_power_config_cluster_add_attr (power_config_cluster, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_PERCENTAGE_REMAINING_ID, (void *)&battery_percentage);
81- esp_zb_cluster_list_add_power_config_cluster (_cluster_list, power_config_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
86+ ret = esp_zb_power_config_cluster_add_attr (power_config_cluster, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_PERCENTAGE_REMAINING_ID, (void *)&battery_percentage);
87+ if (ret != ESP_OK) {
88+ log_e (" Failed to add battery percentage attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
89+ return false ;
90+ }
91+ ret = esp_zb_cluster_list_add_power_config_cluster (_cluster_list, power_config_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
92+ if (ret != ESP_OK) {
93+ log_e (" Failed to add power config cluster: 0x%x: %s" , ret, esp_err_to_name (ret));
94+ return false ;
95+ }
8296 }
8397 _power_source = power_source;
98+ return true ;
8499}
85100
86101bool ZigbeeEP::setBatteryPercentage (uint8_t percentage) {
@@ -258,7 +273,7 @@ void ZigbeeEP::zbIdentify(const esp_zb_zcl_set_attr_value_message_t *message) {
258273 }
259274}
260275
261- void ZigbeeEP::addTimeCluster (tm time, int32_t gmt_offset) {
276+ bool ZigbeeEP::addTimeCluster (tm time, int32_t gmt_offset) {
262277 time_t utc_time = 0 ;
263278 // Check if time is set
264279 if (time.tm_year > 0 ) {
@@ -268,14 +283,35 @@ void ZigbeeEP::addTimeCluster(tm time, int32_t gmt_offset) {
268283
269284 // Create time cluster server attributes
270285 esp_zb_attribute_list_t *time_cluster_server = esp_zb_zcl_attr_list_create (ESP_ZB_ZCL_CLUSTER_ID_TIME);
271- esp_zb_time_cluster_add_attr (time_cluster_server, ESP_ZB_ZCL_ATTR_TIME_TIME_ZONE_ID, (void *)&gmt_offset);
272- esp_zb_time_cluster_add_attr (time_cluster_server, ESP_ZB_ZCL_ATTR_TIME_TIME_ID, (void *)&utc_time);
273- esp_zb_time_cluster_add_attr (time_cluster_server, ESP_ZB_ZCL_ATTR_TIME_TIME_STATUS_ID, (void *)&_time_status);
286+ esp_err_t ret = esp_zb_time_cluster_add_attr (time_cluster_server, ESP_ZB_ZCL_ATTR_TIME_TIME_ZONE_ID, (void *)&gmt_offset);
287+ if (ret != ESP_OK) {
288+ log_e (" Failed to add time zone attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
289+ return false ;
290+ }
291+ ret = esp_zb_time_cluster_add_attr (time_cluster_server, ESP_ZB_ZCL_ATTR_TIME_TIME_ID, (void *)&utc_time);
292+ if (ret != ESP_OK) {
293+ log_e (" Failed to add time attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
294+ return false ;
295+ }
296+ ret = esp_zb_time_cluster_add_attr (time_cluster_server, ESP_ZB_ZCL_ATTR_TIME_TIME_STATUS_ID, (void *)&_time_status);
297+ if (ret != ESP_OK) {
298+ log_e (" Failed to add time status attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
299+ return false ;
300+ }
274301 // Create time cluster client attributes
275302 esp_zb_attribute_list_t *time_cluster_client = esp_zb_zcl_attr_list_create (ESP_ZB_ZCL_CLUSTER_ID_TIME);
276303 // Add time clusters to cluster list
277- esp_zb_cluster_list_add_time_cluster (_cluster_list, time_cluster_server, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
278- esp_zb_cluster_list_add_time_cluster (_cluster_list, time_cluster_client, ESP_ZB_ZCL_CLUSTER_CLIENT_ROLE);
304+ ret = esp_zb_cluster_list_add_time_cluster (_cluster_list, time_cluster_server, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
305+ if (ret != ESP_OK) {
306+ log_e (" Failed to add time cluster (server role): 0x%x: %s" , ret, esp_err_to_name (ret));
307+ return false ;
308+ }
309+ ret = esp_zb_cluster_list_add_time_cluster (_cluster_list, time_cluster_client, ESP_ZB_ZCL_CLUSTER_CLIENT_ROLE);
310+ if (ret != ESP_OK) {
311+ log_e (" Failed to add time cluster (client role): 0x%x: %s" , ret, esp_err_to_name (ret));
312+ return false ;
313+ }
314+ return true ;
279315}
280316
281317bool ZigbeeEP::setTime (tm time) {
0 commit comments