Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1730e4e

Browse files
P-R-O-C-H-YSuGliderpre-commit-ci-lite[bot]
authored
fix(zigbee): Add connected(), minor fixes, example update (espressif#10636)
* fix(zigbee): Add connected and minor fixes, example update * fix(example): Use correct API call for connected * fix(zigbee): Increase timeout and add semaphore to begin * feat(zigbee): Add option to select debug libs for zigbee * fix(example): fix warning by double percentage symbol * fix(example): Fix serial prints for Windows os Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com> * ci(pre-commit): Apply automatic fixes * fix(example): Fix precommit spelling --------- Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 9417a84 commit 1730e4e

File tree

15 files changed

+198
-88
lines changed

15 files changed

+198
-88
lines changed

‎boards.txt‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,15 @@ esp32h2.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api_zczr -lesp_zb_cli_co
531531
esp32h2.menu.ZigbeeMode.rcp=Zigbee RCP (radio co-processor)
532532
esp32h2.menu.ZigbeeMode.rcp.build.zigbee_mode=-DZIGBEE_MODE_RCP
533533
esp32h2.menu.ZigbeeMode.rcp.build.zigbee_libs=-lesp_zb_api_rcp -lesp_zb_cli_command -lzboss_stack.rcp -lzboss_port
534-
534+
esp32h2.menu.ZigbeeMode.ed_debug=Zigbee ED (end device) - Debug
535+
esp32h2.menu.ZigbeeMode.ed_debug.build.zigbee_mode=-DZIGBEE_MODE_ED
536+
esp32h2.menu.ZigbeeMode.ed_debug.build.zigbee_libs=-lesp_zb_api_ed.debug -lesp_zb_cli_command -lzboss_stack.ed.debug -lzboss_port.debug
537+
esp32h2.menu.ZigbeeMode.zczr_debug=Zigbee ZCZR (coordinator/router) - Debug
538+
esp32h2.menu.ZigbeeMode.zczr_debug.build.zigbee_mode=-DZIGBEE_MODE_ZCZR
539+
esp32h2.menu.ZigbeeMode.zczr_debug.build.zigbee_libs=-lesp_zb_api_zczr.debug -lesp_zb_cli_command -lzboss_stack.zczr.debug -lzboss_port.debug
540+
esp32h2.menu.ZigbeeMode.rcp_debug=Zigbee RCP (radio co-processor) - Debug
541+
esp32h2.menu.ZigbeeMode.rcp_debug.build.zigbee_mode=-DZIGBEE_MODE_RCP
542+
esp32h2.menu.ZigbeeMode.rcp_debug.build.zigbee_libs=-lesp_zb_api_rcp.debug -lesp_zb_cli_command -lzboss_stack.rcp.debug -lzboss_port.debug
535543

536544
##############################################################
537545

@@ -723,6 +731,15 @@ esp32c6.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api_zczr -lesp_zb_cli_co
723731
esp32c6.menu.ZigbeeMode.rcp=Zigbee RCP (radio co-processor)
724732
esp32c6.menu.ZigbeeMode.rcp.build.zigbee_mode=-DZIGBEE_MODE_RCP
725733
esp32c6.menu.ZigbeeMode.rcp.build.zigbee_libs=-lesp_zb_api_rcp -lesp_zb_cli_command -lzboss_stack.rcp -lzboss_port
734+
esp32c6.menu.ZigbeeMode.ed_debug=Zigbee ED (end device) - Debug
735+
esp32c6.menu.ZigbeeMode.ed_debug.build.zigbee_mode=-DZIGBEE_MODE_ED
736+
esp32c6.menu.ZigbeeMode.ed_debug.build.zigbee_libs=-lesp_zb_api_ed.debug -lesp_zb_cli_command -lzboss_stack.ed.debug -lzboss_port.debug
737+
esp32c6.menu.ZigbeeMode.zczr_debug=Zigbee ZCZR (coordinator/router) - Debug
738+
esp32c6.menu.ZigbeeMode.zczr_debug.build.zigbee_mode=-DZIGBEE_MODE_ZCZR
739+
esp32c6.menu.ZigbeeMode.zczr_debug.build.zigbee_libs=-lesp_zb_api_zczr.debug -lesp_zb_cli_command -lzboss_stack.zczr.debug -lzboss_port.debug
740+
esp32c6.menu.ZigbeeMode.rcp_debug=Zigbee RCP (radio co-processor) - Debug
741+
esp32c6.menu.ZigbeeMode.rcp_debug.build.zigbee_mode=-DZIGBEE_MODE_RCP
742+
esp32c6.menu.ZigbeeMode.rcp_debug.build.zigbee_libs=-lesp_zb_api_rcp.debug -lesp_zb_cli_command -lzboss_stack.rcp.debug -lzboss_port.debug
726743

727744
##############################################################
728745

‎libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/Zigbee_Color_Dimmable_Light.ino‎

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ void identify(uint16_t time) {
6464

6565
/********************* Arduino functions **************************/
6666
void setup() {
67+
Serial.begin(115200);
68+
while (!Serial) {
69+
delay(10);
70+
}
71+
6772
// Init RMT and leave light OFF
6873
rgbLedWrite(LED_PIN, 0, 0, 0);
6974

@@ -80,12 +85,21 @@ void setup() {
8085
zbColorLight.setManufacturerAndModel("Espressif", "ZBColorLightBulb");
8186

8287
// Add endpoint to Zigbee Core
83-
log_d("Adding ZigbeeLight endpoint to Zigbee Core");
88+
Serial.println("Adding ZigbeeLight endpoint to Zigbee Core");
8489
Zigbee.addEndpoint(&zbColorLight);
8590

86-
// When all EPs are registered, start Zigbee. By default acts as ZIGBEE_END_DEVICE
87-
log_d("Calling Zigbee.begin()");
88-
Zigbee.begin();
91+
// When all EPs are registered, start Zigbee in End Device mode
92+
if (!Zigbee.begin()) {
93+
Serial.println("Zigbee failed to start!");
94+
Serial.println("Rebooting...");
95+
ESP.restart();
96+
}
97+
Serial.println("Connecting to network");
98+
while (!Zigbee.connected()) {
99+
Serial.print(".");
100+
delay(100);
101+
}
102+
Serial.println();
89103
}
90104

91105
void loop() {
@@ -98,7 +112,8 @@ void loop() {
98112
delay(50);
99113
if ((millis() - startTime) > 3000) {
100114
// If key pressed for more than 3secs, factory reset Zigbee and reboot
101-
Serial.printf("Resetting Zigbee to factory settings, reboot.\n");
115+
Serial.println("Resetting Zigbee to factory and rebooting in 1s.");
116+
delay(1000);
102117
Zigbee.factoryReset();
103118
}
104119
}

‎libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/Zigbee_Color_Dimmer_Switch.ino‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ ZigbeeColorDimmerSwitch zbSwitch = ZigbeeColorDimmerSwitch(SWITCH_ENDPOINT_NUMBE
4646

4747
/********************* Arduino functions **************************/
4848
void setup() {
49-
5049
Serial.begin(115200);
5150
while (!Serial) {
5251
delay(10);
@@ -68,11 +67,15 @@ void setup() {
6867
Zigbee.setRebootOpenNetwork(180);
6968

7069
//When all EPs are registered, start Zigbee with ZIGBEE_COORDINATOR mode
71-
Zigbee.begin(ZIGBEE_COORDINATOR);
70+
if (!Zigbee.begin(ZIGBEE_COORDINATOR)) {
71+
Serial.println("Zigbee failed to start!");
72+
Serial.println("Rebooting...");
73+
ESP.restart();
74+
}
7275

7376
Serial.println("Waiting for Light to bound to the switch");
7477
//Wait for switch to bound to a light:
75-
while (!zbSwitch.isBound()) {
78+
while (!zbSwitch.bound()) {
7679
Serial.printf(".");
7780
delay(500);
7881
}

‎libraries/Zigbee/examples/Zigbee_On_Off_Light/Zigbee_On_Off_Light.ino‎

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ void setLED(bool value) {
4545

4646
/********************* Arduino functions **************************/
4747
void setup() {
48+
Serial.begin(115200);
49+
while (!Serial) {
50+
delay(10);
51+
}
4852
// Init LED and turn it OFF (if LED_PIN == RGB_BUILTIN, the rgbLedWrite() will be used under the hood)
4953
pinMode(LED_PIN, OUTPUT);
5054
digitalWrite(LED_PIN, LOW);
@@ -59,12 +63,21 @@ void setup() {
5963
zbLight.onLightChange(setLED);
6064

6165
//Add endpoint to Zigbee Core
62-
log_d("Adding ZigbeeLight endpoint to Zigbee Core");
66+
Serial.println("Adding ZigbeeLight endpoint to Zigbee Core");
6367
Zigbee.addEndpoint(&zbLight);
6468

6569
// When all EPs are registered, start Zigbee. By default acts as ZIGBEE_END_DEVICE
66-
log_d("Calling Zigbee.begin()");
67-
Zigbee.begin();
70+
if (!Zigbee.begin()) {
71+
Serial.println("Zigbee failed to start!");
72+
Serial.println("Rebooting...");
73+
ESP.restart();
74+
}
75+
Serial.println("Connecting to network");
76+
while (!Zigbee.connected()) {
77+
Serial.print(".");
78+
delay(100);
79+
}
80+
Serial.println();
6881
}
6982

7083
void loop() {
@@ -77,7 +90,8 @@ void loop() {
7790
delay(50);
7891
if ((millis() - startTime) > 3000) {
7992
// If key pressed for more than 3secs, factory reset Zigbee and reboot
80-
Serial.printf("Resetting Zigbee to factory settings, reboot.\n");
93+
Serial.println("Resetting Zigbee to factory and rebooting in 1s.");
94+
delay(1000);
8195
Zigbee.factoryReset();
8296
}
8397
}

‎libraries/Zigbee/examples/Zigbee_On_Off_Switch/Zigbee_On_Off_Switch.ino‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ ZigbeeSwitch zbSwitch = ZigbeeSwitch(SWITCH_ENDPOINT_NUMBER);
7070
static void onZbButton(SwitchData *button_func_pair) {
7171
if (button_func_pair->func == SWITCH_ONOFF_TOGGLE_CONTROL) {
7272
// Send toggle command to the light
73+
Serial.println("Toggling light");
7374
zbSwitch.lightToggle();
7475
}
7576
}
@@ -93,7 +94,6 @@ static void enableGpioInterrupt(bool enabled) {
9394

9495
/********************* Arduino functions **************************/
9596
void setup() {
96-
9797
Serial.begin(115200);
9898
while (!Serial) {
9999
delay(10);
@@ -106,7 +106,7 @@ void setup() {
106106
zbSwitch.allowMultipleBinding(true);
107107

108108
//Add endpoint to Zigbee Core
109-
log_d("Adding ZigbeeSwitch endpoint to Zigbee Core");
109+
Serial.println("Adding ZigbeeSwitch endpoint to Zigbee Core");
110110
Zigbee.addEndpoint(&zbSwitch);
111111

112112
//Open network for 180 seconds after boot
@@ -118,19 +118,22 @@ void setup() {
118118
/* create a queue to handle gpio event from isr */
119119
gpio_evt_queue = xQueueCreate(10, sizeof(SwitchData));
120120
if (gpio_evt_queue == 0) {
121-
log_e("Queue was not created and must not be used");
122-
while (1);
121+
Serial.println("Queue creating failed, rebooting...");
122+
ESP.restart();
123123
}
124124
attachInterruptArg(buttonFunctionPair[i].pin, onGpioInterrupt, (void *)(buttonFunctionPair + i), FALLING);
125125
}
126126

127127
// When all EPs are registered, start Zigbee with ZIGBEE_COORDINATOR mode
128-
log_d("Calling Zigbee.begin()");
129-
Zigbee.begin(ZIGBEE_COORDINATOR);
128+
if (!Zigbee.begin(ZIGBEE_COORDINATOR)) {
129+
Serial.println("Zigbee failed to start!");
130+
Serial.println("Rebooting...");
131+
ESP.restart();
132+
}
130133

131134
Serial.println("Waiting for Light to bound to the switch");
132135
//Wait for switch to bound to a light:
133-
while (!zbSwitch.isBound()) {
136+
while (!zbSwitch.bound()) {
134137
Serial.printf(".");
135138
delay(500);
136139
}

‎libraries/Zigbee/examples/Zigbee_Scan_Networks/Zigbee_Scan_Networks.ino‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include "Zigbee.h"
3333

3434
#ifdef ZIGBEE_MODE_ZCZR
35-
zigbee_role_t role = ZIGBEE_ROUTER; // or can be ZIGBEE_COORDINATOR, but it wont scan itself
35+
zigbee_role_t role = ZIGBEE_ROUTER; // or can be ZIGBEE_COORDINATOR, but it won't scan itself
3636
#else
3737
zigbee_role_t role = ZIGBEE_END_DEVICE;
3838
#endif
@@ -81,14 +81,13 @@ void setup() {
8181
}
8282

8383
// Initialize Zigbee stack without any EPs just for scanning
84-
Zigbee.begin(role);
85-
86-
// Waint until Zigbee stack is ready
87-
while (!Zigbee.isStarted()) {
88-
delay(100);
84+
if (!Zigbee.begin(role)) {
85+
Serial.println("Zigbee failed to start!");
86+
Serial.println("Rebooting...");
87+
ESP.restart();
8988
}
9089

91-
Serial.println("Setup done");
90+
Serial.println("Setup done, starting Zigbee network scan...");
9291
// Start Zigbee Network Scan with default parameters (all channels, scan time 5)
9392
Zigbee.scanNetworks();
9493
}
@@ -98,7 +97,7 @@ void loop() {
9897
int16_t ZigbeeScanStatus = Zigbee.scanComplete();
9998
if (ZigbeeScanStatus < 0) { // it is busy scanning or got an error
10099
if (ZigbeeScanStatus == ZB_SCAN_FAILED) {
101-
Serial.println("WiFi Scan has failed. Starting again.");
100+
Serial.println("Zigbee scan has failed. Starting again.");
102101
Zigbee.scanNetworks();
103102
}
104103
// other option is status ZB_SCAN_RUNNING - just wait.

‎libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/Zigbee_Temp_Hum_Sensor_Sleepy.ino‎

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
*/
2828

2929
#ifndef ZIGBEE_MODE_ED
30-
#error "Zigbee coordinator mode is not selected in Tools->Zigbee mode"
30+
#error "Zigbee end device mode is not selected in Tools->Zigbee mode"
3131
#endif
3232

3333
#include "Zigbee.h"
@@ -56,14 +56,19 @@ void meausureAndSleep() {
5656
zbTempSensor.reportTemperature();
5757
zbTempSensor.reportHumidity();
5858

59-
log_d("Temperature: %.2f°C, Humidity: %.2f%", temperature, humidity);
59+
Serial.printf("Reported temperature: %.2f°C, Humidity: %.2f%%\r\n", temperature, humidity);
6060

6161
// Put device to deep sleep
62+
Serial.println("Going to sleep now");
6263
esp_deep_sleep_start();
6364
}
6465

6566
/********************* Arduino functions **************************/
6667
void setup() {
68+
Serial.begin(115200);
69+
while (!Serial) {
70+
delay(10);
71+
}
6772
// Init button switch
6873
pinMode(BUTTON_PIN, INPUT_PULLUP);
6974

@@ -94,14 +99,20 @@ void setup() {
9499
zigbeeConfig.nwk_cfg.zed_cfg.keep_alive = 10000;
95100

96101
// When all EPs are registered, start Zigbee in End Device mode
97-
Zigbee.begin(&zigbeeConfig, false);
98-
99-
// Wait for Zigbee to start
100-
while (!Zigbee.isStarted()) {
102+
if (!Zigbee.begin(&zigbeeConfig, false)) {
103+
Serial.println("Zigbee failed to start!");
104+
Serial.println("Rebooting...");
105+
ESP.restart();
106+
}
107+
Serial.println("Connecting to network");
108+
while (!Zigbee.connected()) {
109+
Serial.print(".");
101110
delay(100);
102111
}
112+
Serial.println();
113+
Serial.println("Successfully connected to Zigbee network");
103114

104-
// Delay 5s to allow establishing connection with coordinator, needed for sleepy devices
115+
// Delay 5s (may be adjusted) to allow establishing proper connection with coordinator, needed for sleepy devices
105116
delay(5000);
106117
}
107118

@@ -115,7 +126,8 @@ void loop() {
115126
delay(50);
116127
if ((millis() - startTime) > 3000) {
117128
// If key pressed for more than 3secs, factory reset Zigbee and reboot
118-
Zigbee.factoryReset();
129+
Serial.println("Resetting Zigbee to factory and rebooting in 1s.");
130+
delay(1000);
119131
}
120132
}
121133
}

‎libraries/Zigbee/examples/Zigbee_Temperature_Sensor/Zigbee_Temperature_Sensor.ino‎

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
*/
2828

2929
#ifndef ZIGBEE_MODE_ED
30-
#error "Zigbee coordinator mode is not selected in Tools->Zigbee mode"
30+
#error "Zigbee end device mode is not selected in Tools->Zigbee mode"
3131
#endif
3232

3333
#include "Zigbee.h"
@@ -42,7 +42,7 @@ static void temp_sensor_value_update(void *arg) {
4242
for (;;) {
4343
// Read temperature sensor value
4444
float tsens_value = temperatureRead();
45-
log_v("Temperature sensor value: %.2f°C", tsens_value);
45+
Serial.printf("Updated temperature sensor value to %.2f°C\r\n", tsens_value);
4646
// Update temperature value in Temperature sensor EP
4747
zbTempSensor.setTemperature(tsens_value);
4848
delay(1000);
@@ -51,12 +51,10 @@ static void temp_sensor_value_update(void *arg) {
5151

5252
/********************* Arduino functions **************************/
5353
void setup() {
54-
5554
Serial.begin(115200);
5655
while (!Serial) {
5756
delay(10);
5857
}
59-
6058
// Init button switch
6159
pinMode(BUTTON_PIN, INPUT_PULLUP);
6260

@@ -72,8 +70,21 @@ void setup() {
7270
// Add endpoint to Zigbee Core
7371
Zigbee.addEndpoint(&zbTempSensor);
7472

73+
Serial.println("Starting Zigbee...");
7574
// When all EPs are registered, start Zigbee in End Device mode
76-
Zigbee.begin();
75+
if (!Zigbee.begin()) {
76+
Serial.println("Zigbee failed to start!");
77+
Serial.println("Rebooting...");
78+
ESP.restart();
79+
} else {
80+
Serial.println("Zigbee started successfully!");
81+
}
82+
Serial.println("Connecting to network");
83+
while (!Zigbee.connected()) {
84+
Serial.print(".");
85+
delay(100);
86+
}
87+
Serial.println();
7788

7889
// Start Temperature sensor reading task
7990
xTaskCreate(temp_sensor_value_update, "temp_sensor_update", 2048, NULL, 10, NULL);
@@ -96,7 +107,8 @@ void loop() {
96107
delay(50);
97108
if ((millis() - startTime) > 3000) {
98109
// If key pressed for more than 3secs, factory reset Zigbee and reboot
99-
Serial.printf("Resetting Zigbee to factory settings, reboot.\n");
110+
Serial.println("Resetting Zigbee to factory and rebooting in 1s.");
111+
delay(1000);
100112
Zigbee.factoryReset();
101113
}
102114
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /