Featured image of post Мониторинг газового котла на ESP32: как узнать, что он работает, когда тебя нет дома

Мониторинг газового котла на ESP32: как узнать, что он работает, когда тебя нет дома

Когда зимой уезжаешь в отпуск или на дачу, остаётся тревожный вопрос: газовый котёл сейчас работает или нет? Даже если система включена, ты не получаешь подтверждения, что отопление действительно поддерживается, а поломку или сбой узнаёшь только по возвращении. Для частного дома нужен простой локальный мониторинг, который сообщит об изменении состояния котла и не зависит от облачного сервиса.

Что измеряем и как уведомляем

Схема состоит из ESP32, датчика давления и реле. Датчик давления позволяет связать состояние газового котла с измеряемой величиной, а ESP32 анализирует показания и формирует событие. Реле служит элементом управления или сигнализации: с его помощью можно переключать исполнительное устройство, которое сообщит о сбросе.

Сразу стоит отделить контроль от вмешательства. Мониторинг показывает, что происходит с котлом, но не должен сам запускать или останавливать газовое оборудование без отдельной проработки безопасности. Поэтому конкретную модель датчика давления, его цену и способ подключения сначала нужно определить, а затем зафиксировать схему wiring.

Для алерта пока не выбран канал доставки: Telegram заблокирован, а варианты email и push ещё не определены. Канал доставки следует выбрать до сборки, иначе устройство сможет обнаружить событие локально, но ты не получишь уведомление во время отъезда.

Порог и логика уведомлений

Имеющегося давления недостаточно для настройки системы: порог срабатывания алерта не зафиксирован. Его нужно определить вместе с моделью датчика и условиями эксплуатации, после чего отдельно обработать несколько состояний.

  • Рабочий диапазон: давление находится в пределах, при которых котёл считается работающим нормально.
  • Ниже рабочего диапазона: состояние котла изменилось, и требуется уведомление.
  • Выше рабочего диапазона: также нужно уведомление, если выбранный датчик позволяет достоверно фиксировать такие значения.
  • Ошибка датчика: обрыв, отсутствие показаний или другая некорректная величина не должна выглядеть как штатная работа котла. Вместо этого событие нужно маркировать как неисправность самого канала измерения.

Не стоит отправлять письмо при каждом измерении. Полезнее фиксировать переходы между состояниями, чтобы уведомление означало изменение ситуации, а не повторяющийся шум.

Выбор датчика и подключение

Конкретная модель датчика давления пока не выбрана — это первое, что нужно сделать перед покупкой компонентов и составлением wiring. Вместе с моделью уточни диапазон измерения, тип выходного сигнала, требуемое питание и допустимое разрешение. От этих данных зависит, можно ли подключить датчик непосредственно к ESP32 или потребуется преобразование сигнала.

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

Для реле также нужны конкретные параметры: ток катушки, напряжение питания и тип нагрузки. Если реле только переключает цепь индикации или другого исполнительного устройства, схема должна явно показывать этот отдельный контур и защиту выводов ESP32.

Программный каркас ESP32

Ниже показан программный каркас локального мониторинга. Он читает аналоговый сигнал датчика, сравнивает его с заданным диапазоном и управляет реле. Поскольку модель датчика и порог ещё не выбраны, значение PRESSURE_MIN, PRESSURE_MAX, пин датчика, пин реле и напряжение питания перед использованием нужно заменить на проверенные.

// ESP32: локальный мониторинг давления газового котла.

#include <Arduino.h>

constexpr int SENSOR_PIN = 34;      // Аналоговый вход ESP32.
constexpr int RELAY_PIN = 27;       // Управляющий вывод реле.
constexpr uint32_t SAMPLE_INTERVAL_MS = 5000;

// Заменить на диапазон, проверенный для выбранной модели датчика
// и условий эксплуатации котла.
constexpr int PRESSURE_MIN = 0;
constexpr int PRESSURE_MAX = 0;

enum class BoilerState {
  Unknown,
  Normal,
  Low,
  High,
  SensorError
};

BoilerState previousState = BoilerState::Unknown;

int readRawPressure() {
  int value = analogRead(SENSOR_PIN);

  if (value < 0 || value > 4095) {
    return -1;
  }

  return value;
}

BoilerState classifyPressure(int value) {
  if (value < 0) {
    return BoilerState::SensorError;
  }

  if (value < PRESSURE_MIN) {
    return BoilerState::Low;
  }

  if (value > PRESSURE_MAX) {
    return BoilerState::High;
  }

  return BoilerState::Normal;
}

void applyRelay(BoilerState state) {
  // Зафиксировать активное состояние реле и схему подключения.
  // Управляющая логика должна быть инвертирована, если используется
  // модуль реле с низкоуровневым включением.
  bool alertActive = (state == BoilerState::Low ||
                      state == BoilerState::High ||
                      state == BoilerState::SensorError);

  digitalWrite(RELAY_PIN, alertActive ? HIGH : LOW);
}

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

  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);

  // Перед использованием выбор входного канала уточнить
  // по конкретной модели датчика и его выходному сигналу.
  analogReadResolution(12);

  Serial.println("Мониторинг давления котла запущен");
}

void loop() {
  int rawValue = readRawPressure();
  BoilerState currentState = classifyPressure(rawValue);

  if (currentState != previousState) {
    Serial.print("Состояние изменилось: ");
    Serial.print(static_cast<int>(currentState));
    Serial.print(", raw=");
    Serial.println(rawValue);

    // Здесь вызывается выбранный канал уведомлений.
    // Реализовать отправку только для выбранного канала:
    // email, push или другой доступный вариант.

    previousState = currentState;
  }

  applyRelay(currentState);
  delay(SAMPLE_INTERVAL_MS);
}

Логика заложена на переходы между состояниями, а не на оповещение при каждом чтении датчика. Ошибка измерения обрабатывается отдельно и не должна маскироваться под нормальную работу котла. При этом место вызова канала уведомлений остаётся незаполненным: его нужно реализовать после выбора доступного способа доставки.

Что ещё нужно проверить перед использованием

Wiring нельзя считать готовым, пока не указаны конкретные компоненты. После выбора модели нужно записать точное подключение: питание датчика, его выход к пин ESP32, общую землю, питание катушки реле, пин управления реле и цепь нагрузки. Для реле с отдельным источником нельзя подавать ток катушки через вывод ESP32.

Также требуется проверить соответствие параметров датчика и выбранного канала уведомлений исходной задумке. Если датчик или линия связи оборвётся, система должна сообщить об ошибке измерения, а не делать вид, что котёл исправно отапливает дом.

Питание и безопасность

Питание и безопасность здесь нельзя оставить на потом. Из контекента не зафиксированы ток потребления ESP32, ток катушки реле и тип источника питания, поэтому перед сборкой нужно проверить эти параметры по datasheet конкретных компонентов.

Нужно определить, будет ли вся схема питаться от USB, от отдельного блока питания или от комбинации источников. Если реле управляет нагрузкой, которой нельзя давать питание непосредственно с вывода ESP32, ему нужен отдельный источник. При этом общую землю ESP32 и источника реле следует соединить, а выводы микроконтроллера — защитить от обратного напряжения и бросков тока.

Поведение при сбоях и ограничения системы

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

Не стоит подключать цепь управления котла параллельно его штатной автоматике без проверки схемы. Эта сборка задумана как наблюдение и оповещение; допустимость любого воздействия на управляющие цепи котла требует отдельного подтверждения.

Вывод / TL;DR

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

Built with Hugo
Theme Stack designed by Jimmy