Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(zigbee): Fixes of timeout, example, warnings and bounding + add a 2MB part scheme for Zigbee ED #10817

Merged
merged 9 commits into from
Jan 8, 2025
10 changes: 8 additions & 2 deletions boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -450,9 +450,12 @@ esp32h2.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
#esp32h2.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MB
#esp32h2.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MB
#esp32h2.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4116480
esp32h2.menu.PartitionScheme.zigbee=Zigbee 4MB with spiffs
esp32h2.menu.PartitionScheme.zigbee=Zigbee ED 4MB with spiffs
esp32h2.menu.PartitionScheme.zigbee.build.partitions=zigbee
esp32h2.menu.PartitionScheme.zigbee.upload.maximum_size=1310720
esp32h2.menu.PartitionScheme.zigbee_2MB=Zigbee ED 2MB with spiffs
esp32h2.menu.PartitionScheme.zigbee_2MB.build.partitions=zigbee_2MB
esp32h2.menu.PartitionScheme.zigbee_2MB.upload.maximum_size=1310720
esp32h2.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffs
esp32h2.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr
esp32h2.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720
Expand Down Expand Up @@ -642,9 +645,12 @@ esp32c6.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656
esp32c6.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MB
esp32c6.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MB
esp32c6.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4116480
esp32c6.menu.PartitionScheme.zigbee=Zigbee 4MB with spiffs
esp32c6.menu.PartitionScheme.zigbee=Zigbee ED 4MB with spiffs
esp32c6.menu.PartitionScheme.zigbee.build.partitions=zigbee
esp32c6.menu.PartitionScheme.zigbee.upload.maximum_size=1310720
esp32c6.menu.PartitionScheme.zigbee_2MB=Zigbee ED 2MB with spiffs
esp32c6.menu.PartitionScheme.zigbee_2MB.build.partitions=zigbee_2MB
esp32c6.menu.PartitionScheme.zigbee_2MB.upload.maximum_size=1310720
esp32c6.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffs
esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr
esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,14 @@ void setup() {
"IEEE Address: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X\r\n", device->ieee_addr[7], device->ieee_addr[6], device->ieee_addr[5], device->ieee_addr[4],
device->ieee_addr[3], device->ieee_addr[2], device->ieee_addr[1], device->ieee_addr[0]
);
Serial.printf("Light manufacturer: %s\r\n", zbSwitch.readManufacturer(device->endpoint, device->short_addr, device->ieee_addr));
Serial.printf("Light model: %s\r\n", zbSwitch.readModel(device->endpoint, device->short_addr, device->ieee_addr));
char* manufacturer = zbSwitch.readManufacturer(device->endpoint, device->short_addr, device->ieee_addr);
char* model = zbSwitch.readModel(device->endpoint, device->short_addr, device->ieee_addr);
if(manufacturer != nullptr) {
Serial.printf("Light manufacturer: %s\r\n", zbSwitch.readManufacturer(device->endpoint, device->short_addr, device->ieee_addr));
}
if(model != nullptr) {
Serial.printf("Light model: %s\r\n", zbSwitch.readModel(device->endpoint, device->short_addr, device->ieee_addr));
}
}

Serial.println();
Expand Down
2 changes: 0 additions & 2 deletions libraries/Zigbee/src/ZigbeeEP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
#include "esp_zigbee_cluster.h"
#include "zcl/esp_zigbee_zcl_power_config.h"

#define ZB_CMD_TIMEOUT 10000 // 10 seconds

bool ZigbeeEP::_is_bound = false;
bool ZigbeeEP::_allow_multiple_binding = false;

Expand Down
2 changes: 2 additions & 0 deletions libraries/Zigbee/src/ZigbeeEP.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
#include <Arduino.h>

/* Useful defines */
#define ZB_CMD_TIMEOUT 10000 // 10 seconds

#define ZB_ARRAY_LENTH(arr) (sizeof(arr) / sizeof(arr[0]))
#define XYZ_TO_RGB(X, Y, Z, r, g, b) \
{ \
Expand Down
2 changes: 1 addition & 1 deletion libraries/Zigbee/src/ep/ZigbeeThermostat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ void ZigbeeThermostat::getSensorSettings() {
esp_zb_lock_release();

//Take semaphore to wait for response of all attributes
if (xSemaphoreTake(lock, portMAX_DELAY) != pdTRUE) {
if (xSemaphoreTake(lock, ZB_CMD_TIMEOUT) != pdTRUE) {
log_e("Error while reading attributes");
return;
} else {
Expand Down
7 changes: 7 additions & 0 deletions tools/partitions/zigbee_2MB.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
factory, app, factory, 0x10000, 0x140000,
spiffs, data, spiffs, 0x150000,0x9B000,
zb_storage, data, fat, 0x1EB000,0x4000,
zb_fct, data, fat, 0x1EF000,0x1000,
coredump, data, coredump,0x1F0000,0x10000,
Loading