#include <WiFi.h>
#include <PZEM004Tv30.h>
#if !defined (PZEM_RX_PIN) && !defined (PZEM_TX_PIN)
#define (PZEM_RX_PIN 16)
#define (PZEM_TX_PIN 17)
#endif
#if !defined (PZEM_SERIAL)
#define PZEM_SERIAL Serial2
#endif
# if defined (ESP32)
//HERE we initialize the PZEM on Serial2 with RX/TX pins 16 and 17
PZEM004Tv30 pzem (PZEM_SERIAL, PZEM_RX_PIN, PZEM_TX_PIN);
#elif defined (ESP8266)
#else
PZEM004Tv30 pzem (PZEM_SERIAL);
#endif
WiFiClient client;
string apiKey = “”; // memasukkan API key dari thingspeak
const char* ssid = “Farhan”; // memasukkan nama wifi
const char* password = “akbrfrhn28”; // memasukkan password wifi
const char* server = “api.thingspeak.com”; // Thingspeak Server
unsigned long channelNumber = “”; // isi sesuai channel ID
void setup() {
Serial.begin (115200);
WiFi.begin (ssid, password); //koneksi ke wifi
Serial.println(“”); // menampilkan di serial monitor
Serial.print (“Connecting”); // menampilkan di serial monitor
while (WiFi.status () != WL_CONNECTED) {
Serial.print (“”); // menampilkan di serial monitor
}
}
void loop() {
// membaca data sensor
float voltage = pzem.voltage ();
float current = pzem.current();
float power = pzem.power ();
float pf = pzem.pf ();
if (client.connect (server.80)) { //“184.106.153.149” or api.thingspeak.com
String postStr = apikey; //membuat variabel postStr sama dengan apikey
postStr +=“&field1=“; //mengirim ke field 1
postStr += voltage; //nilai tegangan yang dikirim
postStr +=“&field2=“; //mengirim ke field 2
postStr += current; //nilai arus yang dikirim
postStr +=“&field3=“; //mengirim ke field 3
postStr += power; //nilai power yang dikirim
postStr +=“&field4=“; //mengirim ke field 2
postStr += pf; //nilai faktor daya yang dikirim
postStr += “\r\n\r\n”; //membuat baris baru
client.print (“POST /update HTTP/1.1\n”);
client.print (“Host: api.thingspeak.com\n”);
client.print (“Connection: close\n”);
client.print (“X-THINGSPEAKAPIKEY: “+apiKey+”\n”);
client.print (“Content-Type: application/x-www-form-urlencoded\n”);
client.print (“Content-Length:”);
client.print (postStr.length());
client.print (“\n\n”);
client.print (postStr); // mengirim nilai postStr
}
}
//menampilkan Nilai pada Serial monitor
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(“PF:”); Serial.print (pf)
Serial.println();
delay(2000);