Telegram bot - smart home control relay wemos d1 mini

Smart Home control relay, ESP8266 use Telegram app

Penjelasan Singkat

Telegram merupakan aplikasi mobile untuk berchatting ria yang dimana memungkinkan user dapat mengirimkan pesan chatting rahasia ke user lainnya baik bersifat pribadi maupun broadcast yang datanya itu di enkripsi end-to-end sebagai fitur keamanan tambahan.

Selain pesan chatting, terdapat fitur lainnya yaitu fitur untuk fungsi mengirim gambar dan video user lainnya, dan juga mendukung mengirim file dokumen, serta sharing location dimana lokasi kita berada ke user lain dengan mudah.

Aplikasi mobile Telegram ini merupakan aplikasi chatting terbaik dari semua aplikasi chatting yang ada, sebagai pesaing whatsapp. Dikarenakan dilihat dari segi kehandalannya, kecepatannya, tidak banyak memakan memori, dan yang diunggulkan yaitu tidak adanya iklan di aplikasi ini.

Pada aplikasi inilah terdapat fitur telegram bot yang akan dimanfaatkan membuat smart home untuk mengontrol relay yang dihubungkan ke lampu – lampu misal lampu ruang tamu, kamar tidur, dapur, dan lain sebagainya.

Apa itu telegram bot?

Telegram bot merupakan Application programming interface atau dikenal dengan nama “API” yang memungkinkan programmer dapat mengintegrasikan 2 aplikasi berbeda secara bersamaan dalam kasus tutorial ini yaitu apps chatting Telagram dengan ESP8266.

Dengan adanya token API TelegramBOT ini dapat dihubungkan antara chat telegram dengan sistem perangkat keras, misalnya akan diintegrasikan antara Wemos D1 mini yang diprogram menggunakan Arduino IDE dengan aplikasi ini.


Tutorial Smart home control relay use telegram APP

Langkah pertama yaitu installing app :

  • Sediakan smartphone misal android dengan spek minimum 4.4 / kit kat
  • Buka Play Store
  • Ketik nama aplikasi dan searching
  • Installing apk
  • Wait dan siap digunakan

Setelah itu lakukan pendaftarkan menggunakan no handphone, login ke aplikasinya, dan siap digunakan.

Hal selanjutnya yaitu mendaftar bot telegram dengan cara

  • Buka aplikasi
  • Pilih search dan ketikan “botfather
  • Ketikan perintah /newbot dan enter
  • Selanjutnya ketikan nama bot, misal “nyebarilmu”
  • konfirmasikan lagi nama bot tersebut dengan perintah “nyebarilmu_bot”
  • Akan terdapat balasan “token API” yang dimana akan digunakan untuk program nodemcu esp8266
  • Dan langkah terakhir search “@nyebarilmu”, buka dan siap digunakan

Bahan yang perlu dipersiapkan untuk tutorial smart home ini antara lain :

  • Smartphone android + aplikasi telegram + token API
  • Wemos D1 mini
  • Relay 4 channel
  • LM2596
  • Jack dc female
  • Resistor 470
  • Led 3mm merah
  • PCB desain (untuk peletakan komponen diatas sehingga tidak ada kabel jumper)

Rangkaian skematik dan PCB

Schematic and PCB boards - smart home control relay telegram bot

Filenya diatas dapat dimiliki dengan gratis hanya dengan sharing di social media

[lockercat]Ini filenya >> [ddownload id=”2150″] [/lockercat]

Program telegram bot menggunakan wemos D1 mini

Library yang dibutuhkan yaitu [ddownload id=”2144″]

Peletakan Library pada masing – masing Operation System :

  • PC (Windows) : Program file(x86)/Arduino/ libraries
  • Mac : (home directory)/Applications/Arduino (Show Package Content)/Contents/Java/Libraries
  • Linux : (home directory)/sketchbook/libraries
