Здесь могла бы быть реклама
Она помогает блогу развиваться.
Кажется, сегодня она немного загрустила.

Главная страница » DIY проекты » Умный аквариум своими руками: автодолив, контроль температуры и освещение по расписанию
Умный аквариум своими руками: автодолив, контроль температуры и освещение по расписанию
DIY проекты

Умный аквариум своими руками: автодолив, контроль температуры и освещение по расписанию

31.03.2026 164
Умный аквариум своими руками: автодолив, контроль температуры и освещение по расписанию

Собираем умный аквариум с автодоливом, контролем температуры и освещением по расписанию.

Всем привет! Сегодня мы соберём не просто умный гаджет, а целую экосистему для вашего аквариума. Если вы, как и я, устали от рутинных проверок уровня воды, температуры и забывания вовремя включить или выключить свет для рыбок и растений — эта статья для вас. Мы создадим автоматизированную систему на базе ESP32 и Raspberry Pi, которая возьмёт на себя все эти заботы. Это идеальный DIY-проект, сочетающий в себе электронику, программирование и практическую пользу.

Зачем это нужно? От хобби к автоматизации

Аквариум — это живой микромир, требующий стабильности. Резкие перепады температуры — стресс для обитателей. Недостаток или избыток света приводит к зарастанию водорослями или гибели растений. А испаряющуюся воду нужно постоянно доливать, иначе работающее «всухую» оборудование может выйти из строя. Автоматизация решает эти проблемы, делая уход предсказуемым и освобождая время для созерцания подводного мира, а не его обслуживания.

В нашем проекте мы реализуем три ключевые функции: 1. Автоматический долив воды при падении уровня ниже заданной отметки. 2. Терморегуляция с поддержанием заданной температуры. 3. Умное освещение по расписанию с возможностью плавного включения/выключения (симуляция рассвета и заката).

Мы будем использовать связку ESP32 (как дешёвый и мощный контроллер для датчиков и реле) и Raspberry Pi (в роли центрального хаба для логики, расписаний и красивого интерфейса через Home Assistant).

Что нам понадобится: железо и софт

Оборудование (Hardware)

  • Микроконтроллер: ESP32 (например, DevKit V1) — сердце системы, будет считывать данные с датчиков и управлять исполнительными устройствами.
  • Одноплатный компьютер: Raspberry Pi (любой, от 3B+ и новее) с установленным Home Assistant. Если HA у вас уже работает на другом устройстве — отлично!
  • Датчик уровня воды: Поплавковый датчик или датчик-геркон. Мы возьмём простой и надёжный поплавковый.
  • Датчик температуры: DS18B20 в водонепроницаемом исполнении (в нержавеющем корпусе).
  • Модуль реле: 2-канальный модуль для управления помпой долива и нагревателем.
  • Светодиодная лента (RGB или белая): Для освещения. Если RGB, сможем регулировать цвет.
  • Драйвер для светодиодной ленты: ШИМ-контроллер, например, на базе MOSFET или готовый модуль.
  • Помпа для долива: Мини-помпа 5-12V (например, используемая в кулерах или для орошения).
  • Нагреватель для аквариума: Стандартный, который мы будем не напрямую включать в розетку, а через наше реле.
  • Блоки питания: 5V для ESP32 и реле, 12V для помпы и светодиодной ленты (если требуется).
  • Соединительные провода, резисторы (4.7 кОм для DS18B20), макетная плата.

Программное обеспечение (Software)

  • Home Assistant на Raspberry Pi. Рекомендую установить через HA OS.
  • Интеграция ESPHome (устанавливается через HACS или как аддон). Это наш главный инструмент для программирования ESP32 без глубокого погружения в Arduino IDE.
  • Node-RED (опционально, но очень рекомендуется) для создания гибкой логики автоматизации.

Часть 1: Подготовка ESP32 с помощью ESPHome

ESPHome — это фреймворк, который позволяет описывать конфигурацию устройства на языке YAML, а он уже генерирует и заливает прошивку. Всё управление затем интегрируется в Home Assistant автоматически.

  1. Установите ESPHome. Если используете HA OS, добавьте аддон «ESPHome» из магазина аддонов. Для других установок — следуйте официальной инструкции.

  2. Создайте новую конфигурацию. В веб-интерфейсе ESPHome нажмите «+», введите имя (например, smart-aquarium) и выберите плату ESP32 Dev Module.

  3. Настройте аппаратную часть в YAML. Вот основа нашего конфигурационного файла. Комментарии объясняют каждый блок.

