Awesome Open Source
Awesome Open Source

SinricPro (ESP8266 / ESP32 SDK)


Platform ESP8266 Platform ESP32


GitHub release (latest by date)


  1. Use the latest ESP Arduino Core!
  2. Use the latest WebSocktes library!


VS Code & PlatformIO:

  1. Install VS Code
  2. Install PlatformIO
  3. Install SinricPro library by using Library Manager
  4. Use included platformio.ini file from examples to ensure that all dependent libraries will installed automaticly.

sinricpro library manager


  1. Open Library Manager (Tools / Manage Libraries)
  2. Search for SinricPro and click Install
  3. Repeat step 2 for all dependent libraries!
  4. Open example in ArduinoIDE (File / Examples / SinricPro / ...)

ArduinoIDE Library Manager


ArduinoJson by Benoit Blanchon (minimum Version 6.12.0)
WebSockets by Markus Sattler (minimum Version 2.3.5)

Full user documentation

Please see here for full user documentation


See examples on GitHub


Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)

#include <SinricPro.h>
#include <SinricProSwitch.h>

Define your credentials from SinricPro-Portal (

#define APP_KEY    "YOUR-APP-KEY"    // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
#define APP_SECRET "YOUR-APP-SECRET" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
#define SWITCH_ID  "YOUR-DEVICE-ID"  // Should look like "5dc1564130xxxxxxxxxxxxxx"

Define callback routine(s)

bool onPowerState(const String &deviceId, bool &state) {
  Serial.printf("device %s turned %s\r\n", deviceId.c_str(), state?"on":"off");
  return true; // indicate that callback handled correctly

In setup()

  // create and add a switch to SinricPro
  SinricProSwitch& mySwitch = SinricPro[SWITCH_ID];
  // set callback function
  // startup SinricPro
  SinricPro.begin(APP_KEY, APP_SECRET);

In loop()


How to add a device?

Syntax is

  DeviceType& myDevice = SinricPro[DEVICE_ID];


  SinricProSwitch& mySwitch = SinricPro["YOUR-SWITCH-ID-HERE"];

Example 2 (alternatively)

  SinricProSwitch& mySwitch = SinricPro.add<SinricProSwitch>("YOUR-SWITCH-ID-HERE");

How to retrieve a device for sending an event?

Syntax is

  DeviceType& myDevice = SinricPro[DEVICE_ID];

Example 1

  SinricProDoorbell& myDoorbell = SinricPro["YOUR-DOORBELL-ID-HERE"];

Example 2 (alternatively)



  • Switch
  • Dimmable Switch
  • Light
  • TV
  • Speaker
  • Thermostat
  • Fan (US and non US version)
  • Lock
  • Doorbell
  • Temperaturesensor
  • Motionsensor
  • Contactsensor
  • Windows Air Conditioner
  • Interior Blinds
  • Garage Door
  • Custom devices

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
C Plus Plus (369,705
Arduino (21,654
Iot (5,825
Esp8266 (2,931
Esp32 (2,751
Alexa Skill (507
Platformio (464
Google Home (137
Related Projects