@@ -68,7 +68,7 @@ bool ZigbeeEP::setManufacturerAndModel(const char *name, const char *model) {
6868 return ret_name == ESP_OK && ret_model == ESP_OK;
6969}
7070
71- bool 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, uint8_t battery_voltage ) {
7272 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);
7373 esp_err_t ret = esp_zb_cluster_update_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_POWER_SOURCE_ID, (void *)&power_source);
7474 if (ret != ESP_OK) {
@@ -88,6 +88,11 @@ bool ZigbeeEP::setPowerSource(zb_power_source_t power_source, uint8_t battery_pe
8888 log_e (" Failed to add battery percentage attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
8989 return false ;
9090 }
91+ ret = esp_zb_power_config_cluster_add_attr (power_config_cluster, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_VOLTAGE_ID, (void *)&battery_voltage);
92+ if (ret != ESP_OK) {
93+ log_e (" Failed to add battery percentage attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
94+ return false ;
95+ }
9196 ret = esp_zb_cluster_list_add_power_config_cluster (_cluster_list, power_config_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
9297 if (ret != ESP_OK) {
9398 log_e (" Failed to add power config cluster: 0x%x: %s" , ret, esp_err_to_name (ret));
@@ -120,6 +125,19 @@ bool ZigbeeEP::setBatteryPercentage(uint8_t percentage) {
120125 return true ;
121126}
122127
128+ bool ZigbeeEP::setBatteryVoltage (uint8_t voltage) {
129+ esp_zb_zcl_status_t ret = ESP_ZB_ZCL_STATUS_SUCCESS;
130+ esp_zb_lock_acquire (portMAX_DELAY);
131+ ret = esp_zb_zcl_set_attribute_val (_endpoint, ESP_ZB_ZCL_CLUSTER_ID_POWER_CONFIG, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_VOLTAGE_ID, &voltage, false );
132+ esp_zb_lock_release ();
133+ if (ret != ESP_ZB_ZCL_STATUS_SUCCESS) {
134+ log_e (" Failed to set battery voltage: 0x%x: %s" , ret, esp_zb_zcl_status_to_name (ret));
135+ return false ;
136+ }
137+ log_v (" Battery voltage updated" );
138+ return true ;
139+ }
140+
123141bool ZigbeeEP::reportBatteryPercentage () {
124142 /* Send report attributes command */
125143 esp_zb_zcl_report_attr_cmd_t report_attr_cmd;
0 commit comments