# ============================================================================= # family_scenarios.yaml — сценарии тёплого дома для многодетной семьи # ----------------------------------------------------------------------------- # Это HA-«пакет»: один файл собирает сценарии (script:) и автоматизации # (automation:) в одном месте. Подключается через packages, см. docs/SETUP.md: # homeassistant: # packages: !include_dir_named packages # # ВАЖНО ПРО ENTITY_ID: # Все light.*, climate.*, cover.*, media_player.*, switch.*, binary_sensor.* и # прочее ниже — ПЛЕЙСХОЛДЕРЫ с понятными именами (гостиная, детская_1 и т.п.). # Ничего не привязано к реальному дому. Замените их на свои сущности: # - откройте Инструменты разработчика → Состояния, найдите свои entity_id; # - через «Найти и заменить» в редакторе поменяйте, например, # light.gostinaya → light.vasha_gostinaya. # Пока сущности не существуют — сценарий просто ничего не сделает с ней и не # сломает остальное (для чистоты можно закомментировать неиспользуемые строки). # # Стиль: тёплый свет вечером 2700K, мягкие подъёмы, тихие ночи, спокойные дети. # ============================================================================= # ───────────────────────────────────────────────────────────────────────────── # СЦЕНАРИИ (scripts) — то, что можно запустить кнопкой с панели или из автоматизаций # ───────────────────────────────────────────────────────────────────────────── script: # === ПО ВРЕМЕНИ СУТОК ===================================================== utro_budni: alias: "Утро · будни" icon: mdi:weather-sunset-up description: > Плавный школьный подъём: мягко разгораются детские, поднимаются шторы, греется пол в ванной, приходит погода на сегодня, включается кофе. mode: restart sequence: # 1) Мягко разгораем свет в детских за 3 минуты — без резкого «щёлк». - service: light.turn_on target: entity_id: - light.detskaya_1 # замените на свои детские - light.detskaya_2 - light.detskaya_3 data: brightness_pct: 45 kelvin: 3200 # тёплый утренний transition: 180 # 2) Приоткрываем шторы в детских (естественный свет будит мягче). - service: cover.set_cover_position target: entity_id: - cover.detskaya_1 - cover.detskaya_2 data: position: 60 # 3) Тёплый пол в ванной — чтобы босиком было не холодно. - service: climate.set_temperature target: entity_id: climate.vannaya_teplyj_pol data: temperature: 24 # 4) Погода на сегодня — уведомлением взрослым (настройте notify.*). - service: notify.family_adults # см. docs/SETUP.md — группа взрослых data: title: "Доброе утро ☀️" message: > Сегодня: {{ states('weather.dom') }}, {{ state_attr('weather.dom','temperature') }}°. Подъём в школу — не проспите! # 5) Кофе (умная розетка кофемашины). Уберите, если нет. - service: switch.turn_on target: entity_id: switch.kofemashina # 6) Тихо снимаем ночной режим. - service: input_boolean.turn_off target: entity_id: - input_boolean.night - input_boolean.quiet_hours utro_vyhodnye: alias: "Утро · выходные" icon: mdi:weather-sunset description: "Позже, тише, без будильников — пусть все высыпаются." mode: restart sequence: # Свет в детских не трогаем — будим только гостиную/кухню, и то нежно. - service: light.turn_on target: entity_id: light.kuhnya data: brightness_pct: 40 kelvin: 3000 transition: 240 # Шторы в детских НЕ открываем автоматически — пусть спят. - service: input_boolean.turn_off target: entity_id: input_boolean.night - service: notify.family_adults data: title: "Доброе выходное утро 🌤️" message: "Спешить некуда. Сегодня {{ states('weather.dom') }}." den_nikogo_net: alias: "День · никого нет" icon: mdi:home-export-outline description: "Эко-режим: климат в экономию, свет гаснет, напоминание проветрить." mode: single sequence: - service: light.turn_off target: entity_id: all - service: climate.set_temperature target: entity_id: - climate.gostinaya - climate.kuhnya - climate.detskaya_1 - climate.detskaya_2 - climate.detskaya_3 - climate.spalnya data: temperature: "{{ states('input_number.eco_temperature') | float(18) }}" - service: input_boolean.turn_on target: entity_id: input_boolean.eco # Ненавязчивое напоминание проветрить (раз в день хватает). - service: notify.family_adults data: message: "Дома никого — самое время проветрить, когда вернётесь 🍃" vecher: alias: "Вечер" icon: mdi:weather-night-partly-cloudy description: "Тёплый свет 2700K, сцена ужина на кухне, подсветка за ТВ." mode: restart sequence: - service: light.turn_on target: entity_id: - light.gostinaya - light.kuhnya - light.prihozhaya data: brightness_pct: 70 kelvin: 2700 # тёплый вечерний transition: 5 # Подсветка за телевизором — уютный фон. - service: light.turn_on target: entity_id: light.tv_podsvetka data: brightness_pct: 40 rgb_color: [255, 170, 90] - service: climate.set_temperature target: entity_id: - climate.gostinaya - climate.kuhnya data: temperature: "{{ states('input_number.comfort_temperature') | float(22) }}" - service: input_boolean.turn_off target: entity_id: input_boolean.eco noch_otboj: alias: "Ночь · отбой" icon: mdi:weather-night description: "Всё приглушаем, детские ночники, охрана периметра, проверка «всё выключено?»." mode: restart sequence: # Гасим основной свет плавно. - service: light.turn_off target: entity_id: - light.gostinaya - light.kuhnya - light.prihozhaya - light.tv_podsvetka data: transition: 8 # Детские ночники — тёплые и очень тусклые. - service: light.turn_on target: entity_id: - light.nochnik_detskaya_1 - light.nochnik_detskaya_2 - light.nochnik_detskaya_3 data: brightness_pct: 8 kelvin: 2200 # Охрана периметра (двери/окна/уличные датчики) — только по периметру, # чтобы движение внутри ночью не поднимало тревогу. - service: alarm_control_panel.alarm_arm_night target: entity_id: alarm_control_panel.dom data: code: "!secret alarm_code" # задайте код в secrets.yaml - service: input_boolean.turn_on target: entity_id: - input_boolean.night - input_boolean.quiet_hours # Мягкая проверка: не остались ли включёнными «тяжёлые» приборы. - if: - condition: state entity_id: switch.uteg # пример: утюг state: "on" then: - service: notify.family_adults data: message: "⚠️ Кажется, утюг ещё включён. Заглянуть перед сном?" # === СИТУАЦИИ ============================================================= uhod_iz_doma: alias: "Уход из дома" icon: mdi:exit-run description: "Все ушли: свет off, климат эко, охрана, проверка окон, пылесосы." mode: single sequence: - service: light.turn_off target: { entity_id: all } - service: climate.set_temperature target: entity_id: - climate.gostinaya - climate.kuhnya - climate.detskaya_1 - climate.detskaya_2 - climate.detskaya_3 - climate.spalnya data: temperature: "{{ states('input_number.eco_temperature') | float(18) }}" - service: input_boolean.turn_on target: { entity_id: input_boolean.eco } # Проверка окон/дверей — если что-то открыто, предупреждаем, но не блокируем. - variables: otkryto: > {{ states.binary_sensor | selectattr('attributes.device_class','in',['window','door']) | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') }} - if: "{{ otkryto | length > 0 }}" then: - service: notify.family_adults data: title: "Уходите — а тут открыто:" message: "Проверьте: {{ otkryto }}" # Ставим охрану на «отсутствие». - service: alarm_control_panel.alarm_arm_away target: { entity_id: alarm_control_panel.dom } data: code: "!secret alarm_code" # Запускаем роботов-пылесосов — уборка, пока никого нет. - service: vacuum.start target: { entity_id: vacuum.robot } vozvrashchenie_domoj: alias: "Возвращение домой" icon: mdi:home-import-outline description: "Свет по времени суток, климат в комфорт, тёплое приветствие." mode: single sequence: - service: alarm_control_panel.alarm_disarm target: { entity_id: alarm_control_panel.dom } data: code: "!secret alarm_code" - service: input_boolean.turn_off target: { entity_id: input_boolean.eco } # Свет зависит от времени суток: днём — прихожая, вечером — тёплый уют. - choose: - conditions: - condition: sun after: sunset sequence: - service: script.turn_on target: { entity_id: script.vecher } default: - service: light.turn_on target: { entity_id: light.prihozhaya } data: { brightness_pct: 60 } - service: climate.set_temperature target: entity_id: - climate.gostinaya - climate.kuhnya data: temperature: "{{ states('input_number.comfort_temperature') | float(22) }}" - service: notify.family_adults data: message: "С возвращением! Дом уже согревается 🏡" gosti: alias: "Гости" icon: mdi:account-group description: "Приветливый ровный свет, музыка, комфортный климат." mode: restart sequence: - service: light.turn_on target: entity_id: - light.gostinaya - light.kuhnya - light.prihozhaya data: brightness_pct: 85 kelvin: 2900 - service: input_boolean.turn_on target: { entity_id: input_boolean.guests } - service: media_player.play_media target: { entity_id: media_player.gostinaya } data: media_content_id: "Playlist: Вечер с друзьями" # замените на свой источник media_content_type: playlist - service: climate.set_temperature target: { entity_id: climate.gostinaya } data: { temperature: 23 } kino: alias: "Кино" icon: mdi:movie-open description: "Затемнить гостиную, включить подсветку ТВ, режим «не беспокоить»." mode: restart sequence: - service: light.turn_off target: { entity_id: light.gostinaya } data: { transition: 3 } - service: light.turn_on target: { entity_id: light.tv_podsvetka } data: brightness_pct: 25 rgb_color: [120, 90, 200] - service: cover.close_cover target: { entity_id: cover.gostinaya } - service: input_boolean.turn_on target: entity_id: - input_boolean.movie - input_boolean.quiet_hours # уведомления притихают, см. автоматизацию тихого режима ukladyvanie_detej: alias: "Укладывание детей" icon: mdi:sleep description: "Ночники warm dim, колыбельная / белый шум, дом притихает, тихий режим." mode: restart sequence: - service: light.turn_on target: entity_id: - light.nochnik_detskaya_1 - light.nochnik_detskaya_2 - light.nochnik_detskaya_3 data: brightness_pct: 12 kelvin: 2200 transition: 30 # Основной свет в детских гасим совсем. - service: light.turn_off target: entity_id: - light.detskaya_1 - light.detskaya_2 - light.detskaya_3 data: { transition: 20 } # Белый шум / колыбельная на тихой громкости. - service: media_player.volume_set target: { entity_id: media_player.detskaya_1 } data: { volume_level: 0.18 } - service: media_player.play_media target: { entity_id: media_player.detskaya_1 } data: media_content_id: "Белый шум" # замените: колыбельная / дождь / white noise media_content_type: music # Приглушаем остальной дом. - service: light.turn_on target: { entity_id: light.gostinaya } data: { brightness_pct: 30, kelvin: 2500 } - service: input_boolean.turn_on target: { entity_id: input_boolean.quiet_hours } rebenok_prosnulsya: alias: "Ребёнок проснулся ночью" icon: mdi:weather-night description: "Мягкая подсветка пути в туалет 10–15%, без яркого света." mode: single sequence: # Тусклая тёплая «дорожка» коридор → санузел. - service: light.turn_on target: entity_id: - light.koridor - light.sanuzel data: brightness_pct: 12 kelvin: 2200 # Через 3 минуты гасим — если снова уснул, свет не мешает. - delay: "00:03:00" - service: light.turn_off target: entity_id: - light.koridor - light.sanuzel data: { transition: 10 } trevoga: alias: "Тревога" icon: mdi:alarm-light description: "Дым/протечка/CO/взлом: яркий свет везде, голос, уведомление взрослым, вода off." mode: restart sequence: # Свет — ярко и максимально, чтобы найти дорогу и детей. - service: light.turn_on target: { entity_id: all } data: brightness_pct: 100 kelvin: 4000 # Голосовое оповещение по дому. - service: tts.speak target: { entity_id: tts.home_assistant_cloud } # замените на свой TTS data: cache: false media_player_entity_id: media_player.ves_dom # мультирум «весь дом» message: "Внимание. Сработала система безопасности. Все спокойно к выходу." # Уведомление ВСЕМ взрослым (критично). - service: notify.family_adults data: title: "🚨 ТРЕВОГА В ДОМЕ" message: "Сработал датчик безопасности. Проверьте детей и дом." data: priority: high # При протечке — перекрываем воду (клапан). Безопасно и в остальных случаях. - service: switch.turn_off target: { entity_id: switch.klapan_vody } ekonomiya_nochnoj_tarif: alias: "Экономия · ночной тариф" icon: mdi:transmission-tower-export description: "Тяжёлые нагрузки — на ночной тариф, климат в эко на ночь." mode: single sequence: - service: input_boolean.turn_on target: { entity_id: input_boolean.night_tariff } # Включаем «тяжёлые» приборы, которые ждали дешёвого времени. - service: switch.turn_on target: entity_id: - switch.bojler # бойлер / водонагреватель - switch.posudomojka # посудомойка (отложенный старт) - switch.stiralnaya # стиральная машина # Климат на ночь — экономнее. - service: climate.set_temperature target: entity_id: - climate.gostinaya - climate.kuhnya data: temperature: "{{ states('input_number.eco_temperature') | float(18) }}" boleet_rebenok: alias: "Болеет ребёнок" icon: mdi:emoticon-sick-outline description: "Климат/увлажнитель в комнате ребёнка, мягкий свет, тихий режим." mode: restart sequence: - service: input_boolean.turn_on target: { entity_id: input_boolean.sick_child } # Определяем комнату из input_select и настраиваем её. # (Для простоты пример на детскую 1 — размножьте под свои комнаты.) - service: climate.set_temperature target: { entity_id: climate.detskaya_1 } data: { temperature: 22 } - service: humidifier.turn_on target: { entity_id: humidifier.detskaya_1 } - service: humidifier.set_humidity target: { entity_id: humidifier.detskaya_1 } data: { humidity: 55 } - service: light.turn_on target: { entity_id: light.detskaya_1 } data: { brightness_pct: 25, kelvin: 2500 } - service: input_boolean.turn_on target: { entity_id: input_boolean.quiet_hours } prazdnik: alias: "Праздник · День рождения" icon: mdi:party-popper description: "Праздничная цветная сцена, музыка, веселье." mode: restart sequence: - service: input_boolean.turn_on target: { entity_id: input_boolean.party } # Цветная динамичная сцена по гостиной/кухне. - service: light.turn_on target: entity_id: - light.gostinaya - light.tv_podsvetka data: brightness_pct: 90 effect: "colorloop" # если лампы умеют; иначе задайте rgb_color - service: media_player.play_media target: { entity_id: media_player.ves_dom } data: media_content_id: "Playlist: Праздник" media_content_type: playlist # ───────────────────────────────────────────────────────────────────────────── # АВТОМАТИЗАЦИИ (automation) — что срабатывает само, по триггерам # ───────────────────────────────────────────────────────────────────────────── automation: # --- Утро будни: за N минут до подъёма запускаем плавный подъём ------------ - id: warm_family_utro_budni alias: "Тёплый дом · Утро будни (по расписанию школы)" description: "В будни в указанное время запускает сценарий «Утро · будни»." trigger: - platform: time at: input_datetime.school_wake_weekday condition: # Только по будням (пн–пт). - condition: time weekday: [mon, tue, wed, thu, fri] action: - service: script.turn_on target: { entity_id: script.utro_budni } # --- Утро выходные --------------------------------------------------------- - id: warm_family_utro_vyhodnye alias: "Тёплый дом · Утро выходные" trigger: - platform: time at: input_datetime.weekend_wake condition: - condition: time weekday: [sat, sun] action: - service: script.turn_on target: { entity_id: script.utro_vyhodnye } # --- Вечер: включаем тёплый свет на закате --------------------------------- - id: warm_family_vecher_zakat alias: "Тёплый дом · Вечер на закате" description: "На закате, если кто-то дома, включает вечернюю тёплую сцену." trigger: - platform: sun event: sunset offset: "-00:20:00" # за 20 минут до заката condition: # Кто-то дома (см. group.family — настройте под своих людей). - condition: state entity_id: group.family state: home action: - service: script.turn_on target: { entity_id: script.vecher } # --- Отбой детей по расписанию (подсказка, не насильно) -------------------- - id: warm_family_kids_bedtime_hint alias: "Тёплый дом · Пора укладывать детей" trigger: - platform: time at: input_datetime.kids_bedtime action: - service: notify.family_adults data: message: "🌙 Пора укладывать детей. Нажмите «Укладывание детей» на панели." # --- Все ушли → «Уход из дома» --------------------------------------------- - id: warm_family_vse_ushli alias: "Тёплый дом · Все ушли (presence)" description: "Когда последний человек покинул зону дома — запускает уход." trigger: - platform: state entity_id: group.family to: not_home for: "00:05:00" # 5 минут, чтобы не срабатывать на «вышел к машине» action: - service: script.turn_on target: { entity_id: script.uhod_iz_doma } # --- Кто-то вернулся → «Возвращение домой» --------------------------------- - id: warm_family_kto_to_vernulsya alias: "Тёплый дом · Возвращение домой (presence)" trigger: - platform: state entity_id: group.family from: not_home to: home action: - service: script.turn_on target: { entity_id: script.vozvrashchenie_domoj } # --- Ребёнок проснулся ночью: движение в детской/коридоре ночью ------------- - id: warm_family_rebenok_prosnulsya alias: "Тёплый дом · Движение ночью в детской зоне" description: "Ночью мягко подсвечивает путь, если ребёнок встал." trigger: - platform: state entity_id: - binary_sensor.dvizhenie_koridor - binary_sensor.dvizhenie_detskaya_1 - binary_sensor.dvizhenie_detskaya_2 - binary_sensor.dvizhenie_detskaya_3 to: "on" condition: # Только когда включён ночной режим (или input_boolean.night). - condition: state entity_id: input_boolean.night state: "on" action: - service: script.turn_on target: { entity_id: script.rebenok_prosnulsya } # --- ТРЕВОГА: дым / CO / протечка / взлом ----------------------------------- - id: warm_family_trevoga alias: "Тёплый дом · ТРЕВОГА (дым/CO/протечка/взлом)" description: "Любой из критических датчиков → сценарий «Тревога»." mode: single trigger: - platform: state entity_id: - binary_sensor.dym_kuhnya # дым - binary_sensor.dym_gostinaya - binary_sensor.co_kotelnaya # угарный газ - binary_sensor.protechka_vannaya # протечка - binary_sensor.protechka_kuhnya to: "on" action: - service: script.turn_on target: { entity_id: script.trevoga } # --- Взлом при поставленной охране ------------------------------------------ - id: warm_family_vzlom alias: "Тёплый дом · Взлом (охрана сработала)" trigger: - platform: state entity_id: alarm_control_panel.dom to: triggered action: - service: script.turn_on target: { entity_id: script.trevoga } # --- Ночной тариф: включить/выключить по времени ---------------------------- - id: warm_family_nochnoj_tarif_on alias: "Тёплый дом · Ночной тариф — старт" trigger: - platform: time at: input_datetime.night_tariff_start action: - service: script.turn_on target: { entity_id: script.ekonomiya_nochnoj_tarif } - id: warm_family_nochnoj_tarif_off alias: "Тёплый дом · Ночной тариф — конец" trigger: - platform: time at: input_datetime.night_tariff_end action: - service: input_boolean.turn_off target: { entity_id: input_boolean.night_tariff } # Останавливаем «тяжёлые» нагрузки, чтобы не работали по дневному тарифу. - service: switch.turn_off target: entity_id: - switch.bojler - switch.stiralnaya # --- Тихий режим: пока включён quiet_hours, уведомления не шумят ------------- # (Практика: в самих notify-сценариях можно проверять это состояние. # Здесь — пример: приглушаем громкость мультирума при входе в тихий час.) - id: warm_family_quiet_hours_volume alias: "Тёплый дом · Тихий час — приглушить звук" trigger: - platform: state entity_id: input_boolean.quiet_hours to: "on" action: - service: media_player.volume_set target: { entity_id: media_player.ves_dom } data: { volume_level: 0.12 } # --- Напоминание проветрить, когда днём долго никого нет --------------------- - id: warm_family_provetrit alias: "Тёплый дом · Напоминание проветрить" trigger: - platform: state entity_id: group.family to: not_home for: "04:00:00" condition: - condition: state entity_id: input_boolean.eco state: "on" action: - service: notify.family_adults data: message: "🍃 Дома давно никого — не забудьте проветрить по возвращении."