#include <WiFi.h>
#include <SinricPro.h>
#include <SinricProTemperaturesensor.h>
#include <DHT.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
// SinricPro Credentials
#define TEMP_SENSOR_ID "689cf49b2d31b74145b439ee" // From SinricPro dashboard
#define APP_KEY "e7d39e26-701c-490a-a692-341db44f40f0"
#define APP_SECRET "08d79a28-cb4f-4d62-93f8-6ab7537dc17c-aa129b70-c6d7-440e-a868-6028df26c338"
//LED PINS
#define LED_PIN 2 // Built-in LED (GPIO 2 on ESP32)
//DHT PIN and type
#define DHTPIN 4 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT22 // DHT 22
//DHT variables:
DHT dht(DHTPIN, DHTTYPE);
float temp = 0.0;
float humi = 0.0;
//Time Variables
unsigned long lastReportTime = 0;
const unsigned long reportInterval = 60000; // every 60 seconds
void setupWiFi() {
Serial.print("Connecting to WiFi...");
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println("Connected!");
//Sensors set up:
//DHT
dht.begin();
}
void setup() {
Serial.begin(115200);
dht.begin();
setupWiFi();
SinricProTemperaturesensor &tempSensor = SinricPro[TEMP_SENSOR_ID];
SinricPro.begin(APP_KEY, APP_SECRET);
SinricPro.restoreDeviceStates(true);
}
void loop() {
//Assure sinricPro connection
SinricPro.handle();
//lecture temperature et humidite
/*temp = dht.readTemperature();
humi = dht.readHumidity();
if (isnan(humi) || isnan(temp)) {
Serial.println("Erreur de lecture de la temperature");
*/
unsigned long now = millis();
if (now - lastReportTime > reportInterval) {
lastReportTime = now;
float temp = dht.readTemperature();
float humi = dht.readHumidity();
if (isnan(temp) || isnan(humi)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.printf("Temperature: %.1f°C, Humidity: %.1f%%\n", temp, humi);
SinricProTemperaturesensor &tempSensor = SinricPro[TEMP_SENSOR_ID];
tempSensor.sendTemperatureEvent(temp, humi);
}
}