#include "CTBot.h"
#include <DHTesp.h>
CTBot myBot;
DHTesp dhtSensor;
CTBotReplyKeyboard Tbl;
CTBotInlineKeyboard TbLp1on, TbLp2on, TbLp1off, TbLp2off, TbLpAllon, TbLpAlloff;
int Lampu1 = LED_BUILTIN;
int Lampu2 = 23;
#define dhtPin 15
#define LAMPU_1_ON "Lampu_1_ON"
#define LAMPU_1_OFF "Lampu_1_OFF"
#define LAMPU_2_ON "Lampu_2_ON"
#define LAMPU_2_OFF "Lampu_2_OFF"
#define SEMUA_LAMPU_ON "Semua_Lampu_ON"
#define SEMUA_LAMPU_OFF "Semua_Lampu_OFF"
#define TIDAK "Tidak"
String Status_Lampu_1;
String Status_Lampu_2;
int Lampu_1 = HIGH;
int Lampu_2 = HIGH;
bool TampilkanTombol;
String ssid = "Wokwi-GUEST";
String pass = "";
String token = "5988269265:AAFm45I-iyhbUiT-kmwZnGZReYoDOpno91M";
void setup() {
Serial.begin(115200);
Serial.println("Memulai Koneksi...");
myBot.wifiConnect(ssid, pass);
myBot.setTelegramToken(token);
if (myBot.testConnection())
Serial.println("\nKoneksi Ke Telegram BOT Berhasil!");
else
Serial.println("\nTidak Terkoneksi Ke Telegram BOT");
pinMode(Lampu1, OUTPUT);
pinMode(Lampu2, OUTPUT);
digitalWrite(Lampu1, HIGH);
digitalWrite(Lampu2, HIGH);
dhtSensor.setup(dhtPin, DHTesp::DHT22);
Tbl.addButton("LAMPU 1");
Tbl.addButton("LAMPU 2");
Tbl.addRow();
Tbl.addButton("SUHU");
Tbl.addButton("KELEMBAPAN");
Tbl.addRow();
Tbl.addButton("SEMUA LAMPU ON");
Tbl.addButton("SEMUA LAMPU OFF");
Tbl.addRow();
Tbl.addButton("SUHU & KELEMBAPAN");
Tbl.addRow();
Tbl.addButton("CEK STATUS");
Tbl.enableResize();
TampilkanTombol = false;
TbLp1on.addButton("✅ Ya", LAMPU_1_ON, CTBotKeyboardButtonQuery);
TbLp1on.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLp2on.addButton("✅ Ya", LAMPU_2_ON, CTBotKeyboardButtonQuery);
TbLp2on.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLp1off.addButton("✅ Ya", LAMPU_1_OFF, CTBotKeyboardButtonQuery);
TbLp1off.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLp2off.addButton("✅ Ya", LAMPU_2_OFF, CTBotKeyboardButtonQuery);
TbLp2off.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLpAllon.addButton("✅ Ya", SEMUA_LAMPU_ON, CTBotKeyboardButtonQuery);
TbLpAllon.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLpAlloff.addButton("✅ Ya", SEMUA_LAMPU_OFF, CTBotKeyboardButtonQuery);
TbLpAlloff.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
}
void loop() {
float suhu = dhtSensor.getTemperature();
float kelembapan = dhtSensor.getHumidity();
TBMessage msg;
if (myBot.getNewMessage(msg)) {
if (msg.text.equalsIgnoreCase("/start")) {
myBot.sendMessage(msg.sender.id, "Halo...\nSelamat Datang Di Telegram Bot Kelas IoT.\n\nGunakan tombol dibawah untuk mengontrol lampu 👇", Tbl);
Serial.println("\nUser memulai Bot \n");
TampilkanTombol = true;
}
// lampu1
else if (msg.text.equalsIgnoreCase("LAMPU 1")) {
if (Lampu_1 == HIGH) {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu 1 dalam keadaan ON\nApakah anda ingin mematikan Lampu 1?", TbLp1off);
Serial.println("\nUser mengirim perintah 'Lampu 1' \nSaat ini Lampu 1 dalam keadaan ON \n");
} else {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu 1 dalam keadaan OFF\nApakah anda ingin menyalakan Lampu 1?", TbLp1on);
Serial.println("\nUser mengirim perintah 'Lampu 1' \nSaat ini Lampu 1 dalam keadaan OFF \n");
}
}
// lampu2
else if (msg.text.equalsIgnoreCase("LAMPU 2")) {
if (Lampu_2 == HIGH) {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu 2 dalam keadaan ON\nApakah anda ingin mematikan Lampu 2?", TbLp2off);
Serial.println("\nUser mengirim perintah 'Lampu 2' \nSaat ini Lampu 2 dalam keadaan ON \n");
} else {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu 2 dalam keadaan OFF\nApakah anda ingin menyalakan Lampu 2?", TbLp2on);
Serial.println("\nUser mengirim perintah 'Lampu 2' \nSaat ini Lampu 2 dalam keadaan OFF \n");
}
}
// Suhu
else if (msg.text.equalsIgnoreCase("SUHU")) {
Serial.println("Mengirim data suhu dan ke Telegram...");
String suhucuy;
suhucuy = (String)"Suhu yang diterima : " + suhu + "°C";
myBot.sendMessage(msg.sender.id, suhucuy);
}
// Kelembapan
else if (msg.text.equalsIgnoreCase("KELEMBAPAN")) {
Serial.println("Mengirim data kelembapan dan ke Telegram...");
String kelembapancuy;
kelembapancuy = (String)"Kelembapan yang diterima : " + kelembapan + "%";
myBot.sendMessage(msg.sender.id, kelembapancuy);
}
// semualampuon
else if (msg.text.equalsIgnoreCase("SEMUA LAMPU ON")) {
myBot.sendMessage(msg.sender.id, "Apakah anda ingin menyalakan Semua Lampu?", TbLpAllon);
Serial.println("\nUser ingin menyalakan semua lampu\n");
}
// semualampuoff
else if (msg.text.equalsIgnoreCase("SEMUA LAMPU OFF")) {
myBot.sendMessage(msg.sender.id, "Apakah anda ingin mematikan Semua Lampu?", TbLpAlloff);
Serial.println("\nUser ingin mematikan semua lampu\n");
}
// suhudankelembapan
else if (msg.text.equalsIgnoreCase("SUHU & KELEMBAPAN")) {
Serial.println("Mengirim data Suhu dan Kelembapan Telegram...");
String suhudankelembapan;
suhudankelembapan = (String)"Suhu yang diterima : " + suhu + "°C" + "\n" + "Kelembapan yang diterima : " + kelembapan + "%";
myBot.sendMessage(msg.sender.id, suhudankelembapan);
}
// cekstatus
else if (msg.text.equalsIgnoreCase("CEK STATUS")) {
String suhucuy;
suhucuy = (String)" Suhu " + suhu + "°C";
String kelembapancuy;
kelembapancuy = (String)" Kelembapan " + kelembapan + "%";
if (Lampu_1 == HIGH) {
Status_Lampu_1 = "Lampu 1 ON";
} else {
Status_Lampu_1 = "Lampu 1 OFF";
}
if (Lampu_2 == HIGH) {
Status_Lampu_2 = "Lampu 2 ON";
} else {
Status_Lampu_2 = "Lampu 2 OFF";
}
Serial.println("\nUser mengirim perintah 'Cek Status'\n");
myBot.sendMessage(msg.sender.id, "Status saat ini : \n\n👉 " + Status_Lampu_1 + "\n👉 " + Status_Lampu_2 +"\n\n👉 " + suhucuy +"\n👉 " + kelembapancuy + "\n\nGunakan tombol dibawah untuk mengontrol lampu 👇", Tbl);
Serial.println("\nStatus saat ini : \n\n👉 " + Status_Lampu_1 + "\n👉 " + Status_Lampu_2 +"\n\n👉"+ suhucuy + "\n👉 " + kelembapancuy);
} else if (msg.messageType == CTBotMessageQuery) {
if (msg.callbackQueryData.equals(LAMPU_1_ON)) {
digitalWrite(Lampu1, HIGH);
Lampu_1 = HIGH;
myBot.sendMessage(msg.sender.id, "💡 Lampu 1 Telah Dinyalakan");
Serial.println("\nUser menyalakan Lampu 1\n");
}
else if (msg.callbackQueryData.equals(LAMPU_1_OFF)) {
digitalWrite(Lampu1, LOW);
Lampu_1 = LOW;
myBot.sendMessage(msg.sender.id, "🚫 Lampu 1 Telah Dimatikan");
Serial.println("\nUser mematikan Lampu 1\n");
}
else if (msg.callbackQueryData.equals(LAMPU_2_ON)) {
digitalWrite(Lampu2, HIGH);
Lampu_2 = HIGH;
myBot.sendMessage(msg.sender.id, "💡 Lampu 2 Telah Dinyalakan");
Serial.println("\nUser menyalakan Lampu 2\n");
}
else if (msg.callbackQueryData.equals(LAMPU_2_OFF)) {
digitalWrite(Lampu2, LOW);
Lampu_2 = LOW;
myBot.sendMessage(msg.sender.id, "🚫 Lampu 2 Telah Dimatikan");
Serial.println("\nUser mematikan Lampu 2\n");
}
else if (msg.callbackQueryData.equals(SEMUA_LAMPU_ON)) {
digitalWrite(Lampu1, HIGH);
digitalWrite(Lampu2, HIGH);
Lampu_1 = HIGH;
Lampu_2 = HIGH;
myBot.sendMessage(msg.sender.id, "Semua 💡💡💡💡 Lampu Telah Dinyalakan");
Serial.println("\nUser telah menyalakan Semua Lampu\n");
} else if (msg.callbackQueryData.equals(SEMUA_LAMPU_OFF)) {
digitalWrite(Lampu1, LOW);
digitalWrite(Lampu2, LOW);
Lampu_1 = LOW;
Lampu_2 = LOW;
myBot.sendMessage(msg.sender.id, "🚫 Semua Lampu Telah Dimatikan");
Serial.println("\nUser telah mematikan Semua Lampu\n");
} else if (msg.callbackQueryData.equals(TIDAK)) {
myBot.sendMessage(msg.sender.id, "❌ Perintah Telah Dibatalkan!!!");
Serial.println("\nUser telah membatalkan perintah\n");
}
} else {
myBot.sendMessage(msg.sender.id, "⛔️ ERROR: Perintah tidak dikenal?!\n\nGunakan tombol dibawah untuk mengontrol lampu 👇", Tbl);
Serial.println("\nUser mengirim perintah yang tidak dikenal\n");
}
}
delay(500);
}