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:
Post a Comment