#include "CTBot.h"
#include "DHTesp.h"
CTBot myBot;
CTBotReplyKeyboard Tbl;
CTBotInlineKeyboard TbLp1on, TbLp2on, TbLp3on, TbLp1off, TbLp2off, TbLp3off, TbLSuhu, TbLKelembaban, TbLpAllon, TbLpAlloff;
DHTesp dhtSensor;
int Lampu1 = 5;
int Lampu2 = 4;
int Lampu3 = 2;
#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 LAMPU_3_ON "Lampu_3_ON"
#define LAMPU_3_OFF "Lampu_3_OFF"
#define SUHU "Suhu"
#define KELEMBABAN "Kelembaban"
#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;
String Status_Lampu_3;
int Lampu_1 = HIGH;
int Lampu_2 = HIGH;
int Lampu_3 = HIGH;
bool TampilkanTombol;
String ssid = "Wokwi-GUEST";
String pass = "";
String token = "5945063834:AAHbv-qvdTxMC1LVQUbRl7wx-7xxY6rWZ3A";
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);
pinMode(Lampu3, OUTPUT);
dhtSensor.setup(dhtPin, DHTesp::DHT22);
digitalWrite(Lampu1, HIGH);
digitalWrite(Lampu2, HIGH);
digitalWrite(Lampu3, HIGH);
Tbl.addButton("Lampu Merah");
Tbl.addButton("Lampu Orange");
Tbl.addButton("Lampu Hijau");
Tbl.addRow();
Tbl.addButton("Suhu");
Tbl.addButton("Kelembaban");
Tbl.addRow();
Tbl.addButton("Semua Lampu ON");
Tbl.addButton("Semua Lampu OFF");
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);
TbLp3on.addButton("✅ Ya", LAMPU_3_ON, CTBotKeyboardButtonQuery);
TbLp3on.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);
TbLp3off.addButton("✅ Ya", LAMPU_3_OFF, CTBotKeyboardButtonQuery);
TbLp3off.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLSuhu.addButton("✅ Ya", SUHU, CTBotKeyboardButtonQuery);
TbLSuhu.addButton("❌ Tidak", TIDAK, CTBotKeyboardButtonQuery);
TbLKelembaban.addButton("✅ Ya", KELEMBABAN, CTBotKeyboardButtonQuery);
TbLKelembaban.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() {
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;
} else if (msg.text.equalsIgnoreCase("Lampu Merah")) {
if (Lampu_1 == HIGH) {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu Merah dalam keadaan ON\nApakah anda ingin mematikan Lampu Merah?", TbLp1off);
Serial.println("\nUser mengirim perintah 'Lampu Merah' \nSaat ini Lampu Merah dalam keadaan ON \n");
} else {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu Merah dalam keadaan OFF\nApakah anda ingin menyalakan Lampu Merah?", TbLp1on);
Serial.println("\nUser mengirim perintah 'Lampu Merah' \nSaat ini Lampu Merah dalam keadaan OFF \n");
}
}
else if (msg.text.equalsIgnoreCase("Lampu Orange")) {
if (Lampu_2 == HIGH) {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu Orange dalam keadaan ON\nApakah anda ingin mematikan Lampu Orange?", TbLp2off);
Serial.println("\nUser mengirim perintah 'Lampu Orange' \nSaat ini Lampu Orange dalam keadaan ON \n");
} else {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu Orange dalam keadaan OFF\nApakah anda ingin menyalakan Lampu Orange?", TbLp2on);
Serial.println("\nUser mengirim perintah 'Lampu Orange' \nSaat ini Lampu Orange dalam keadaan OFF \n");
}
}
else if (msg.text.equalsIgnoreCase("Lampu Hijau")) {
if (Lampu_3 == HIGH) {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu Hijau dalam keadaan ON\nApakah anda ingin mematikan Lampu Hijau?", TbLp3off);
Serial.println("\nUser mengirim perintah 'Lampu Hijau' \nSaat ini Lampu Hijau dalam keadaan ON \n");
} else {
myBot.sendMessage(msg.sender.id, "Saat ini Lampu Hijau dalam keadaan OFF\nApakah anda ingin menyalakan Lampu Hijau?", TbLp3on);
Serial.println("\nUser mengirim perintah 'Lampu Hijau' \nSaat ini Lampu Hijau dalam keadaan OFF \n");
}
}
else if (msg.text.equalsIgnoreCase("Suhu")) {
myBot.sendMessage(msg.sender.id, "\nApakah anda ingin memeriksa suhu ruangan saat ini?", TbLSuhu);
Serial.println("\nUser mengirim perintah 'Suhu'");
}
else if (msg.text.equalsIgnoreCase("Kelembaban")) {
myBot.sendMessage(msg.sender.id, "\nApakah anda ingin memeriksa Kelembaban ruangan saat ini?", TbLKelembaban);
Serial.println("\nUser mengirim perintah 'Kelembaban'");
}
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");
} 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");
} else if (msg.text.equalsIgnoreCase("Cek Status")) {
if (Lampu_1 == HIGH) {
Status_Lampu_1 = "Lampu Merah ON";
} else {
Status_Lampu_1 = "Lampu Merah OFF";
}
if (Lampu_2 == HIGH) {
Status_Lampu_2 = "Lampu Orange ON";
} else {
Status_Lampu_2 = "Lampu Orange OFF";
}
if (Lampu_3 == HIGH) {
Status_Lampu_3 = "Lampu Hijau ON";
} else {
Status_Lampu_3 = "Lampu Hijau OFF";
}
float kelembaban = dhtSensor.getHumidity();
float suhu = dhtSensor.getTemperature();
Serial.println("\nUser mengirim perintah 'Cek Status'\n");
myBot.sendMessage(msg.sender.id, "Status saat ini : \n\n👉 " + Status_Lampu_1 + "\n\n👉 " + Status_Lampu_2 + "\n\n👉 " + Status_Lampu_3 + "\n\n👉 " + suhu + "\n\n👉 " + kelembaban +"\n\nGunakan tombol dibawah untuk mengontrol lampu 👇", Tbl);
Serial.println("\nStatus saat ini : \n\n👉 " + Status_Lampu_1 + "\n👉 " + Status_Lampu_2 + "\n👉 " + Status_Lampu_3 + "\n\n👉 Suhu ruangan saat ini " + suhu + "\n\n👉 Kelembaban ruangan saat ini " + kelembaban +"\n");
} else if (msg.messageType == CTBotMessageQuery) {
if (msg.callbackQueryData.equals(LAMPU_1_ON)) {
digitalWrite(Lampu1, HIGH);
Lampu_1 = HIGH;
myBot.sendMessage(msg.sender.id, "💡 Lampu Merah Telah Dinyalakan");
Serial.println("\nUser menyalakan Lampu Merah\n");
}
else if (msg.callbackQueryData.equals(LAMPU_1_OFF)) {
digitalWrite(Lampu1, LOW);
Lampu_1 = LOW;
myBot.sendMessage(msg.sender.id, "🚫 Lampu Merah Telah Dimatikan");
Serial.println("\nUser mematikan Lampu Merah\n");
}
else if (msg.callbackQueryData.equals(LAMPU_2_ON)) {
digitalWrite(Lampu2, HIGH);
Lampu_2 = HIGH;
myBot.sendMessage(msg.sender.id, "💡 Lampu Orange Telah Dinyalakan");
Serial.println("\nUser menyalakan Lampu Orange\n");
}
else if (msg.callbackQueryData.equals(LAMPU_2_OFF)) {
digitalWrite(Lampu2, LOW);
Lampu_2 = LOW;
myBot.sendMessage(msg.sender.id, "🚫 Lampu Orange Telah Dimatikan");
Serial.println("\nUser mematikan Lampu Orange\n");
}
else if (msg.callbackQueryData.equals(LAMPU_3_ON)) {
digitalWrite(Lampu3, HIGH);
Lampu_3 = HIGH;
myBot.sendMessage(msg.sender.id, "💡 Lampu Hijau Telah Dinyalakan");
Serial.println("\nUser menyalakan Lampu Hijau\n");
}
else if (msg.callbackQueryData.equals(LAMPU_3_OFF)) {
digitalWrite(Lampu3, LOW);
Lampu_3 = LOW;
myBot.sendMessage(msg.sender.id, "🚫 Lampu Hijau Telah Dimatikan");
Serial.println("\nUser mematikan Lampu Hijau\n");
}
else if (msg.callbackQueryData.equals(SUHU)) {
float suhu = dhtSensor.getTemperature();
Serial.print("\nSuhu ruangan saat ini: ");
Serial.println(suhu);
String textSuhu;
textSuhu = (String)"Suhu ruangan saat ini: " + suhu;
myBot.sendMessage(msg.sender.id, textSuhu);
}
else if (msg.callbackQueryData.equals(KELEMBABAN)) {
float kelembaban = dhtSensor.getHumidity(); //Perintah dari telegram ke perangkat
Serial.print("\nKelembaban ruangan saat ini: ");
Serial.println(kelembaban);
String textKelembaban;
textKelembaban = (String)"Kelembaban ruangan saat ini: " + kelembaban;
myBot.sendMessage(msg.sender.id, textKelembaban);
}
else if (msg.callbackQueryData.equals(SEMUA_LAMPU_ON)) {
digitalWrite(Lampu1, HIGH);
digitalWrite(Lampu2, HIGH);
digitalWrite(Lampu3, HIGH);
Lampu_1 = HIGH;
Lampu_2 = HIGH;
Lampu_3 = 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);
digitalWrite(Lampu3, LOW);
Lampu_1 = LOW;
Lampu_2 = LOW;
Lampu_3 = 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);
}