By | 14/05/2020

Helo temen temen anakkendali.com
pada kesempatan kali ini saya akan menulis artikel tentang Belajar ESP32, Tutorial Kontrol Relay TelegramBot. Telegram merupakan salah satu sosial media chat yang serupa dengan WA, tapi tentunya tidak sama. Berbeda dengan WA, telegram memiliki API yang bebas di akses oleh siapapun sehingga kita dapat memanfaatkan telegrambot untuk mengontrol relay dengan ESP32. tidak hanya ESP32 yang bisa digunakan untuk mengakses api telegram. menggunakan ESP8266 juga bisa seperti NodeMCU atau Wemos D1 mini untuk kontrol relay.

Apa fungsinya mengontrol relay dengan telegrambot ?
jawabanya banyak sekali, kita bisa menyalakan lampu jarak jauh dan juga mematikan jarak jauh dengan ESP32 sebagai pengendali relay, dan relay sebagai saklar elektrik untuk lampu.

Bahkan tidak hanya lampu yang bisa kita kontrol dengan telegram jarak jauh. kita juga dapat mengontrol pompa, ac dan alat elektronik lainya. sehingga selama ada jaringan internet maka kita dapat mengontrol relay dimanapun dan kapanpun.

Library Telegrambot untuk ESP32

Untuk membuat projek ini kita membutuhkan library yang sudah dikembangkan oleh orang lain supaya ESP32 terhubung dengan telegrambot. biasanya saya menggunakan library UniversalTelegramBot.h namun karena saya telah mengupdate library ArduinoJson.h ke versi terbaru. sehingga library UniversalTelegramBot.h tidak support lagi. Dari pada saya harus downgrade versi arduinojson.h saya lebih memilih menggunakan library utlgbotlib.h yang bisa kalian download pada software Arduino IDE.

Belajar ESP32, Tutorial Kontrol Relay Telegram Bot
Belajar ESP32, Tutorial Kontrol Relay Telegram Bot

Code ESP32 TelegramBot

setelah berhasil mengikuti langkah di atas. silahkan upload program berikut untuk memulai menggunakan telegram untuk kontrol relay.

#include <string.h>
// Device libraries (Arduino ESP32/ESP8266 Cores)
#include <Arduino.h>
#ifdef ESP8266
#include <ESP8266WiFi.h>
#else // jika menggunakan ESP32
#include <WiFi.h>
#endif
// Custom libraries
#include <utlgbotlib.h>

#define WIFI_SSID "Smart-PF"
#define WIFI_PASS "anamganteng"

#define MAX_CONN_FAIL 50
#define MAX_LENGTH_WIFI_SSID 31
#define MAX_LENGTH_WIFI_PASS 63

#define TLG_TOKEN "518247654:AAGnJ3bwQoixeX4nDDLb-JdmA1vPsD85gRo" // token anakkendali_bot

#define DEBUG_LEVEL_UTLGBOT 0

#define PIN_RELAY 5 // ESP32 RELAYnya di pin gpio5

const char TEXT_START[] =
  "Hello, im a Bot running in an ESP microcontroller that let you turn on/off a RELAY/light.\n"
  "\n"
  "Check /help command to see how to use me.";

// Telegram Bot /help text message
const char TEXT_HELP[] =
  "Available Commands:\n"
  "\n"
  "/start - Show start text.\n"
  "/help - Show actual text.\n"
  "/relayon - Turn on the RELAY.\n"
  "/relayoff - Turn off the RELAY.\n"
  "/relaystatus - Show actual RELAY status.";

void wifi_init_stat(void);
bool wifi_handle_connection(void);


// Create Bot object
uTLGBot Bot(TLG_TOKEN);

// RELAY status
uint8_t relay_status;

void setup(void)
{
  Bot.set_debug(DEBUG_LEVEL_UTLGBOT);
  Serial.begin(9600);
  digitalWrite(PIN_RELAY, HIGH);
  pinMode(PIN_RELAY, OUTPUT);
  relay_status = 1;

  wifi_init_stat();

  Serial.println("Waiting for WiFi connection.");
  while (!wifi_handle_connection())
  {
    Serial.print(".");
    delay(500);
  }

  Bot.getMe();
}

