#define BLYNK_TEMPLATE_ID "TMPL3oAuUZ6A1"
#define BLYNK_TEMPLATE_NAME "404453464781073409"
#define BLYNK_AUTH_TOKEN "2gluLTuaLlBTsuUScys45ZcWrQZZ83qN"
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <WiFiClient.h>
#define button1_vpin V1
#define button2_vpin V2
#define button3_vpin V3
#define button4_vpin V4
#define button1_pin 17
#define button2_pin 16
#define button3_pin 4
#define button4_pin 0
#define relay1_pin 21
#define relay2_pin 19
#define relay3_pin 18
#define relay4_pin 5
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
int relay1_state = 0;
int relay2_state = 0;
int relay3_state = 0;
int relay4_state = 0;
BLYNK_CONNECTED ()
{
Blynk.syncVirtual (button1_vpin);
Blynk.syncVirtual (button2_vpin);
Blynk.syncVirtual (button3_vpin);
Blynk.syncVirtual (button4_vpin);
}
BLYNK_WRITE (button1_vpin)
{
relay1_state = param.asInt ();
digitalWrite (relay1_pin, relay1_state);
}
//--------------------------------------------------------------------------
BLYNK_WRITE (button2_vpin)
{
relay2_state = param.asInt ();
digitalWrite (relay2_pin, relay2_state);
}
//--------------------------------------------------------------------------
BLYNK_WRITE (button3_vpin)
{
relay3_state = param.asInt ();
digitalWrite (relay3_pin, relay3_state);
}
//--------------------------------------------------------------------------
BLYNK_WRITE (button4_vpin)
{
relay4_state = param.asInt ();
digitalWrite (relay4_pin, relay4_state);
}
//--------------------------------------------------------------------------
void
setup ()
{
// Debug console
Serial.begin (115200);
//--------------------------------------------------------------------
pinMode (button1_pin, INPUT_PULLUP);
pinMode (button2_pin, INPUT_PULLUP);
pinMode (button3_pin, INPUT_PULLUP);
pinMode (button4_pin, INPUT_PULLUP);
//--------------------------------------------------------------------
pinMode (relay1_pin, OUTPUT);
pinMode (relay2_pin, OUTPUT);
pinMode (relay3_pin, OUTPUT);
pinMode (relay4_pin, OUTPUT);
//--------------------------------------------------------------------
// During Starting all Relays should TURN OFF
digitalWrite (relay1_pin, HIGH);
digitalWrite (relay2_pin, HIGH);
digitalWrite (relay3_pin, HIGH);
digitalWrite (relay4_pin, HIGH);
Blynk.begin (auth, ssid, pass);
}
void
loop ()
{
Blynk.run ();
timer.run ();
listen_push_buttons ();
}
void
listen_push_buttons ()
{
//--------------------------------------------------------------------------
if (digitalRead (button1_pin) == LOW)
{
delay (200);
control_relay (1);
Blynk.virtualWrite (button1_vpin, relay1_state); // update button state
}
//--------------------------------------------------------------------------
else if (digitalRead (button2_pin) == LOW)
{
delay (200);
control_relay (2);
Blynk.virtualWrite (button2_vpin, relay2_state); // update button state
}
//--------------------------------------------------------------------------
else if (digitalRead (button3_pin) == LOW)
{
delay (200);
control_relay (3);
Blynk.virtualWrite (button3_vpin, relay3_state); // update button state
}
//--------------------------------------------------------------------------
else if (digitalRead (button4_pin) == LOW)
{
delay (200);
control_relay (4);
Blynk.virtualWrite (button4_vpin, relay4_state); // update button state
}
//--------------------------------------------------------------------------
}
void
control_relay (int relay)
{
//------------------------------------------------
if (relay == 1)
{
relay1_state = !relay1_state;
digitalWrite (relay1_pin, relay1_state);
Serial.print ("Relay1 State = ");
Serial.println (relay1_state);
delay (50);
}
//------------------------------------------------
else if (relay == 2)
{
relay2_state = !relay2_state;
digitalWrite (relay2_pin, relay2_state);
delay (50);
}
//------------------------------------------------
else if (relay == 3)
{
relay3_state = !relay3_state;
digitalWrite (relay3_pin, relay3_state);
delay (50);
}
//------------------------------------------------
else if (relay == 4)
{
relay4_state = !relay4_state;
digitalWrite (relay4_pin, relay4_state);
delay (50);
}
//------------------------------------------------
}