Friday, April 04, 2025

Power Monitoring PZEM004Tv.3.0 ESP8266 to Thingspeak

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: