Тёплая панель 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:
german
2026-09-03 22:33:14 +03:00
co-authored by Claude Opus 4.8
commit f5eac43a58
7 changed files with 1640 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
# HA секреты — не коммитить
secrets.yaml
.repo-payload.json
+147
View File
@@ -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
View File
@@ -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
View File
@@ -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
+386
View File
@@ -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
+698
View File
@@ -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: "🍃 Дома давно никого — не забудьте проветрить по возвращении."
+135
View File
@@ -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"