# CHIP Ameba All Clusters Example A prototype application that demonstrates device commissioning and cluster control. --- - [CHIP Ameba All Clusters Example](#chip-ameba-all-clusters-example) - [Supported Device](#supported-device) - [Building the Example Application](#building-the-example-application) - [Commissioning and cluster control](#commissioning-and-cluster-control) - [Commissioning](#commissioning) - [BLE mode](#ble-mode) - [IP mode](#ip-mode) - [Cluster control](#cluster-control) - [Running RPC Console](#running-rpc-console) --- ## Supported Device The CHIP demo application is supported on [Ameba RTL8722DM Board](https://www.amebaiot.com/en/amebad). ## Building the Example Application - 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-all-clusters build ``` The output image files are stored in `out/ameba-amebad-all-clusters/asdk/image` folder. The bootloader image files are stored in `out/ameba-amebad-all-clusters/asdk/bootloader` folder. - After building the application, **Ameba Image Tool** is used to flash it to Ameba board. 1. Connect your device via USB and open Ameba Image Tool. 2. Select correct serial port and set baudrate as **115200**. 3. Browse and add the corresponding image files in the Flash Download list to the correct locations 4. Click **Download** button. ## Commissioning and Cluster Control ## Commissioning There are two commissioning modes supported by Ameba platform: ### BLE mode 1. In "connectedhomeip/config/ameba/args.gni" - Set `chip_config_network_layer_ble = true` 2. In `connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h` - Set `#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 1` 3. Build and Flash 4. The all-clusters example will run automatically after booting the Ameba board. 5. Test with [Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool) ### IP mode 1. In `connectedhomeip/config/ameba/args.gni` - Set `chip_config_network_layer_ble = false` 2. In `connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h` - Set `#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 0` 3. Build and Flash 4. The all-clusters example will run automatically after booting the Ameba board. 5. Connect to AP using `ATW0, ATW1, ATWC` commands 6. Test with [Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool) ## Cluster Control After 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](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool#using-the-client-to-send-matter-commands) ``` $ ./chip-tool onoff on ${NODE_ID_TO_ASSIGN} 1 $ ./chip-tool onoff off ${NODE_ID_TO_ASSIGN} 1 ``` ## Running RPC Console - Connect a USB-TTL Adapter as shown below ``` Ameba USB-TTL A19 TX A18 RX GND GND ``` - Build the [chip-rpc console](https://github.com/project-chip/connectedhomeip/tree/master/examples/common/pigweed/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 -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)) ```