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

Собираем умный аквариум с автодоливом, контролем температуры и освещением по расписанию.
Всем привет! Сегодня мы соберём не просто умный гаджет, а целую экосистему для вашего аквариума. Если вы, как и я, устали от рутинных проверок уровня воды, температуры и забывания вовремя включить или выключить свет для рыбок и растений — эта статья для вас. Мы создадим автоматизированную систему на базе 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 автоматически.
-
Установите ESPHome. Если используете HA OS, добавьте аддон «ESPHome» из магазина аддонов. Для других установок — следуйте официальной инструкции.
-
Создайте новую конфигурацию. В веб-интерфейсе ESPHome нажмите «+», введите имя (например,
smart-aquarium) и выберите платуESP32 Dev Module. -
Настройте аппаратную часть в 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 при загрузке может вызвать проблемы.
- Заливите прошивку. Подключите 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 для более сложных сценариев (плавный рассвет/закат).
- Создайте два расписания (Schedule Helper) в настройках HA: «Аквариум Свет Вкл» (например, на 8:00) и «Аквариум Свет Выкл» (на 22:00).
- Создайте две простые автоматизации, которые будут срабатывать по этим расписаниям и включать/выключать свет
light.aquarium_light.
Для плавного включения можно использовать сервис light.turn_on с параметром transition: 300 (плавное изменение за 300 секунд = 5 минут).
Часть 3: Сборка и монтаж
Внимание! Безопасность прежде всего. Работаем с напряжением 220V только при полном отключении от сети. Все соединения должны быть надёжно заизолированы.
- Соберите схему на макетной плате для низковольтной части (ESP32, датчики, реле-модуль). Проверьте всё мультиметром.
- Подключите силовую часть: К клеммам реле-модуля (обычно COM, NO — нормально разомкнутый) подключите вилку сетевого шнура и розетку. В розетку будет включаться нагреватель. Помпу подключайте через отдельный блок питания 12V, а не в сеть 220V!
- Установите датчики в аквариум:
- DS18B20 опустите в воду, но не на дно и не рядом с нагревателем. Закрепите присоской.
- Поплавковый датчик закрепите на нужном уровне (чуть ниже минимально допустимого) так, чтобы он свободно двигался.
- Помпу для долива подключите к гибкому шлангу и опустите в ёмкость с отстоянной водой. Выход шланга закрепите над аквариумом.
- Светодиодную ленту разместите под крышкой аквариума или на кронштейнах. Убедитесь, что она не контактирует с водой и не перегревается.
Проверка результата и тестирование
Прежде чем доверять системе жизнь ваших рыбок, проведите полный цикл тестов.
- Тест связи: В Home Assistant убедитесь, что все сущности с ESP32 в рабочем состоянии, значения температуры обновляются.
- Тест датчика уровня: Принудительно поднимите/опустите поплавок. В HA должно меняться состояние датчика. Поднесите магнит к датчику-геркону.
- Тест помпы (БЕЗ ВОДЫ!): Временно переопределите автоматизацию или вручную включите помпу через интерфейс HA. Убедитесь, что она включается и выключается по команде. Потом проведите тест с водой в отдельной ёмкости, имитируя долив.
- Тест нагревателя: Установите порог термостата выше текущей температуры. Нагреватель должен включиться (после задержки на гистерезис). Контролируйте процесс! Не оставляйте без присмотра.
- Тест освещения: Проверьте ручное управление, затем работу по расписанию. Убедитесь, что плавные переходы работают корректно.
- Стресс-тест: Сымитируйте отказ датчика уровня (зафиксируйте его в положении «низкий уровень») и убедитесь, что таймер безопасности выключает помпу через 60 секунд, не допуская потопа.
Заключение и дальнейшее развитие
Поздравляю! Вы собрали полноценную систему «умный аквариум», которая теперь будет круглосуточно заботиться о вашем подводном мире. Это базовый каркас, который можно расширять:
- Контроль pH и электропроводности (TDS) с помощью специальных датчиков и аналоговых входов ESP32.
- Дозировка удобрений и корма с использованием шаговых моторов и дозаторов.
- Камера для наблюдения за рыбками, интегрированная в HA.
- Голосовое управление через Алису или Google Assistant.
- Энергомониторинг — чтобы знать, сколько потребляет система. Об этом можно почитать в статье Home Assistant Energy: превращаем данные в экономию и контроль.
Не забывайте о резервном копировании вашей конфигурации Home Assistant. Все ваши труды должны быть защищены. Как это сделать —
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Мониторинг качества воздуха: CO2, PM2.5 и VOC своими руками на ESP32
Умная кормушка для кота на ESP32: кормим питомца по расписанию
Умная теплица на ESP32 и Raspberry Pi: автоматизация от А до Я
DIY умный звонок с камерой на ESP32-CAM и Home Assistant
Домашняя метеостанция с графиками: ESP32 + InfluxDB + Grafana
Как печатать резьбу на 3D-принтере: зазоры, допуски и настройки для болтов и гаек