docs: Minor docs changes

readme: Replacing the example rst files in the docs with the readme files in the example directories.
This commit is contained in:
Chirag Atal
2022-05-24 14:37:18 +05:30
committed by Shu Chen
parent a14fb95d08
commit 2e91ab095f
19 changed files with 412 additions and 923 deletions
+1 -103
View File
@@ -1,105 +1,3 @@
# ESP Matter
[Matter](https://buildwithmatter.com/) is the unified IP-based connectivity protocol built on proven technologies, helping connect and build reliable, secure IoT ecosystems. This new technology and royalty-free connectivity standard enables communications among a wide range of smart devices.
ESP Matter is the official Matter development framework for the Espressif's ESP32 series SoCs.
## Development Setup
This sections talks about setting up your development host, fetching the git repositories, and instructions to build and flash.
### Host Setup
You should install drivers and support packages for your development host. Windows, Linux and Mac OS-X, are supported development hosts. Please see [Get Started](https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32/index.html) for the host setup instructions.
### Getting the Repositories
This only needs to be done once:
```
$ git clone --recursive https://github.com/espressif/esp-idf.git
$ cd esp-idf
$ git checkout release/v4.4
$ git submodule update --init --recursive
$ ./install.sh
$ cd ..
$ git clone --recursive https://glab.espressif.cn/esp-matter-preview/esp-matter.git
$ cd esp-matter/connectedhomeip/connectedhomeip
$ source scripts/bootstrap.sh
```
### Configuring the environment
This needs to be done everytime a new terminal is opened:
```
$ cd /path/to/esp-idf
$ . export.sh
$ cd /path/to/esp-matter/
$ . export.sh
$ cd examples/light/
$ export ESPPORT=/dev/cu.SLAB_USBtoUART (or /dev/ttyUSB0 or /dev/ttyUSB1 on Linux or COMxx on MinGW)
```
### Building and Flashing the Firmware
Choose IDF target.
```
idf.py set-target esp32c3 (or esp32 or other supported targets)
```
* If IDF target has not been set explicitly, then `esp32` is considered as default.
* The default device for `esp32`/`esp32c3` is `esp32-devkit-c`/`esp32c3-devkit-m`. If you want to use another device, you can export `ESP_MATTER_DEVICE_PATH` after choosing correct target, e.g for `m5stack` device:
```
$ export ESP_MATTER_DEVICE_PATH=/path/to/esp_matter/device_hal/device/m5stack
```
* If the device that you have is of a different revision, and is not working as expected, you can create a new device and export your device path.
* The other peripheral components like led_driver, button_driver, etc are selected based on the device selected.
* The configuration of the peripheral components can be found in `$ESP_MATTER_DEVICE_PATH/esp_matter_device.cmake`.
Build and flash:
```
$ idf.py build
$ idf.py flash monitor
```
* Note: If you are getting build errors like:
```
ERROR: This script was called from a virtual environment, can not create a virtual environment again
```
Run:
```
pip install -r $IDF_PATH/requirements.txt
```
## Test Setup (Python Controller Setup)
### Environment setup
```
$ cd esp-matter/connectedhomeip/connectedhomeip
$ source ./scripts/activate.sh
$ gn gen out/debug
$ ninja -C out/debug
```
### Commissioning
Use `chip-tool` to pair the device:
```
$ ./out/debug/chip-tool pairing ble-wifi 12344321 TESTSSID TESTPASSWD 0 20202021 3840
```
### Cluster Control
Use the cluster commands to control the attributes.
```
$ ./out/debug/chip-tool onoff on 12344321 1
$ ./out/debug/chip-tool levelcontrol move-to-level 10 0 0 0 12344321 1
$ ./out/debug/chip-tool levelcontrol move-to-level 100 0 0 0 12344321 1
$ ./out/debug/chip-tool colorcontrol move-to-saturation 200 0 0 0 12344321 1
$ ./out/debug/chip-tool colorcontrol move-to-hue 150 0 0 0 0 12344321 1
$ ./out/debug/chip-tool onoff toggle 12344321 1
```
See the [docs](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/index.html) for more information.
+29 -30
View File
@@ -1,7 +1,7 @@
2. Developing with ESP Matter
=============================
Please refer to :project_file:`CHANGELOG.md` to track release changes
Please refer to :project_file:`Changelog <CHANGELOG.md>` to track release changes
and known-issues.
2.1 Development Setup
@@ -61,14 +61,11 @@ host. Linux and Mac OS-X are the supported development hosts in Matter.
The device would need additional configuration depending on the example,
for it to work. Check the example's "Additional Environment Setup" section for more information.
.. toctree::
:maxdepth: 1
Light <examples/light>
Light Switch <examples/light_switch>
RainMaker Light <examples/rainmaker_light>
Zap Light <examples/zap_light>
ZigBee Bridge <examples/zigbee_bridge>
- :project_file:`Light <examples/light/README.md>`
- :project_file:`Light Switch <examples/light_switch/README.md>`
- :project_file:`RainMaker Light <examples/rainmaker_light/README.md>`
- :project_file:`Zap Light <examples/zap_light/README.md>`
- :project_file:`ZigBee Bridge <examples/zigbee_bridge/README.md>`
2.1.5 Flashing the Firmware
~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -160,13 +157,19 @@ Pair a Wi-Fi Device over BLE:
::
chip-tool pairing ble-wifi 1 <ssid> <password> 20202021 3840
chip-tool pairing ble-wifi 0x7283 <ssid> <password> 20202021 3840
Pair a Thread Device over BLE:
::
chip-tool pairing ble-thread 1 hex:<operationalDataset> 20202021 3840
chip-tool pairing ble-thread 0x7283 hex:<operationalDataset> 20202021 3840
In the above commands:
- ``0x7283`` is the randomly generated ``node_id``
- ``20202021`` is the ``setup_pin_code``
- ``3840`` is the ``discriminator``
2.2.1.3 Post Commissioning Setup
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -174,15 +177,11 @@ Pair a Thread Device over BLE:
The device would need additional configuration depending on the example,
for it to work. Check the example's "Post Commissioning Setup" section for more information.
.. toctree::
:maxdepth: 1
Light <examples/light>
Light Switch <examples/light_switch>
RainMaker Light <examples/rainmaker_light>
Zap Light <examples/zap_light>
ZigBee Bridge <examples/zigbee_bridge>
- :project_file:`Light <examples/light/README.md>`
- :project_file:`Light Switch <examples/light_switch/README.md>`
- :project_file:`RainMaker Light <examples/rainmaker_light/README.md>`
- :project_file:`Zap Light <examples/zap_light/README.md>`
- :project_file:`ZigBee Bridge <examples/zigbee_bridge/README.md>`
2.2.1.4 Cluster Control
^^^^^^^^^^^^^^^^^^^^^^^
@@ -191,27 +190,27 @@ Use the cluster commands to control the attributes.
::
chip-tool onoff toggle 1 1
chip-tool onoff toggle 0x7283 0x1
::
chip-tool onoff on 1 1
chip-tool onoff on 0x7283 0x1
::
chip-tool levelcontrol move-to-level 10 0 0 0 1 1
chip-tool levelcontrol move-to-level 10 0 0 0 0x7283 0x1
::
chip-tool levelcontrol move-to-level 100 0 0 0 1 1
chip-tool levelcontrol move-to-level 100 0 0 0 0x7283 0x1
::
chip-tool colorcontrol move-to-saturation 200 0 0 0 1 1
chip-tool colorcontrol move-to-saturation 200 0 0 0 0x7283 0x1
::
chip-tool colorcontrol move-to-hue 150 0 0 0 0 1 1
chip-tool colorcontrol move-to-hue 150 0 0 0 0 0x7283 0x1
For more chip-tool usage, check https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool
@@ -315,7 +314,7 @@ the terms like endpoints, clusters, etc. that are used in this section.
node_t *node = node::create(&node_config, app_attribute_update_cb, NULL);
- We will use the ``color_dimmable_light`` standard device type in this
case. All standard device types are available in :project_file:`components/esp_matter/esp_matter_endpoint.h` header file.
case. All standard device types are available in :project_file:`esp_matter_endpoint.h <components/esp_matter/esp_matter_endpoint.h>` header file.
Each device type has a set of default configuration that can be
specific as well.
@@ -585,7 +584,7 @@ path conventions.
2.4.4.2 Modifying the BUILD.gn target
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There is an example :project_file:`examples/common/external_platform/BUILD.gn` file for
There is an example :project_file:`BUILD.gn <examples/common/external_platform/BUILD.gn>` file for
the ``ESP32_custom`` example platform. It simply compiles the ESP32
platform in Matter without any modifications.
@@ -664,7 +663,7 @@ If the Button driver that you wish to use is not part of Espressif's
supported list, you can write a driver for it yourself.
A reference hollow_button is available within the SDK at
:project_file:`device_hal/button_driver/hollow_button/button_driver.c`. This includes all
:project_file:`hollow_button/button_driver.c <device_hal/button_driver/hollow_button/button_driver.c>`. This includes all
the skeletal code and the empty APIs that the button driver is supposed
to implement to plug into the SDK.
@@ -708,7 +707,7 @@ If the LED driver that you wish to use is not part of Espressif's
supported list, you can write a driver for it yourself.
A reference hollow_led is available within the SDK at
:project_file:`device_hal/led_driver/hollow_led/led_driver.c`. This includes all the
:project_file:`hollow_led/led_driver.c <device_hal/led_driver/hollow_led/led_driver.c>`. This includes all the
skeletal code and the empty APIs that the LED driver is supposed to
implement to plug into the SDK.
-39
View File
@@ -1,39 +0,0 @@
Light
=====
1. Additional Environment Setup
-------------------------------
No additional setup is required.
2. Post Commissioning Setup
---------------------------
No additional setup is required.
3. Device Performance
---------------------
3.1 CPU and Memory usage
~~~~~~~~~~~~~~~~~~~~~~~~
The following is the CPU and Memory Usage.
- ``Bootup`` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- ``After Commissioning`` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on: `bd951b8 <https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e>`__ (2022-05-05)
======================== =========== ===================
\ Bootup After Commissioning
======================== =========== ===================
**Free Internal Memory** 109KB 105KB
**CPU Usage** \- \-
======================== =========== ===================
**Flash Usage**: Firmware binary size: 1.26MB
This should give you a good idea about the amount of CPU and free memory
that is available for you to run your application's code.
-130
View File
@@ -1,130 +0,0 @@
Light Switch
============
1. Additional Environment Setup
-------------------------------
No additional setup is required.
2. Post Commissioning Setup
---------------------------
2.1 Bind light to switch
~~~~~~~~~~~~~~~~~~~~~~~~
Using the chip-tool, commission 2 devices, the switch and a light. Then
use the below commands to bind the light to the switch.
For the commands below:
- Node Id of switch used during commissioning is 1
- Node Id of light used during commissioning is 2
- Cluster Id for OnOff cluster is 6
- Binding cluster is currently present on endpoint 1 on the switch
Update the light's acl attribute to add the entry of remote device
(switch) in the access control list:
::
chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [ 112233, 1 ], "targets": null}]' 2 0
Update the switch's binding attribute to add the entry of remote device
(light) in the binding table:
::
chip-tool binding write binding '[{"fabricIndex": 1, "node":2, "endpoint":1, "cluster":6}]' 1 1
2.2 Device console
~~~~~~~~~~~~~~~~~~
Switch specific console commands:
- Send command to all the binded devices on the specified cluster: (The IDs are in hex):
::
matter esp bound invoke <endpoint_id> <cluster_id> <command_id>
- Example: Off:
::
matter esp bound invoke 0x1 0x6 0x0
- Example: On:
::
matter esp bound invoke 0x1 0x6 0x1
- Example: Toggle:
::
matter esp bound invoke 0x1 0x6 0x2
3. Device Performance
---------------------
3.1 CPU and Memory usage
~~~~~~~~~~~~~~~~~~~~~~~~
The following is the CPU and Memory Usage.
- ``Bootup`` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- ``After Commissioning`` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on: `bd951b8 <https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e>`__ (2022-05-05)
======================== =========== ===================
\ Bootup After Commissioning
======================== =========== ===================
**Free Internal Memory** 113KB 110KB
**CPU Usage** \- \-
======================== =========== ===================
**Flash Usage**: Firmware binary size: 1.24MB
This should give you a good idea about the amount of CPU and free memory
that is available for you to run your application's code.
A2 Appendix FAQs
----------------
A2.1 Binding Failed
~~~~~~~~~~~~~~~~~~~
My light is not getting binded to my switch:
- Make sure the light's acl is updated. You can read it again to make
sure it is correct:
``chip-tool accesscontrol read acl 2 0``.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an `issue <https://github.com/espressif/esp-matter/issues>`. Make sure
to share these:
- The complete device logs for both the devices taken over UART.
- The complete chip-tool logs.
- The esp-matter and esp-idf branch you are using.
A2.2 Command Send Failed
~~~~~~~~~~~~~~~~~~~~~~~~
I cannot send commands to the light from my switch:
- Make sure the binding command was a success.
- Make sure you are passing the local endpoint_id, and not the remote
endpoint_id, to the cluster_update() API.
- If using device console, make sure you are running the ``bound invoke``
command and not the ``client invoke`` command. The client commands are for devices
which have not been binded.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an `issue <https://github.com/espressif/esp-matter/issues>`. Make sure
to share these:
- The complete device logs for both the devices taken over UART.
- The complete chip-tool logs.
- The esp-matter and esp-idf branch you are using.
-147
View File
@@ -1,147 +0,0 @@
RainMaker Light
===============
1. Additional Environment Setup
-------------------------------
1.1 Getting the Repositories
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
git clone --recursive https://github.com/espressif/esp-rainmaker.git
Setup the RainMaker CLI from here:
https://rainmaker.espressif.com/docs/cli-setup.html
1.2 Configuring the Environment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
export ESP_RMAKER_PATH=/path/to/esp-rainmaker
1.3 RainMaker Claiming
~~~~~~~~~~~~~~~~~~~~~~
If self-claiming is not enabled/supported, this need to be done before
flashing the firmware.
RainMaker CLI:
::
cd $ESP_RMAKER_PATH/cli
rainmaker.py claim --addr 0x3E0000 $ESPPORT
2. Post Commissioning Setup
---------------------------
2.1 RainMaker User-Node Association
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This needs to be done after commissioning.
Check if the device already has user node association done, using the
custom RainMaker cluster (cluster_id: 0x131b0000):
::
chip-tool any read-by-id 0x131b0000 0x0 0x1 0x0
- If the above custom status attribute (attribute_id: 0x0) returns
true, the association has already been done.
- If the attribute returns false, the association has not been done.
And the below custom configuration command (command_id: 0x0) can be
used to do the association.
Get the RainMaker node id (attribute_id: 0x1):
::
chip-tool any read-by-id 0x131b0000 0x1 0x1 0x0
RainMaker CLI:
Trigger user-node association using the above rainmaker-node-id: This will print the user-id and secret-key (do not close this):
::
rainmaker.py test --addnode <rainmaker-node-id>
>> add-user <user-id> <secret-key>
Prepare the command payload using the above details:
::
payload: <user-id>::<secret-key>
Now use the payload to run the RainMaker configuration command from
chip-tool:
::
chip-tool any command-by-id 0x131b0000 0x0 '"<user-id>::<secret-key>"' 0x1 0x0
The device/node should now be associated with the user.
2.2 Device console
~~~~~~~~~~~~~~~~~~
RainMaker specific console commands:
- User Node Association:
::
matter esp rainmaker add-user <user-id> <secret-key>
3. Device Performance
---------------------
3.1 CPU and Memory usage
~~~~~~~~~~~~~~~~~~~~~~~~
The following is the CPU and Memory Usage.
- ``Bootup`` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- ``After Commissioning`` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on: `bd951b8 <https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e>`__ (2022-05-05)
======================== =========== ===================
\ Bootup After Commissioning
======================== =========== ===================
**Free Internal Memory** 87KB 65KB
**CPU Usage** \- \-
======================== =========== ===================
**Flash Usage**: Firmware binary size: 1.52MB
This should give you a good idea about the amount of CPU and free memory
that is available for you to run your application's code.
A2 Appendix FAQs
----------------
A2.1 User Node association is failing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User Node association is failing on my device:
- Make sure the device has been claimed.
- If the device prints “This command has reached a limit”, reboot the
device to run the command again.
- Read the status attribute:
``chip-tool any read-by-id 0x131b0000 0x0 0x1 0x0``. If
this custom status attribute (attribute_id: 0x0) returns true, the
association has already been done.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an `issue <https://github.com/espressif/esp-matter/issues>`. Make sure
to share these:
- The complete device logs taken over UART.
- The esp-matter, esp-idf and esp-rainmaker branch you are using.
-97
View File
@@ -1,97 +0,0 @@
Zap Light
=========
1. Additional Environment Setup
-------------------------------
This example uses the Zap data model from zap-generated instead of using
the ESP Matter data model.
1.1 Customization
~~~~~~~~~~~~~~~~~
For customizing the 'device', the zap-tool can be used to create the
``.zap`` file, if you don't already have one. An existing .zap file can
also be edited.
::
cd esp-matter/connectedhomeip/connectedhomeip
./scripts/tools/zap/run_zaptool.sh <optional_existing_zap_file>
- If this command fails, run it again.
- Once the customization is done, click on 'save' to save the .zap
file.
The other zap-generated files can be generated using the generate
command:
::
./scripts/tools/zap/generate.py /path/to/<saved>.zap -o /path/to/<output_folder>
Now the files in zap_light/main/zap-generated can be replaced with the
new generated files.
2. Post Commissioning Setup
---------------------------
No additional setup is required.
3. Device Performance
---------------------
3.1 CPU and Memory usage
~~~~~~~~~~~~~~~~~~~~~~~~
The following is the CPU and Memory Usage.
- ``Bootup`` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- ``After Commissioning`` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on: `bd951b8 <https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e>`__ (2022-05-05)
======================== =========== ===================
\ Bootup After Commissioning
======================== =========== ===================
**Free Internal Memory** 121KB 118KB
**CPU Usage** \- \-
======================== =========== ===================
**Flash Usage**: Firmware binary size: 1.24MB
This should give you a good idea about the amount of CPU and free memory
that is available for you to run your application's code.
A2 Appendix FAQs
----------------
A2.1 Zaptool is not working
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The run_zaptool.py command is failing:
- Check that the connectedhomeip submodule is updated.
- Revert any modifications in any of te files in the connectedhomeip
submodule, or any submodules in connectedhomeip, and try again.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an `issue <https://github.com/espressif/esp-matter/issues>`. Make sure
to share these:
- The complete logs for the command.
- The esp-matter and esp-idf branch you are using.
A2.2 Missing files in zap-generated
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Some files are not generated on running the generate command
(generate.py):
- This can happen depending on your zap configuration, and it should be
okay to use the file which was already present in zap-generated.
- We have observed that af-gen-event.h does not get generated on
running the generate command.
- If the file is missing from the zap-generated folder, there might be
other compilation errors of the file not being found.
-143
View File
@@ -1,143 +0,0 @@
ZigBee Bridge
=============
The Matter Bridge device is composed of two parts: The RCP running on
ESP32-H2 and the bridge app running on ESP32.
1. Additional Environment Setup
-------------------------------
1.1 Hardware connection
~~~~~~~~~~~~~~~~~~~~~~~
Connect the two SoCs via UART, below is an example setup with ESP32
DevKitC and ESP32-H2 DevKitC:
.. figure:: ../../_static/zigbee_bridge_hardware_connection.jpg
:align: center
:alt: ZigBee Bridge Hardware Connection
:figclass: align-center
========= ============
ESP32 Pin ESP32-H2 Pin
========= ============
GND GND
GPIO4 GPIO7
GPIO5 GPIO8
========= ============
1.2 Build and flash the RCP (ESP32-H2)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
cd ${IDF_PATH}/examples/zigbee/esp_zigbee_rcp/
idf.py --preview set-target esp32h2
idf.py -p <port> build flash
The Matter Bridge will run on the ESP32 and ZigBee network will be
formed.
2. Post Commissioning Setup
---------------------------
2.1 Discovering Zigbee Devices
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can read the parts list from the Bridge to get the number of the bridged devices.
::
chip-tool descriptor read parts-list 1 0
If there is no other ZigBee device on the ZigBee Network, you will get
an empty result. Example:
::
Data = [
],
2.2 Setup ZigBee Bulb on ESP32-H2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Build and run ZigBee Bulb app on another ESP32-H2 board.
::
cd ${IDF_PATH}/examples/zigbee/light_sample/light_bulb
idf.py --preview set-target esp32h2
idf.py -p <port> build flash monitor
The ZigBee Bulb will be added to the ZigBee Network and a dynamic
endpoint will be added on the Bridge device. You can read the parts list
again to get the dynamic endpoint ID.
::
chip-tool descriptor read parts-list 1 0
The data will now contain the information of the connected ZigBee devices. Example:
::
Data = [
1,
],
It means that the ZigBee Bulb is added as Endpoint 1 on the Bridge
device. You can read the cluster servers list on the dynamic endpoint.
::
chip-tool descriptor read server-list 1 1
This will give the list of supported server clusters. Example:
::
OnDescriptorServerListListAttributeResponse: 4 entries
[1]: 6
[2]: 29
[3]: 57
[4]: 64
2.3 Control the bulb with chip-tool
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Now you can control the ZigBee bulb using the chip tool.
::
chip-tool onoff toggle 1 1
3. Device Performance
---------------------
3.1 CPU and Memory usage
~~~~~~~~~~~~~~~~~~~~~~~~
The following is the CPU and Memory Usage.
- ``Bootup`` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- ``After Commissioning`` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on: `bd951b8 <https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e>`__ (2022-05-05)
======================== =========== ===================
\ Bootup After Commissioning
======================== =========== ===================
**Free Internal Memory** 109KB 105KB
**CPU Usage** \- \-
======================== =========== ===================
**Flash Usage**: Firmware binary size: 1.26MB
This should give you a good idea about the amount of CPU and free memory
that is available for you to run your application's code.
todo. Update the values.
+6 -9
View File
@@ -43,7 +43,7 @@ Bluetooth/BLE does not work on by device:
- Run the device console command:
``matter wifi connect <ssid> <password>``.
- Run the chip-tool command for commissioning over ip:
``chip-tool pairing onnetwork 1 20202021``.
``chip-tool pairing onnetwork 0x7283 20202021``.
- If you are still facing issues, reproduce it on the default
example for the device and then raise it `here <https://github.com/espressif/esp-matter/issues>`__. Make sure
@@ -142,11 +142,8 @@ The LED on my devkit is not working:
**Also check the "Appendix FAQs" sections of the respective examples.**
.. toctree::
:maxdepth: 1
Light <examples/light>
Light Switch <examples/light_switch>
RainMaker Light <examples/rainmaker_light>
Zap Light <examples/zap_light>
ZigBee Bridge <examples/zigbee_bridge>
- :project_file:`Light <examples/light/README.md>`
- :project_file:`Light Switch <examples/light_switch/README.md>`
- :project_file:`RainMaker Light <examples/rainmaker_light/README.md>`
- :project_file:`Zap Light <examples/zap_light/README.md>`
- :project_file:`ZigBee Bridge <examples/zigbee_bridge/README.md>`
+1 -1
View File
@@ -137,7 +137,7 @@ enables Remote Control through RainMaker.
This application creates an On/Off Light Switch device using the ESP Matter
data model.
It creates the On/Off client and other devices can be binded to the
It creates the On/Off client and other devices can be bound to the
switch and then controlled from the switch.
1.3.4 Zap Light
+1 -1
View File
@@ -33,7 +33,7 @@ per device. ESP-Matter provides a utility (mfg_tool.py) to create instances of t
When using the utility, by default, the above details will be included in the generated NVS partition image. The utility also has provision to include additional details in the same NVS image by using the config and value CSV files.
Details about using the ESP Matter mass manufacturing utility can be found here:
:project_file:`tools/mfg_tool/README.md`.
:project_file:`mfg_tool<tools/mfg_tool/README.md>`.
4.3.2 Pre-Provisioned Modules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+25 -49
View File
@@ -1,62 +1,38 @@
# Light Example
# Light
## Building and Flashing the Firmware
This example creates a Color Dimmable Light device using the ESP
Matter data model.
See the [README.md](../../README.md) file for more information about building and flashing the firmware.
See the [docs](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html) for more information about building and flashing the firmware.
## 1. Additional Environment Setup
## What to expect in this example?
No additional setup is required.
The example provides a minimal implementation to build a Matter light device on ESP32 series SoCs.
## 2. Post Commissioning Setup
Supported features:
- Matter Commissioning
- On/Off, Brightness and Color (on ESP32-C3 for now) control
- (Optional) Interactive shell
No additional setup is required.
### Useful shell commands
## 3. Device Performance
- BLE commands
### 3.1 Memory usage
```
> matter ble <start|stop|state>
```
The following is the Memory and Flash Usage.
Set and get the BLE advertisement state.
- `Bootup` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- `After Commissioning` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on:
[bd951b8](https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e)
(2022-05-05)
- Wi-Fi commands
| | Bootup | After Commissioning |
|:- |:-: |:-: |
|**Free Internal Memory** |109KB |105KB |
```
> matter wifi mode [disable|ap|sta]
```
**Flash Usage**: Firmware binary size: 1.26MB
Set and get the Wi-Fi mode.
```
> matter wifi connect <ssid> <psk>
```
Connect to Wi-Fi network.
- Device configuration
```
> matter config
```
Dump the device static configuration
- Factory reset
```
> matter device factoryreset
```
- On-boarding codes
```
> matter onboardingcodes
```
Dump the on-boarding pairing code payloads.
This should give you a good idea about the amount of free memory that is
available for you to run your application's code.
-2
View File
@@ -54,8 +54,6 @@ static esp_err_t app_attribute_update_cb(callback_type_t type, uint16_t endpoint
if (type == PRE_UPDATE) {
/* Driver update */
err = app_driver_attribute_update(endpoint_id, cluster_id, attribute_id, val);
} else if (type == POST_UPDATE) {
/* Other ecosystems update */
}
return err;
+98 -37
View File
@@ -1,59 +1,120 @@
# Light Switch Example
# Light Switch
## Building and Flashing the Firmware
This example creates an On/Off Light Switch device using the ESP Matter
data model.
See the [README.md](../../README.md) file for more information about building and flashing the firmware.
It creates the On/Off client and other devices can be bound to the
switch and then controlled from the switch.
## What to expect in this example?
See the [docs](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html) for more information about building and flashing the firmware.
Supported features:
- Matter Commissioning
- Switch will connect to light when Bind command is sent
- CLIs to control remote light from switch
## 1. Additional Environment Setup
## Bind light to switch
No additional setup is required.
Update the light's acl attribute which adds entry of remote device (switch) in the access control list:
## 2. Post Commissioning Setup
### 2.1 Bind light to switch
Using the chip-tool, commission 2 devices, the switch and a light. Then
use the below commands to bind the light to the switch.
For the commands below:
- Node Id of switch used during commissioning is 0x7283 (29315 in decimal)
- Node Id of light used during commissioning is 0x5164 (20836 in decimal)
- Cluster Id for OnOff cluster is 6
- Binding cluster is currently present on endpoint 1 on the switch
Update the light's acl attribute to add the entry of remote device
(switch) in the access control list:
```
./out/debug/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [ 112233, 12344321 ], "targets": null}]' 12344322 0
chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [ 112233, 29315 ], "targets": null}]' 0x5164 0x0
```
Update the switch's binding attribute which adds entry of remote device (light) in binding table:
Update the switch's binding attribute to add the entry of remote device
(light) in the binding table:
```
./out/debug/chip-tool binding write binding '[{"fabricIndex": 1, "node":12344322, "endpoint":1, "cluster":6}]' 12344321 1
chip-tool binding write binding '[{"fabricIndex": 1, "node":20836, "endpoint":1, "cluster":6}]' 0x7283 0x1
```
note:
- 12344321 : node Id of switch used during commissioning
- 12344322 : node Id of light used during commissioning
- Cluster Id for OnOff cluster is 6
- Binding cluster is currently present on endpoint 1
### 2.2 Device console
### Useful shell commands
Switch specific console commands:
After the binding is successful you can send the following command to control light from switch
- Send command to all the bound devices on the specified cluster:
(The IDs are in hex):
```
matter esp bound invoke <endpoint_id> <cluster_id> <command_id>
```
```
> matter esp bound invoke <endpoint_id> <cluster_id> <command_id>
```
here, endpoint_id, cluster_id, command_id of switch must be given in hex format
- Example: Off:
```
matter esp bound invoke 0x1 0x6 0x0
```
e.g.
- Example: On:
```
matter esp bound invoke 0x1 0x6 0x1
```
- Power Off command
- Example: Toggle:
```
matter esp bound invoke 0x1 0x6 0x2
```
```
> matter esp bound invoke 0x0001 0x0006 0x0000
```
## 3. Device Performance
- Power On command
### 3.1 Memory usage
```
> matter esp bound invoke 0x0001 0x0006 0x0001
```
The following is the Memory and Flash Usage.
- Toggle command
- `Bootup` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- `After Commissioning` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on:
[bd951b8](https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e)
(2022-05-05)
```
> matter esp bound invoke 0x0001 0x0006 0x0002
```
| | Bootup | After Commissioning |
|:- |:-: |:-: |
|**Free Internal Memory** |113KB |110KB |
**Flash Usage**: Firmware binary size: 1.24MB
This should give you a good idea about the amount of free memory that is
available for you to run your application's code.
## A2 Appendix FAQs
### A2.1 Binding Failed
My light is not getting bound to my switch:
- Make sure the light's acl is updated. You can read it again to make
sure it is correct: `chip-tool accesscontrol read acl 0x5164 0x0`.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an [issue](https://github.com/espressif/esp-matter/issues).
Make sure to share these:
- The complete device logs for both the devices taken over UART.
- The complete chip-tool logs.
- The esp-matter and esp-idf branch you are using.
### A2.2 Command Send Failed
I cannot send commands to the light from my switch:
- Make sure the binding command was a success.
- Make sure you are passing the local endpoint_id, and not the remote
endpoint_id, to the cluster_update() API.
- If using device console, make sure you are running the
`bound invoke` command and not the `client invoke` command. The
client commands are for devices which have not been bound.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an [issue](https://github.com/espressif/esp-matter/issues).
Make sure to share these:
- The complete device logs for both the devices taken over UART.
- The complete chip-tool logs.
- The esp-matter and esp-idf branch you are using.
-2
View File
@@ -54,8 +54,6 @@ static esp_err_t app_attribute_update_cb(callback_type_t type, uint16_t endpoint
if (type == PRE_UPDATE) {
/* Driver update */
err = app_driver_attribute_update(endpoint_id, cluster_id, attribute_id, val);
} else if (type == POST_UPDATE) {
/* Other ecosystems update */
}
return err;
+102 -38
View File
@@ -1,78 +1,142 @@
# RainMaker Light Example
# RainMaker Light
## Building and Flashing the Firmware
This example creates a Color Dimmable Light device using the ESP
Matter data model.
See the [README.md](../../README.md) file for more information about building and flashing the firmware.
It also initializes [ESP RainMaker](https://rainmaker.espressif.com/) which enables Device Management and
OTA using the RainMaker cloud. If user node association is done, it also
enables Remote Control through RainMaker.
## What to expect in this example?
See the [docs](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html) for more information about building and flashing the firmware.
This example showcases integration of ESP RainMaker with a Matter light device. ESP RainMaker is an end-to-end solution offered by Espressif to enable remote control and monitoring for ESP32 based products without any configuration required in the Cloud. Please refer the ESP RainMaker documentation [here](https://rainmaker.espressif.com/docs/get-started.html) for more details.
## 1. Additional Environment Setup
Supported features:
- Matter Commissioning
- RainMaker Claiming and User-Node Association
- On/Off, Brightness and Color (on ESP32-C3 for now) control over RainMaker app as well as Matter Controller
- Updates through RainMaker reflected over Matter and vice versa
### 1.1 Getting the Repositories
Make sure to follow these additional steps along with the steps in the top level README.
### Getting the Repositories
This only needs to be done once:
```
$ git clone --recursive https://github.com/espressif/esp-rainmaker.git
git clone --recursive https://github.com/espressif/esp-rainmaker.git
```
Setup the RainMaker CLI from here: https://rainmaker.espressif.com/docs/cli-setup.html
### Configuring the environment
### 1.2 Configuring the Environment
This needs to be done everytime a new terminal is opened:
```
cd esp-matter/examples/rainmaker_light/
export ESP_RMAKER_PATH=/path/to/esp-rainmaker
```
### RainMaker Claiming
### 1.3 RainMaker Claiming
If self-claiming is not enabled/supported, this need to be done before flashing the firmware.
If self-claiming is not enabled/supported, this need to be done before
flashing the firmware.
RainMaker CLI:
```
$ cd $ESP_RMAKER_PATH/cli
$ rainmaker.py claim --addr 0x3E0000 $ESPPORT
cd $ESP_RMAKER_PATH/cli
rainmaker.py claim --addr 0x3E0000 $ESPPORT
```
### RainMaker User-Node Association
## 2. Post Commissioning Setup
### 2.1 RainMaker User-Node Association
This needs to be done after commissioning.
Check if the device already has user node association done, using the custom RainMaker cluster (cluster_id: 0x131B0000):
```
$ ./out/debug/chip-tool any read-by-id 0x131B0000 0x0 0x1 0x0
```
* If the above custom status attribute (attribute_id: 0x0) returns true, the association has already been done.
* If the attribute returns false, the association has not been done. And the below custom configuration command
(command_id: 0x0) can be used to do the association.
Check if the device already has user node association done, using the
custom RainMaker cluster (cluster_id: 0x131b0000):
```
chip-tool any read-by-id 0x131b0000 0x0 0x7283 0x0
```
- If the above custom status attribute (attribute_id: 0x0) returns
true, the association has already been done.
- If the attribute returns false, the association has not been done.
And the below custom configuration command (command_id: 0x0) can be
used to do the association.
Get the RainMaker node id (attribute_id: 0x1):
```
chip-tool any read-by-id 0x131b0000 0x1 0x7283 0x0
```
RainMaker CLI:
Get the details: This will print the user_id and secret_key (do not close this):
Trigger user-node association using the above rainmaker-node-id: This
will print the user-id and secret-key (do not close this):
```
$ rainmaker.py test --addnode <node-id>
rainmaker.py test --addnode <rainmaker-node-id>
>> add-user <user-id> <secret-key>
```
Prepare the command payload: Use the above details.
Prepare the command payload using the above details:
```
payload: <user_id>::<secret_key>
payload: <user-id>::<secret-key>
```
Now use the payload to run the RainMaker configuration command from chip-tool:
Now use the payload to run the RainMaker configuration command from
chip-tool:
```
$ ./out/debug/chip-tool any command-by-id 0x131B0000 0x0 '"<user_id>::<secret_key>"' 0x1 0x0
chip-tool any command-by-id 0x131b0000 0x0 '"<user-id>::<secret-key>"' 0x7283 0x0
```
The device/node should now be associated with the user.
### 2.2 Device console
RainMaker specific console commands:
- User Node Association:
```
matter esp rainmaker add-user <user-id> <secret-key>
```
## 3. Device Performance
### 3.1 Memory usage
The following is the Memory and Flash Usage.
- `Bootup` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- `After Commissioning` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on:
[bd951b8](https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e)
(2022-05-05)
| | Bootup | After Commissioning |
|:- |:-: |:-: |
|**Free Internal Memory** |87KB |65KB |
**Flash Usage**: Firmware binary size: 1.52MB
This should give you a good idea about the amount of free memory that is
available for you to run your application's code.
## A2 Appendix FAQs
### A2.1 User Node association is failing
User Node association is failing on my device:
- Make sure the device has been claimed.
- If the device prints "This command has reached a limit", reboot the
device to run the command again.
- Read the status attribute:
`chip-tool any read-by-id 0x131b0000 0x0 0x7283 0x0`. If this custom
status attribute (attribute_id: 0x0) returns true, the association
has already been done.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an [issue](https://github.com/espressif/esp-matter/issues).
Make sure to share these:
- The complete device logs taken over UART.
- The esp-matter, esp-idf and esp-rainmaker branch you are using.
+1 -1
View File
@@ -55,7 +55,7 @@ static esp_err_t app_attribute_update_cb(callback_type_t type, uint16_t endpoint
/* Driver update */
err = app_driver_attribute_update(endpoint_id, cluster_id, attribute_id, val);
} else if (type == POST_UPDATE) {
/* Other ecosystems update */
/* Rainmaker update */
err = app_rainmaker_attribute_update(endpoint_id, cluster_id, attribute_id, val);
}
+63 -37
View File
@@ -1,62 +1,88 @@
# Light Example
# Zap Light
## Building and Flashing the Firmware
This example creates a Color Dimmable Light device using the Zap
data model instead of the ESP Matter data model.
See the [README.md](../../README.md) file for more information about building and flashing the firmware.
See the [docs](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html) for more information about building and flashing the firmware.
## 1. Additional Environment Setup
## What to expect in this example?
### 1.1 Customization
The example provides a minimal implementation to build a Matter light device on ESP32 series SoCs.
Supported features:
- Matter Commissioning
- On/Off, Brightness and Color (on ESP32-C3 for now) control
- (Optional) Interactive shell
### Useful shell commands
- BLE commands
For customizing the 'device', the zap-tool can be used to create the
`.zap` file, if you don't already have one. An existing .zap file can
also be edited.
```
> matter ble <start|stop|state>
cd esp-matter/connectedhomeip/connectedhomeip
./scripts/tools/zap/run_zaptool.sh <optional_existing_zap_file>
```
Set and get the BLE advertisement state.
- If this command fails, run it again.
- Once the customization is done, click on 'save' to save the .zap
file.
- Wi-Fi commands
The other zap-generated files can be generated using the generate
command:
```
> matter wifi mode [disable|ap|sta]
./scripts/tools/zap/generate.py /path/to/<saved>.zap -o /path/to/<output_folder>
```
Set and get the Wi-Fi mode.
Now the files in zap_light/main/zap-generated can be replaced with the
new generated files.
```
> matter wifi connect <ssid> <psk>
```
## 2. Post Commissioning Setup
Connect to Wi-Fi network.
No additional setup is required.
- Device configuration
## 3. Device Performance
```
> matter config
```
### 3.1 Memory usage
Dump the device static configuration
The following is the Memory and Flash Usage.
- `Bootup` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- `After Commissioning` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on:
[bd951b8](https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e)
(2022-05-05)
- Factory reset
| | Bootup | After Commissioning |
|:- |:-: |:-: |
|**Free Internal Memory** |121KB |118KB |
```
> matter device factoryreset
```
**Flash Usage**: Firmware binary size: 1.24MB
- On-boarding codes
This should give you a good idea about the amount of free memory that is
available for you to run your application's code.
```
> matter onboardingcodes
```
## A2 Appendix FAQs
Dump the on-boarding pairing code payloads.
### A2.1 Zaptool is not working
The run_zaptool.py command is failing:
- Check that the connectedhomeip submodule is updated.
- Revert any modifications in any of te files in the connectedhomeip
submodule, or any submodules in connectedhomeip, and try again.
- If you are still facing issues, reproduce the issue on the default
example for the device and then raise an [issue](https://github.com/espressif/esp-matter/issues).
Make sure to share these:
- The complete logs for the command.
- The esp-matter and esp-idf branch you are using.
### A2.2 Missing files in zap-generated
Some files are not generated on running the generate command
(generate.py):
- This can happen depending on your zap configuration, and it should
be okay to use the file which was already present in zap-generated.
- We have observed that af-gen-event.h does not get generated on
running the generate command.
- If the file is missing from the zap-generated folder, there might be
other compilation errors of the file not being found.
-2
View File
@@ -52,8 +52,6 @@ static esp_err_t app_attribute_update_cb(callback_type_t type, uint16_t endpoint
if (type == PRE_UPDATE) {
/* Driver update */
err = app_driver_attribute_update(endpoint_id, cluster_id, attribute_id, val);
} else if (type == POST_UPDATE) {
/* Other ecosystems update */
}
return err;
+85 -55
View File
@@ -1,100 +1,130 @@
# Zigbee Bridge Example
# ZigBee Bridge
## Building and Flashing the Firmware
This example demonstrates a Matter-ZigBee Bridge that bridges ZigBee devices to Matter fabric.
See the [README.md](../../README.md) file for more information about building and flashing the firmware.
The Matter Bridge device is composed of two parts: The RCP running on
ESP32-H2 and the bridge app running on ESP32.
The Matter Bridge device is composed of two parts: The RCP running on ESP32-H2 and the bridge app
running on ESP32.
See the [docs](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html) for more information about building and flashing the firmware.
### Hardware connection
## 1. Additional Environment Setup
Connect the two SoCs via UART, below is an example setup with ESP32 DevKitC and ESP32-H2 DevKitC:
![zigbee_bridge](../docs/_static/esp32-esp32h2.jpg)
### 1.1 Hardware connection
ESP32 Pin | ESP32-H2 Pin
-------------|--------------
GND | GND
GPIO4 | GPIO7
GPIO5 | GPIO8
Connect the two SoCs via UART, below is an example setup with ESP32
DevKitC and ESP32-H2 DevKitC:
### Build and flash the RCP (ESP32-H2)
![ZigBee Bridge Hardware Connection](../../docs/_static/zigbee_bridge_hardware_connection.jpg)
| ESP32 Pin | ESP32-H2 Pin |
|-------------|--------------|
| GND | GND |
| GPIO4 | GPIO7 |
| GPIO5 | GPIO8 |
### 1.2 Build and flash the RCP (ESP32-H2)
```
$ cd ${IDF_PATH}/examples/zigbee/esp_zigbee_rcp/
$ idf.py --preview set-target esp32h2
$ idf.py -p <port> build flash
cd ${IDF_PATH}/examples/zigbee/esp_zigbee_rcp/
idf.py --preview set-target esp32h2
idf.py -p <port> build flash
```
The Matter Bridge app will run on the ESP32 and ZigBee network will be formed.
The Matter Bridge will run on the ESP32 and ZigBee network will be
formed.
## Build chip-tool and provision the Matter Bridge device
## 2. Post Commissioning Setup
Open a new terminal window and active matter environment
### 2.1 Discovering Zigbee Devices
You can read the parts list from the Bridge to get the number of the
bridged devices.
```
$ cd esp-matter/connectedhomeip/connectedhomeip/examples/chip-tool
$ gn gen out
$ ninja -C out
chip-tool descriptor read parts-list 0x7283 0x0
```
Now you can provision the Matter Bridge device with `./out/chip-tool` (Please ensure that your PC
and the bridge device are on the same local network).
If there is no other ZigBee device on the ZigBee Network, you will get
an empty result. Example:
```
$ ./out/chip-tool pairing ble-wifi 12344321 {wifi-ssid} {wifi-password} 20202021 3840
Data = [
],
```
After Provisioning success, you can read the parts list in Bridge app to get the number of the bridged devices.
### 2.2 Setup ZigBee Bulb on ESP32-H2
Build and run ZigBee Bulb app on another ESP32-H2 board.
```
$ ./out/chip-tool descriptor read parts-list 12344321 0
cd ${IDF_PATH}/examples/zigbee/light_sample/light_bulb
idf.py --preview set-target esp32h2
idf.py -p <port> build flash monitor
```
If there is no other ZigBee device on the ZigBee Network, you will get an empty result.
The ZigBee Bulb will be added to the ZigBee Network and a dynamic
endpoint will be added on the Bridge device. You can read the parts list
again to get the dynamic endpoint ID.
```
[1639378931.513638][1808055:1808060] CHIP:DMG: Data = [
[1639378931.513641][1808055:1808060] CHIP:DMG:
[1639378931.513645][1808055:1808060] CHIP:DMG: ],
chip-tool descriptor read parts-list 0x7283 0x0
```
## Setup ZigBee Bulb on ESP32-H2
Build and run ZigBee Bulb app on another ESP32-H2 board. Open another terminal window and repeat Step 2 again.
The data will now contain the information of the connected ZigBee
devices. Example:
```
$ cd ${IDF_PATH}/examples/zigbee/light_sample/light_bulb
$ idf.py --preview set-target esp32h2
$ idf.py -p <port> build flash monitor
Data = [
1,
],
```
The Zigbee Bulb will be added to the ZigBee Network and a dynamic endpoint will be added on the Bridge device. You can read the parts list again to get the dynamic endpoint ID.
It means that the ZigBee Bulb is added as Endpoint 1 on the Bridge
device. You can read the cluster servers list on the dynamic endpoint.
```
$ ./out/chip-tool descriptor read parts-list 12344321 0
...
[1639379769.737877][1809119:1809124] CHIP:DMG: Data = [
[1639379769.737881][1809119:1809124] CHIP:DMG: 1,
[1639379769.737885][1809119:1809124] CHIP:DMG: ],
chip-tool descriptor read server-list 0x7283 0x1
```
It means that the ZigBee Bulb is added as Endpoint 1 on the Bridge device. You can read the cluster servers list on the dynamic endpoint.
This will give the list of supported server clusters. Example:
```
$ ./out/chip-tool descriptor read server-list 12344321 1
...
[1639380020.748687][1809427:1809432] CHIP:TOO: OnDescriptorServerListListAttributeResponse: 4 entries
[1639380020.748695][1809427:1809432] CHIP:TOO: [1]: 6
[1639380020.748699][1809427:1809432] CHIP:TOO: [2]: 29
[1639380020.748703][1809427:1809432] CHIP:TOO: [3]: 57
[1639380020.748706][1809427:1809432] CHIP:TOO: [4]: 64
OnDescriptorServerListListAttributeResponse: 4 entries
[1]: 6
[2]: 29
[3]: 57
[4]: 64
```
## Control the bulb with chip-tool
### 2.3 Control the bulb with chip-tool
Now you can control the ZigBee bulb using the chip tool.
Now you can control the ZigBee bulb on chip tool.
```
$ ./out/chip-tool onoff toggle 12344321 1
chip-tool onoff toggle 0x7283 0x1
```
## 3. Device Performance
### 3.1 Memory usage
The following is the Memory and Flash Usage.
- `Bootup` == Device just finished booting up. Device is not
commissionined or connected to wifi yet.
- `After Commissioning` == Device is conneted to wifi and is also
commissioned and is rebooted.
- device used: esp32c3_devkit_m
- tested on:
[bd951b8](https://github.com/espressif/esp-matter/commit/bd951b84993d9d0b5742872be4f51bb6c9ccf15e)
(2022-05-05)
| | Bootup | After Commissioning |
|:- |:-: |:-: |
|**Free Internal Memory** |109KB |105KB |
**Flash Usage**: Firmware binary size: 1.26MB
This should give you a good idea about the amount of free memory that is
available for you to run your application's code.