Тёплая панель Home Assistant для большой семьи
Тема warm_home, дашборд «Тёплый дом», сценарии (scripts+automations) и helpers. Все entity_id — плейсхолдеры, деплоя нет. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Up44uyffFr8MuxiqfB61Uv
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
# HA секреты — не коммитить
|
||||
secrets.yaml
|
||||
.repo-payload.json
|
||||
@@ -0,0 +1,147 @@
|
||||
# 🏡 Тёплый дом — панель Home Assistant для большой семьи
|
||||
|
||||
Готовый набор для Home Assistant, который превращает умный дом в **тёплое,
|
||||
спокойное и понятное всем место**: маме, папе и детям. Кремовые тона, дерево и
|
||||
терракота, крупные кнопки, мягкий вечерний свет и сценарии, которые сами
|
||||
заботятся о доме — утром будят по-доброму, вечером греют, ночью тихо
|
||||
подсвечивают дорожку ребёнку до туалета.
|
||||
|
||||
Всё на **стандартном Home Assistant** — без HACS и сторонних модулей. Ставится
|
||||
за вечер, дальше только подставляете свои устройства.
|
||||
|
||||
---
|
||||
|
||||
## Что внутри
|
||||
|
||||
- 🎨 **Тёплая тема** `warm_home` — кремовый фон, тёплое дерево/терракота, мягкий
|
||||
янтарь для «включено», приглушённый зелёный для «эко». Крупные скруглённые
|
||||
карточки, мягкие тени, читаемый шрифт. Есть светлый (день) и уютный тёмный
|
||||
(вечер) режимы — переключаются сами.
|
||||
- 📊 **Дашборд «Тёплый дом»** — вкладки:
|
||||
- **Дом** — крупные кнопки-сцены, погода, «кто дома», режимы;
|
||||
- **Комнаты** — гостиная, кухня, детские, спальня, ванная (тёплый пол),
|
||||
прихожая: свет, климат, шторы;
|
||||
- **Дети** — ночники, «тихий час», «спать», климат детских;
|
||||
- **Безопасность** — охрана, двери/окна, дым/CO/протечка, камеры;
|
||||
- **Энергия** — потребление, эко-режим, ночной тариф.
|
||||
- 🤖 **Сценарии** (scripts + automations) для семейного дома — по времени суток и
|
||||
по ситуациям (список ниже).
|
||||
- 🎚️ **Помощники-режимы** — флажки `family_mode`, `guests`, `movie`, `night`,
|
||||
`eco`, `quiet_hours` и расписание подъёма/отбоя.
|
||||
|
||||
---
|
||||
|
||||
## Как выглядит
|
||||
|
||||
> Тёплая палитра «домашнего очага»:
|
||||
|
||||
| Роль | Цвет |
|
||||
|---|---|
|
||||
| Фон (кремовый) | `#f6efe6` |
|
||||
| Карточки (тёплый белый) | `#fffaf3` |
|
||||
| Главный акцент (дерево/терракота) | `#c9743a` |
|
||||
| Второй акцент (мягкий янтарь, «включено») | `#e0a458` |
|
||||
| «Эко» (приглушённый зелёный) | `#7d9464` |
|
||||
| Текст (тёплый тёмно-коричневый) | `#3a332c` |
|
||||
|
||||
Карточки скруглены (радиус 18px), тени мягкие и тёплые, кнопки-сцены — крупные,
|
||||
чтобы попадал и ребёнок, и бабушка. Вечером тема сама уходит в тёплый тёмный
|
||||
режим, чтобы не бить по глазам.
|
||||
|
||||
---
|
||||
|
||||
## Сценарии
|
||||
|
||||
**По времени суток:**
|
||||
|
||||
- ☀️ **Утро · будни** — плавный подъём: детские мягко разгораются по расписанию
|
||||
школы, приоткрываются шторы, греется тёплый пол в ванной, приходит погода на
|
||||
сегодня, включается кофе.
|
||||
- 🌤️ **Утро · выходные** — позже и тише, без будильников, детей не трогаем.
|
||||
- 🏃 **День · никого нет** — эко-режим: климат в экономию, свет гаснет,
|
||||
напоминание проветрить.
|
||||
- 🌆 **Вечер** — тёплый свет 2700K, сцена ужина на кухне, подсветка за ТВ.
|
||||
- 🌙 **Ночь · отбой** — всё приглушаем, детские ночники, охрана периметра,
|
||||
мягкая проверка «всё выключено?».
|
||||
|
||||
**Ситуации:**
|
||||
|
||||
- 🚪 **Уход из дома** (все ушли, по presence) — свет off, климат эко, охрана,
|
||||
проверка открытых окон/дверей, запуск роботов-пылесосов.
|
||||
- 🏡 **Возвращение домой** — свет по времени суток, климат в комфорт, тёплое
|
||||
приветствие.
|
||||
- 👋 **Гости** — приветливый ровный свет, музыка, комфортный климат.
|
||||
- 🎬 **Кино** — затемнить гостиную, подсветка ТВ, «не беспокоить».
|
||||
- 😴 **Укладывание детей** — ночники warm dim, колыбельная/белый шум, дом
|
||||
притихает, тихий режим уведомлений.
|
||||
- 🌛 **Ребёнок проснулся ночью** — по движению в детской/коридоре мягкая
|
||||
подсветка пути в туалет на 10–15%, без яркого света, и сама гаснет.
|
||||
- 🚨 **Тревога** (дым/протечка/CO/взлом) — свет ярко везде, голосовое оповещение,
|
||||
уведомление всем взрослым, перекрытие воды при протечке.
|
||||
- 💡 **Экономия · ночной тариф** — тяжёлые нагрузки (бойлер, стиралка,
|
||||
посудомойка) на дешёвое время, климат-эко ночью.
|
||||
- 🤒 **Болеет ребёнок** — климат и увлажнитель в его комнате, мягкий свет, тихий
|
||||
режим уведомлений.
|
||||
- 🎉 **Праздник · День рождения** — праздничная цветная сцена и музыка.
|
||||
|
||||
Каждый сценарий обильно прокомментирован и **не привязан к реальным
|
||||
устройствам** — везде понятные плейсхолдеры (`light.gostinaya`,
|
||||
`climate.detskaya_1`, `binary_sensor.protechka_vannaya` …), которые вы меняете на
|
||||
свои.
|
||||
|
||||
---
|
||||
|
||||
## Установка (коротко)
|
||||
|
||||
1. Скопировать `themes/`, `packages/`, `lovelace/` в папку конфигурации HA.
|
||||
2. Включить тему, пакеты и дашборд в `configuration.yaml`:
|
||||
```yaml
|
||||
frontend:
|
||||
themes: !include_dir_merge_named themes
|
||||
homeassistant:
|
||||
packages: !include_dir_named packages
|
||||
lovelace:
|
||||
dashboards:
|
||||
warm-home:
|
||||
mode: yaml
|
||||
title: Тёплый дом
|
||||
icon: mdi:home-heart
|
||||
show_in_sidebar: true
|
||||
filename: lovelace/dashboard.yaml
|
||||
```
|
||||
3. Перезапустить HA, выбрать тему **warm_home** в профиле.
|
||||
4. Заменить entity_id-плейсхолдеры на свои (Инструменты разработчика → Состояния).
|
||||
5. Настроить группу уведомлений `notify.family_adults`, TTS и код охраны.
|
||||
|
||||
Подробно, по шагам и со скриншотами настроек — **[docs/SETUP.md](docs/SETUP.md)**.
|
||||
|
||||
---
|
||||
|
||||
## Структура репозитория
|
||||
|
||||
```
|
||||
ha-warm-family-panel/
|
||||
├── README.md # этот файл
|
||||
├── helpers.yaml # флажки-режимы, расписание, температуры
|
||||
├── themes/
|
||||
│ └── warm_home.yaml # тёплая тема Lovelace
|
||||
├── lovelace/
|
||||
│ └── dashboard.yaml # дашборд «Тёплый дом» (5 вкладок)
|
||||
├── packages/
|
||||
│ └── family_scenarios.yaml # сценарии: scripts + automations
|
||||
└── docs/
|
||||
└── SETUP.md # пошаговая установка
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Заметки
|
||||
|
||||
- Ничего никуда не деплоится и не трогает реальные дома — это чистый шаблон.
|
||||
Всё живёт только в вашем Home Assistant, когда вы сами его туда положите.
|
||||
- Конфиги — валидный YAML под структуру Home Assistant (packages / themes /
|
||||
lovelace YAML-режим).
|
||||
- Плейсхолдер-сущности безопасны: несуществующие показываются как «недоступно» и
|
||||
не ломают панель. Заменяйте постепенно.
|
||||
|
||||
Пусть дом будет тёплым 🤍
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
# Установка «Тёплого дома» в Home Assistant
|
||||
|
||||
Небольшая пошаговая инструкция. Ничего сложного — минут на 15, дальше только
|
||||
подставляете свои устройства. Всё на стандартном Home Assistant, HACS и сторонние
|
||||
модули не нужны.
|
||||
|
||||
> Путь к папке конфигурации HA дальше обозначаю как `<config>` — это папка, где
|
||||
> лежит ваш `configuration.yaml` (в Supervised/HAOS обычно `/config`).
|
||||
|
||||
---
|
||||
|
||||
## 1. Скопировать файлы
|
||||
|
||||
Положите содержимое репозитория в папку конфигурации так:
|
||||
|
||||
```
|
||||
<config>/
|
||||
├── configuration.yaml # ваш существующий — в него добавим пару строк
|
||||
├── themes/
|
||||
│ └── warm_home.yaml # тёплая тема
|
||||
├── packages/
|
||||
│ ├── family_scenarios.yaml # сценарии (scripts + automations)
|
||||
│ └── helpers.yaml # флажки-режимы и расписание (перенести сюда, см. §4)
|
||||
└── lovelace/
|
||||
└── dashboard.yaml # дашборд «Тёплый дом»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Включить тему
|
||||
|
||||
В `configuration.yaml`:
|
||||
|
||||
```yaml
|
||||
frontend:
|
||||
themes: !include_dir_merge_named themes
|
||||
```
|
||||
|
||||
После перезапуска: профиль пользователя (кружок внизу слева) → **Тема** →
|
||||
**«warm_home»**. Можно поставить отдельно каждому члену семьи.
|
||||
|
||||
---
|
||||
|
||||
## 3. Включить пакеты (сценарии)
|
||||
|
||||
В `configuration.yaml`, внутри блока `homeassistant:`:
|
||||
|
||||
```yaml
|
||||
homeassistant:
|
||||
packages: !include_dir_named packages
|
||||
```
|
||||
|
||||
Теперь HA подхватит `packages/family_scenarios.yaml` — все `script:` и
|
||||
`automation:` из него появятся автоматически.
|
||||
|
||||
> Если у вас уже есть `automation: !include automations.yaml` — это нормально,
|
||||
> пакетные автоматизации просто добавятся к вашим. Ничего не перезапишется.
|
||||
|
||||
---
|
||||
|
||||
## 4. Помощники-режимы (helpers)
|
||||
|
||||
Файл `helpers.yaml` заводит флажки-режимы (`input_boolean.family_mode`,
|
||||
`guests`, `movie`, `night`, `eco`, `quiet_hours`, `sick_child`, `party`…),
|
||||
время подъёма/отбоя и пару чисел (эко/комфорт температура).
|
||||
|
||||
Самый простой способ — **положить `helpers.yaml` в папку `packages/`** рядом с
|
||||
`family_scenarios.yaml`. Тогда шага §3 достаточно, и helpers подключатся сами.
|
||||
|
||||
(Альтернатива — подключать по доменам в `configuration.yaml`:
|
||||
`input_boolean: !include ...` и т.д. Но с packages проще.)
|
||||
|
||||
После старта зайдите в **Настройки → Устройства и службы → Помощники** и
|
||||
выставьте:
|
||||
- время подъёма в школу (будни) и в выходные;
|
||||
- время отбоя у детей;
|
||||
- окно ночного тарифа (если он у вас есть);
|
||||
- комфортную и эко-температуру.
|
||||
|
||||
---
|
||||
|
||||
## 5. Добавить дашборд
|
||||
|
||||
В `configuration.yaml`:
|
||||
|
||||
```yaml
|
||||
lovelace:
|
||||
mode: yaml # если у вас уже storage-режим — см. примечание ниже
|
||||
dashboards:
|
||||
warm-home:
|
||||
mode: yaml
|
||||
title: Тёплый дом
|
||||
icon: mdi:home-heart
|
||||
show_in_sidebar: true
|
||||
filename: lovelace/dashboard.yaml
|
||||
```
|
||||
|
||||
> Если основной дашборд у вас в UI-режиме (storage) и переводить его в YAML не
|
||||
> хочется — оставьте `lovelace:` без `mode: yaml`, только с блоком `dashboards:`
|
||||
> и вложенным `warm-home: { mode: yaml, ... }`. Тогда «Тёплый дом» будет
|
||||
> отдельным YAML-дашбордом, а остальные — как были.
|
||||
|
||||
Перезапустите HA (или «Проверить конфигурацию» → «Быстрая перезагрузка» для
|
||||
темы/lovelace).
|
||||
|
||||
---
|
||||
|
||||
## 6. Заменить entity_id на свои
|
||||
|
||||
Это главный шаг. В сценариях и дашборде стоят **понятные плейсхолдеры**:
|
||||
|
||||
| Плейсхолдер | Что это | Ваш пример |
|
||||
|---|---|---|
|
||||
| `light.gostinaya` | свет в гостиной | `light.living_room_ceiling` |
|
||||
| `climate.detskaya_1` | климат/термостат в детской №1 | `climate.kids_1_trv` |
|
||||
| `cover.gostinaya` | шторы/жалюзи гостиной | `cover.living_blind` |
|
||||
| `binary_sensor.protechka_vannaya` | датчик протечки в ванной | `binary_sensor.leak_bath` |
|
||||
| `person.rebenok_1` | член семьи (для «кто дома») | `person.ivan` |
|
||||
| `alarm_control_panel.dom` | охранная панель | ваша `alarm_control_panel.*` |
|
||||
| `weather.dom` | погода | `weather.forecast_home` |
|
||||
| `media_player.ves_dom` | «весь дом» (мультирум) | ваша группа медиаплееров |
|
||||
|
||||
Как найти свои: **Инструменты разработчика → Состояния** — там список всех
|
||||
entity_id. Удобно менять «Найти и заменить» прямо в редакторе файлов (например,
|
||||
через дополнение *File editor* / *Studio Code Server*).
|
||||
|
||||
Несуществующие сущности не ломают панель — они просто покажутся серым
|
||||
«недоступно». Можно заменять постепенно, комната за комнатой.
|
||||
|
||||
---
|
||||
|
||||
## 7. Уведомления и голос
|
||||
|
||||
Сценарии шлют сообщения в `notify.family_adults` и говорят через `tts.speak`.
|
||||
|
||||
**Группа взрослых** — заведите в `configuration.yaml` (пример для мобильного
|
||||
приложения HA):
|
||||
|
||||
```yaml
|
||||
notify:
|
||||
- platform: group
|
||||
name: family_adults
|
||||
services:
|
||||
- service: mobile_app_telefon_mamy # ваши notify.* устройства
|
||||
- service: mobile_app_telefon_papy
|
||||
```
|
||||
|
||||
**Голос (TTS)** — в сценарии `Тревога` и мультирумных сценах используется
|
||||
`tts.speak` и `media_player.ves_dom`. Подставьте свой TTS-движок (HA Cloud,
|
||||
Piper, Yandex и т.п.) и реальный медиаплеер/группу «весь дом».
|
||||
|
||||
**Код охраны** — в сценариях стоит `code: "!secret alarm_code"`. Добавьте в
|
||||
`<config>/secrets.yaml`:
|
||||
|
||||
```yaml
|
||||
alarm_code: "1234" # ваш код
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Проверка
|
||||
|
||||
1. **Разработчик → Проверить конфигурацию** — должно быть «Конфигурация верна».
|
||||
2. Откройте дашборд «Тёплый дом» в боковой панели.
|
||||
3. Нажмите крупную кнопку сцены (например «Вечер») — свет должен отреагировать
|
||||
на тех сущностях, которые вы уже подставили.
|
||||
4. Автоматизации видны в **Настройки → Автоматизации** с префиксом
|
||||
«Тёплый дом · …» — их можно включать/выключать и запускать вручную для теста.
|
||||
|
||||
Готово. Дальше — просто живите в тёплом доме 🏡
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
# =============================================================================
|
||||
# helpers.yaml — вспомогательные сущности «режимов дома» и расписания
|
||||
# -----------------------------------------------------------------------------
|
||||
# Это «переключатели без железа»: флажки-режимы и настройки времени, на которые
|
||||
# опираются сценарии из packages/family_scenarios.yaml. Их можно щёлкать руками
|
||||
# с панели, а можно — из автоматизаций.
|
||||
#
|
||||
# Подключение (один из вариантов):
|
||||
# A) Через packages — просто оставьте helpers как отдельный пакет:
|
||||
# В configuration.yaml: homeassistant: { packages: !include_dir_named packages }
|
||||
# и положите этот файл рядом с family_scenarios.yaml в папку packages/.
|
||||
# B) Или подключите точечно в configuration.yaml:
|
||||
# input_boolean: !include helpers.yaml # (тогда оставьте только блок input_boolean)
|
||||
# Проще всего — держать всё в packages/, см. docs/SETUP.md.
|
||||
# =============================================================================
|
||||
|
||||
# --- Флажки-режимы дома -------------------------------------------------------
|
||||
input_boolean:
|
||||
family_mode:
|
||||
name: Семья дома
|
||||
icon: mdi:home-heart
|
||||
guests:
|
||||
name: Гости
|
||||
icon: mdi:account-group
|
||||
movie:
|
||||
name: Кино
|
||||
icon: mdi:movie-open
|
||||
night:
|
||||
name: Ночь / отбой
|
||||
icon: mdi:weather-night
|
||||
eco:
|
||||
name: Эко-режим
|
||||
icon: mdi:leaf
|
||||
quiet_hours:
|
||||
name: Тихий час
|
||||
icon: mdi:volume-off
|
||||
sick_child:
|
||||
name: Болеет ребёнок
|
||||
icon: mdi:emoticon-sick
|
||||
party:
|
||||
name: Праздник
|
||||
icon: mdi:party-popper
|
||||
vacation:
|
||||
name: В отъезде (отпуск)
|
||||
icon: mdi:bag-suitcase
|
||||
night_tariff:
|
||||
name: Ночной тариф активен
|
||||
icon: mdi:transmission-tower
|
||||
|
||||
# --- Время: расписание школы и подъёма ---------------------------------------
|
||||
input_datetime:
|
||||
school_wake_weekday:
|
||||
name: Подъём в школу (будни)
|
||||
has_date: false
|
||||
has_time: true
|
||||
# Значение по умолчанию — поправьте под свою семью
|
||||
weekend_wake:
|
||||
name: Подъём в выходные
|
||||
has_date: false
|
||||
has_time: true
|
||||
kids_bedtime:
|
||||
name: Отбой у детей
|
||||
has_date: false
|
||||
has_time: true
|
||||
night_tariff_start:
|
||||
name: Начало ночного тарифа
|
||||
has_date: false
|
||||
has_time: true
|
||||
night_tariff_end:
|
||||
name: Конец ночного тарифа
|
||||
has_date: false
|
||||
has_time: true
|
||||
|
||||
# --- Число: сколько градусов держать в «эко» ---------------------------------
|
||||
input_number:
|
||||
eco_temperature:
|
||||
name: Температура в эко-режиме
|
||||
min: 12
|
||||
max: 22
|
||||
step: 0.5
|
||||
unit_of_measurement: "°C"
|
||||
icon: mdi:thermometer-low
|
||||
comfort_temperature:
|
||||
name: Комфортная температура
|
||||
min: 18
|
||||
max: 26
|
||||
step: 0.5
|
||||
unit_of_measurement: "°C"
|
||||
icon: mdi:thermometer
|
||||
|
||||
# --- Выбор: кто из детей сейчас болеет (для сценария «болеет ребёнок») --------
|
||||
input_select:
|
||||
sick_child_room:
|
||||
name: Комната больного ребёнка
|
||||
options:
|
||||
- "Нет"
|
||||
- "Детская 1"
|
||||
- "Детская 2"
|
||||
- "Детская 3"
|
||||
initial: "Нет"
|
||||
icon: mdi:bed
|
||||
@@ -0,0 +1,386 @@
|
||||
# =============================================================================
|
||||
# dashboard.yaml — дашборд «Тёплый дом» (Lovelace, YAML-режим)
|
||||
# -----------------------------------------------------------------------------
|
||||
# Крупные читаемые тайлы для всей семьи. Только стандартные карточки HA —
|
||||
# работает из коробки, без сторонних модулей (HACS не требуется).
|
||||
#
|
||||
# Подключение (см. docs/SETUP.md):
|
||||
# lovelace:
|
||||
# mode: yaml
|
||||
# dashboards:
|
||||
# warm-home:
|
||||
# mode: yaml
|
||||
# title: Тёплый дом
|
||||
# icon: mdi:home-heart
|
||||
# show_in_sidebar: true
|
||||
# filename: lovelace/dashboard.yaml
|
||||
#
|
||||
# ⚠️ Все entity_id ниже — ПЛЕЙСХОЛДЕРЫ (light.gostinaya, climate.detskaya_1…).
|
||||
# Замените на свои: Инструменты разработчика → Состояния.
|
||||
# Несуществующие сущности покажутся серым «недоступно» и не сломают панель.
|
||||
#
|
||||
# Совет: назначьте тему «warm_home» этому дашборду в его настройках (⋮ →
|
||||
# «Изменить дашборд» → «Заголовок» → тема), чтобы всё было в тёплой палитре.
|
||||
# =============================================================================
|
||||
|
||||
title: Тёплый дом
|
||||
views:
|
||||
|
||||
# ───────────────────────────── ГЛАВНАЯ ─────────────────────────────────
|
||||
- title: Дом
|
||||
path: dom
|
||||
icon: mdi:home-heart
|
||||
type: sections
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ── Крупные кнопки-сцены ──
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Сцены дома
|
||||
heading_style: title
|
||||
icon: mdi:gesture-tap-button
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: Утро
|
||||
icon: mdi:weather-sunset-up
|
||||
tap_action: { action: perform-action, perform_action: script.utro_budni }
|
||||
show_state: false
|
||||
- type: button
|
||||
name: Вечер
|
||||
icon: mdi:weather-night-partly-cloudy
|
||||
tap_action: { action: perform-action, perform_action: script.vecher }
|
||||
- type: button
|
||||
name: Отбой
|
||||
icon: mdi:weather-night
|
||||
tap_action: { action: perform-action, perform_action: script.noch_otboj }
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: Ушли
|
||||
icon: mdi:exit-run
|
||||
tap_action: { action: perform-action, perform_action: script.uhod_iz_doma }
|
||||
- type: button
|
||||
name: Вернулись
|
||||
icon: mdi:home-import-outline
|
||||
tap_action: { action: perform-action, perform_action: script.vozvrashchenie_domoj }
|
||||
- type: button
|
||||
name: Кино
|
||||
icon: mdi:movie-open
|
||||
tap_action: { action: perform-action, perform_action: script.kino }
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: Гости
|
||||
icon: mdi:account-group
|
||||
tap_action: { action: perform-action, perform_action: script.gosti }
|
||||
- type: button
|
||||
name: Спать детям
|
||||
icon: mdi:sleep
|
||||
tap_action: { action: perform-action, perform_action: script.ukladyvanie_detej }
|
||||
- type: button
|
||||
name: Праздник
|
||||
icon: mdi:party-popper
|
||||
tap_action: { action: perform-action, perform_action: script.prazdnik }
|
||||
|
||||
# ── Погода ──
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Погода
|
||||
icon: mdi:weather-partly-cloudy
|
||||
- type: weather-forecast
|
||||
entity: weather.dom # замените на свою weather.*
|
||||
show_current: true
|
||||
show_forecast: true
|
||||
forecast_type: daily
|
||||
|
||||
# ── Кто дома (presence) ──
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Кто дома
|
||||
icon: mdi:account-multiple
|
||||
- type: glance
|
||||
show_state: true
|
||||
columns: 3
|
||||
entities:
|
||||
- entity: person.mama # замените на своих людей
|
||||
name: Мама
|
||||
- entity: person.papa
|
||||
name: Папа
|
||||
- entity: person.rebenok_1
|
||||
name: Старший
|
||||
- entity: person.rebenok_2
|
||||
name: Средний
|
||||
- entity: person.rebenok_3
|
||||
name: Младший
|
||||
- type: entities
|
||||
title: Режимы дома
|
||||
entities:
|
||||
- input_boolean.family_mode
|
||||
- input_boolean.guests
|
||||
- input_boolean.eco
|
||||
- input_boolean.quiet_hours
|
||||
- input_boolean.night
|
||||
|
||||
# ───────────────────────────── КОМНАТЫ ─────────────────────────────────
|
||||
- title: Комнаты
|
||||
path: komnaty
|
||||
icon: mdi:floor-plan
|
||||
type: sections
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Гостиная
|
||||
icon: mdi:sofa
|
||||
- type: tile
|
||||
entity: light.gostinaya
|
||||
name: Свет
|
||||
features: [{ type: light-brightness }]
|
||||
- type: thermostat
|
||||
entity: climate.gostinaya
|
||||
- type: tile
|
||||
entity: cover.gostinaya
|
||||
name: Шторы
|
||||
features: [{ type: cover-position }]
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Кухня
|
||||
icon: mdi:silverware-fork-knife
|
||||
- type: tile
|
||||
entity: light.kuhnya
|
||||
name: Свет
|
||||
features: [{ type: light-brightness }]
|
||||
- type: thermostat
|
||||
entity: climate.kuhnya
|
||||
- type: tile
|
||||
entity: switch.kofemashina
|
||||
name: Кофемашина
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Детские
|
||||
icon: mdi:teddy-bear
|
||||
- type: tile
|
||||
entity: light.detskaya_1
|
||||
name: Детская 1 · свет
|
||||
features: [{ type: light-brightness }]
|
||||
- type: tile
|
||||
entity: light.nochnik_detskaya_1
|
||||
name: Детская 1 · ночник
|
||||
features: [{ type: light-brightness }]
|
||||
- type: thermostat
|
||||
entity: climate.detskaya_1
|
||||
- type: tile
|
||||
entity: light.detskaya_2
|
||||
name: Детская 2 · свет
|
||||
features: [{ type: light-brightness }]
|
||||
- type: tile
|
||||
entity: light.detskaya_3
|
||||
name: Детская 3 · свет
|
||||
features: [{ type: light-brightness }]
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Спальня
|
||||
icon: mdi:bed-king
|
||||
- type: tile
|
||||
entity: light.spalnya
|
||||
name: Свет
|
||||
features: [{ type: light-brightness }]
|
||||
- type: thermostat
|
||||
entity: climate.spalnya
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Ванная
|
||||
icon: mdi:shower
|
||||
- type: tile
|
||||
entity: light.vannaya
|
||||
name: Свет
|
||||
- type: thermostat
|
||||
entity: climate.vannaya_teplyj_pol
|
||||
name: Тёплый пол
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Прихожая
|
||||
icon: mdi:coat-rack
|
||||
- type: tile
|
||||
entity: light.prihozhaya
|
||||
name: Свет
|
||||
- type: tile
|
||||
entity: lock.vhodnaya_dver
|
||||
name: Замок
|
||||
|
||||
# ───────────────────────── ДЕТСКАЯ ЗОНА ────────────────────────────────
|
||||
- title: Дети
|
||||
path: deti
|
||||
icon: mdi:teddy-bear
|
||||
type: sections
|
||||
max_columns: 2
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Быстрые сцены для детей
|
||||
icon: mdi:baby-face-outline
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: Ночники
|
||||
icon: mdi:lightbulb-night
|
||||
tap_action:
|
||||
action: perform-action
|
||||
perform_action: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.nochnik_detskaya_1
|
||||
- light.nochnik_detskaya_2
|
||||
- light.nochnik_detskaya_3
|
||||
data: { brightness_pct: 10, kelvin: 2200 }
|
||||
- type: button
|
||||
name: Тихий час
|
||||
icon: mdi:volume-off
|
||||
tap_action:
|
||||
action: perform-action
|
||||
perform_action: input_boolean.toggle
|
||||
target: { entity_id: input_boolean.quiet_hours }
|
||||
- type: button
|
||||
name: Спать
|
||||
icon: mdi:sleep
|
||||
tap_action: { action: perform-action, perform_action: script.ukladyvanie_detej }
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Ночники и климат детских
|
||||
icon: mdi:thermometer
|
||||
- type: entities
|
||||
entities:
|
||||
- light.nochnik_detskaya_1
|
||||
- light.nochnik_detskaya_2
|
||||
- light.nochnik_detskaya_3
|
||||
- climate.detskaya_1
|
||||
- climate.detskaya_2
|
||||
- climate.detskaya_3
|
||||
- input_boolean.sick_child
|
||||
- input_select.sick_child_room
|
||||
|
||||
# ─────────────────────── БЕЗОПАСНОСТЬ ──────────────────────────────────
|
||||
- title: Безопасность
|
||||
path: bezopasnost
|
||||
icon: mdi:shield-home
|
||||
type: sections
|
||||
max_columns: 2
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Охрана
|
||||
icon: mdi:shield-lock
|
||||
- type: alarm-panel
|
||||
entity: alarm_control_panel.dom
|
||||
states: [arm_home, arm_away, arm_night]
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Двери и окна
|
||||
icon: mdi:door
|
||||
- type: entities
|
||||
entities:
|
||||
- binary_sensor.dver_vhodnaya
|
||||
- binary_sensor.okno_gostinaya
|
||||
- binary_sensor.okno_kuhnya
|
||||
- binary_sensor.okno_detskaya_1
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Дым · CO · протечка
|
||||
icon: mdi:smoke-detector-variant
|
||||
- type: glance
|
||||
columns: 3
|
||||
entities:
|
||||
- entity: binary_sensor.dym_kuhnya
|
||||
name: Дым кухня
|
||||
- entity: binary_sensor.dym_gostinaya
|
||||
name: Дым гост.
|
||||
- entity: binary_sensor.co_kotelnaya
|
||||
name: CO
|
||||
- entity: binary_sensor.protechka_vannaya
|
||||
name: Протечка ванная
|
||||
- entity: binary_sensor.protechka_kuhnya
|
||||
name: Протечка кухня
|
||||
- entity: switch.klapan_vody
|
||||
name: Клапан воды
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Камеры
|
||||
icon: mdi:cctv
|
||||
- type: picture-glance
|
||||
title: Прихожая
|
||||
camera_image: camera.prihozhaya
|
||||
entities:
|
||||
- binary_sensor.dver_vhodnaya
|
||||
- type: picture-glance
|
||||
title: Двор
|
||||
camera_image: camera.dvor
|
||||
entities: []
|
||||
|
||||
# ─────────────────────── ЭНЕРГО / ЭКО ──────────────────────────────────
|
||||
- title: Энергия
|
||||
path: energiya
|
||||
icon: mdi:leaf
|
||||
type: sections
|
||||
max_columns: 2
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Потребление
|
||||
icon: mdi:flash
|
||||
- type: gauge
|
||||
entity: sensor.moshchnost_dom # текущая мощность, Вт
|
||||
name: Сейчас
|
||||
unit: W
|
||||
min: 0
|
||||
max: 8000
|
||||
severity: { green: 0, yellow: 3000, red: 6000 }
|
||||
- type: statistics-graph
|
||||
title: За неделю (кВт·ч)
|
||||
chart_type: bar
|
||||
period: day
|
||||
stat_types: [change]
|
||||
entities:
|
||||
- sensor.energiya_dom_kwh # накопленный счётчик, кВт·ч
|
||||
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
heading: Эко и тариф
|
||||
icon: mdi:transmission-tower
|
||||
- type: entities
|
||||
entities:
|
||||
- input_boolean.eco
|
||||
- input_boolean.night_tariff
|
||||
- input_number.eco_temperature
|
||||
- input_number.comfort_temperature
|
||||
@@ -0,0 +1,698 @@
|
||||
# =============================================================================
|
||||
# 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: "🍃 Дома давно никого — не забудьте проветрить по возвращении."
|
||||
@@ -0,0 +1,135 @@
|
||||
# =============================================================================
|
||||
# Тема «Тёплый дом» (warm_home) для Home Assistant / Lovelace
|
||||
# -----------------------------------------------------------------------------
|
||||
# Палитра тёплого семейного дома: кремовый фон, тёплое дерево и терракота,
|
||||
# мягкий янтарь для акцентов, приглушённый зелёный для «эко»-показателей,
|
||||
# тёплый тёмно-коричневый текст. Мягкие тени, крупные скруглённые карточки.
|
||||
#
|
||||
# Установка:
|
||||
# 1. Положите этот файл в <config>/themes/warm_home.yaml
|
||||
# 2. В configuration.yaml добавьте (если ещё нет):
|
||||
# frontend:
|
||||
# themes: !include_dir_merge_named themes
|
||||
# 3. Перезапустите Home Assistant.
|
||||
# 4. Профиль пользователя → тема → «Тёплый дом (warm_home)».
|
||||
#
|
||||
# Тема даёт и светлый, и «вечерний» (тёмный) вариант — HA сам подхватит
|
||||
# нужный по системной настройке день/ночь (modes: light/dark ниже).
|
||||
# =============================================================================
|
||||
|
||||
warm_home:
|
||||
# ---- Базовая палитра (используется переменными ниже) --------------------
|
||||
warm-cream: "#f6efe6" # кремовый фон
|
||||
warm-cream-2: "#efe4d6" # фон чуть темнее (полосы, вторичные блоки)
|
||||
warm-card: "#fffaf3" # тёплый белый — карточки
|
||||
warm-terracotta: "#c9743a" # тёплое дерево / терракота — главный акцент
|
||||
warm-terracotta-d: "#a95c28" # терракота потемнее (нажатия, ховер)
|
||||
warm-amber: "#e0a458" # мягкий янтарь — второй акцент, «включено»
|
||||
warm-green: "#7d9464" # приглушённый зелёный — «эко» / хорошо
|
||||
warm-red: "#c0562f" # тёплый красный — тревога / внимание
|
||||
warm-text: "#3a332c" # тёплый тёмно-коричневый текст
|
||||
warm-text-soft: "#6f6155" # вторичный текст
|
||||
warm-divider: "#e3d5c3" # тёплые разделители
|
||||
warm-shadow: "rgba(120, 82, 45, 0.16)" # мягкая тёплая тень
|
||||
|
||||
# ---- Скругления, тени, шрифт --------------------------------------------
|
||||
ha-card-border-radius: "18px"
|
||||
ha-card-border-width: "0px"
|
||||
ha-card-box-shadow: "0 4px 18px var(--warm-shadow)"
|
||||
card-mod-icon-color: "var(--warm-terracotta)"
|
||||
primary-font-family: "'Nunito', 'Segoe UI', 'Manrope', system-ui, sans-serif"
|
||||
paper-font-common-base_-_font-family: "'Nunito', 'Segoe UI', system-ui, sans-serif"
|
||||
|
||||
# ---- Основные цвета Home Assistant --------------------------------------
|
||||
primary-color: "var(--warm-terracotta)" # главный акцент HA
|
||||
accent-color: "var(--warm-amber)"
|
||||
dark-primary-color: "var(--warm-terracotta-d)"
|
||||
light-primary-color: "var(--warm-amber)"
|
||||
|
||||
# ---- Текст ---------------------------------------------------------------
|
||||
primary-text-color: "var(--warm-text)"
|
||||
secondary-text-color: "var(--warm-text-soft)"
|
||||
text-primary-color: "#fffaf3" # текст на акцентных кнопках
|
||||
disabled-text-color: "#b8a894"
|
||||
|
||||
# ---- Фон и поверхности ---------------------------------------------------
|
||||
primary-background-color: "var(--warm-cream)"
|
||||
secondary-background-color: "var(--warm-cream-2)"
|
||||
divider-color: "var(--warm-divider)"
|
||||
|
||||
# ---- Карточки ------------------------------------------------------------
|
||||
card-background-color: "var(--warm-card)"
|
||||
ha-card-background: "var(--warm-card)"
|
||||
paper-card-background-color: "var(--warm-card)"
|
||||
|
||||
# ---- Шапка / боковая панель ---------------------------------------------
|
||||
app-header-background-color: "var(--warm-terracotta)"
|
||||
app-header-text-color: "#fffaf3"
|
||||
sidebar-background-color: "var(--warm-card)"
|
||||
sidebar-text-color: "var(--warm-text)"
|
||||
sidebar-selected-text-color: "var(--warm-terracotta)"
|
||||
sidebar-selected-icon-color: "var(--warm-terracotta)"
|
||||
sidebar-icon-color: "var(--warm-text-soft)"
|
||||
|
||||
# ---- Иконки / состояния --------------------------------------------------
|
||||
state-icon-color: "var(--warm-text-soft)"
|
||||
state-icon-active-color: "var(--warm-amber)" # «включено» — тёплый янтарь
|
||||
paper-item-icon-color: "var(--warm-text-soft)"
|
||||
paper-item-icon-active-color: "var(--warm-amber)"
|
||||
|
||||
# ---- Осмысленные состояния (свет/климат/сенсоры) ------------------------
|
||||
state-light-active-color: "var(--warm-amber)"
|
||||
state-switch-active-color: "var(--warm-terracotta)"
|
||||
state-climate-heat-color: "var(--warm-terracotta)"
|
||||
state-climate-cool-color: "#6f97a8"
|
||||
state-binary_sensor-active-color: "var(--warm-red)" # открыто/движение/тревога
|
||||
|
||||
# ---- Переключатели / слайдеры / кнопки ----------------------------------
|
||||
switch-checked-color: "var(--warm-terracotta)"
|
||||
switch-unchecked-color: "#c3b3a1" # выключено — приглушённый тёплый серо-беж
|
||||
paper-slider-active-color: "var(--warm-terracotta)"
|
||||
paper-slider-knob-color: "var(--warm-terracotta)"
|
||||
paper-toggle-button-checked-bar-color: "var(--warm-terracotta)"
|
||||
mdc-theme-primary: "var(--warm-terracotta)"
|
||||
mdc-theme-secondary: "var(--warm-amber)"
|
||||
|
||||
# ---- Семантика «хорошо / внимание / ошибка» -----------------------------
|
||||
success-color: "var(--warm-green)"
|
||||
warning-color: "var(--warm-amber)"
|
||||
error-color: "var(--warm-red)"
|
||||
info-color: "var(--warm-terracotta)"
|
||||
|
||||
# ---- Метки/чипы графиков (тёплая гамма) ---------------------------------
|
||||
# Ряды на графиках энергопотребления и датчиков.
|
||||
graph-color-1: "var(--warm-terracotta)"
|
||||
graph-color-2: "var(--warm-amber)"
|
||||
graph-color-3: "var(--warm-green)"
|
||||
graph-color-4: "#b98a5e"
|
||||
|
||||
# =========================================================================
|
||||
# Режимы: светлый (день) и тёплый вечерний (ночь).
|
||||
# HA автоматически переключает по системной теме / времени суток.
|
||||
# =========================================================================
|
||||
modes:
|
||||
light:
|
||||
warm-cream: "#f6efe6"
|
||||
warm-cream-2: "#efe4d6"
|
||||
warm-card: "#fffaf3"
|
||||
warm-text: "#3a332c"
|
||||
warm-text-soft: "#6f6155"
|
||||
warm-divider: "#e3d5c3"
|
||||
warm-shadow: "rgba(120, 82, 45, 0.16)"
|
||||
|
||||
dark:
|
||||
# Вечерний тёплый режим — приглушённый, глаза отдыхают.
|
||||
warm-cream: "#2b2320" # тёмно-кофейный фон
|
||||
warm-cream-2: "#342a25"
|
||||
warm-card: "#39302a" # тёплые тёмные карточки
|
||||
warm-text: "#f2e7d8" # тёплый светлый текст
|
||||
warm-text-soft: "#c3b3a1"
|
||||
warm-divider: "#4a3d34"
|
||||
warm-shadow: "rgba(0, 0, 0, 0.45)"
|
||||
# Акценты в тёмном режиме чуть теплее и мягче
|
||||
warm-terracotta: "#d78850"
|
||||
warm-amber: "#e8b56b"
|
||||
warm-green: "#93a878"
|
||||
Reference in New Issue
Block a user