#include <ESP8266WiFi.h>
#include  <WiFiClientSecure.h>
#include <TelegramBot.h>

int relay1 = 5; //D1 on Wemos D1 Mini
int relay2 = 4; //D2
int relay3 = 00; //D3
int relay4 = 2; //D4

//Inisialisasi nama wifi dan password
const char* ssid     = "Nyebarilmu";
const char* password = "nyebarilmu.com";

// Initialize Telegram BOT
const char BotToken[] = "606612598:AAEfT5fKr9YspsfC4n1J7HczYi_iFE0rEK4"; //token api nyebarilmu_bot
WiFiClientSecure net_ssl;
TelegramBot bot (BotToken, net_ssl);

void setup()
{
Serial.begin(115200);
while (!Serial) {}  //Start running when the serial is open
delay(3000);

Serial.print("Connecting Wifi: ");
Serial.println(ssid);

while (WiFi.begin(ssid, password) != WL_CONNECTED)
      {
  Serial.print(".");
  delay(500);
   }

Serial.println("");
Serial.println("WiFi connected");

bot.begin();

pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
}

void loop()
{
message m = bot.getUpdates(); // Read new messages

if (m.text.equals("relay1on"))
      {
  digitalWrite(relay1, 1);
  bot.sendMessage(m.chat_id, "Relay 1 is now ON");
}
else if (m.text.equals("relay1off"))
      {
  digitalWrite(relay1, 00);
  bot.sendMessage(m.chat_id, "Relay 1 is now OFF");
}

if (m.text.equals("relay2on"))
      {
  digitalWrite(relay2, 1);
  bot.sendMessage(m.chat_id, "Relay 2 is now ON");
}
else if (m.text.equals("relay2off"))
      {
  digitalWrite(relay2, 00);
  bot.sendMessage(m.chat_id, "Relay 2 is now OFF");
}

if (m.text.equals("relay3on"))
      {
  digitalWrite(relay3, 1);
  bot.sendMessage(m.chat_id, "Relay 3 is now ON");
}
else if (m.text.equals("relay3off"))
      {
  digitalWrite(relay3, 00);
  bot.sendMessage(m.chat_id, "Relay 3 is now OFF");
}

if (m.text.equals("relay4on"))
      {
  digitalWrite(relay4, 1);
  bot.sendMessage(m.chat_id, "Relay 4 is now ON");
}
else if (m.text.equals("relay4off"))
      {
  digitalWrite(relay4, 00);
  bot.sendMessage(m.chat_id, "Relay 4 is now OFF");
}

if (m.text.equals("allrelayoff"))
      {
  digitalWrite(relay1, 00);
  digitalWrite(relay2, 00);
  digitalWrite(relay3, 00);
  digitalWrite(relay4, 00);
  bot.sendMessage(m.chat_id, "All relay is now OFF");
}
}
Command Function
relay1on / relay1off On relay / off relay 1
relay2on / relay2off On relay / off relay 2
relay3on / relay3off On relay / off relay 3
relay4on / relay4off On relay / off relay 4
allrelayoff All relay is now OFF

Selamat mencoba!!

