mirror of
https://github.com/espressif/esp-rainmaker.git
synced 2026-01-15 12:25:30 +00:00
- Example uses `esp_rmaker_get_aws_security_token` internally to get the token - The credential callback is registered with webrtc SDK which it can call - webrtc SDK uses NVS to cache the signaling info internally
RainMaker Camera - Split Mode (ESP32-C6)
This example demonstrates the signaling-only part of the ESP RainMaker Camera in split mode architecture. This firmware runs on ESP32-C6 and handles AWS KVS WebRTC signaling along with ESP RainMaker device management.
The media_adapter firmware (from split_mode/media_adapter/) must be flashed on ESP32-P4 to handle the media streaming part.
Prerequisites
- IDF version: release/v5.5 (v5.5.x)
- ESP32-P4-Function Ev Board
- Amazon Kinesis Video Streams WebRTC SDK C repository: Please clone the
beta-reference-esp-portbranch of https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/tree/beta-reference-esp-port - ESP RainMaker App (iOS/Android) with KVS streaming
Setup ESP-IDF
Please follow the official guide to install and setup the IDF environment:
Main steps involved for Mac/Linux after downloading/cloning the SDK are
./install.sh # Installs the essential tools
. $IDF_PATH/export.sh # Sets up the environment
More comprehensive documentation for setup:
Claiming the Device
- The firmware supports self-claiming and assisted claiming for seamless experience. So no additional configuration is required while using with public RainMaker.
- For host-driven claiming OR for production use-case, please follow camera options in
esp-rainmaker-cliandesp-rainmaker-admin-clirespectively. Certificates must be flashed on ESP32-C6.
BUILD
- Set up the KVS_SDK_PATH environment variable with clone of the Amazon KVS WebRTC SDK from here with
--recursiveoption:
git clone --recursive --single-branch --branch beta-reference-esp-port git@github.com:awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git amazon-kinesis-video-streams-webrtc-sdk-c
export KVS_SDK_PATH=/path/to/amazon-kinesis-video-streams-webrtc-sdk-c
NOTE:
- Confirm that you cloned the
beta-reference-esp-portbranch - If you missed the
--recursiveoption during cloning, rungit submodule update --init --recursive
- Go to the example directory and follow the steps below:
cd esp-rainmaker/examples/camera/split_mode/rmaker_camera
idf.py set-target esp32c6
NOTE:
- ESP32-C6 does not have an onboard UART port. You will need to use ESP-Prog or any other JTAG.
- Use following Pin configuration:
| ESP32-C6 (J2/Prog-C6) | ESP-Prog |
|---|---|
| IO0 | IO9 |
| TX0 | TXD0 |
| RX0 | RXD0 |
| EN | EN |
| GND | GND |
- Build and flash the example
idf.py build
idf.py -p [PORT] flash monitor
- Build and flash the streaming_only example from KVS SDK on ESP32-P4:
cd ${KVS_SDK_PATH}/esp_port/examples/streaming_only
idf.py set-target esp32p4
- For ESP32-P4, different versions of the Dev boards have different options for CONSOLE and LOGs
- You may want to do menuconfig and change it as per your board
idf.py menuconfig
# Go to Component config -> ESP System Settings -> Channel for console output
# (X) USB Serial/JTAG Controller # For ESP32-P4 Function_EV_Board V1.2 OR V1.5
# (X) Default: UART0 # For ESP32-P4 Function_EV_Board V1.4
-
If the console selection is wrong, you will only see the initial bootloader logs.
- Please change the console as instructed above and reflash the app to see the complete logs.
-
Now build and flash the
streaming_onlyexample on ESP32-P4
idf.py build
idf.py -p [PORT] flash monitor
Device Configuration
After flashing the firmware, configure the device:
- Use the ESP RainMaker phone app to provision Wi-Fi credentials. The step also involves associating the user with the device
- Once done, thhe camera device should show up in the RainMaker app
- You can start streaming from the device details page to view the camera feed.
Trying out Deep Sleep feature
- ESP32-P4 will automatically go into deep sleep once it detects no streaming activity for some time
- Alternatively, on ESP32-P4's console, simply type
deep-sleepcommand. This will put ESP32-P4 into deep sleep - Start streaming from the ESP RainMaker app (Android/iOS)
- You will see that, P4 boots up, and the streaming session is established