- Інтеграція бібліотеки UniversalTelegramBot для спрощення HTTPS-зв'язку з Telegram API.
- Дистанційне керування контактами GPIO для роботи виконавчих механізмів, таких як світлодіоди, та зчитування станів перемикачів.
- Впровадження безпеки шляхом перевірки ідентифікатора чату та використання SSL-сертифікатів.

Ви коли-небудь думали про керування пристроями домашньої автоматизації, не встаючи з дивана, за допомогою мобільного телефону? Що ж, налаштування системи керування ESP32 через Telegram – це один із найпростіших та найпотужніших способів потрапити у світ домашньої автоматизації, не ускладнюючи собі життя дорогими зовнішніми серверами чи неможливими конфігураціями.
Магія полягає в перетворенні вашої плати на невеликий сервер, який прослуховує команди від бота. Вам не потрібно бути генієм програмування, адже за допомогою кількох бібліотек і трохи терпіння ви можете змусити свій пристрій вмикати світло або сповіщати вас про стан датчика в режимі реального часу за допомогою миттєвих текстових повідомлень.
Вам знадобляться матеріали
Щоб розпочати, вам не потрібно витрачати цілий статок. Найголовніше — мати плату ESP32 ; неважливо, стара це модель чи одна з найновіших, оскільки сумісність повна. Окрім «мозку» проєкту, вам знадобляться деякі основні компоненти для тестування:
- Світлодіод (LED) для перевірки справності всього обладнання.
- Резистор 220 Ом, щоб уникнути перегорання світлодіода.
- Кнопка або перемикач для зчитування фізичних станів.
- З'єднувальні кабелі та макетна плата, щоб не довелося нічого паяти на початку.
Збірка електронної схеми
Перш ніж редагувати код, потрібно підготувати обладнання. У цьому прикладі ми підключимо світлодіод до виводу GPIO 33 , а перемикач – до GPIO 14. Важливо пам'ятати, що ви можете змінювати ці виводи за потреби, але вам доведеться відобразити цю зміну пізніше в константах програми.
Світлодіод підключено до відповідного резистора для захисту, а кнопка налаштована внутрішньо, щоб уникнути зайвої проводки. Після того, як ви зібрали схему на макетній платі , можна перейти до програмної частини, де відбуваються всі дії.
Налаштування бота в Telegram
Щоб ESP32 міг знати, кого слухати, нам спочатку потрібно створити ідентифікатор бота в самому застосунку Telegram. Цей процес є критично важливим, оскільки він надає два ключові елементи інформації: токен бота (довгий рядок цифр і літер) та ваш особистий ідентифікатор користувача . Без цих двох ключів пристрій не може автентифікувати себе або визначити, хто має право надавати йому команди.
Якщо в якийсь момент ви відчуєте, що чат став хаотичним, пам’ятайте, що ви завжди можете очистити історію у верхньому правому меню. Це перезапустить бота та поверне його до кнопки «Головна» з доступними командами, що дозволить вам почати все спочатку.
Підготовка середовища розробки
Щоб код працював, нам потрібно встановити інструмент, який спрощує наше життя: бібліотеку UniversalTelegramBot . Замість того, щоб писати сотні рядків коду для обробки API Telegram, ця бібліотека робить майже все за нас.
Щоб встановити його, просто перейдіть до менеджера бібліотек Arduino IDE, введіть назву бібліотеки та натисніть «Встановити». Також переконайтеся, що у вас встановлено бібліотеки WiFi та WiFiClientSecure , оскільки вони дозволяють ESP32 підключатися до Інтернету та використовувати протокол HTTPS для безпечного зв'язку.
Аналіз керуючого коду
Програма починає з визначення облікових даних вашої мережі Wi-Fi та ключів бота. Вкрай важливо замінити значення з прикладу на свої власні. SSID та парольа також токен та ідентифікатор чату. Для інтерактивності ми визначаємо змінну під назвою info який містить список команд, які бот розпізнає, таких як /led_on або /sw_state.
Управління повідомленнями та командами
Серцем системи є функція, яка перевіряє наявність нових повідомлень. ESP32 використовує метод getUpdates пункт перевірте чергу повідомлень з Telegram. Щоб запобігти контролю вашого дому сторонніми особами, код містить фільтр, який перевіряє, чи ідентифікатор відправника точно відповідає вашому. попередньо визначений CHAT_ID.
Після підтвердження користувача бот аналізує отриманий текст: якщо виявляє /led_onВін надсилає цифровий сигнал на контакт 33, щоб увімкнути світло; якщо він отримує /led_off, вимикає його. Також є можливість /led_toggleщо дуже практично, оскільки змінює поточний стан світлодіода, не знаючи, чи був він раніше ввімкнений чи вимкнений.
Зчитування та завершення зчитування даних датчиком
Окрім видачі команд, бот також може надавати інформацію. Використання команди /sw_stateESP32 зчитує стан виводу 14. Оскільки ми налаштували виводу як ВХІД_ПІДТЯГНУТИПристрій визначить, чи натиснута кнопка, і надішле нам текстове повідомлення з підтвердженням.
Під час завантаження пристрій підключається до Wi-Fi заблокованим способом, тобто він нічого не робитиме, доки з’єднання не стане стабільним . Для подальшого підвищення безпеки використовується кореневий сертифікат Telegram, який гарантує шифрування трафіку даних. Основний цикл просто повторює перевірку повідомлень щосекунди, щоб система була гнучкою та швидко реагувала.
За допомогою цієї системи нам вдалося успішно інтегрувати апаратне та програмне забезпечення для створення бездротового комунікаційного мосту. Ми налаштували бота, керували безпекою за допомогою ідентифікаторів та сертифікатів, а також запрограмували реакції контактів GPIO для взаємодії з фізичним світом з будь-якого місця, де є підключення до Інтернету.
Часті запитання
Яка бібліотека потрібна для підключення ESP32 до Telegram?
Слід використовувати бібліотеку UniversalTelegramBot, яка спрощує взаємодію з API Telegram та полегшує надсилання та отримання повідомлень.
Як мені переконатися, що тільки я можу керувати ботом?
Код реалізує фільтр, який порівнює ідентифікатор чату отриманого повідомлення з попередньо визначеним CHAT_ID, ігноруючи будь-які команди, що надходять від іншого користувача.
Чи обов'язково використовувати HTTPS для зв'язку з ботом?
Так, Telegram вимагає безпечних з’єднань, тому використовується WiFiClientSecure, а кореневий сертифікат Telegram має бути налаштований на ESP32.
Яке призначення команди /led_toggle у коді?
Ця команда використовується для інвертування поточного стану світлодіода, увімкнення його, якщо він був вимкнений, або вимкнення, якщо він був увімкнений.
Чому для перемикача використовується INPUT_PULLUP?
Він використовується для активації внутрішнього опору плати, що дозволяє уникнути необхідності додавання зовнішнього фізичного опору до схеми кнопки.
Де я можу отримати токен бота та ідентифікатор користувача?
Токен отримується шляхом створення бота через BotFather у Telegram, а ідентифікатор користувача можна отримати через ботів, що спеціалізуються на отриманні ідентифікатора профілю.



