Автоматизация умного дома Home Assistant: отключение электричества и Proxmox
Умный дом Home Assistant: автоматизация при отключении электричества и мягкое выключение Proxmox
Если уж мы решили построить умный дом на Home Assistant, то неплохо бы подумать не только о красивых дашбордах, управлении светом и автоматическом открытии штор. Есть одна маленькая, но очень важная деталь, которая способна в одно мгновение превратить всю нашу автоматизацию в тыкву.
Электричество. Точнее, его внезапное исчезновение.

Представьте: утром уходили из дома, всё работало как часы. Камеры наблюдают, сервер трудится, Home Assistant бодро щёлкает реле и управляет устройствами. Возвращаетесь вечером, а дома вас встречает новая версия системы — «Глупый дом 1.0».
Почему? Потому что электричество внезапно отключилось, сервер не пережил этот поворот сюжета, а вместе с ним легла база данных. И вот уже никакой умной автоматизации, никакого удалённого управления и никаких красивых графиков. Только вы, выключатель на стене и философский вопрос: «А зачем я вообще всё это автоматизировал?» 🤦
Чтобы такой сценарий не стал реальностью, нужно заранее предусмотреть корректное завершение работы оборудования. И здесь нам понадобится старый добрый помощник — ИБП (источник бесперебойного питания).
Как должна работать автоматизация
Наша задача — вовремя заметить пропажу электричества, предупредить хозяина квартиры и дать серверу возможность спокойно завершить работу, сохранив данные.
Логика простая:
- Шаг 1. Home Assistant проверяет доступность нескольких устройств в локальной сети.
- Шаг 2. Если устройства перестали отвечать на Ping, система предполагает, что пропало электричество.
- Шаг 3. После подтверждения отключения отправляется уведомление на смартфон.
- Шаг 4. Запускается ожидание восстановления питания. У нас есть 30 минут, чтобы электричество вернулось.
- Шаг 5. Если питание восстановилось, выключение сервера отменяется, а мы получаем радостное сообщение.
- Шаг 6. Если свет так и не появился, Home Assistant отправляет последнее предупреждение и запускает мягкое выключение Proxmox.
Почему именно мягкое выключение? Потому что просто обрубить питание серверу — это, конечно, быстро, но примерно так же разумно, как выключать компьютер кнопкой на сетевом фильтре каждый раз, когда надоело смотреть на рабочий стол.
Нам нужно дать операционной системе время завершить процессы, закрыть службы и записать данные. ИБП как раз предоставляет это драгоценное время.
Важный момент: ИБП должен питать не только сервер, но и необходимое сетевое оборудование — например, роутер. Сам Home Assistant тоже должен оставаться доступным во время отключения электричества. Иначе уведомление о том, что электричество отключилось, рискует остаться исключительно в наших мечтах.
Как понять, что электричество действительно пропало
Для обнаружения отключения я использую проверку доступности устройств по сети с помощью Ping.
Подойдут устройства, которые обычно постоянно включены и доступны в локальной сети. Например, камеры видеонаблюдения, телевизоры или другие сетевые приборы. Желательно, чтобы у них были закреплённые IP-адреса — например, через DHCP-резервирование на роутере.
Но есть нюанс, достойный отдельного предупреждения на стене серверной.
Телевизоры любят спать. Некоторые модели в режиме ожидания перестают отвечать на Ping, хотя электричество никуда не пропало. Если ориентироваться только на телевизор, можно однажды получить сообщение о катастрофе, сидя в полностью исправной квартире.
Поэтому лучше проверять доступность нескольких устройств и на их основе создать отдельный датчик состояния питания. Условия его работы зависят от вашей конфигурации: например, датчик может считать устройства недоступными, если все контрольные приборы перестали отвечать.
Здесь важно проверить два сценария: как датчик ведёт себя при реальном отключении электричества и что происходит, когда одно из устройств просто засыпает или временно теряет связь.
Готовая автоматизация для Home Assistant
Ниже — пример YAML-автоматизации, которая отправляет уведомление, ждёт восстановления питания и при необходимости запускает выключение Proxmox.
Перед использованием замените три типа сущностей на свои:
binary_sensor.power_ping_monitor— ваш датчик, который становитсяoff, когда контрольные устройства перестают отвечать, и возвращается вonпосле восстановления связи.notify.mobile_app_your_phone— служба уведомлений вашего смартфона в Home Assistant. Чтобы отправлять сообщения на несколько телефонов, добавьте отдельные действия уведомления для каждого устройства.button.proxmox_host_shutdown— кнопка мягкого выключения нужного сервера или узла Proxmox из вашей интеграции.
Последнюю сущность обязательно проверьте отдельно: в зависимости от интеграции и конфигурации она может выключать виртуальную машину либо сам узел Proxmox. Это не одно и то же, а цена ошибки здесь немного выше, чем у неправильно названной лампочки.
alias: "Квартира: питание — отключение электричества и автовыключение Proxmox"
description: >-
Проверка питания через Ping, уведомления на смартфон
и мягкое выключение Proxmox при длительном отключении электричества.
triggers:
- trigger: state
# ЗАМЕНИТЕ на ваш датчик контроля доступности устройств.
# Ожидается: off — питание предположительно пропало,
# on — связь с контрольными устройствами восстановилась.
entity_id: binary_sensor.power_ping_monitor
to: "off"
# Защита от кратковременных сетевых сбоев.
# Отключение должно сохраняться не менее 2 минут.
for:
minutes: 2
actions:
# Уведомление о подтверждённом отключении электричества.
- action: notify.mobile_app_your_phone
dаta:
title: "⚡️ ВНИМАНИЕ: Нет электричества!"
message: >-
Питание предположительно отключено.
Сервер и сетевое оборудование работают от ИБП.
Если электричество не восстановится, примерно через
30 минут после этого уведомления запущу выключение Proxmox.
# Если у вас несколько смартфонов, добавьте здесь
# аналогичное действие с их службами уведомлений.
# Ждём возвращения связи или истечения тайм-аута.
- wait_for_trigger:
- trigger: state
# Тот же датчик, что используется в триггере выше.
entity_id: binary_sensor.power_ping_monitor
# Датчик снова сообщает, что устройства доступны.
to: "on"
# Максимальное ожидание восстановления питания.
timeout:
minutes: 30
# Продолжаем выполнение действий, даже если время вышло.
continue_on_timeout: true
- choose:
# Сценарий 1: связь восстановилась до истечения тайм-аута.
- conditions:
- condition: template
value_template: "{{ wait.completed }}"
sequence:
- action: notify.mobile_app_your_phone
dаta:
title: "💡 Ура! Свет дали!"
message: >-
Электричество восстановлено.
Выключение сервера отменено.
# Сценарий 2: время ожидания истекло, связь не восстановилась.
- conditions:
- condition: template
value_template: "{{ not wait.completed }}"
sequence:
- action: notify.mobile_app_your_phone
dаta:
title: "🔋 ИБП разряжается!"
message: >-
Электричество не восстановилось.
Запускаю мягкое выключение Proxmox,
чтобы снизить риск потери данных.
# ЗАМЕНИТЕ на вашу кнопку выключения.
# ВНИМАНИЕ: предварительно проверьте,
# что именно выключает эта кнопка:
# виртуальную машину или сам узел Proxmox.
- action: button.press
target:
entity_id: button.proxmox_host_shutdown
mode: restart
Обратите внимание на время. В примере отключение должно сохраняться две минуты, прежде чем автоматизация сработает. Затем начинается дополнительное ожидание продолжительностью 30 минут. Поэтому выключение будет запущено примерно через 32 минуты после обнаружения пропажи питания, если датчик не сообщит о восстановлении связи.
Все заглушки в коде нужно заменить на реальные сущности и службы вашей установки Home Assistant. Перед тем как доверить этой автоматизации сервер, рекомендую сначала проверить оба сценария на тестовом датчике: восстановление связи до тайм-аута и истечение времени ожидания без восстановления.
А как сервер включить обратно?
И вот тут начинается самое интересное. Выключать мы научились красиво, с уведомлениями и заботой о сохранности данных. Но есть один маленький технический нюанс: как теперь всё это включить обратно? 😁
Если Home Assistant работает на том же сервере Proxmox, который мы только что выключили, он больше не сможет выполнить автоматизацию включения. Автоматизация тоже ушла спать. Причём спать крепко.
Один из вариантов — Wake-on-LAN (WoL). Это механизм, позволяющий разбудить поддерживающий его компьютер специальным сетевым пакетом, отправленным на сетевую карту. Но для этого необходимо заранее включить WoL в BIOS/UEFI и настроить поддержку со стороны сетевой карты и операционной системы.
И самое главное: отправить этот пакет должно устройство, которое продолжает работать после выключения сервера. Это может быть отдельный мини-компьютер, другой сервер или другое подходящее устройство в сети. Если единственный Home Assistant выключен вместе с Proxmox, команду просто некому отправить.
Есть и другой вариант: посмотреть настройки BIOS/UEFI, связанные с восстановлением питания после его пропадания. Некоторые системы умеют автоматически включаться при возвращении внешнего питания, но поведение зависит от оборудования и схемы работы ИБП.
В любом случае этот сценарий необходимо проверить заранее. Нельзя просто предположить, что после восстановления электричества сервер сам проснётся и радостно продолжит обслуживать умный дом.
Итог
Получилась полезная автоматизация для умного дома Home Assistant: контролируем доступность устройств, замечаем вероятное отключение электричества, отправляем уведомления и даём серверу время на корректное завершение работы.
Да, автоматическое включение пока остаётся отдельной задачей. Но это уже следующий уровень квеста — «Разбуди сервер, не разбудив администратора».
Если у вас есть проверенное решение для автоматического включения Proxmox после восстановления питания, делитесь опытом. Будет интересно посмотреть, какие варианты используют другие любители домашней автоматизации.
А пока пусть ваш умный дом остаётся умным, сервер — включённым, а электричество пропадает исключительно в чужих рассказах. ⚡️
- misterleks от