//Konfigurasi setiap Library//
/* //PZEM004T
#include <PZEM004Tv30.h>
#include <Wire.h>//Wiring Diagram untuk PZEM004T-10A bisa dilihat di datasheetnya
PZEM004Tv30 pzem(Serial2, 16, 17); // Software Serial pin 16 (TX) & 17 (RX)
*/
//Percobaan DHT22
/*#include "DHTesp.h"//Library yang digunakan pada ESP32
const int DHT_PIN1 = 19; //pin D2
DHTesp dhtSensor1;*/
//Telegram
#include<CTBot.h>//Bot untuk mengirimkan hasil pembacaan PZEM
CTBot myBot ;//Nama Bot pengirim
CTBot myBot2 ;//Nama Bot pengirim
TBMessage msg ;
//Konfigurasi WIFI
String ssid = "Wokwi-GUEST";
String pass1 = "";
/*konfigurasi telegram token telegran dan id telegram-bot telegram tidak boleh tersambung dengan fitur API lain
tapi bisa menyambungkan akun dengan HP lainnya*/
String token = "6482547740:AAG_vrT_6sIsEd4OvEQST4-XP243Kx18Ihc";
const int id = 771401339;
const int id2 = 1278026608;
//Variable Aktif untuk aktivasi telegram
int aktif1 = 1 ; //nilai awal aktif (1=aktif, 0=tidak aktif)
int aktif2 = 1 ;
const int pinled = 12;//Indikator tersambung telegram
//Relay
//Menentukan letak Pin Pada Esp32
const int RELAYb = 13; // ESP32 VN pin GIOP39 connected to the IN pin of relay
const int RELAYc = 14; // ESP32 D34 pin GIOP34 connected to the IN pin of relay
void setup() {
Serial.begin(115200);
//DHT22
//dhtSensor1.setup(DHT_PIN1, DHTesp::DHT22);
//Relay
pinMode(RELAYb, OUTPUT);
pinMode(RELAYc, OUTPUT);
//Mengkoneksikan ESP32 ke Telegram melalui wifi
myBot.wifiConnect(ssid,pass1);
myBot.setTelegramToken(token);
myBot2.wifiConnect(ssid,pass1);
myBot2.setTelegramToken(token);
pinMode(pinled, OUTPUT);
//Menguji apakah telegram tersambung ke Node MCU
if(myBot.testConnection())
{
//Menyalakan lampu Pinled dan mengirim balasan di Telegram
digitalWrite(pinled, HIGH);
myBot.sendMessage(id,"Beban Aktif");
}
else
{
//Matikan lampu led jika tidak terkoneksi ke telegram dan tidak mengirim balasan pesan
digitalWrite(pinled,LOW);
Serial.println("Beban Tidak Tersambung");
}
//My bot nafisa
//Menguji apakah telegram tersambung ke Node MCU
if(myBot2.testConnection())
{
//Menyalakan lampu Pinled dan mengirim balasan di Telegram
digitalWrite(pinled,HIGH);
myBot2.sendMessage(id2,"Beban Aktif");
}
else
{
//Matikan lampu led jika tidak terkoneksi ke telegram dan tidak mengirim balasan pesan
digitalWrite(pinled,LOW);
Serial.println("Beban Tidak Tersambung");
}
}
void loop() {
//Bagian DHT22 Sensor 1
/*TempAndHumidity DataDHT221 = dhtSensor1.getTempAndHumidity();
float Dat1 = DataDHT221.temperature;
if (Dat1 !=NAN) {
Serial.println("TempDHT22-1: " + String(DataDHT221.temperature) + "°C");
Serial.println("---");
}
else {
Serial.print("Pembacaan error dari DHT22-1");
}*/
//Menguji apakah ada pesan yang dikirim ke ESP32
if (myBot.getNewMessage(msg))
{
//Menampilkan di serial monitor
Serial.println("pesan masuk :" + msg.text);
//Membaca pesan masuk
String pesan1 = msg.text ;
//Menguji pesan apakah ON atau OFF
if(pesan1 == "ON")//Diganti RFID
{
aktif1 = 1;
myBot.sendMessage(msg.sender.id,"Beban di Aktifkan");
digitalWrite(RELAYb, HIGH);
digitalWrite(RELAYc, HIGH);
//myBot.sendMessage(id, String(Dat1));
}
else if (pesan1 == "OFF")
{
aktif1 = 0;
myBot.sendMessage(msg.sender.id,"Beban di Matikan");
digitalWrite(RELAYb, LOW);
digitalWrite(RELAYc, LOW);
} delay (100);
}
//uji apakah variable aktif atau tidak, untuk PZEM nantinya
/*if (aktif1 == 1)
{
myBot.sendMessage(id, "TempDHT22-1: " + String(DataDHT221.temperature) + "°C");
}*/
//My bot nafisa
//Menguji apakah ada pesan yang dikirim ke ESP32
if (myBot2.getNewMessage(msg))
{
//Menampilkan di serial monitor
Serial.println("pesan masuknfs :" + msg.text);
//Membaca pesan masuk
String pesan2 = msg.text ;
//Menguji pesan apakah ON atau OFF
if(pesan2 == "ON")//Diganti RFID
{
aktif2 = 1;
myBot2.sendMessage(msg.sender.id,"Beban di Aktifkan");
//myBot.sendMessage(id, String(Dat1));
}
else if (pesan2 == "OFF")
{
aktif2 = 0;
myBot2.sendMessage(msg.sender.id,"Beban di Matikan");
} delay (100);
}
//uji apakah variable aktif atau tidak, untuk PZEM
/*if (aktif2 == 1)
{
myBot2.sendMessage(id2, "TempDHT22-1: " + String(DataDHT221.temperature) + "°C");
}*/
}
/*void PZEM004T(){
float voltage = pzem.voltage();
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();
delay(5000);
}*/