void loop()
{
  if (!wifi_handle_connection())
  {
    // Wait 100ms and check again
    delay(100);
    return;
  }

  // Check for Bot received messages
  while (Bot.getUpdates())
  {
    Serial.println("");
    Serial.println("Received message:");
    Serial.println(Bot.received_msg.text);
    Serial.println("");

    if (strncmp(Bot.received_msg.text, "/start", strlen("/start")) == 0)
    {
      Bot.sendMessage(Bot.received_msg.chat.id, TEXT_START);
    }

    else if (strncmp(Bot.received_msg.text, "/help", strlen("/help")) == 0)
    {
      Bot.sendMessage(Bot.received_msg.chat.id, TEXT_HELP);
    }

    else if (strncmp(Bot.received_msg.text, "/relayon", strlen("/relayon")) == 0)
    {
      relay_status = 0;
      Serial.println("Command /relayon received.");
      Serial.println("Turning on the Relay.");

      Bot.sendMessage(Bot.received_msg.chat.id, "Relay turned on.");
    }

    else if (strncmp(Bot.received_msg.text, "/relayoff", strlen("/relayoff")) == 0)
    {
      relay_status = 1;
      // Show command reception through Serial
      Serial.println("Command /relayoff received.");
      Serial.println("Turning off the RELAY.");

      // Send a Telegram message to notify that the RELAY has been turned off
      Bot.sendMessage(Bot.received_msg.chat.id, "RELAY turned off.");
    }

    // If /RELAYstatus command was received
    else if (strncmp(Bot.received_msg.text, "/relaystatus", strlen("/relaystatus")) == 0)
    {
      // Send a Telegram message to notify actual RELAY status
      if (relay_status)
        Bot.sendMessage(Bot.received_msg.chat.id, "The RELAY is off.");
      else
        Bot.sendMessage(Bot.received_msg.chat.id, "The RELAY is on.");
    }

    digitalWrite(PIN_RELAY, relay_status);
    // Feed the Watchdog
    yield();
  }

  // Wait 1s for next iteration
  delay(1000);
}


// Init WiFi interface
void wifi_init_stat(void)
{
  Serial.println("Initializing TCP-IP adapter...");
  Serial.print("Wifi connecting to SSID: ");
  Serial.println(WIFI_SSID);

  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASS);

  Serial.println("TCP-IP adapter successfuly initialized.");
}


bool wifi_handle_connection(void)
{
  static bool wifi_connected = false;

  // Device is not connected
  if (WiFi.status() != WL_CONNECTED)
  {
    // Was connected
    if (wifi_connected)
    {
      Serial.println("WiFi disconnected.");
      wifi_connected = false;
    }

    return false;
  }
  // Device connected
  else
  {
    // Wasn't connected
    if (!wifi_connected)
    {
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());

      wifi_connected = true;
    }

    return true;
  }
}

Token di atas menggunakan bot dari anakkendali.com yang diberi nama Anakkendali_Bot. jika ingin menggantinya dengan bot buatan sendiri silahkan baca tutorialnya ESP8266, Control Relay dengan Telegram

Belajar ESP32, Tutorial Kontrol Relay Telegram Bot

jika sudah berhasil mengupload program telegrambot esp32 silahkan coba mengirim pesan dengan mengikuti gambar yang ada dibawah ini.

pertama kirim pesan “/start” jika dibalas maka artinya kamu sudah berhasil menghubungkan telegrambot ke esp32 dan untuk kata kunci “/relayon” dan “/relayoff” bisa kalian rubah didalam program esp32.

Itulah tutorial dari anakkendali.com tentang Belajar ESP32, Tutorial Kontrol Relay TelegramBot, semoga bermanfaat dan jangan lupa untuk membagikan di akun sosial media.

Pencarian terkait
Tutorial ESP32 TelegramBot (543)
ESP32 TelegramBot (345)
TelegramBot ESP32 (311)
TelegramBot Kontrol Relay ESP32 (298)
ESP32 Kontrol Relay Telegram (231)
Program ESP32 Telegram (201)
Sistem IoT TelegramBot ESP32 (196)
IOT SIstem Telegram ESP32 (144)
IOT dengan ESP32 dan telegram (105)
IOT Telegram ESP32 (77)

One Reply to “Belajar ESP32, Tutorial Kontrol Relay Telegram Bot”

Leave a Reply

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