BLYNK_TEMPLATE_ID "TMPL6NaNHs0mp"
BLYNK_TEMPLATE_NAME "PK ESP32"
BLYNK_AUTH_TOKEN "isKWSi-Z0Cd-3b8_eLeZBeCdcLDi2_pu"
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
bool fetch_blynk_state = true; //true or false
#define VPIN_BUTTON_1 V0
#define VPIN_BUTTON_2 V1
//#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
#define DHTTYPE DHT22
DHT dht(17, DHTTYPE);
// define the GPIO connected with Relays and switches
#define RelayPin1 27 //D19
#define RelayPin2 26 //D19
#define wifiLed 2 //D2
// Relay State
bool toggleState_1 = LOW; //Define integer to remember the toggle state for relay 1
bool toggleState_2 = LOW;
int wifiFlag = 0;
char auth[] = BLYNK_AUTH_TOKEN;
BlynkTimer timer;
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// You can send any value at any time.
// Please don't send more that 10 values per second.
Blynk.virtualWrite(V3, h); // select your virtual pins accordingly
Blynk.virtualWrite(V2, t); // select your virtual pins accordingly
}
BLYNK_WRITE(VPIN_BUTTON_1)
{
toggleState_1 = param.asInt();
digitalWrite(RelayPin1, toggleState_1);
Serial.print("LED ");
Serial.println(toggleState_1);
}
BLYNK_WRITE(VPIN_BUTTON_2)
{
toggleState_2 = param.asInt();
digitalWrite(RelayPin2, toggleState_2);
Serial.print("LED2 ");
Serial.println(toggleState_2);
}
void checkBlynkStatus()
{
bool isconnected = Blynk.connected();
if (isconnected == false)
{
wifiFlag = 1;
Serial.println("Blynk Not Connected");
digitalWrite(wifiLed, LOW);
}
if (isconnected == true)
{
wifiFlag = 0;
if (!fetch_blynk_state)
{
Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);
Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);
}
digitalWrite(wifiLed, HIGH);
Serial.println("Blynk Connected");
}
}
BLYNK_CONNECTED()
{
Serial.println(fetch_blynk_state);
// Request the latest state from the server
if (fetch_blynk_state)
{
Blynk.syncVirtual(VPIN_BUTTON_1);
Blynk.syncVirtual(VPIN_BUTTON_2);
}
}
void setup()
{
Serial.begin(9600);
Serial.print("Welcome");
pinMode(RelayPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
pinMode(wifiLed, OUTPUT);
//During Starting all Relays should TURN OFF
digitalWrite(RelayPin1, toggleState_1);
digitalWrite(RelayPin2, toggleState_2);
digitalWrite(wifiLed, LOW);
dht.begin();
//Blynk.begin(auth, ssid, pass);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Print local IP address and start web server
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
timer.setInterval(2000L, checkBlynkStatus); // check if Blynk server is connected every 2 seconds
timer.setInterval(2000L, sendSensor);
Blynk.config(auth);
delay(1000);
if (!fetch_blynk_state) {
Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);
Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);
}
}
void loop()
{
Blynk.run();
timer.run(); // Initiates SimpleTimer
}