ESPHome 2026.8.0-dev
Loading...
Searching...
No Matches
zigbee_helpers_esp32.c
Go to the documentation of this file.
2#ifdef USE_ESP32
3#ifdef USE_ZIGBEE
4
6#include "ezbee/zha.h"
7
8ezb_err_t esphome_zb_cluster_add_or_update_attr(uint16_t cluster_id, ezb_zcl_cluster_desc_t cluster_desc,
9 uint16_t attr_id, void *value_p) {
10 ezb_zcl_attr_desc_t attr_desc = ezb_zcl_cluster_get_attr_desc(cluster_desc, attr_id, EZB_ZCL_STD_MANUF_CODE);
11 if (attr_desc != NULL) {
12 return ezb_zcl_attr_desc_set_value(attr_desc, value_p);
13 }
14 return esphome_zb_cluster_add_attr(cluster_id, cluster_desc, attr_id, value_p);
15}
16
17ezb_err_t esphome_zb_add_or_update_cluster(uint16_t cluster_id, ezb_af_ep_desc_t ep_desc, uint8_t role_mask) {
18 if (ezb_af_endpoint_get_cluster_desc(ep_desc, cluster_id, role_mask) != NULL) {
19 // Cluster already exists, nothing to do
20 return EZB_ERR_NONE;
21 }
22 ezb_zcl_cluster_desc_t cluster_desc;
23 cluster_desc = esphome_zb_default_cluster_dscr_create(cluster_id, role_mask);
24 return ezb_af_endpoint_add_cluster_desc(ep_desc, cluster_desc);
25}
26
27ezb_zcl_cluster_desc_t esphome_zb_default_cluster_dscr_create(uint16_t cluster_id, uint8_t role_mask) {
28 switch (cluster_id) {
29 case EZB_ZCL_CLUSTER_ID_BASIC:
30 return ezb_zcl_basic_create_cluster_desc(NULL, role_mask);
31 case EZB_ZCL_CLUSTER_ID_IDENTIFY:
32 return ezb_zcl_identify_create_cluster_desc(NULL, role_mask);
33 case EZB_ZCL_CLUSTER_ID_ANALOG_INPUT:
34 return ezb_zcl_analog_input_create_cluster_desc(NULL, role_mask);
35 case EZB_ZCL_CLUSTER_ID_BINARY_INPUT:
36 return ezb_zcl_binary_input_create_cluster_desc(NULL, role_mask);
37 default: {
38 ezb_zcl_custom_cluster_config_t config = {0};
39 config.cluster_id = cluster_id;
40 return ezb_zcl_custom_create_cluster_desc(&config, role_mask);
41 }
42 }
43}
44
45ezb_err_t esphome_zb_cluster_add_attr(uint16_t cluster_id, ezb_zcl_cluster_desc_t cluster_desc, uint16_t attr_id,
46 void *value_p) {
47 switch (cluster_id) {
48 case EZB_ZCL_CLUSTER_ID_BASIC:
49 return ezb_zcl_basic_cluster_desc_add_attr(cluster_desc, attr_id, value_p);
50 case EZB_ZCL_CLUSTER_ID_IDENTIFY:
51 return ezb_zcl_identify_cluster_desc_add_attr(cluster_desc, attr_id, value_p);
52 case EZB_ZCL_CLUSTER_ID_ANALOG_INPUT:
53 return ezb_zcl_analog_input_cluster_desc_add_attr(cluster_desc, attr_id, value_p);
54 case EZB_ZCL_CLUSTER_ID_BINARY_INPUT:
55 return ezb_zcl_binary_input_cluster_desc_add_attr(cluster_desc, attr_id, value_p);
56 default:
57 return EZB_ERR_NOT_FOUND;
58 }
59}
60
61#endif
62#endif
ezb_err_t esphome_zb_cluster_add_or_update_attr(uint16_t cluster_id, ezb_zcl_cluster_desc_t cluster_desc, uint16_t attr_id, void *value_p)
ezb_err_t esphome_zb_add_or_update_cluster(uint16_t cluster_id, ezb_af_ep_desc_t ep_desc, uint8_t role_mask)
ezb_err_t esphome_zb_cluster_add_attr(uint16_t cluster_id, ezb_zcl_cluster_desc_t cluster_desc, uint16_t attr_id, void *value_p)
ezb_zcl_cluster_desc_t esphome_zb_default_cluster_dscr_create(uint16_t cluster_id, uint8_t role_mask)