Для электронщиков и радиолюбителей

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

В этом проекте мы будем управлять тремя светодиодами, подключенными к NodeMCU на основе ESP8266 с помощью телеграм-бота. Это очень интересный и актуальный проект – автоматизация с помощью телеграм-бота отличается простотой реализации и универсальностью использования.

Прежде всего, скачайте приложение Telegram и зарегистрируйтесь в нем. Затем перейдите в строку поиска и найдите botfather и откройте учетную запись с синей галочкой.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

Теперь нажмите Start, чтобы запустить бота и увидеть меню.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

Перед вами множество вариантов. Нажмите на newbot, чтобы создать новый проект. Позже вы сможете найти созданных вами ботов, нажав mybots Вы также можете выбрать команды в соответствии с вашими требованиями после создания нового бота.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

Теперь он попросит вас указать имя, а затем имя пользователя для бота, которого вы хотите создать. Выберите уникальное имя, иначе оно не будет принято. В качестве имени пользователя используйте в конце _bot, как показано далее. После этого вы получите уникальный идентификатор токена, который необходимо скопировать. Затем вставьте этот идентификатор в код. Используйте ссылку, указанную в сообщениях, чтобы открыть своего бота.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

После открытия введите start, а затем он ответит вам сообщением, как показано на следующем скриншоте. Теперь отправьте команды в приложение, такие как light on/off в соответствии с вашими потребностями, при этом светодиоды будут включаться и выключаться в соответствии с вашими действиями.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

Но прежде чем управлять светодиодами, их нужно подключить к NodeMCU в соответствии со следующей схемой.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

Далее загрузите следующий код в NodeMCU (не забудьте заменить имя и пароль вашей сети и вставить токен бота).

#include "CTBot.h"  
 CTBot myBot;  
 String ssid = "xxxxxxxxxxxx";
 String pass = "xxxxxxxxxxxx";
 String token = "---------------------------------------------------"; 
 uint8_t greenled = 5;          
 uint8_t redled = 4;    
 uint8_t whiteled = 12;                      
 void setup() {  
  Serial.begin(115200);  
  Serial.println("Starting TelegramBot...");  
  myBot.wifiConnect(ssid, pass);  
  myBot.setTelegramToken(token);  
  if (myBot.testConnection())  
   Serial.println("\ntestConnection OK");  
  else  
   Serial.println("\ntestConnection NOK");  
  pinMode(redled, OUTPUT);  
  digitalWrite(redled, LOW);   
  pinMode(greenled, OUTPUT);  
  digitalWrite(greenled, LOW);  
  pinMode(whiteled, OUTPUT);  
  digitalWrite(whiteled, LOW);  
 }  
 void loop() {  
  TBMessage msg;  
  if (myBot.getNewMessage(msg)) {  
   if (msg.text.equalsIgnoreCase("RED LIGHT ON")) {  
    digitalWrite(redled, HIGH); 
    myBot.sendMessage(msg.sender.id, "RED Light is now ON")
   }  
   else if (msg.text.equalsIgnoreCase("RED LIGHT OFF")) {  
    digitalWrite(redled, LOW);  
    myBot.sendMessage(msg.sender.id, "RED Light is now OFF");
   }  
   else if (msg.text.equalsIgnoreCase("GREEN LIGHT ON")){  
    digitalWrite(greenled, HIGH);     
    myBot.sendMessage(msg.sender.id, "GREEN Light is now ON"); 
   }  
   else if (msg.text.equalsIgnoreCase("GREEN LIGHT OFF")){  
    digitalWrite(greenled, LOW);           
    myBot.sendMessage(msg.sender.id, "GREEN Light is now OFF");
   }  
   else if (msg.text.equalsIgnoreCase("White LIGHT ON")){  
    digitalWrite(whiteled, HIGH);
    myBot.sendMessage(msg.sender.id, "WHITE Light is now ON"); 
   }  
   else if (msg.text.equalsIgnoreCase("WHITE LIGHT OFF")){  
    digitalWrite(whiteled, LOW);
    myBot.sendMessage(msg.sender.id, "WHITE Light is now OFF");
   }  
   else {
    String reply;  
    reply = (String)"Welcome " + msg.sender.username + (String)". Try LIGHT ON or LIGHT OFF.";  
    myBot.sendMessage(msg.sender.id, reply);
   }  
  }  
  delay(500);  
 } 

Если вы введете RED LIGHT ON, то будет светиться красный светодиод, как показано на следующем изображении.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

При вводе GREEN LIGHT ON включится зеленый светодиод.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram

И если вы наберете WHITE LIGHT ON, включится белый светодиод.

Как управлять ESP8266 (NodeMCU) с помощью бота Telegram