ESP32 та Telegram bot: віддалений моніторинг

Сучасні IoT-системи все частіше використовують хмарні сервіси для контролю та керування. Але нерідко розробнику чи ентузіасту достатньо простого й безкоштовного рішення, яке дозволяє стежити за станом датчиків з будь-якої точки світу. ESP32 та Telegram-бот забезпечують зручний і надійний спосіб організувати віддалений моніторинг без складних серверів.

Необхідне обладнання

  • Плата ESP32 DevKit (WROOM або WROVER)
  • Датчик температури та вологості DHT22 (або аналогічний)
  • USB-кабель для прошивки та живлення ESP32
  • Wi-Fi мережа з доступом в інтернет
  • Обліковий запис у Telegram і створений бот через @BotFather

Принцип роботи

ESP32 підключається до домашньої Wi-Fi мережі та періодично зчитує дані з датчика (наприклад, DHT22). Через бібліотеку UniversalTelegramBot контролер надсилає ці дані користувачу в Telegram. Користувач може запросити показники командою, а також отримувати автоматичні сповіщення, наприклад, при перевищенні температури.

Приклад коду


// Приклад: ESP32 + Telegram bot для моніторингу температури та вологості
// Бібліотеки: WiFi, WiFiClientSecure, UniversalTelegramBot, ArduinoJson, DHT

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

const char* ssid     = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

#define BOT_TOKEN "123456789:AA..."  // токен від BotFather
#define CHAT_ID "987654321"          // ваш chat_id

WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);

unsigned long lastCheck = 0;
const long interval = 60000; // 1 хвилина

void setup() {
  Serial.begin(115200);
  dht.begin();

  WiFi.begin(ssid, password);
  Serial.print("Підключення до WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi підключено");
  secured_client.setInsecure(); // вимикаємо перевірку сертифіката
}

void loop() {
  if (millis() - lastCheck > interval) {
    lastCheck = millis();
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
      Serial.println("Помилка зчитування з датчика DHT22");
      return;
    }

    String message = "Температура: " + String(t) + "°C\nВологість: " + String(h) + "%";
    bot.sendMessage(CHAT_ID, message, "");
  }

  // обробка вхідних команд
  int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
  while (numNewMessages) {
    for (int i = 0; i < numNewMessages; i++) {
      String text = bot.messages[i].text;
      String chat_id = bot.messages[i].chat_id;

      if (chat_id == CHAT_ID && text == "/status") {
        float h = dht.readHumidity();
        float t = dht.readTemperature();
        String reply = "Зараз: " + String(t) + "°C, " + String(h) + "%";
        bot.sendMessage(chat_id, reply, "");
      }
    }
    numNewMessages = bot.getUpdates(bot.last_message_received + 1);
  }
}

Застосування та розширення проєкту

  • Віддалений моніторинг температури й вологості в теплиці, на складі або у серверній
  • Надсилання сповіщень про перевищення критичних значень
  • Підтримка кількох датчиків (наприклад, DHT22, BMP280, DS18B20)
  • Додавання команд Telegram-бота для керування реле чи вентилятором
  • Логування даних у Google Sheets або локальну базу даних

Висновок

Використання ESP32 та Telegram-бота для віддаленого моніторингу — це просте й надійне рішення для особистих і професійних завдань. Проєкт легко розширюється: можна додати додаткові датчики, автоматичні попередження та елементи керування. Такий підхід дозволяє зібрати функціональну систему віддаленого контролю без платних хмарних сервісів та складних серверних застосунків.

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Кодовий замок з набору резисторів

Кодовий замок з набору резисторів

Используя несколько сдвоенных компараторов можно сделать кодовый замок, ключ для которого будет сост..

Каніфоль 10г

Каніфоль 10г

Тверда каніфоль для пайкиЗастосовується як флюс при пайці свинцево-олов'яним припоєм..

41.95грн.

Пушка Гауса

Пушка Гауса

Підключаємо до контролера Arduino, stm32, Raspberry PI пушку Гауса через електропускачіА якщо до цьо..

Watchdog і таймери ESP32

Watchdog і таймери ESP32

Watchdog і таймери ESP32 ESP32 має вбудований Watchdog Timer (WDT), який використовується для зах..

Ємнісний датчик вологості грунту аналоговий

Ємнісний датчик вологості грунту аналоговий

Ємнісний датчик вологості ґрунту V1.2 — надійний та точний інструмент для вимірювання рівня вологост..

55.36грн.