ESP8266 IoT TelegramBot – Kontrol Relay Lampu via Internet

Hai Kawan Warrior !
Berdasarkan hasil diskusi yang kami dapatkan di forum-forum mengenai ESP8266, beberapa pengguna ternyata tertarik dengan cara kerja sistem kontrol lampu rumah dari jarak jauh atau melalui internet. Dalam tutorial ini kita akan bahas bagaimana cara mengontrol relay lampu rumah via internet menggunakan esp8266 dan Aplikasi Telegram.

Kenapa harus aplikasi telegram ?

Karena aplikasi telegram ini memiliki fitur BOT. Bot sendiri merupakan kata lain daripada Robot, dimana robot ini nantinya akan bekerja untuk membantu memudahkan kita dalam kegiatan pengiriman pesan. Untuk membuat bot sendiri sangatlah mudah, kita hanya perlu melakukan Add pada akun @BotFatherLalu memasukan informasi mengenai bot yang akan kita buat. Nanti kita akan diberikan sebuah code API yang akan kita manfaatkan untuk komunikasi ESP8266 ke internet.

Apa itu API ?

API (Application Programming Inteface) secara singkat merupakan teknologi yang menjadi sebuah jembatan komunikasi, dimana memungkinkan programmer untuk melakukan pertukaran informasi data melalui dua perangkat yang berbeda atau lebih melalui jaringan internet. Dengan ini perangkat yang tidak melmiliki dedicate ip public dalam melakukan komunikasi dengan perangakat lainnya hanya dengan menggunakan sercet code API.

Dengan adanya teknologi tersebut kita dapat memanfaatkannya untuk membuat sebuah perangkat berbasis IoT (Internet of Things) untuk mematikan dan menghidupkan lampu relay menggunakan perangkat ESP8266 melalui internet dengan API dari bot telegram tersebut.

Jika Program pada materi ini tidak dapat berjalan, kita sudah buatkan update nya dengan menggunakan CTBot yang materinya dapat kalian akses di link berikut :

https://www.warriornux.com/kontrol-relay-nodemcu-esp8266-dengan-telegram/

1. Komponen yang harus disiapkan :

  • ESP8266 All Series/NodeMCU V3
  • Relay
  • Socket Lampu + Lampu
  • Smartphone/Laptop yang terinstall Telegram

2. rangkaian yang akan kita gunakan :

Rangkaian NodeMCU Relay
Rangkaian Jika Menggunakan NodeMCU
Rangkaian ESP8266-12E Relay
Rangkaian Jika Menggunakan ESP-12E

Setelah rangkain kita buat, selanjutnya kita tambahkan @BotFather pada telegram kita, lalu buka BotFater tersebut dan buat BOT dengan cara seperti gambar dibawah ini.

3. Cara Membuat Bot Telegram

membuat-telegrambot-warriornux

Setelah selesai membuat bot, kamu akan diberikan sebuah token untuk mengakses HTTP API. Token tersebut yang akan kita masukan kedalam program pada ESP8266.

Selanjutnya untuk dapat menggunakan API Telegram pada program yang kita buat, kita harus memasukan library TelegramBOT terlebih dahulu ke aplikasi Arduino IDE. Library tersebut dapat diunduh pada link berikut https://github.com/CasaJasmina/TelegramBot-Library.

4. Sketch Arduino IDE ESP8266 Telegram BOT

Setelah library ditambahkan, sekarang kita masukan program berikut :

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <TelegramBot.h>
 
// Initialize Wifi connection to the router  
const char* ssid  = "warriornux.com";
const char* password = "1234567890";

// Initialize your Telegram BOT API  
const char BotToken[] = "551145241:AAFXPgz0JhMlIqPeKG2Fh2YpO-qFrrg5hfs";

WiFiClientSecure net_ssl;
TelegramBot bot (BotToken, net_ssl);

const int ledPin = 16;  // the number of the LED pin 
 
void setup() 
{  
 Serial.begin(115200);  
 while (!Serial) {}  //Start running when the serial is open 
 delay(3000);  
 // attempt to connect to Wifi network:  
 Serial.print("Connecting Wifi: ");  
 Serial.println(ssid);  
 WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  } 
 Serial.println("");  
 Serial.println("WiFi connected");  
 bot.begin();  
 pinMode(ledPin, OUTPUT);  
}  

void loop() 
{  
 message m = bot.getUpdates(); // Read new messages  
 if (m.text.equals("On")) //Perintah dari telegram ke perangkat
       {  
   digitalWrite(ledPin, HIGH);  
   Serial.println("message received");  
   bot.sendMessage(m.chat_id, "The Led is now ON");  //Balasan dari perangkat ke Bot Telegram
 }  
 else if (m.text.equals("Off")) //Perintah dari telegram ke perangkat
       {  
   digitalWrite(ledPin, LOW);  
   Serial.println("message received");  
   bot.sendMessage(m.chat_id, "The Led is now OFF");  //Balasan dari perangkat ke Bot Telegram
 }  
}

