Telegram бот

Публикация 16.02.2017

Узнайте, как подключить библиотеку Telegram Bot на вашем ESP8266, использовать ее для обмена сообщениями. И это отличное решение для мгновенной отправки различных уведомлений на ваш телефон.

Скачайте библиотеку ESP8266-TelegramBot https://github.com/Gianbacchio/ESP8266-TelegramBot
Чтобы установить библиотеку, откройте Arduino, выберите в меню: Скетч / Подключить библиотеку / Добавить .ZIP библиотеку

Регистрация нового Telegram бота

Теперь вам нужно зайти в телеграмм с вашего компьютера и в поиске найти @botfather.

Telegram бот

Отправьте боту сообщение /newbot для создания нового бота. BotFather запросит у вас имя и имя пользователя, а затем сгенерирует маркер авторизации для нового бота.
Имя пользователя должно быть ник-неймом, которое будет в ссылке telegram.me. имя пользователя бота должен заканчиваться 'bot', например, 'my_first_bot' или 'MyFirstBot'.

Программный код

Теперь, когда у нас есть наш бот мы можем подключиться к нему и делать то, что мы хотим.
В этом примере мы будем включать и выключать светодиод на плате сообщением On и Off.

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266TelegramBOT.h>

char ssid[] = "xxxxxxxxxxxxxxxxxxxxxx";     // имя WIFi точки доступа
char pass[] = "yyyyyyyy";                              // пароль WIFi точки доступа

#define BOTtoken "134745667:AAETzUWRQdb9xbMX_s-q_50U6ffgXcW3ldg"  // токен ключ вашего бота
#define BOTname "FlashledBot"
#define BOTusername "FlashledBot_bot"

TelegramBOT bot(BOTtoken, BOTname, BOTusername);

int Bot_mtbs = 1000; // как часто забирать сообщения
long Bot_lasttime;
bool Start = false;

void Bot_ExecMessages() {
  for (int i = 1; i < bot.message[0][0].toInt() + 1; i++)      {
    bot.message[i][5]=bot.message[i][5].substring(1,bot.message[i][5].length());
    if (bot.message[i][5] == "\/ledon") {
      digitalWrite(13, HIGH);   // зажигаем диод
      bot.sendMessage(bot.message[i][4], "Led is ON", "");
    }
    if (bot.message[i][5] == "\/ledoff") {
      digitalWrite(13, LOW);    // гасим диод
      bot.sendMessage(bot.message[i][4], "Led is OFF", "");
    }
    if (bot.message[i][5] == "\/start") {
      String wellcome = "Wellcome from FlashLedBot, your personal Bot on ESP8266 board";
      String wellcome1 = "/ledon : to switch the Led ON";
      String wellcome2 = "/ledoff : to switch the Led OFF";
      bot.sendMessage(bot.message[i][4], wellcome, "");
      bot.sendMessage(bot.message[i][4], wellcome1, "");
      bot.sendMessage(bot.message[i][4], wellcome2, "");
      Start = true;
    }
  }
  bot.message[0][0] = "";   // очищаем новое сообщение
}

void setup() {
  Serial.begin(115200);
  delay(3000);

  // соединение с точкой доступа установлено
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);
  bot.begin();      // запуск методов бота
  pinMode(2, OUTPUT);
}

void loop() {
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    bot.getUpdates(bot.message[0][1]);
    Bot_ExecMessages();   // отправить ответ
    Bot_lasttime = millis();
  }
}

Когда бот включен в группу он по умолчанию в режиме конфиденциальности. Это означает, что он будет получать только сообщения, начинающиеся с "/", так называемых команд. Для того, чтобы отключить режим конфиденциальности, вы должны общаться с BotFather и пройти через этот поток:

/mybots
@yourBot
Bot setting
Group privacy
Turn off

* комментарии публикуются после модерации
Нет комментариев