Friday, April 04, 2025

Program Power Monitoring PZEM004Tv3.0 ESP8266 TO Blynk Legacy







Program Power Monitoring PZEM004Tv3.0 ESP8266 TO Blynk Legacy versi 22.7.13


#include <PZEM004Tv30.h>
float VOLTAGE, CURRENT, POWER, energy1, Freq, pf1, va1, VAR1;
//byte D1;

PZEM004Tv30 pzem(14, 12); // Software Serial pin 11 D5 to Tx PZEM004 & 12 D6 to Rx PZEM004

#define BLYNK_PRINT Serial

/* Fill in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID           "TMPxxxxxx" //template iot blynk cloud
#define BLYNK_TEMPLATE_NAME         "Device" //nama template blynk cloud
#define BLYNK_AUTH_TOKEN            "KzTzV8u8KjYtESIQVCtRX_BTDXpAmVxI" // New Token, old token -->> mEgnNYn2rfxqlWBdObhn7j7Rm1EH9a4K



#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// Your WiFi credentials.
// Set password to "" for open networks.
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "RANACITTA";
char pass[] = "Pandakgede999";

BLYNK_WRITE(V6)
{
  int pinValue = param.asInt(); 
  Serial.print("V6 Slider value is: ");//display nilai PWM 0~255
  Serial.println(pinValue);
  analogWrite(D1, pinValue);

}

void setup() {
   Serial.begin(9600);
   Serial.println("\nFZEM004T Testing");
   //WiFi.mode(WIFI_STA);
   WiFi.begin(ssid, pass);
   pinMode(D1, OUTPUT);
   //wifi_testing();
   //Blynk.begin(auth, ssid, pass);
   Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "iot.serangkota.go.id", 8080); //Server  luar negeri

 //Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "prakitblog.com", 8181); //Server  luar negeri

}

void loop() {
   Blynk.run();
   //VOLTAGE=0;
   //CURRENT=0;
   //POWER=0;
   //energy1=0;
   //Freq=0;
   //pf1=0;
    float voltage = pzem.voltage();
    VOLTAGE = pzem.voltage();
    VOLTAGE = zeroIfNan(VOLTAGE);
    CURRENT = pzem.current();
    CURRENT = zeroIfNan(CURRENT);
    POWER = pzem.power();
    POWER = zeroIfNan(POWER);
    energy1 = pzem.energy() / 1000; //kwh
    energy1 = zeroIfNan(energy1);
    Freq = pzem.frequency();
    Freq = zeroIfNan(Freq);
    pf1 = pzem.pf();
    pf1 = zeroIfNan(pf1);
    if (pf1 == 0) 
    va1 = 0;
    else 
    va1 = POWER / pf1;
    
    if (pf1 == 0) 
    VAR1 = 0;
    else
    VAR1 = POWER / pf1 * sqrt(1-sq(pf1));
    delay(1000);
   
   
   if(voltage != NAN){
       Serial.print("Voltage: ");
       Serial.print(voltage);
       Serial.println("V");
   } else {
       Serial.println("Error reading voltage");
   }

   float current = pzem.current();
   if(current != NAN){
       Serial.print("Current: ");
       Serial.print(current);
       Serial.println("A");
   } else {
       Serial.println("Error reading current");
   }

   float power = pzem.power();
   if(current != NAN){
       Serial.print("Power: ");
       Serial.print(power);
       Serial.println("W");
   } else {
       Serial.println("Error reading power");
   }

   float energy = pzem.energy();
   if(current != NAN){
       Serial.print("Energy: ");
       Serial.print(energy,3);
       Serial.println("kWh");
   } else {
       Serial.println("Error reading energy");
   }

   float frequency = pzem.frequency();
   if(current != NAN){
       Serial.print("Frequency: ");
       Serial.print(frequency, 1);
       Serial.println("Hz");
   } else {
       Serial.println("Error reading frequency");
   }

   float pf = pzem.pf();
   if(current != NAN){
       Serial.print("PF: ");
       Serial.println(pf);
   } else {
       Serial.println("Error reading power factor");
   }

   Serial.println();
   Blynk.virtualWrite(V0, VOLTAGE); // kirim data ke virtual V0 pada aplikasi Blynk
   Blynk.virtualWrite(V1, CURRENT); // kirim data ke virtual V1 pada aplikasi blynk
   Blynk.virtualWrite(V2, POWER); // kirim data ke virtual V0 pada aplikasi Blynk
   Blynk.virtualWrite(V3, energy1); // kirim data ke virtual V1 pada aplikasi blynk
   Blynk.virtualWrite(V4, Freq); // kirim data ke virtual V0 pada aplikasi Blynk
   Blynk.virtualWrite(V5, pf1); // kirim data ke virtual V1 pada aplikasi blynk
   delay(2000);
}

   float zeroIfNan(float v) 
{
  if (isnan(v)) 
  v = 0;
  return v;
}

No comments: