Device definitions reside in examples/chef/devices
as .zap and .matter files.
Generally you need to follow these steps to use a new device:
The easiest way to get started is using an existing configuration. A template is provided in ./examples/chef/devices/template.zap
.
To open the zap GUI for this device, run:
./examples/chef/chef.py -g -d template
Using the ZAP UI, make the following changes:
Once all edits are done, click “File” => “Save as...” to save it under a NEW name inside examples/chef/devices/
.
NOTE: make sure you save under examples/chef/devices
since internal paths inside the saved file will be relative to the save location (it cannot simply be moved later without manual editing).
It is suggested to name this rootnode_<device_type_name>.zap
(e.g., rootnode_smokecoalarm.zap
for Matter Smoke CO Alarm device type)
General naming convention for chef is <ep0>_<ep1>_<hash>
where <epN>
is the type of endpoint (and <ep0>
is almost always rootnode
).
The hash is a one-time uniquely generated identifier to allow separate configurations for the same devices (e.g different features enabled).
You can read more in examples/chef/sample_app_util/README.md
, however the short version is that you can determine a recommended name using:
./examples/chef/sample_app_util/sample_app_util.py zap --generate-name <saved_zap_file_name>
and generally you want to just rename it via:
./examples/chef/sample_app_util/sample_app_util.py zap --rename-file <saved_zap_file_name>
To generate the matter file for your target, run
./scripts/tools/zap/generate.py <new_device_zap_name>
This should generate the corresponding .matter
file for the zap file you created.
Basic device availability should show when running:
./examples/chef/chef.py -h | less
This example uses rootnode_contactsensor_27f76aeaf5
for commands. Substitute your own device for testing newly created devices.
./examples/chef/chef.py \ -t linux \ -d rootnode_contactsensor_27f76aeaf5 \ -b
Where options used are:
-t
specifies the target platform-d
specifies the device to build-b
asks for build to be runBuild will be available in examples/chef/linux/out/rootnode_contactsensor_27f76aeaf5
(path will vary based on platform and device being built)