#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Informasi koneksi WiFi
const char* ssid = "sabrinaauliastore";
const char* password = "kualitasoke";
// Informasi bot Telegram
const char* telegramApiToken = "7791038296:AAFvRfoO0vGIPIcs4L8wE6eTJqCCRw_j4Dk";
WiFiClientSecure client;
UniversalTelegramBot bot(telegramApiToken, client);
unsigned long lastTimeBotRan;
const int botInterval = 1000; // Interval untuk cek pesan dalam milidetik
// ID chat Telegram
String chatId = "@ContSayUno_bot";
const int ledPin = 16; // Misalnya menggunakan GPIO 16
// Fungsi untuk menghubungkan ESP32 ke WiFi
void connectToWiFi() {
Serial.print("Menghubungkan ke WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("Terhubung!");
}
// Fungsi untuk mengeksekusi perintah dari Telegram
void handleNewMessages(int numNewMessages) {
Serial.println("Mengecek pesan baru...");
for (int i = 0; i < numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
String text = bot.messages[i].text;
Serial.println("Pesan diterima: " + text);
if (text == "/on") {
Serial.println("Perintah untuk menyalakan LED");
digitalWrite(ledPin, HIGH); bot.sendMessage(chat_id, "LED dinyalakan", "");
}
else if (text == "/off") {
Serial.println("Perintah untuk mematikan LED");
digitalWrite(ledPin, LOW); bot.sendMessage(chat_id, "LED dinyalakan", "");
bot.sendMessage(chat_id, "LED dimatikan", "");
}
else {
bot.sendMessage(chat_id, "Perintah tidak dikenali", "");
}
}
}
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Koneksi ke WiFi
connectToWiFi();
// Konfigurasi client untuk komunikasi HTTPS
client.setInsecure(); // Tidak memverifikasi sertifikat
// Kirim pesan untuk memberitahu bahwa ESP32 siap
bot.sendMessage(chatId, "ESP32 siap menerima perintah", "");
}
void loop() {
if (millis() - lastTimeBotRan > botInterval) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
handleNewMessages(numNewMessages);
lastTimeBotRan = millis();
}
}