#define BLYNK_TEMPLATE_ID "TMPL6aaYmmzKK"
#define BLYNK_TEMPLATE_NAME "Smart Home"
#define BLYNK_AUTH_TOKEN "LzAPyTaAeoSEHn-KlS32D33Wpfcda-vE"
#include <WiFi.h>
#include <WiFiClient.h>
#include <Blynk.h>
#include <BlynkSimpleEsp32.h>
#include <PZEM004Tv30.h>
char auth[] = "LzAPyTaAeoSEHn-KlS32D33Wpfcda-vE";
char ssid[] = "iPhone11";
char pass[] = "11111111";
BlynkTimer timer;
PZEM004Tv30 pzem(Serial, 16, 17); // TX,RX pin PZEM(ESP32 16 untuk RX and 17 untuk TX)
#define relay1 23 //D23//
#define relay2 22 //D22//
#define relay3 21 //D21//
#define relay4 19 //D19//
int SW_relay1 = 0;
int SW_relay2 = 0;
int SW_relay3 = 0;
int SW_relay4 = 0;
float voltage, current, power, energy, frequency, pf;
BLYNK_WRITE(V0)
{
SW_relay1 = param.asInt();
if (SW_relay1 ==1){
digitalWrite(relay1, HIGH);
Serial.println("Relay terbuka");
Blynk.virtualWrite(V0, HIGH);
}else{
digitalWrite(relay1, LOW);
Serial.println("Relay tertutup");
Blynk.virtualWrite(V0, LOW);
}
}
BLYNK_WRITE (V1)
{
SW_relay2 = param.asInt();
if (SW_relay2 ==1){
digitalWrite(relay2, HIGH);
Serial.println("Relay terbuka");
Blynk.virtualWrite(V1, HIGH);
}else{
digitalWrite(relay2, LOW);
Serial.println("Relay tertutup");
Blynk.virtualWrite(V1, LOW);
}
}
BLYNK_WRITE (V2)
{
SW_relay3 = param.asInt();
if (SW_relay3 ==1){
digitalWrite(relay3, HIGH);
Serial.println("Relay terbuka");
Blynk.virtualWrite(V2, HIGH);
}else{
digitalWrite(relay3, LOW);
Serial.println("Relay tertutup");
Blynk.virtualWrite(V2, LOW);
}
}
BLYNK_WRITE (V3)
{
SW_relay4 = param.asInt();
if (SW_relay4 ==1){
digitalWrite(relay4, HIGH);
Serial.println("Relay terbuka");
Blynk.virtualWrite(V3, HIGH);
}else{
digitalWrite(relay4, LOW);
Serial.println("Relay tertutup");
Blynk.virtualWrite(V3, LOW);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
digitalWrite (relay1, LOW);
digitalWrite (relay2, LOW);
digitalWrite (relay3, LOW);
digitalWrite (relay4, LOW);
Blynk.begin(auth, ssid, pass);
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
timer.run();
// PZEM
voltage = pzem.voltage();
current = pzem.current();
power = pzem.power();
energy = pzem.energy();
frequency = pzem.frequency();
// cek data
if (isnan(voltage)) {
Serial.println("Error reading voltage");
}
else if (isnan(current)) {
Serial.println("Error reading current");
}
else if (isnan(power)) {
Serial.println("Error reading power");
}
else if (isnan(energy)) {
Serial.println("Error reading energy");
}
else if (isnan(frequency)) {
Serial.println("Error reading frequency");
}
else {
Blynk.virtualWrite(V5, voltage);
Blynk.virtualWrite(V6, current);
Blynk.virtualWrite(V7, power);
Blynk.virtualWrite(V8, energy);
Blynk.virtualWrite(V9, frequency);
}
}