#include "DHTesp.h"
#include "CTBot.h"
CTBot bot;
int LED = 2;
String token = "6028107999:AAEiyN8rS8bWHF9ULba4l2WaKXbeIrXt4w4";
#define ldrPin 2
int relay = 4;
int status = 0;
const int DHT_PIN = 15;
const float gama = 0.7;
const float rl10 = 50;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
pinMode(relay, OUTPUT);
pinMode(LED, OUTPUT);
digitalWrite(relay, LOW);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Serial.println("Connecting to Telegram");
digitalWrite(LED, HIGH);
bot.wifiConnect("Wokwi-GUEST","");
bot.setTelegramToken(token);
if(bot.testConnection()){
Serial.println("Terhubung");
digitalWrite(LED, LOW);
delay(200);
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}
else{
Serial.println("Gagal Terhubung");
digitalWrite(LED, LOW);
}
}
void loop() {
/*digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);*/
Serial.println("Mencari Chat");
digitalWrite(LED, HIGH);
TBMessage chat;
digitalWrite(LED, LOW);
Serial.println("Selesai mencari chat");
if(bot.getNewMessage (chat)){
Serial.println("Ada pesan masuk dari "+String(chat.sender.username));
Serial.println("----> "+String(chat.text));
if(chat.text.equalsIgnoreCase("MONITOR")){
Serial.print("Monitor");
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float suhu = data.temperature; //nilai suhu
int kelembaban = data.humidity; //nilai kelembaban
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
int ldr = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama)); //nilai ldr
digitalWrite(LED, HIGH);
bot.sendMessage (chat.sender.id,"Monitoring Sensor Realtime \n\n--> Suhu : "+String(suhu)+" °C \n--> Kelembaban : "+String(kelembaban)+" % \n--> LDR : "+String(ldr)+" Lux");
Serial.println(" <Berhasil dijawab>");
digitalWrite(LED, LOW);
//bot.sendMessage (chat.sender.id,"Led nyala boss");
}
else if (chat.text.equalsIgnoreCase("RELAY ON")){
digitalWrite(relay, HIGH);
digitalWrite(LED, HIGH);
Serial.print("Relay On");
bot.sendMessage (chat.sender.id,"Relay berhasil dinyalakan");
Serial.println(" <Berhasil dijawab>");
digitalWrite(LED, LOW);
}
else if (chat.text.equalsIgnoreCase("RELAY OFF")){
digitalWrite(relay, LOW);
digitalWrite(LED, HIGH);
Serial.print("Relay Off");
bot.sendMessage (chat.sender.id,"Relay berhasil dimatikan");
Serial.println(" <Berhasil dijawab>");
digitalWrite(LED, LOW);
}
else{
Serial.print("Tidak dikenali");
bot.sendMessage (chat.sender.id,"Perintah tidak dikenali, silahkan kirim perintah : \n\n--> MONITOR = Melihat kondisi terkini \n--> RELAY ON = Menyalakan relay \n--> RELAY OFF = Mematikan Relay'");
Serial.println(" <Berhasil dijawab>");
}
} else {
Serial.println("Tidak ada chat yang ditemukan, sedang mengecek kondisi");
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float suhu = data.temperature; //nilai suhu
int kelembaban = data.humidity; //nilai kelembaban
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
int ldr = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama)); //nilai ldr
if(suhu > 25 || kelembaban > 50){
if (status == 0){
Serial.print("Peringatan");
status = 1;
bot.sendMessage (1354426222,"Peringatan !!, keadaan di TKP sedang tidak baik \n\n--> Suhu : "+String(suhu)+" °C \n--> Kelembaban : "+String(kelembaban)+" % \n--> LDR : "+String(ldr)+" Lux");
Serial.println(" <Terkirim>");
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}else if(status == 1){
Serial.println("Peringatan tetapi sudah diingatkan tadi");
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}
} else if(status == 1){
Serial.println("Mengirim kabar baik");
status = 0;
bot.sendMessage (1354426222,"Lapor Pak !!, keadaan di TKP sudah membaik \n\n--> Suhu : "+String(suhu)+" °C \n--> Kelembaban : "+String(kelembaban)+" % \n--> LDR : "+String(ldr)+" Lux");
Serial.println(" <Terkirim>");
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
} else {
Serial.println("Kondisi TKP aman");
status = 0;
}
delay (5000);
}
//delay(5000);
/*Serial.println("Temp: " + String(suhu) + "°C");
Serial.println("Humidity: " + String(kelembaban) + "%");
Serial.println("LDR: " + String(ldr)+" Lux");
Serial.print("---");*/
//delay(1000);
}