substitutions:
  device_name: "smart_aquarium" # Уникальное имя устройства
  friendly_name: "Умный аквариум"

esphome:
  name: ${device_name}
  platform: ESP32
  board: esp32dev

wifi:
  ssid: !secret wifi_ssid # SSID выносим в отдельный файл secrets.yaml
  password: !secret wifi_password

  # Настройка на случай проблем с подключением
  ap:
    ssid: ${friendly_name} Fallback Hotspot
    password: !secret fallback_password

captive_portal:

# Включаем возможность обновления прошивки по воздуху (OTA)
ota:
  password: !secret ota_password

# Включаем логгирование для отладки
logger:

# Включаем веб-сервер для локальной проверки
web_server:
  port: 80

# Настраиваем связь с Home Assistant
api:
  encryption:
    key: !secret api_encryption_key

# Глобальный интервал опроса датчиков (в миллисекундах)
sensor:
  - platform: uptime
    name: "Uptime"
    update_interval: 60s

# 1. ДАТЧИК УРОВНЯ ВОДЫ (Поплавковый)
binary_sensor:
  - platform: gpio
    pin: GPIO26
    name: "Water Level Low"
    id: water_low
    # Для НО (нормально разомкнутого) датчика:
    filters:
      - invert:
    # Датчик срабатывает (становится "on"), когда уровень НИЗКИЙ
    device_class: problem

# 2. ДАТЧИК ТЕМПЕРАТУРЫ DS18B20 (OneWire)
sensor:
  - platform: dallas
    address: 0xYOUR_SENSOR_ADDRESS_HERE # Адрес нужно узнать из логов при первой прошивке
    name: "Aquarium Temperature"
    id: temp_water
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    update_interval: 30s
    # Небольшое сглаживание показаний
    filters:
      - sliding_window_moving_average:
          window_size: 5
          send_every: 1

# 3. РЕЛЕ ДЛЯ УПРАВЛЕНИЯ ПОМПОЙ ДОЛИВА
switch:
  - platform: gpio
    pin: GPIO16
    name: "Water Fill Pump"
    id: pump_switch
    # Помпа не должна включаться на долгое время! Защита в логике.
    restore_mode: ALWAYS_OFF # При перезагрузке оставаться выключенным

# 4. РЕЛЕ ДЛЯ УПРАВЛЕНИЯ ОБОГРЕВАТЕЛЕМ
  - platform: gpio
    pin: GPIO17
    name: "Aquarium Heater"
    id: heater_switch
    restore_mode: ALWAYS_OFF

# 5. СВЕТОДИОДНАЯ ЛЕНТА (на примере белой ленты с ШИМ)
light:
  - platform: monochromatic
    name: "Aquarium Light"
    id: main_light
    output: light_output
    # Здесь можно добавить эффекты, например, плавный старт
    effects:
      - pulse:

output:
  - platform: ledc
    pin: GPIO18
    id: light_output
    max_power: 0.95 # Защита от 100% нагрузки на светодиоды

Типичная ошибка на этом этапе: Неправильное указание пинов. Всегда сверяйтесь с распиновкой вашей конкретной платы ESP32. Использование пинов GPIO0, GPIO2, GPIO15 при загрузке может вызвать проблемы.

  1. Заливите прошивку. Подключите ESP32 по USB к серверу с HA/ESPHome и нажмите в интерфейсе ESPHome кнопку «Install». Выберите метод загрузки через USB. После успешной прошивки устройство перезагрузится и подключится к Wi-Fi.

Часть 2: Интеграция и логика в Home Assistant

После прошивки ESP32 все его сущности (датчики, переключатели, свет) автоматически появятся в Home Assistant. Теперь нужно настроить автоматизации.

Автоматизация долива воды

Мы не можем просто включить помпу при низком уровне — если датчик сломан или завис, помпа будет лить бесконечно. Нужна защита.

Создадим автоматизацию в Node-RED (это гораздо нагляднее, чем YAML-автоматизации). Если Node-RED у вас не настроен, очень рекомендую ознакомиться с нашей статьей Node-RED + Home Assistant: Визуальная автоматизация умного дома без единой строчки кода.

