#include <Arduino.h>
#include <ESP32Servo.h>
#include <WiFi.h>
#include "SinricPro.h"
#include "SinricProGarageDoor.h"
#define APP_KEY "YOUR_APP_KEY_HERE" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
#define APP_SECRET "YOUR_APP_SECRET_HERE" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
#define GARAGEDOOR_ID "YOUR_DEVICE_ID_HERE" // Should look like "5dc1564130xxxxxxxxxxxxxx"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
#define BAUD_RATE 115200
#define SERVO_PIN 16
Servo myServo;
bool onDoorState(const String &deviceId, bool &doorState) {
Serial.printf("Garagedoor is %s now.\r\n", doorState ? "closed" : "open");
myServo.write(doorState ? 0 : 180); // close : open
return true;
}
void setupServo() {
myServo.attach(SERVO_PIN, 500, 2400);
myServo.write(0);
}
void setupWiFi() {
Serial.printf("\r\n[Wifi]: Connecting");
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
Serial.printf(".");
delay(250);
}
IPAddress localIP = WiFi.localIP();
Serial.printf("connected!\r\n[WiFi]: IP-Address is %d.%d.%d.%d\r\n", localIP[0], localIP[1], localIP[2], localIP[3]);
}
void setupSinricPro() {
SinricProGarageDoor &myGarageDoor = SinricPro[GARAGEDOOR_ID];
myGarageDoor.onDoorState(onDoorState);
// setup SinricPro
SinricPro.onConnected([]() { Serial.printf("Connected to SinricPro\r\n"); });
SinricPro.onDisconnected([]() { Serial.printf("Disconnected from SinricPro\r\n"); });
SinricPro.begin(APP_KEY, APP_SECRET);
}
void setup() {
Serial.begin(BAUD_RATE);
Serial.printf("\r\n\r\n");
setupServo();
setupWiFi();
setupSinricPro();
}
void loop() {
SinricPro.handle();
delay(1); // Wokwi required delay.
}
GARAGE DOOR CLOSED
GARAGE DOOR OPEN