28 Comments

    • Error dibagian mana ya gan? soalnya sudah ane trial, berhasil sesuai dengan kodingan diatas,

      jangan lupa ganti nama wifi, password, dan token

      • hanif

        saya copas kemudian di complie eror seperti ini

        C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:122:8: error: ‘class ArduinoJson::JsonObject’ has no member named ‘printTo’

        buff.printTo(msg);

        ^

        Multiple libraries were found for “TelegramBot.h”
        Used: C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master
        Not used: C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot
        exit status 1
        Error compiling for board WeMos D1 mini Pro.

        • itu artinya library telegrambot.h ada yg double itu gan, antara di libraries di program file : arduino, sama di document : libraries

          sama blm di install untuk libraries wemos d1 mini pro ny,

  1. HERI RAHMANTO

    Arduino: 1.8.5 (Windows 7), Board: “WeMos D1 mini Pro, 80 MHz, 16M (15M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 921600”

    Invalid library found in C:\Program Files\Arduino\libraries\TelegramBot-Library-master: C:\Program Files\Arduino\libraries\TelegramBot-Library-master

    Build options changed, rebuilding all
    C:\Users\PASCASARJANA UGM\Documents\Arduino\Wemos_D1_Telegram\Wemos_D1_Telegram.ino:2:30: fatal error: TelegramKeyboard.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board WeMos D1 mini Pro.

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

    • C:\Users\PASCASARJANA UGM\Documents\Arduino\Wemos_D1_Telegram\Wemos_D1_Telegram.ino:2:30: fatal error: TelegramKeyboard.h: No such file or directory

      yang libraries di dokumen ini dihapus saja gan,

      hanya ada di program file saja,

      itu error karena libraries yang double sepertinya

  2. HERI RAHMANTO

    BISA TIDAK YA…WEMOS D1 MINI DIGANTI DENGAN ESP8266NODE NCU

  3. hanif

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp: In member function ‘message TelegramBot::getUpdates()’:

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:39:4: error: ‘StaticJsonBuffer’ was not declared in this scope

    StaticJsonBuffer jsonBuffer;

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:39:4: note: suggested alternative:

    In file included from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/StaticJsonDocument.hpp:8:0,

    from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:15,

    from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9,

    from C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.h:11,

    from C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:8:

    C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: note: ‘ArduinoJson::Internals::StaticJsonBuffer’

    class StaticJsonBuffer : public Internals::StaticJsonBufferBase {

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:39:37: error: ‘jsonBuffer’ was not declared in this scope

    StaticJsonBuffer jsonBuffer;

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp: In member function ‘String TelegramBot::sendMessage(String, String)’:

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:87:3: error: ‘StaticJsonBuffer’ was not declared in this scope

    StaticJsonBuffer jsonBuffer;

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:87:3: note: suggested alternative:

    In file included from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/StaticJsonDocument.hpp:8:0,

    from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:15,

    from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9,

    from C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.h:11,

    from C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:8:

    C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: note: ‘ArduinoJson::Internals::StaticJsonBuffer’

    class StaticJsonBuffer : public Internals::StaticJsonBufferBase {

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:87:36: error: ‘jsonBuffer’ was not declared in this scope

    StaticJsonBuffer jsonBuffer;

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:93:8: error: ‘class ArduinoJson::JsonObject’ has no member named ‘printTo’

    buff.printTo(msg);

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp: In member function ‘String TelegramBot::sendMessage(String, String, TelegramKeyboard&, bool, bool)’:

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:102:3: error: ‘StaticJsonBuffer’ was not declared in this scope

    StaticJsonBuffer jsonBuffer;

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:102:3: note: suggested alternative:

    In file included from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/StaticJsonDocument.hpp:8:0,

    from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:15,

    from C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9,

    from C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.h:11,

    from C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:8:

    C:\Users\Hanif\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: note: ‘ArduinoJson::Internals::StaticJsonBuffer’

    class StaticJsonBuffer : public Internals::StaticJsonBufferBase {

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:102:36: error: ‘jsonBuffer’ was not declared in this scope

    StaticJsonBuffer jsonBuffer;

    ^

    C:\Users\Hanif\Documents\Arduino\libraries\TelegramBot-Library-master\src\TelegramBot.cpp:122:8: error: ‘class ArduinoJson::JsonObject’ has no member named ‘printTo’

    buff.printTo(msg);

    ^

    exit status 1
    Error compiling for board WeMos D1 R1.

    gan ko masih eror kaya gini ya

    • libraries yg di documents > arduino ny dihapus dulu gan,

      trs ekstrak lg pindah ke program file (x86) > arduino > libraries,

      trs restart software arduino, compile dan upload

  4. Arduino: 1.8.5 (Windows 10), Board: “WeMos D1 R2 & mini, 80 MHz, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 921600” C:\Users\Deadinside\Documents\Arduino\swbot\swbot.ino: In function ‘void loop()’: swbot:56: error: expected primary-expression before ‘)’ token digitalWrite(relay1, ); ^ swbot:67: error: expected primary-expression before ‘)’ token digitalWrite(relay2, ); ^ swbot:78: error: expected primary-expression before ‘)’ token digitalWrite(relay3, ); ^ swbot:84: error: expected primary-expression before ‘)’ token digitalWrite(relay4, ); ^ swbot:89: error: expected primary-expression before ‘)’ token digitalWrite(relay4, ); ^ swbot:95: error: expected primary-expression before ‘)’ token digitalWrite(relay1, ); ^ swbot:96: error: expected primary-expression before ‘)’ token digitalWrite(relay2, ); ^ swbot:97: error: expected primary-expression before ‘)’ token digitalWrite(relay3, ); ^ swbot:98: error: expected primary-expression before ‘)’ token digitalWrite(relay4, ); ^ exit status 1 expected primary-expression before ‘)’ token This report would have more information with “Show verbose output during compilation” option enabled in File -> Preferences.

    • sorry gan, programnya kemarin ada yang belum ke copy,

      sudah dibetulkan

      thanks

  5. gunawan

    gan kalo ngirim pesan dari perangkat ke bot telegram tanpa nunggu pesan dari telegram bagaimana ya?
    misalnya kalo pushbutton ditekan, akan ada pemberitahuan ke telegram.

  6. putri

    Arduino: 1.8.5 (Windows 10), Board: “WeMos D1 R2 & mini, 80 MHz, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 921600”

    C:\Program Files (x86)\Arduino\libraries\TelegramBot-Library-master\TelegramBot-Library-master\examples\EchoBot-ESP8266\EchoBot-ESP8266.ino:20:25: fatal error: TelegramBot.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board WeMos D1 R2 & mini.

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

    klo itu apa ya gan? include telegram nya error

    • ane pernah coba, tapi koneksinya kurang stabil gan

      paling bagus ESP8266 tipe 12e/f saja gan

  7. HERI RAHMANTO

    saya sudah berhasil merangkai dan menggunakan smarthome relay menggunakan aplikasi telegram, baik dengan ESP 8266 Node Mcu V.3 maupun wemos D1 Mini… sdh berjalan dengan baik..cuma timbul masalah saat listrik di rumah padam…kemudian listrik nyala lagi maka baik wemos D1 mini maupun ESP 8266 Node Mcu tidak mau menangkap sinyal Wifi sehingga peralatan listrik yang tersambung ke relay akan nyala terus, tidak bisa dimatikan lewat aplikasi telegram.. baru bisa menangkap sinyal wifi setelah kita pencet tombol reset pada hardwarenya… bagaimana cara mengatasi hal ini ya mas nyebar ilmu? klu kita pergi keluar kota…lampu rumah kan tidak bisa kita matikan lewat aplikasi kalau seperti ini,,makasih kami tunggu solusinya

  8. Muhammad Rajab Linta

    malam mas.. maaf mau tanya ada wa gak ya ? mau konsultasi nih hehe

    • alternatif yang paling mudah gunain BLYNK, kalo mau agak privasi ya developt web server gan gunain php,

  9. Karturi Net

    saya sudah coba hapus library yg di document tapi masih belum bisa juga yah

  10. AyubKEP

    gan jadi saya udah coba , dia mau konek , tapi selang beberapadetik langsung disconnect … mungkin bisa diberi pencerahan ?? kode API bener 100%

    • untuk API telegram di library ini, untuk saat ini memang mengalami ketidakstabilan,

      lagi dicarikan yang terbaru,

Leave a Reply

Your email address will not be published. Required fields are marked *