@@ -73,7 +73,7 @@ bool ZigbeeEP::setManufacturerAndModel(const char *name, const char *model) {
73
73
return ret_name == ESP_OK && ret_model == ESP_OK;
74
74
}
75
75
76
- bool ZigbeeEP::setPowerSource (zb_power_source_t power_source, uint8_t battery_percentage) {
76
+ bool ZigbeeEP::setPowerSource (zb_power_source_t power_source, uint8_t battery_percentage, uint8_t battery_voltage ) {
77
77
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);
78
78
esp_err_t ret = esp_zb_cluster_update_attr (basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_POWER_SOURCE_ID, (void *)&power_source);
79
79
if (ret != ESP_OK) {
@@ -93,6 +93,11 @@ bool ZigbeeEP::setPowerSource(zb_power_source_t power_source, uint8_t battery_pe
93
93
log_e (" Failed to add battery percentage attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
94
94
return false ;
95
95
}
96
+ ret = esp_zb_power_config_cluster_add_attr (power_config_cluster, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_VOLTAGE_ID, (void *)&battery_voltage);
97
+ if (ret != ESP_OK) {
98
+ log_e (" Failed to add battery voltage attribute: 0x%x: %s" , ret, esp_err_to_name (ret));
99
+ return false ;
100
+ }
96
101
ret = esp_zb_cluster_list_add_power_config_cluster (_cluster_list, power_config_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
97
102
if (ret != ESP_OK) {
98
103
log_e (" Failed to add power config cluster: 0x%x: %s" , ret, esp_err_to_name (ret));
@@ -125,6 +130,21 @@ bool ZigbeeEP::setBatteryPercentage(uint8_t percentage) {
125
130
return true ;
126
131
}
127
132
133
+ bool ZigbeeEP::setBatteryVoltage (uint8_t voltage) {
134
+ esp_zb_zcl_status_t ret = ESP_ZB_ZCL_STATUS_SUCCESS;
135
+ esp_zb_lock_acquire (portMAX_DELAY);
136
+ ret = esp_zb_zcl_set_attribute_val (
137
+ _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
138
+ );
139
+ esp_zb_lock_release ();
140
+ if (ret != ESP_ZB_ZCL_STATUS_SUCCESS) {
141
+ log_e (" Failed to set battery voltage: 0x%x: %s" , ret, esp_zb_zcl_status_to_name (ret));
142
+ return false ;
143
+ }
144
+ log_v (" Battery voltage updated" );
145
+ return true ;
146
+ }
147
+
128
148
bool ZigbeeEP::reportBatteryPercentage () {
129
149
/* Send report attributes command */
130
150
esp_zb_zcl_report_attr_cmd_t report_attr_cmd;
0 commit comments