From 8502f72ccac236ce6ff3c5a64d0c2dc6cede6ffc Mon Sep 17 00:00:00 2001 From: Stream Date: Wed, 15 Apr 2026 13:50:01 +0300 Subject: [PATCH] auto-sync: 2026-04-15 13:50:01 --- tasks/ha-availability-dashboard/TZ.md | 31 +++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/tasks/ha-availability-dashboard/TZ.md b/tasks/ha-availability-dashboard/TZ.md index 53622b1..99fa043 100644 --- a/tasks/ha-availability-dashboard/TZ.md +++ b/tasks/ha-availability-dashboard/TZ.md @@ -6,7 +6,7 @@ ## Метрика **Доступность** = время в статусе «доступен» / общее время периода × 100% -- «Доступен» — любой статус, кроме `unavailable` и `unknown` +- «Доступен» — любой статус, кроме `unavailable` и `unknown`. **Важно:** статус `off` (выключенное устройство) считается доступным — выключено ≠ недоступно - «Недоступен» — статус `unavailable` или `unknown` - Результат: процент (0%–100%), один знак после точки @@ -92,9 +92,32 @@ sensor.avail_light_bra_v_spalne: ### Рекомендация: Вариант A (AppDaemon) Оптимальный баланс. Изолированный Python-скрипт, batch-обработка, легко масштабировать. +### Cold-start (первичная загрузка и перезапуск) +При запуске AppDaemon (или после перезапуска HA) — **полный пересчёт текущего активного периода** для всех устройств. Не ждать следующего расписания — данные должны быть актуальны сразу. + +**Rate-limit при batch-запросах:** 180 устройств × 30 дней истории — ощутимая нагрузка на HA API. Разбивать на батчи по ~20 entity_id с паузой 1 сек между запросами. Показывать прогресс: `sensor.avail_calc_progress` с состоянием `"47/180"` или `"idle"`. + ## Дашборд -### Карточка: список устройств с визуалом +### Группировка по комнатам/зонам +Устройства группируются по **HA areas** (комнатам). Если у устройства нет area — группа «Без комнаты». + +- Каждая группа — **сворачиваемая секция** с заголовком: `🛏️ Спальня (12 устройств, 97.2%)` +- В заголовке: иконка комнаты, средняя доступность по группе, количество устройств +- По умолчанию: проблемные комнаты (средний % < 95%) раскрыты, остальные свёрнуты +- Сортировка комнат: сначала проблемные, потом по средней доступности (по убыванию) + +### Мобильная адаптация +На экранах < 768px (мобильный вид): +- **Убрать sparkline** — не помещается +- **Компактная строка:** иконка + friendly name + цветной процент (крупный) +- **Прогресс-бар** — тонкий, одна линия (не блок) +- **Сводка падений** — скрыта, раскрывается по тапу (expandable) +- **Группы комнат** — свёрнуты по умолчанию, тап раскрывает список + +Десктопный вид — как описано ниже (полный). + +### Карточка: список устройств с визуалом (десктоп) **Прогресс-бар + сводка для каждого устройства:** ``` @@ -185,7 +208,7 @@ def calc_availability(history_entries, period_start, period_end): - Если устройство удалено — перестать показывать на дашборде ## Что нужно от Славы -1. Подтвердить вариант реализации (рекомендую B — AppDaemon/Python) +1. Подтвердить вариант реализации (рекомендую A — AppDaemon/Python) 2. Увеличить `purge_keep_days` до 35 (иначе не будет данных за месяц) -3. Установить AppDaemon (если выбран вариант B) — или подтвердить другой вариант +3. Установить AppDaemon (если выбран вариант A) — или подтвердить другой вариант 4. Подтвердить список исключений (какие entity не отслеживать)