Логика в Node-RED: 1. Триггер: Состояние датчика binary_sensor.water_level_low меняется на on. 2. Защита по времени: Включаем таймер на 5 секунд. Если через 5 секунд датчик всё ещё показывает on, значит, это не брызги или колебания. 3. Включение помпы: Отправляем команду switch.turn_on на switch.water_fill_pump. 4. Таймер безопасности: Параллельно запускаем таймер на МАКСИМУМ 60 секунд. Это страховка. Через 60 секунд помпа выключится в любом случае. 5. Цикл проверки: После включения помпы ждём 10 секунд и снова проверяем датчик. Если он показывает off (уровень восстановлен), выключаем помпу. Если нет — возвращаемся к пункту 4, но не более, чем на общее время безопасности.

# Пример аналогичной логики в YAML-автоматизации Home Assistant (более сложно для чтения):
id: auto_water_fill
alias: "[Аквариум] Автодолив воды"
trigger:
  platform: state
  entity_id: binary_sensor.water_level_low
  to: "on"
  for:
    seconds: 5
action:
  - repeat:
      while:
        - condition: state
          entity_id: binary_sensor.water_level_low
          state: "on"
        - condition: template
          value_template: "{{ repeat.index <= 6 }}" # Максимум 6 циклов (60 сек)
      sequence:
        - service: switch.turn_on
          target:
            entity_id: switch.water_fill_pump
        - delay: "00:00:10"
        - service: switch.turn_off
          target:
            entity_id: switch.water_fill_pump
        - delay: "00:00:05" # Пауза для стабилизации уровня

Автоматизация поддержания температуры (Термостат)

Здесь логика проще: если температура ниже заданного минимума — включаем нагреватель, если достигла максимума — выключаем. Важно добавить гистерезис, чтобы реле не щёлкало слишком часто.

id: aquarium_thermostat
alias: "[Аквариум] Терморегуляция"
mode: restart # Важно: если придут новые данные, перезапустить выполнение
trigger:
  platform: state
  entity_id: sensor.aquarium_temperature
  # Срабатываем при любом изменении температуры
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.aquarium_temperature
            below: 24.5 # Включаем нагрев при 24.5
        sequence:
          - service: switch.turn_on
            target:
              entity_id: switch.aquarium_heater
          - service: notify.mobile_app_my_phone # Оповещение (опционально)
            dаta:
              message: "Включен обогрев аквариума. Температура: {{ states('sensor.aquarium_temperature') }}°C"
    default:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.aquarium_temperature
            above: 25.5 # Выключаем при 25.5
        sequence:
          - service: switch.turn_off
            target:
              entity_id: switch.aquarium_heater

Автоматизация освещения по расписанию

Используем встроенные в Home Assistant помощники-расписания (Schedule Helper) или снова Node-RED для более сложных сценариев (плавный рассвет/закат).

  1. Создайте два расписания (Schedule Helper) в настройках HA: «Аквариум Свет Вкл» (например, на 8:00) и «Аквариум Свет Выкл» (на 22:00).
  2. Создайте две простые автоматизации, которые будут срабатывать по этим расписаниям и включать/выключать свет light.aquarium_light.

Для плавного включения можно использовать сервис light.turn_on с параметром transition: 300 (плавное изменение за 300 секунд = 5 минут).

Часть 3: Сборка и монтаж

Внимание! Безопасность прежде всего. Работаем с напряжением 220V только при полном отключении от сети. Все соединения должны быть надёжно заизолированы.

  1. Соберите схему на макетной плате для низковольтной части (ESP32, датчики, реле-модуль). Проверьте всё мультиметром.
  2. Подключите силовую часть: К клеммам реле-модуля (обычно COM, NO — нормально разомкнутый) подключите вилку сетевого шнура и розетку. В розетку будет включаться нагреватель. Помпу подключайте через отдельный блок питания 12V, а не в сеть 220V!
  3. Установите датчики в аквариум:
    • DS18B20 опустите в воду, но не на дно и не рядом с нагревателем. Закрепите присоской.
    • Поплавковый датчик закрепите на нужном уровне (чуть ниже минимально допустимого) так, чтобы он свободно двигался.
  4. Помпу для долива подключите к гибкому шлангу и опустите в ёмкость с отстоянной водой. Выход шланга закрепите над аквариумом.
  5. Светодиодную ленту разместите под крышкой аквариума или на кронштейнах. Убедитесь, что она не контактирует с водой и не перегревается.