Setelah sketch program kita upload pada ESP8266 dan sudah terkoneksi ke internet juga, sekarang kita hanya perlu mencobanya dengan masuk ke BOT Telegram yang sudah kita buat. Lalu memasukan perintah dengan melakukan chat. Tunggu 20detik hingga perangkat merespon dan membalas pesan pada Bot Tersebut.

5. Hasil Percobaan

Berikut merupakan tampilan dari bot telegram yang sudah kita buat, beserta report yang muncul ketika kita memasukan perintah. Dan juga tampilan dari serial monitor Arduino IDE.

report-telegrambot-esp8266

Video Demo Menyusul

6. Kesimpulan

Dengan memanfaatkan API dari Bot Telegram kita dapat menghubungkan perangkat ESP8266 dan Smartphone Android/IOS, Melakukan komunikasi antara kedua perangkat tersebut hingga membuat sebuah sistem kontrol berbasis internet chat yang mampu mengontrol relay lampu yang kita kondisikan berada didalam rumah menggunakan jaringan internet.

Baik kalau begitu, semoga tutorial ini dapat membantu kawan kawan. Jangan lupa like, subscribe, dan bagikan agar banyak kawan kita yang makin banyak tau.

Tresna Widiyaman
Latest posts by Tresna Widiyaman (see all)
Subscribe
Notify of
32 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Daffa
Daffa
5 years ago

Master ,saya sudah ikutin smua intruksi tapi pas telegram dikirim perintah kok nggak ada reaksi sama sekali y.??

Flying Dutchman
Flying Dutchman
5 years ago

Itu esp8266 nya harus terkoneksi ke internet juga kan? Lalu cara menghubungkan esp8266nya ke internet gimana mas? Misalnya si esp8266nya mau dikoneksikan ke wifi rumah. Terima kasih

Iik Yuliadi
Iik Yuliadi
4 years ago

Apakah harus pakai webservice untuk bisa pakai handphone…??

Dwipa Yana
Dwipa Yana
4 years ago

comment image ini maksudnya gimana mas

Reza Drajat
Reza Drajat
4 years ago

wifi konek ke esp udah , coding beres cuman tidak memberi perintah saat di beri perintah lewat telegram yang salah apanya ya gan ????

Dwipa Yana
Dwipa Yana
4 years ago

ini kesalahannya apa ya mas?comment image

Noercholish MS
Noercholish MS
4 years ago

Maaf gan ini kenapa ya ? padahal udh ngikutin sesuai tutorial, dan udh baca beberapa masalah yang sama di komentar lainya tapi teteap tidak bisa di compile, kenapa ya gan
comment image

Instinct gg
Instinct gg
4 years ago

bisa di operasikan oleh user lain gak?

Heru prasetyo
Heru prasetyo
4 years ago

kenpa setiap dikirim perintah dari telegram muncul di serial monitora gini mas…mohon pencerahan!!
terimakasih juga buat saran kemaren udh berhasil mas jadi saya nyoba yang lain..

comment image

Diki Oktafianda
Diki Oktafianda
4 years ago

comment image

Kalau begini kira-kira masalahnya apa ya bg? padahal library nya sudah di install tapi tetap tidak kebaca.

Tresna Widiyaman
Tresna Widiyaman
5 years ago

Seperti gimana kodingannya mas, tidak jauh berbeda ko

Erza Fadliansyah
Erza Fadliansyah
4 years ago

sudah di balim perintahnya sama reaksinya gan…bisa nyala gabisa mati lampunya

oka
oka
4 years ago

Bang, punya saya upload sukses, tele udah bisa jawab tapi si lampunya dari relay ga respon.
Mohon dibantu…

Khairul pad
Khairul pad
4 years ago

comment image

mohon solusi

Dimas
Dimas
4 years ago

Ini kenapa yaa bg?

Build options changed, rebuilding all
Archiving built core (caching) in: C:UsersASUSAppDataLocalTemparduino_cache_113045corecore_esp8266_esp8266_nodemcuv2_CpuFrequency_80,VTable_flash,FlashSize_4M1M,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,FlashErase_none,UploadSpeed_115200_264ac6eb32e5618bf8f361512f49d2e8.a
Sketch uses 332288 bytes (31%) of program storage space. Maximum is 1044464 bytes.
Global variables use 31752 bytes (38%) of dynamic memory, leaving 50168 bytes for local variables. Maximum is 81920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

Dimas
Dimas
4 years ago

Arduino: 1.8.5 (Windows 10), Board: “NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200”

Build options changed, rebuilding all
Archiving built core (caching) in: C:UsersASUSAppDataLocalTemparduino_cache_113045corecore_esp8266_esp8266_nodemcuv2_CpuFrequency_80,VTable_flash,FlashSize_4M1M,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,FlashErase_none,UploadSpeed_115200_264ac6eb32e5618bf8f361512f49d2e8.a
Sketch uses 332288 bytes (31%) of program storage space. Maximum is 1044464 bytes.
Global variables use 31752 bytes (38%) of dynamic memory, leaving 50168 bytes for local variables. Maximum is 81920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.

ini kenapa ya bg?