ESPHome 2026.5.0b1
Loading...
Searching...
No Matches
zigbee_helpers_esp32.c
Go to the documentation of this file.
2#ifdef USE_ESP32
3#ifdef USE_ZIGBEE
4
5#include "ha/esp_zigbee_ha_standard.h"
7
8esp_err_t esphome_zb_cluster_add_or_update_attr(uint16_t cluster_id, esp_zb_attribute_list_t *attr_list,
9 uint16_t attr_id, void *value_p) {
10 esp_err_t ret;
11 ret = esp_zb_cluster_update_attr(attr_list, attr_id, value_p);
12 if (ret != ESP_OK) {
13 ESP_LOGE("zigbee_helper", "Ignore previous attribute not found error");
14 ret = esphome_zb_cluster_add_attr(cluster_id, attr_list, attr_id, value_p);
15 }
16 if (ret != ESP_OK) {
17 ESP_LOGE("zigbee_helper", "Could not add attribute 0x%04X to cluster 0x%04X: %s", attr_id, cluster_id,
18 esp_err_to_name(ret));
19 }
20 return ret;
21}
22
23esp_err_t esphome_zb_cluster_list_add_or_update_cluster(uint16_t cluster_id, esp_zb_cluster_list_t *cluster_list,
24 esp_zb_attribute_list_t *attr_list, uint8_t role_mask) {
25 esp_err_t ret;
26 ret = esp_zb_cluster_list_update_cluster(cluster_list, attr_list, cluster_id, role_mask);
27 if (ret != ESP_OK) {
28 ESP_LOGE("zigbee_helper", "Ignore previous cluster not found error");
29 switch (cluster_id) {
30 case ESP_ZB_ZCL_CLUSTER_ID_BASIC:
31 ret = esp_zb_cluster_list_add_basic_cluster(cluster_list, attr_list, role_mask);
32 break;
33 case ESP_ZB_ZCL_CLUSTER_ID_IDENTIFY:
34 ret = esp_zb_cluster_list_add_identify_cluster(cluster_list, attr_list, role_mask);
35 break;
36 case ESP_ZB_ZCL_CLUSTER_ID_ANALOG_INPUT:
37 ret = esp_zb_cluster_list_add_analog_input_cluster(cluster_list, attr_list, role_mask);
38 break;
39 case ESP_ZB_ZCL_CLUSTER_ID_BINARY_INPUT:
40 ret = esp_zb_cluster_list_add_binary_input_cluster(cluster_list, attr_list, role_mask);
41 break;
42 default:
43 ret = esp_zb_cluster_list_add_custom_cluster(cluster_list, attr_list, role_mask);
44 }
45 }
46 return ret;
47}
48
49esp_zb_attribute_list_t *esphome_zb_default_attr_list_create(uint16_t cluster_id) {
50 switch (cluster_id) {
51 case ESP_ZB_ZCL_CLUSTER_ID_BASIC:
52 return esp_zb_basic_cluster_create(NULL);
53 case ESP_ZB_ZCL_CLUSTER_ID_IDENTIFY:
54 return esp_zb_identify_cluster_create(NULL);
55 case ESP_ZB_ZCL_CLUSTER_ID_ANALOG_INPUT:
56 return esp_zb_analog_input_cluster_create(NULL);
57 case ESP_ZB_ZCL_CLUSTER_ID_BINARY_INPUT:
58 return esp_zb_binary_input_cluster_create(NULL);
59 default:
60 return esp_zb_zcl_attr_list_create(cluster_id);
61 }
62}
63
64esp_err_t esphome_zb_cluster_add_attr(uint16_t cluster_id, esp_zb_attribute_list_t *attr_list, uint16_t attr_id,
65 void *value_p) {
66 switch (cluster_id) {
67 case ESP_ZB_ZCL_CLUSTER_ID_BASIC:
68 return esp_zb_basic_cluster_add_attr(attr_list, attr_id, value_p);
69 case ESP_ZB_ZCL_CLUSTER_ID_IDENTIFY:
70 return esp_zb_identify_cluster_add_attr(attr_list, attr_id, value_p);
71 case ESP_ZB_ZCL_CLUSTER_ID_ANALOG_INPUT:
72 return esp_zb_analog_input_cluster_add_attr(attr_list, attr_id, value_p);
73 case ESP_ZB_ZCL_CLUSTER_ID_BINARY_INPUT:
74 return esp_zb_binary_input_cluster_add_attr(attr_list, attr_id, value_p);
75 default:
76 return ESP_FAIL;
77 }
78}
79
80#endif
81#endif
esp_err_t esphome_zb_cluster_list_add_or_update_cluster(uint16_t cluster_id, esp_zb_cluster_list_t *cluster_list, esp_zb_attribute_list_t *attr_list, uint8_t role_mask)
esp_err_t esphome_zb_cluster_add_attr(uint16_t cluster_id, esp_zb_attribute_list_t *attr_list, uint16_t attr_id, void *value_p)
esp_err_t esphome_zb_cluster_add_or_update_attr(uint16_t cluster_id, esp_zb_attribute_list_t *attr_list, uint16_t attr_id, void *value_p)
esp_zb_attribute_list_t * esphome_zb_default_attr_list_create(uint16_t cluster_id)