Power Monitoring PZEM004Tv.3.0 ESP8266 to Thingspeak.
Address:
#include <ESP8266WiFi.h>
#include <ThingSpeak.h>
#include <PZEM004Tv30.h>
#include <SoftwareSerial.h> // Tambahkan library SoftwareSerial
const char *ssid = "RANACITTA"; // Ganti dengan SSID Wi-Fi Anda
const char *password = "Pandakgede999"; // Ganti dengan password Wi-Fi Anda
const char *thingSpeakAPIKey = "XGL13QLZZX55E12O"; // Ganti dengan API Key ThingSpeak Anda
const char *host = "api.thingspeak.com";
WiFiClient client;
//-------------------tambahan
PZEM004Tv30 pzem(14, 12); // Software Serial pin 11 D5 to Tx PZEM004 & 12 D6 to Rx PZEM004
//-------------------tambahan
// Tentukan pin RX dan TX untuk komunikasi dengan PZEM004T
//#define RX_PIN D6
//#define TX_PIN D5
// Buat objek SoftwareSerial
//SoftwareSerial pzemSWSerial(RX_PIN, TX_PIN);
//PZEM004Tv30 pzem(pzemSWSerial); // Gunakan pzemSWSerial sebagai komunikasi dengan PZEM
unsigned long lastTime = 0;
unsigned long timerDelay = 20000; // Kirim data ke ThingSpeak setiap 20 detik
void setup() {
Serial.begin(9600);
// Setup komunikasi serial untuk PZEM004T
// pzemSWSerial.begin(9600); ---> ini dihilangkan
// Setup ESP8266 Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
ThingSpeak.begin(client);
}
void loop() {
// Membaca data dari PZEM004T
float voltage = pzem.voltage();
float current = pzem.current();
float power = pzem.power();
float energy = pzem.energy();
float frequency = pzem.frequency();
float pf = pzem.pf();
// Cek apakah pembacaan berhasil
if (!isnan(voltage) && !isnan(current) && !isnan(power) &&
!isnan(energy) && !isnan(frequency) && !isnan(pf)) {
Serial.print("Voltage: "); Serial.print(voltage); Serial.println(" V, ");
Serial.print("Current: "); Serial.print(current); Serial.println(" A, ");
Serial.print("Power: "); Serial.print(power); Serial.println(" W, ");
Serial.print("Energy: "); Serial.print(energy); Serial.println(" kWh, ");
Serial.print("Frequency: "); Serial.print(frequency); Serial.println(" Hz, ");
Serial.print("Power Factor: "); Serial.println(pf);
// Mengirim data ke ThingSpeak
ThingSpeak.setField(1, voltage);
ThingSpeak.setField(2, current);
ThingSpeak.setField(3, power);
ThingSpeak.setField(4, energy);
ThingSpeak.setField(5, frequency);
ThingSpeak.setField(6, pf);
// Kirim data ke ThingSpeak
int responseCode = ThingSpeak.writeFields(2070664, thingSpeakAPIKey);
if (responseCode == 200) {
Serial.println("Data sent to ThingSpeak successfully!");
Serial.println(".");
} else {
Serial.println("Error sending data to ThingSpeak. HTTP Response Code: " + String(responseCode));
}
// Tunggu sebelum mengirim data berikutnya
delay(timerDelay);
} else {
Serial.println("Error reading PZEM004T data.");
Serial.println("");
}
}
No comments:
Post a Comment