Проверка результата и тестирование

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

  1. Тест связи: В Home Assistant убедитесь, что все сущности с ESP32 в рабочем состоянии, значения температуры обновляются.
  2. Тест датчика уровня: Принудительно поднимите/опустите поплавок. В HA должно меняться состояние датчика. Поднесите магнит к датчику-геркону.
  3. Тест помпы (БЕЗ ВОДЫ!): Временно переопределите автоматизацию или вручную включите помпу через интерфейс HA. Убедитесь, что она включается и выключается по команде. Потом проведите тест с водой в отдельной ёмкости, имитируя долив.
  4. Тест нагревателя: Установите порог термостата выше текущей температуры. Нагреватель должен включиться (после задержки на гистерезис). Контролируйте процесс! Не оставляйте без присмотра.
  5. Тест освещения: Проверьте ручное управление, затем работу по расписанию. Убедитесь, что плавные переходы работают корректно.
  6. Стресс-тест: Сымитируйте отказ датчика уровня (зафиксируйте его в положении «низкий уровень») и убедитесь, что таймер безопасности выключает помпу через 60 секунд, не допуская потопа.

Заключение и дальнейшее развитие

Поздравляю! Вы собрали полноценную систему «умный аквариум», которая теперь будет круглосуточно заботиться о вашем подводном мире. Это базовый каркас, который можно расширять:

  • Контроль pH и электропроводности (TDS) с помощью специальных датчиков и аналоговых входов ESP32.
  • Дозировка удобрений и корма с использованием шаговых моторов и дозаторов.
  • Камера для наблюдения за рыбками, интегрированная в HA.
  • Голосовое управление через Алису или Google Assistant.
  • Энергомониторинг — чтобы знать, сколько потребляет система. Об этом можно почитать в статье Home Assistant Energy: превращаем данные в экономию и контроль.

Не забывайте о резервном копировании вашей конфигурации Home Assistant. Все ваши труды должны быть защищены. Как это сделать —

Понравилась статья?

Поставьте лайк и сохраните полезный материал в закладки.

Комментарии (0)
Добавить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Мониторинг качества воздуха: CO2, PM2.5 и VOC своими руками на ESP32
DIY проекты
31.03.2026
Мониторинг качества воздуха: CO2, PM2.5 и VOC своими руками на ESP32
Соберите систему мониторинга качества воздуха своими руками на ESP32. Измеряйте CO2, PM2.5 и VOC. Подробное руководство: схема, код, интеграция с Home Assistant.
Умная кормушка для кота на ESP32: кормим питомца по расписанию
DIY проекты
31.03.2026
Умная кормушка для кота на ESP32: кормим питомца по расписанию
Пошаговый проект умной кормушки для кота на ESP32 с Wi-Fi и веб-интерфейсом. Собираем своими руками: схема, код, сборка. Автоматическое кормление по расписанию.
Умная теплица на ESP32 и Raspberry Pi: автоматизация от А до Я
DIY проекты
31.03.2026
Умная теплица на ESP32 и Raspberry Pi: автоматизация от А до Я
Собираем умную теплицу на ESP32 и Raspberry Pi: датчики, полив, освещение, автоматика и удалённый контроль.
DIY умный звонок с камерой на ESP32-CAM и Home Assistant
DIY проекты
31.03.2026
DIY умный звонок с камерой на ESP32-CAM и Home Assistant
Собираем умный дверной звонок на ESP32-CAM с камерой, уведомлениями и интеграцией в Home Assistant.
Домашняя метеостанция с графиками: ESP32 + InfluxDB + Grafana
DIY проекты
31.03.2026
Домашняя метеостанция с графиками: ESP32 + InfluxDB + Grafana
Создаём домашнюю метеостанцию на ESP32 с хранением данных в InfluxDB и наглядными графиками в Grafana.
Как печатать резьбу на 3D-принтере: зазоры, допуски и настройки для болтов и гаек
DIY проекты
09.09.2026
Как печатать резьбу на 3D-принтере: зазоры, допуски и настройки для болтов и гаек
Практическое руководство по печати резьбы на FDM-принтере: расчёт зазоров и допусков для PLA, PETG и ABS, настройки слайсера, калибровочная печать и типичные ошибки.

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