@@ -68,7 +68,7 @@ bool ZigbeeEP::setManufacturerAndModel(const char *name, const char *model) {
68
68
return ret_name == ESP_OK && ret_model == ESP_OK;
69
69
}
70
70
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 ) {
72
72
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);
73
73
esp_err_t ret = esp_zb_cluster_update_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_POWER_SOURCE_ID, (void *)&power_source);
74
74
if (ret != ESP_OK) {
@@ -88,6 +88,11 @@ bool ZigbeeEP::setPowerSource(zb_power_source_t power_source, uint8_t battery_pe
88
88
log_e (" Failed to add battery percentage attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
89
89
return false ;
90
90
}
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
+ }
91
96
ret = esp_zb_cluster_list_add_power_config_cluster (_cluster_list, power_config_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
92
97
if (ret != ESP_OK) {
93
98
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) {
120
125
return true ;
121
126
}
122
127
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
+
123
141
bool ZigbeeEP::reportBatteryPercentage () {
124
142
/* Send report attributes command */
125
143
esp_zb_zcl_report_attr_cmd_t report_attr_cmd;
0 commit comments