Skip to content

Repository files navigation

SinricPro ESP-IDF Component

Platform ESP-IDF License Build Status Examples

Official ESP-IDF component for SinricPro - Control your ESP32 IoT devices with Alexa and Google Home.

Features

  • Voice Control - Works with Alexa and Google Home
  • Real-time - WebSocket-based bidirectional communication
  • Local Control - Answers the app over the LAN when the cloud is down
  • Camera Live View - WebRTC streaming to the SinricPro portal and app
  • Secure - HMAC-SHA256 message signatures
  • Reliable - Auto-reconnection and heartbeat monitoring
  • Event-driven - ESP event loop integration
  • Type Safe - Full C API with optional C++ wrappers
  • Configurable - Kconfig integration
  • Cross-Platform - ESP-IDF v4.4+ and v5.x support

Supported Devices

All devices below have complete API support and working examples:

Simple Devices

  • Switch - Basic on/off control with physical button
  • Motion Sensor - PIR motion detection
  • Contact Sensor - Door/window reed switch detection

Lighting

  • Smart Light - RGB color, brightness, color temperature (2200-7000K)
  • DimSwitch - Dimmable switch with brightness control (0-100%)

Climate Control

  • Thermostat - HVAC control with AUTO/COOL/HEAT/ECO/OFF modes
  • Fan - Variable speed control (0-100%)
  • Temperature Sensor - DHT22/DHT11 temperature and humidity

Security & Access

  • Lock - Servo-based lock/unlock control
  • Garage Door - Relay control with position sensors

Home Automation

  • Blinds - Motorized blinds/curtains with position control (0-100%)

Media Devices

  • TV - Volume, mute, media control, input selection, channels
  • Speaker - Volume, mute, media control, equalizer, modes

Cameras

  • Camera - WebRTC live view in the SinricPro portal and app, with remote resolution, frame rate and flash control, plus snapshot upload. H.264 video track on ESP32-S3, which also reaches Amazon Alexa and Google Home; JPEG over the DataChannel elsewhere (example needs ESP-IDF 5.5+)

Additional Devices (API Only)

  • ✅ Air Quality Sensor - PM1, PM2.5, PM10 measurements
  • ✅ Power Sensor - Voltage, current, power monitoring
  • ✅ Window AC - Air conditioner with fan speed and temperature

Local Control (LAN)

The device answers signed SinricPro commands received over the LAN, so the app keeps working when the cloud is unreachable. It is on by default and needs no code changes: LAN requests are dispatched through the same capability callbacks as cloud requests.

Configuration

idf.py menuconfigComponent configSinricPro Configuration:

Option Default Effect
SINRICPRO_ENABLE_LOCAL_CONTROL on Compile local control in
SINRICPRO_LOCAL_CONTROL_NO_MDNS off Keep UDP, drop the announcement (and the mdns dependency)
SINRICPRO_UDP_PORT 3333 Wire contract with the app
SINRICPRO_UDP_MULTICAST_IP 224.9.9.9 Wire contract with the app
SINRICPRO_UDP_TASK_STACK_SIZE 6144 Device callbacks run on this task
SINRICPRO_UDP_TASK_PRIORITY 5

Requirements

  • ESP-IDF v4.4 or higher. Tested on ESP-IDF 6.1
  • ESP32, ESP32-S2, ESP32-S3, ESP32-C3, or ESP32-C6
  • SinricPro account (sign up free)

Installation

Method 1: ESP Component Registry (Recommended)

Add to your project's idf_component.yml:

dependencies:
  sinricpro/esp-idf: "^1.3.1"

Method 2: Manual Installation

cd your_project/components
git clone https://github.com/sinricpro/esp-idf.git sinricpro

Or

idf.py add-dependency "sinricpro/esp-idf^1.3.1"

View at: https://components.espressif.com/components/sinricpro/esp-idf

Examples

The component includes 13 complete working examples demonstrating all device types and features:

Example Description Complexity Hardware
Switch Basic on/off control ⭐ Simple LED, Button
Light RGB LED with color & brightness ⭐⭐⭐ Complex RGB LED, PWM
DimSwitch Dimmable light control ⭐⭐ Medium LED, PWM
Motion Sensor PIR motion detection ⭐ Simple PIR sensor
Contact Sensor Door/window detection ⭐ Simple Reed switch
Temperature Sensor Temp & humidity monitoring ⭐⭐ Medium DHT22/DHT11
Thermostat HVAC climate control ⭐⭐⭐ Complex Relays, DHT22
Lock Smart lock control ⭐⭐ Medium Servo motor
Garage Door Garage door automation ⭐⭐⭐ Complex Relay, Reed switches
Fan Variable speed fan ⭐⭐ Medium DC motor, PWM
Blinds Motorized blinds/curtains ⭐⭐⭐ Complex DC motor, L298N
TV Media control & channels ⭐⭐⭐ Complex Simulated/IR
Speaker Audio control & equalizer ⭐⭐⭐ Complex Simulated
Camera WebRTC live view in the portal and app ⭐⭐⭐ Complex ESP32/ESP32-S3 camera with PSRAM

Each example includes:

  • Complete working code
  • Wiring diagrams
  • Voice command examples
  • Hardware requirements
  • Step-by-step setup guide

Quick Start

1. Get SinricPro Credentials

  1. Sign up at sinric.pro
  2. Create a new Switch device
  3. Note your APP_KEY, APP_SECRET, and DEVICE_ID

2. Minimal Example

#include "sinricpro.h"
#include "sinricpro_switch.h"

#define DEVICE_ID      "YOUR_DEVICE_ID"
#define APP_KEY        "YOUR_APP_KEY"
#define APP_SECRET     "YOUR_APP_SECRET"

/* PowerState callback */
static bool on_power_state(const char *device_id, bool *state, void *user_data)
{
    printf("Device %s\n", *state ? "ON" : "OFF");
    gpio_set_level(GPIO_NUM_2, *state);  /* Control LED */
    return true;  /* Return true for success */
}

void app_main(void)
{
    /* Initialize WiFi (code omitted for brevity) */

    /* Configure SinricPro */
    sinricpro_config_t config = {
        .app_key = APP_KEY,
        .app_secret = APP_SECRET,
        .auto_reconnect = true,
    };

    /* Initialize */
    sinricpro_init(&config);

    /* Create switch device */
    sinricpro_device_handle_t my_switch = sinricpro_switch_create(DEVICE_ID);

    /* Register callback */
    sinricpro_switch_on_power_state(my_switch, on_power_state, NULL);

    /* Start */
    sinricpro_start();

    /* Send event (e.g., button press) */
    sinricpro_switch_send_power_state_event(my_switch, true,
                                             SINRICPRO_CAUSE_PHYSICAL_INTERACTION);
}

3. Build and Flash

idf.py build
idf.py flash monitor

Reporting Issues

  • Check existing issues
  • Include ESP-IDF version, chip type, and example name
  • Provide minimal reproduction code

Support

Related Projects


Made with ❤️ by the SinricPro Team

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages