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

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

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

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

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

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

Далее загрузите следующий код в 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, то будет светиться красный светодиод, как показано на следующем изображении.

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

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

NodeMCU ESP8266 CP2102
Модуль NodeMCU на основе беспроводного микроконтроллера ESP8266 (ESP-12F) и преобразователя интерфейсов CP2102