Мессенджер Telegram является крайне популярным в современном мире, с ним могут взаимодействовать множество сторонних приложений. В данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью платы Arduino. Делать мы это будем с помощью библиотеки TelegramBot.h, позволяющей работать с ботами Telegram.
Также на нашем сайте вы можете посмотреть все проекты, в которых использовалось приложение Telegram. Посмотреть документацию (на английском языке) для работы с API Telegram можно по следующей ссылке.
Необходимые компоненты
Плата Arduino MKR1000.
Вместо платы Arduino MKR1000 можно также использовать плату Arduino Zero с шилдом WiFi shield 101 или плату Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266, который будет управляться платой Arduino с помощью AT команд. Примеры подобного управления модулем ESP8266 можно посмотреть в следующих проектах:
- передача Email с использованием Arduino и WiFi модуля ESP8266;
- передача данных от Arduino Uno на веб-страницу с помощью WiFi;
- управление сервомотором по Wi-Fi с помощью Arduino и веб-браузера.
Лично на мой взгляд, данный проект дешевле и легче всего реализовать с помощью платы NodeMCU ESP8266, которую можно подключить к компьютеру по USB кабелю и запрограммировать с помощью Arduino IDE. Пример подобного проекта можно посмотреть по следующей ссылке. У него практически такой же код программы, как и код программы рассматриваемого в данной статье проекта.
Реализация проекта
Установка библиотеки для работы с ботом Telegram
Скачайте библиотеку TelegramBot Library по следующей ссылке.
Для ее установки в Arduino IDE откройте пункт меню Sketch / Include Library / Add .ZIP Library, после чего выберите скачанный вами .ZIP файл библиотеки.
Установка библиотек ArduinoJson и WiFi101
Библиотеки ArduinoJson и WiFi101 можно установить с помощью менеджера библиотек (Library Manager) Arduino IDE как показано на следующих рисунках.
Примечание: данный пункт необходим при использовании платы Arduino MKR1000 или платы Arduino Zero с шилдом WiFi shield 101. При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.
Установка бота Botfather
После того как вы установили приложение Telegram на свой смартфон или ноутбук, в строке поиска данного приложения выполните поиск @botfather.
Botfather – это бот, который позволяет вам создавать своих собственных ботов для приложения Telegram. Для создания нового бота с его помощью используйте команду /newbot.
После этого введите имя данного бота (name), затем имя пользователя (username).
Далее сгенерируйте токен авторизации (authorization token) для вашего нового бота. Также процесс создания нового бота в Telegram с помощью Botfather описан в этой статье.
После создания бота имя вашего бота будет показываться в контактах и некоторых других местах приложения Telegram.
Имя пользователя (Username) для созданного вами бота – это имя, которое будет использоваться в заметках и ссылках telegram.me. Имя пользователя вашего бота должно оканчиваться на ‘bot’, то есть, к примеру, допустимы имена ‘tetris_bot’ или ‘TetrisBot’.
Если ваш бот включен в какую либо группу, то он по умолчанию будет работать в приватном режиме (privacy mode). Это означает, что он будет принимать только команды, которые начинаются с "/". Чтобы отключить приватный режим вам в необходимо в чате с вашим ботом написать следующий набор команд:
1 2 3 4 5 |
/mybots @yourBot Bot setting Group privacy Turn off |
Также вы можете создать свой собственный набор команд для бота используя команду /setcommands в чате с BotFather. Этот список появится только при работе с мобильного устройства при нажатии на иконку "/".
Исходный код программы (скетча)
С помощью представленной программы мы будем включать и выключать светодиод, передавая для этого из приложения Telegram сообщения “On” или “Off”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#include <WiFi101.h> #include <SPI.h> #include <TelegramBot.h> // данные для подключения к сети Wifi char ssid[] = "xxxx"; // your network SSID (name) char pass[] = "yyyy"; // your network key // Initialize Telegram BOT const char* BotToken = "xxxx"; // токен авторизации вашего бота WiFiSSLClient client; TelegramBot bot(BotToken,client); const int ledPin = 6; // контакт, к которому подключен светодиод void setup() { Serial.begin(115200); while (!Serial) {} //Start running when the serial is open delay(3000); // делаем попытку соединения с сетью Wifi: Serial.print("Connecting Wifi: "); Serial.println(ssid); while (WiFi.begin(ssid, pass) != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); bot.begin(); pinMode(ledPin, OUTPUT); } void loop() { message m = bot.getUpdates(); // считываем новые сообщения if (m.text.equals("On")) { digitalWrite(ledPin, HIGH); Serial.println("message received"); bot.sendMessage(m.chat_id, "The Led is now ON"); } else if (m.text.equals("Off")) { digitalWrite(ledPin, LOW); Serial.println("message received"); bot.sendMessage(m.chat_id, "The Led is now OFF"); } } |