This example demonstrates Matter Light-Switch application on Ameba platform.
The CHIP demo application is supported on Ameba RTL8722DM Board.
Pull docker image:
$ docker pull ghcr.io/project-chip/chip-build-ameba:81
Run docker container:
$ docker run -it -v ${CHIP_DIR}:/root/chip ghcr.io/project-chip/chip-build-ameba:81
Setup build environment:
$ source ./scripts/bootstrap.sh
To build the demo application:
$ ./scripts/build/build_examples.py --target ameba-amebad-light-switch build
The output image files are stored in out/ameba-amebad-light-switch/asdk/image
folder.
The bootloader image files are stored in out/ameba-amebad-light-switch/asdk/bootloader
folder.
After building the application, Ameba Image Tool is used to flash it to Ameba board.
There are two commissioning modes supported by Ameba platform:
ATW0, ATW1, ATWC
commandsAfter successful commissioning, use the OnOff cluster command to control the OnOff attribute. This allows you to toggle a parameter implemented by the device to be On or Off.
Via Chip-Tool
$ ./chip-tool onoff on <nodeID> 1 $ ./chip-tool onoff off <nodeID> 1
Connect a USB-TTL adapter as shown below
For AmebaD
Ameba USB-TTL A19 TX A18 RX GND GND
For AmebaZ2
Ameba USB-TTL A13 TX A14 RX GND GND
Build the chip-rpc console
As part of building the example with RPCs enabled the chip_rpc python interactive console is installed into your venv. The python wheel files are also created in the output folder: out/debug/chip_rpc_console_wheels. To install the wheel files without rebuilding:
$ pip3 install out/debug/chip_rpc_console_wheels/*.whl
Launch the chip-rpc console after resetting Ameba board
$ chip-console --device /dev/tty<port connected to USB-TTL adapter> -b 115200
Get and Set lighting directly using the RPC console
python rpcs.chip.rpc.Lighting.Get() rpcs.chip.rpc.Lighting.Set(on=True, level=128, color=protos.chip.rpc.LightingColor(hue=5, saturation=5))
Matter Shell is enabled whenever RPC is disabled.
RPC console and Matter Shell cannot be enabled at the same time as they use the same UART port.
Connect Ameba to the USB-TTL adapter as shown in the RPC section.
Open the USB-TTL serial port and type help
to view the available commands
This example shows how to bind a Switch Device to a Lighting Device and control it through the Matter Shell. One binding client (Switch Device) and one binding server (Lighting Device) is required.
Commission the switch (nodeID 1) and lighting device (nodeID 2) using chip-tool.
$ ./chip-tool pairing ble-wifi 1 <SSID> <PASSWORD> 20202021 3840 $ ./chip-tool pairing ble-wifi 2 <SSID> <PASSWORD> 20202021 3840
After successful commissioning, configure the ACL in the lighting device to allow access from switch device and chip-tool.
$ ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [1], "targets": null }]' 2 0
Bind the lighting device to the switch device.
$ ./chip-tool binding write binding '[{"fabricIndex": 1, "node":2, "endpoint":1, "cluster":6}]' 1 1
Control the lighting device through the switch device's Matter Shell
> switch onoff on > switch onoff off