Мини-кейс 4: Telegram бот
ЧТО ДЕЛАЕМ?

#include <SoftwareSerial.h> #define RELAY_PIN A4 // ПИН реле модуля //SoftwareSerial wifi(4, 5); // TX и RX WI-FI модуля void setup() { Serial.begin(115200); //wifi.begin(115200); pinMode(RELAY_PIN, OUTPUT); } void loop() { // Встроенная функция readStringUntil будет читать все данные, пришедшие в UART до специального символа — '\n' (перенос строки). // Он появляется в паре с '\r' (возврат каретки) при передаче данных функцией Serial.println(). // Эти символы удобно передавать для разделения команд, но не очень удобно обрабатывать. Удаляем их функцией trim(). String command = Serial.readStringUntil('\n'); // String command = wifi.readStringUntil('\n'); command.trim(); // Проверяем, подходит ли команда под одну из ожидаемых: "On" или "Off" // Если подходит, выполняем действие. if (command == "turnOn") digitalWrite(RELAY_PIN, HIGH); else if (command == "turnOff") digitalWrite(RELAY_PIN, LOW); }#include <Arduino.h> #include <FastBot2.h> #define WIFI_SSID "dimdimdim" // Указываем SSID и пароль Wi-Fi сети, с которой будем выходить в интернет #define WIFI_PASS "YOUR_PASSWORD" // Спрашиваем у препода #define BOT_TOKEN "YOUR_TOKEN" // Ваш токен от телеграмм бота #define CHAT_ID "" FastBot2 bot; void updateh(fb::Update& u) { // Выводим всю информацию о сообщении, нужно только для проверки, иначе Arduino не будет выполнять команды // Serial.println("NEW MESSAGE"); // Serial.println(u.message().from().username()); // Serial.println(u.message().text()); if (u.message().text() == "/ledOn") { Serial.println("turnOn"); // Отправляем сообщение Arduino bot.sendMessage(fb::Message("Relay is ON", u.message().chat().id())); // Отправить сообщение обратно } else if (u.message().text() == "/ledOff") { Serial.println("turnOff"); // Отправляем сообщение Arduino bot.sendMessage(fb::Message("Relay is OFF", u.message().chat().id())); // Отправить сообщение обратно } else { // Другие случаи String reply; reply = "Welcome"; bot.sendMessage(fb::Message(reply, u.message().chat().id())); // Отправить сообщение обратно } } void setup() { Serial.begin(115200); Serial.println(); WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); if (millis() > 15000) ESP.restart(); } Serial.println("Connected"); bot.attachUpdate(updateh); // Подключить обработчик обновлений bot.setToken(F(BOT_TOKEN)); // Установить токен bot.setPollMode(fb::Poll::Long, 60000); // Режим опроса обновлений. Самый быстрый - Long https://github.com/GyverLibs/FastBot2/blob/main/docs/3.start.md bot.sendMessage(fb::Message("Hello!", CHAT_ID)); // Поприветствуем админа } void loop() { bot.tick(); // Вызывать тикер в loop }

Last updated