#define BLYNK_AUTH_TOKEN "IdFL01j0b4nhryIUDGLLBEZozeLY31zz"
#define BLYNK_TEMPLATE_ID "TMPL6zTkVv82M"
#define BLYNK_TEMPLATE_NAME "PROTECTION SYSTEM DEVICE"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include "EmonLib.h"
EnergyMonitor emon;
#define vCalibration 83.3
char auth[] = "IdFL01j0b4nhryIUDGLLBEZozeLY31zz";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
BlynkTimer timer;
// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
#define relay 2
int SW_relay = 0;
char indata;
const int meter = 34;
int tmp_buka;
BLYNK_WRITE(V1)
{
SW_relay = param.asInt();
if (SW_relay ==1){
digitalWrite(relay, HIGH);
Serial.println("Relay terbuka");
Blynk.virtualWrite(V1, HIGH);
}else{
digitalWrite(relay, LOW);
Serial.println("Relay tertutup");
Blynk.virtualWrite(V1, LOW);
}
}
BLYNK_WRITE(V2)
{
indata = param.asInt();
//const int tes=analogRead(meter);
//Serial.println(tes);
//lcd.clear();
//lcd.setCursor(0, 1);
// print message
//lcd.print(tes);
//lcd.print(" v");
emon.calcVI(20, 2000);
yield();
Serial.print("Vrms: ");
Serial.println(emon.Vrms, 2);
Serial.print("V");
//Serial.println("status auto");
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Vrms:");
lcd.print(emon.Vrms, 2);
lcd.print("V");
float tes = emon.Vrms;
Blynk.virtualWrite(V0, tes);
delay(500);
if (tes > 253)
{
Blynk.virtualWrite(V3,"OVER VOLTAGE");
lcd.setCursor(0, 0);
// print message
lcd.print("OVER VOLTAGE");
delay(500);
}
if (tes< 216)
{
Blynk.virtualWrite(V3,"UNDER VOLTAGE");
lcd.setCursor(0, 0);
// print message
lcd.print("UNDER VOLTAGE");
delay(500);
}
//if(tes >216 && tes < 253)
if(tes >216 && tes <253)
{
Blynk.virtualWrite(V3,"NORMAL VOLTAGE");
lcd.setCursor(0, 0);
// print message
lcd.print("NORMAL VOLTAGE");
delay(500);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(meter, INPUT);
pinMode(relay, OUTPUT);
Blynk.begin(auth, ssid, pass);
lcd.init();
// turn on LCD backlight
lcd.backlight();
lcd.setCursor(0, 0);
// print message
lcd.print("SYSTEM PROTECTION");
emon.voltage(35, vCalibration, 1.7); // Voltage: input pin, calibration, phase_shift
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
timer.run();
//lightInit = analogRead(sensorPin);
const int tes=0;
//Serial.println(tes);
Blynk.virtualWrite(V5, tes);
delay(500);
}