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

feat(zigbee): Add OTA client cluster support #10946

Merged
merged 7 commits into from
Feb 13, 2025

Conversation

P-R-O-C-H-Y
Copy link
Member

@P-R-O-C-H-Y P-R-O-C-H-Y commented Feb 6, 2025

Description of Change

This PR adds support for Zigbee OTA Client cluster.

To add Client cluster to the endpoint, add zbDevice.addOTAClient() before adding the endpoint to the Zigbee Class.
The first 3 parameters are required and should be defined in your application, so you can control them when releasing a new updated version.

addOTAClient(uint32_t file_version, uint32_t downloaded_file_ver, uint16_t hw_version, uint16_t manufacturer = 0x1001, uint16_t image_type = 0x1011, uint8_t max_data_size = 223);

Added an simple OTA Client example to demonstrate how to use the OTA update.

For creating the OTA binary file (update file), you will need to get a python script from the esp-zigbee-sdk.

Tests scenarios

The OTA update was tested using the HomeAssistant, with specific configuration to allow the OTA updates for custom devices.

Thanks @lhespress for this tutorial: ZHA.OTA.Instructions.pdf
Link to the OTA creating process and how to use the image_builder_tool:
https://docs.espressif.com/projects/esp-zigbee-sdk/en/latest/esp32/user-guide/zcl_ota_upgrade.html#generate-and-apply-ota-upgrade-image

Related links

Related #10871
Related #10135

Copy link
Contributor

github-actions bot commented Feb 6, 2025

Messages
📖 🎉 Good Job! All checks are passing!

👋 Hello P-R-O-C-H-Y, we appreciate your contribution to this project!


📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more.

🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project.

Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests.

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. Once the GitHub PR is approved we do the final review, collect approvals from core owners and make sure all the automated tests are passing.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
4. If the change is approved and passes the tests it is merged into the default branch.

Generated by 🚫 dangerJS against f9a47de

Copy link
Contributor

github-actions bot commented Feb 6, 2025

Test Results

 62 files   62 suites   5m 53s ⏱️
 21 tests  21 ✅ 0 💤 0 ❌
153 runs  153 ✅ 0 💤 0 ❌

Results for commit f9a47de.

♻️ This comment has been updated with latest results.

@P-R-O-C-H-Y P-R-O-C-H-Y mentioned this pull request Feb 6, 2025
17 tasks
@P-R-O-C-H-Y P-R-O-C-H-Y marked this pull request as ready for review February 12, 2025 18:00
@P-R-O-C-H-Y P-R-O-C-H-Y self-assigned this Feb 12, 2025
@P-R-O-C-H-Y P-R-O-C-H-Y added Area: Zigbee Issues and Feature Request about Zigbee Status: Review needed Issue or PR is awaiting review labels Feb 12, 2025
Copy link
Contributor

Memory usage test (comparing PR against master branch)

The table below shows the summary of memory usage change (decrease - increase) in bytes and percentage for each target.

MemoryFLASH [bytes]FLASH [%]RAM [bytes]RAM [%]
TargetDECINCDECINCDECINCDECINC
ESP32C60‼️ +2K0.00⚠️ +0.440⚠️ +320.00⚠️ +0.11
ESP32H20‼️ +2K0.00⚠️ +0.430⚠️ +320.00⚠️ +0.11
Click to expand the detailed deltas report [usage change in BYTES]
TargetESP32C6ESP32H2
ExampleFLASHRAMFLASHRAM
Zigbee/examples/Zigbee_CarbonDioxide_Sensor‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Color_Dimmable_Light‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Color_Dimmer_Switch‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Contact_Switch‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Dimmable_Light‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_OTA_Client----
Zigbee/examples/Zigbee_Occupancy_Sensor‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_On_Off_Light‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_On_Off_Switch‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Pressure_Flow_Sensor‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Scan_Networks‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Temperature_Sensor‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Thermostat‼️ +2K⚠️ +32‼️ +2K⚠️ +32
Zigbee/examples/Zigbee_Window_Covering‼️ +2K⚠️ +32‼️ +2K⚠️ +32

@@ -0,0 +1,112 @@
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD

@SuGlider SuGlider self-requested a review February 13, 2025 02:07
Copy link
Collaborator

@SuGlider SuGlider left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@me-no-dev me-no-dev added Status: Pending Merge Pull Request is ready to be merged and removed Status: Review needed Issue or PR is awaiting review labels Feb 13, 2025
@me-no-dev me-no-dev merged commit 83abca1 into espressif:master Feb 13, 2025
55 checks passed
vortigont pushed a commit to vortigont/arduino-esp32 that referenced this pull request Feb 13, 2025
* feat(zigbee): Add OTA client cluster support

* feat(zigbee): Add conditions to reject OTA upgrade

* feat(zigbee): Add newest version of OTA handler

* fix(zigbee): Fix errors and warnings, swap parameters order

* feat(zigbee): Add simple OTA Client example

* ci(pre-commit): Apply automatic fixes

---------

Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Zigbee Issues and Feature Request about Zigbee Status: Pending Merge Pull Request is ready to be merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants