ESP32 bisa dikendalikan dari HP lewat Telegram tanpa membuat aplikasi sendiri. Caranya: buat bot di BotFather untuk mendapatkan token, pasang library UniversalTelegramBot di Arduino IDE, lalu program ESP32 membaca pesan seperti /on1 atau /off1 dan menyalakan relay sesuai perintah. Yang tidak boleh terlupa: batasi bot hanya untuk chat ID milikmu.
Langkah 1: Buat bot di BotFather
- Buka Telegram, cari @BotFather.
- Kirim
/newbot, beri nama dan username bot. - Simpan token yang diberikan. Token ini seperti password: siapa pun yang memilikinya bisa mengendalikan bot.
Langkah 2: Dapatkan chat ID
Chat ID adalah nomor unik akun Telegram-mu. Cara mudah: kirim pesan ke bot pembantu yang menampilkan ID pengguna (misalnya bot "userinfo"), atau cetak chat ID dari pesan masuk di Serial Monitor. Chat ID ini dipakai sebagai daftar putih (whitelist).
Langkah 3: Pasang library
Di Arduino IDE, pasang UniversalTelegramBot dan ArduinoJson lewat Library Manager, serta board ESP32.
Contoh kode
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
const char* WIFI_SSID = "NAMA_WIFI";
const char* WIFI_PASS = "PASSWORD_WIFI";
#define BOT_TOKEN "TOKEN_DARI_BOTFATHER"
const String CHAT_ID_SAYA = "123456789"; // whitelist
const int RELAY[3] = {26, 18, 19};
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
unsigned long cekTerakhir = 0;
void prosesPesan(int jumlah) {
for (int i = 0; i < jumlah; i++) {
String chatId = bot.messages[i].chat_id;
String teks = bot.messages[i].text;
if (chatId != CHAT_ID_SAYA) { // tolak pengguna lain
bot.sendMessage(chatId, "Akses ditolak", "");
continue;
}
for (int r = 0; r < 3; r++) {
if (teks == "/on" + String(r + 1)) { digitalWrite(RELAY[r], HIGH); bot.sendMessage(chatId, "Relay " + String(r + 1) + " ON", ""); }
if (teks == "/off" + String(r + 1)) { digitalWrite(RELAY[r], LOW); bot.sendMessage(chatId, "Relay " + String(r + 1) + " OFF", ""); }
}
}
}
void setup() {
for (int r = 0; r < 3; r++) { pinMode(RELAY[r], OUTPUT); digitalWrite(RELAY[r], LOW); }
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // sertifikat bawaan library
}
void loop() {
if (millis() - cekTerakhir > 1000) { // cek pesan tiap 1 detik
int jumlah = bot.getUpdates(bot.last_message_received + 1);
while (jumlah) { prosesPesan(jumlah); jumlah = bot.getUpdates(bot.last_message_received + 1); }
cekTerakhir = millis();
}
}
Logika HIGH/LOW relay bergantung pada rangkaian driver-mu (aktif HIGH atau aktif LOW). Sesuaikan bila perlu. Nomor pin di atas mengikuti contoh board ESP32 3 relay.
Tips keamanan
- Selalu pakai whitelist chat ID. Tanpa ini, siapa pun yang menemukan bot-mu bisa menyalakan relay.
- Jangan bagikan token di foto, video, grup, atau repository publik. Kalau terlanjur bocor, buat token baru lewat BotFather.
- Atur kondisi aman saat restart, misalnya semua relay mati saat ESP32 baru menyala.
- Sambung ulang WiFi otomatis bila koneksi putus.
Pengembangan berikutnya
- Perintah
/statusuntuk melihat kondisi semua relay. - Menyimpan status relay supaya tidak hilang saat listrik padam.
- Tombol inline keyboard supaya tidak perlu mengetik perintah.
Kesimpulan
Telegram adalah cara tercepat membuat alat yang bisa dikendalikan dari HP. Buat bot, pasang library, tulis logika perintah, dan wajib batasi dengan whitelist. Di Bootcamp SALTECH, peserta membuat board Smart Relay 3 channel sendiri lalu mengendalikannya lewat Telegram.
Pertanyaan yang sering muncul
Apakah perlu server atau hosting?
Tidak. ESP32 terhubung langsung ke server Telegram lewat internet.
Apakah bisa dipakai banyak orang?
Bisa, dengan menambahkan beberapa chat ID ke daftar whitelist, atau memakai grup Telegram khusus.
