Movatterモバイル変換


[0]ホーム

URL:


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

Commit493c528

Browse files
feat(zigbee): Extend switch EPs with get Light methods (#11902)
* feat(zigbee): Extend swithc with get attribute methods* fix(zigbee): Fix -Wmissing-field-initializers warning* feat(zigbee): Update keywords.txt* ci(pre-commit): Apply automatic fixes---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parente8cba09 commit493c528

File tree

8 files changed

+679
-68
lines changed

8 files changed

+679
-68
lines changed

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

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ static SwitchData buttonFunctionPair[] = {{GPIO_INPUT_IO_TOGGLE_SWITCH, SWITCH_O
6666

6767
ZigbeeSwitch zbSwitch = ZigbeeSwitch(SWITCH_ENDPOINT_NUMBER);
6868

69+
staticbool light_state =false;
70+
6971
/********************* Zigbee functions **************************/
7072
staticvoidonZbButton(SwitchData *button_func_pair) {
7173
if (button_func_pair->func == SWITCH_ONOFF_TOGGLE_CONTROL) {
@@ -75,6 +77,33 @@ static void onZbButton(SwitchData *button_func_pair) {
7577
}
7678
}
7779

80+
staticvoidonLightStateChange(bool state) {
81+
if (state != light_state) {
82+
light_state = state;
83+
Serial.printf("Light state changed to %d\r\n", state);
84+
}
85+
}
86+
87+
/********************* Periodic task ***************************/
88+
voidperiodicTask(void *arg) {
89+
while (true) {
90+
// print the bound lights every 10 seconds
91+
staticuint32_t lastPrint =0;
92+
if (millis() - lastPrint >10000) {
93+
lastPrint =millis();
94+
zbSwitch.printBoundDevices(Serial);
95+
}
96+
97+
// Poll light state every second
98+
staticuint32_t lastPoll =0;
99+
if (millis() - lastPoll >1000) {
100+
lastPoll =millis();
101+
zbSwitch.getLightState();
102+
}
103+
vTaskDelay(1000 / portTICK_PERIOD_MS);
104+
}
105+
}
106+
78107
/********************* GPIO functions **************************/
79108
static QueueHandle_t gpio_evt_queue =NULL;
80109

@@ -102,6 +131,8 @@ void setup() {
102131
//Optional to allow multiple light to bind to the switch
103132
zbSwitch.allowMultipleBinding(true);
104133

134+
zbSwitch.onLightStateChange(onLightStateChange);
135+
105136
//Add endpoint to Zigbee Core
106137
Serial.println("Adding ZigbeeSwitch endpoint to Zigbee Core");
107138
Zigbee.addEndpoint(&zbSwitch);
@@ -154,6 +185,8 @@ void setup() {
154185
}
155186

156187
Serial.println();
188+
189+
xTaskCreate(periodicTask,"periodicTask",1024 *4,NULL,10,NULL);
157190
}
158191

159192
voidloop() {
@@ -188,11 +221,4 @@ void loop() {
188221
}
189222
vTaskDelay(10 / portTICK_PERIOD_MS);
190223
}
191-
192-
// print the bound lights every 10 seconds
193-
staticuint32_t lastPrint =0;
194-
if (millis() - lastPrint >10000) {
195-
lastPrint =millis();
196-
zbSwitch.printBoundDevices(Serial);
197-
}
198224
}

‎libraries/Zigbee/keywords.txt‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ clearBoundDevicesKEYWORD2
104104
onDefaultResponseKEYWORD2
105105

106106
# ZigbeeLight + ZigbeeColorDimmableLight
107-
onLightChangeKEYWORD2
108107
restoreLightKEYWORD2
109108
setLightKEYWORD2
110109
setLightStateKEYWORD2
@@ -115,6 +114,12 @@ getLightLevelKEYWORD2
115114
getLightRedKEYWORD2
116115
getLightGreenKEYWORD2
117116
getLightBlueKEYWORD2
117+
onLightChangeKEYWORD2
118+
onLightColorChangeWithSourceKEYWORD2
119+
onLightLevelChangeKEYWORD2
120+
onLightLevelChangeWithSourceKEYWORD2
121+
onLightStateChangeKEYWORD2
122+
onLightStateChangeWithSourceKEYWORD2
118123

119124
# ZigbeeSwitch + ZigbeeColorDimmerSwitch
120125
lightToggleKEYWORD2
@@ -125,6 +130,15 @@ lightOnWithTimedOffKEYWORD2
125130
lightOnWithSceneRecallKEYWORD2
126131
setLightLevelKEYWORD2
127132
setLightColorKEYWORD2
133+
getLightStateKEYWORD2
134+
getLightLevelKEYWORD2
135+
getLightColorKEYWORD2
136+
onLightStateChangeKEYWORD2
137+
onLightStateChangeWithSourceKEYWORD2
138+
onLightLevelChangeKEYWORD2
139+
onLightLevelChangeWithSourceKEYWORD2
140+
onLightColorChangeKEYWORD2
141+
onLightColorChangeWithSourceKEYWORD2
128142

129143
# ZigbeeThermostat
130144
onTempRecieveKEYWORD2

‎libraries/Zigbee/src/ZigbeeEP.cpp‎

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ bool ZigbeeEP::setBatteryVoltage(uint8_t voltage) {
160160

161161
boolZigbeeEP::reportBatteryPercentage() {
162162
/* Send report attributes command*/
163-
esp_zb_zcl_report_attr_cmd_t report_attr_cmd = {0};
163+
esp_zb_zcl_report_attr_cmd_t report_attr_cmd;
164+
memset(&report_attr_cmd,0,sizeof(report_attr_cmd));
164165
report_attr_cmd.address_mode = ESP_ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT;
165166
report_attr_cmd.attributeID = ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_PERCENTAGE_REMAINING_ID;
166167
report_attr_cmd.direction = ESP_ZB_ZCL_CMD_DIRECTION_TO_CLI;
@@ -181,7 +182,8 @@ bool ZigbeeEP::reportBatteryPercentage() {
181182

182183
char *ZigbeeEP::readManufacturer(uint8_t endpoint,uint16_t short_addr,esp_zb_ieee_addr_t ieee_addr) {
183184
/* Read peer Manufacture Name & Model Identifier*/
184-
esp_zb_zcl_read_attr_cmd_t read_req = {0};
185+
esp_zb_zcl_read_attr_cmd_t read_req;
186+
memset(&read_req,0,sizeof(read_req));
185187

186188
if (short_addr !=0) {
187189
read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT;
@@ -219,7 +221,8 @@ char *ZigbeeEP::readManufacturer(uint8_t endpoint, uint16_t short_addr, esp_zb_i
219221

220222
char *ZigbeeEP::readModel(uint8_t endpoint,uint16_t short_addr,esp_zb_ieee_addr_t ieee_addr) {
221223
/* Read peer Manufacture Name & Model Identifier*/
222-
esp_zb_zcl_read_attr_cmd_t read_req = {0};
224+
esp_zb_zcl_read_attr_cmd_t read_req;
225+
memset(&read_req,0,sizeof(read_req));
223226

224227
if (short_addr !=0) {
225228
read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT;
@@ -396,7 +399,8 @@ bool ZigbeeEP::setTimezone(int32_t gmt_offset) {
396399

397400
tmZigbeeEP::getTime(uint8_t endpoint,int32_t short_addr,esp_zb_ieee_addr_t ieee_addr) {
398401
/* Read peer time*/
399-
esp_zb_zcl_read_attr_cmd_t read_req = {0};
402+
esp_zb_zcl_read_attr_cmd_t read_req;
403+
memset(&read_req,0,sizeof(read_req));
400404

401405
if (short_addr >=0) {
402406
read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT;
@@ -448,7 +452,8 @@ tm ZigbeeEP::getTime(uint8_t endpoint, int32_t short_addr, esp_zb_ieee_addr_t ie
448452

449453
int32_tZigbeeEP::getTimezone(uint8_t endpoint,int32_t short_addr,esp_zb_ieee_addr_t ieee_addr) {
450454
/* Read peer timezone*/
451-
esp_zb_zcl_read_attr_cmd_t read_req = {0};
455+
esp_zb_zcl_read_attr_cmd_t read_req;
456+
memset(&read_req,0,sizeof(read_req));
452457

453458
if (short_addr >=0) {
454459
read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT;
@@ -564,7 +569,8 @@ static void findOTAServer(esp_zb_zdp_status_t zdo_status, uint16_t addr, uint8_t
564569
}
565570

566571
voidZigbeeEP::requestOTAUpdate() {
567-
esp_zb_zdo_match_desc_req_param_t req = {0};
572+
esp_zb_zdo_match_desc_req_param_t req;
573+
memset(&req,0,sizeof(req));
568574
uint16_t cluster_list[] = {ESP_ZB_ZCL_CLUSTER_ID_OTA_UPGRADE};
569575

570576
/* Match the OTA server of coordinator*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp