i used 5v 1s High level trigger relay for this project.
components: esp 32, 1 channel 5v relay, 5v 1A power supply
i connected relay IN on D23 pin of esp32
Source code:
Code |
---|
#include <WiFi.h> |
#include <SinricPro.h> |
#include <SinricProSwitch.h> |
// WiFi credentials |
const char* ssid = "xyz"; |
const char* password = "xyz"; |
// Sinric Pro credentials |
#define APP_KEY "xyz" |
#define APP_SECRET "xyz" |
#define DEVICE_ID "xyz" |
#define RELAY_PIN 23 // GPIO23 for relay control |
#define LED_BUILTIN 2 // GPIO2 for built-in blue LED |
// Callback to handle relay state changes |
bool onPowerState(const String &deviceId, bool &state) { |
digitalWrite(RELAY_PIN, state ? LOW : HIGH); // Active LOW logic |
digitalWrite(LED_BUILTIN, state ? HIGH : LOW); // LED ON logic |
Serial.printf("Fan turned %s\n", state ? "ON" : "OFF"); |
return true; |
} |
// Wi-Fi setup function |
void setupWiFi() { |
WiFi.mode(WIFI_STA); |
WiFi.begin(ssid, password); |
Serial.print("Connecting to WiFi"); |
while (WiFi.status() != WL_CONNECTED) { |
delay(500); |
Serial.print("."); |
} |
Serial.println(" connected!"); |
} |
void setup() { |
Serial.begin(115200); |
pinMode(RELAY_PIN, OUTPUT); |
digitalWrite(RELAY_PIN, HIGH); // Relay OFF initially |
pinMode(LED_BUILTIN, OUTPUT); |
digitalWrite(LED_BUILTIN, LOW); // LED OFF initially |
setupWiFi(); |
SinricProSwitch &fanSwitch = SinricPro[DEVICE_ID]; |
fanSwitch.onPowerState(onPowerState); |
SinricPro.onConnected([]() { Serial.println("Connected to Sinric Pro!"); }); |
SinricPro.onDisconnected([]() { Serial.println("Disconnected from Sinric Pro."); }); |
SinricPro.begin(APP_KEY, APP_SECRET); |
} |
void loop() { |
static unsigned long lastWiFiCheck = 0; |
if (WiFi.status() != WL_CONNECTED && millis() - lastWiFiCheck > 5000) { |
Serial.println("WiFi disconnected! Reconnecting..."); |
setupWiFi(); |
lastWiFiCheck = millis(); |
} |
SinricPro.handle(); |
if (!SinricPro.isConnected()) { |
Serial.println("Reconnecting to Sinric Pro..."); |
SinricPro.begin(APP_KEY, APP_SECRET); |
} |
} |