Идеальное доброе утро с Home Assistant: Автоматизация рассвета, Алисы и календарей
Наверное, каждому из нас знаком этот баг системы под названием «Утро». Пытаешься загрузить ОС в голове, а фоном еще крутятся обрывки снов (иногда таких, что лучше бы это был синий экран смерти 😱). Лежишь в тишине, пытаешься вспомнить, какой сегодня день, кому надо отправить поздравления, а глаза предательски уходят в спящий режим.
Я нашел для себя аппаратный патч! У меня возле кровати лежит заветная «кнопка-спасатель» 🚨. Как только я просыпаюсь и начинаю хоть немного контролировать свои манипуляторы (руки), я просто жму на неё, чтобы запустить процесс загрузки сознания.
🧠 Как работает магия умного утра?
В свой Home Assistant я прокинул календари. Дни рождения, государственные праздники, рабочие таски — система бережно парсит всё это и зачитывает мне. Это нужно, чтобы ничего не забыть! Поздравить друга с утра пораньше — бесценно, потому что днем в суете эта инфа вылетает из кеша на раз-два.
После брифинга по делам к процессу подключается Алиса (тут не принципиально, у вас может быть Маруся, Зина или даже условный Джарвис). Запускается утреннее шоу: новости, прогноз погоды и бодрящая музыка. Отличный пинок, чтобы окончательно ожить! ☕
Но есть нюанс. Если вы, как и я, живете на севере, то зимнее утро — это беспросветная тьма. Как объяснить организму, что пора вставать, если за окном ночь? Тут в дело вступает свет! 💡
Автоматизация проверяет датчик освещенности: если в комнате реально темно, умная лампа начинает плавно разгораться от 1% до 50%, имитируя восход солнца. Глаза привыкают мягко и без стресса.
А когда вы почувствовали прилив энергии к ногам и непреодолимое желание телепортироваться в ванную — просто жмем ту же кнопку еще раз. Скрипт понимает, что миссия выполнена, и разом глушит Алису и свет.
💻 Код автоматизации (YAML)
Ловите готовый код! ⚠️ Важно: не забудьте поменять плейсхолдеры (написаны капсом) на ID ваших устройств в Home Assistant.
Да, и нам понадобится для этой автоматизации - датчик освещенности, умная кнопка, умная лампочка и какая нибудь умная колонка, которая все это будет произносить. По желанию можете подключить Гугл календарь, как я.
alias: 'Алиса : Включить Утреннее Шоу, рассвет и все календари'
description: >-
Запуск шоу Алисы, рассвет и события. При повторном нажатии — выключает Алису и свет.
triggers:
- domain: mqtt
device_id: ВАШ_ID_КНОПКИ # Укажите ID вашей физической zigbee/mqtt кнопки
type: action
subtype: single
trigger: device
actions:
- choose:
- conditions:
- condition: or
conditions:
- condition: state
entity_id: media_player.ВАША_КОЛОНКА_ЯНДЕКС # ID вашей колонки
state: playing
- condition: state
entity_id: light.ВАША_УМНАЯ_ЛАМПА # ID вашей лампы или ленты
state: 'on'
sequence:
# Если колонка играет или свет горит — выключаем всё (Второе нажатие)
- action: media_player.media_pause
target:
entity_id: media_player.ВАША_КОЛОНКА_ЯНДЕКС
- action: light.turn_off
target:
entity_id: light.ВАША_УМНАЯ_ЛАМПА
default:
# Задаем громкость колонки на старте (40%)
- action: media_player.volume_set
target:
entity_id: media_player.ВАША_КОЛОНКА_ЯНДЕКС
dаta:
volume_level: 0.4
- parallel:
- sequence:
- if:
# Проверяем уровень освещенности в комнате (если меньше 200 люкс — стартуем рассвет)
- condition: numeric_state
entity_id: sensor.ВАШ_ДАТЧИК_ОСВЕЩЕННОСТИ_illuminance
below: 200
then:
- action: light.turn_on
target:
entity_id: light.ВАША_УМНАЯ_ЛАМПА
dаta:
brightness_pct: 1
color_temp_kelvin: 3000
- repeat:
count: 30
sequence:
- delay:
minutes: 1
# Плавно повышаем яркость каждую минуту
- action: light.turn_on
target:
entity_id: light.ВАША_УМНАЯ_ЛАМПА
dаta:
brightness_pct: '{{ (1 + repeat.index * 49 / 30) | round(0) }}'
- sequence:
# Собираем данные из нужных календарей
- action: calendar.get_events
continue_on_error: true
target:
entity_id:
- calendar.rusholidays
- calendar.ВАШ_ЛИЧНЫЙ_КАЛЕНДАРЬ_1
- calendar.ВАШ_ЛИЧНЫЙ_КАЛЕНДАРЬ_2
- calendar.birthdays
dаta:
start_date_time: '{{ today_at(''00:00'') }}'
end_date_time: '{{ today_at(''23:59'') }}'
response_variable: agenda
- action: media_player.play_media
target:
entity_id: media_player.ВАША_КОЛОНКА_ЯНДЕКС
dаta:
media:
media_content_id: |-
{% set ns = namespace(events=[]) %}
{% if agenda is not defined or not agenda %}
Доброе утро! Произошла ошибка связи с серверами, и я не смогла загрузить твой календарь. Пожалуйста, проверь планы на телефоне. А пока — запускаю утреннее шоу!
{% else %}
{% for cal in agenda %}
{% set ns.events = ns.events + agenda[cal].events %}
{% endfor %}
{% if ns.events | length > 0 %}
Доброе утро! На сегодня в планах:
{% for event in ns.events %}
{{ event.summary }}.
{% endfor %}
Запускаю утреннее шоу!
{% else %}
Доброе утро! На сегодня запланированных событий нет. Запускаю утреннее шоу!
{% endif %}
{% endif %}
media_content_type: text
- delay:
seconds: 10
# Посылаем текстовую команду Алисе включить шоу
- action: yandex_station.send_command
target:
device_id: ВАШ_DEVICE_ID_КОЛОНКИ_ДЛЯ_КОМАНД # ID устройства для отправки text command
dаta:
command: sendText
text: Включи утреннее шоу
mode: restart
Радуйтесь утру, настраивайте систему под себя, и пусть ваш умный дом делает жизнь чуточку комфортнее! 😉 Делитесь в комментариях, как вы заставляете себя вставать по утрам.
- misterleks от
