Сначала политика уведомлений, потом автоматизации
Отправить фразу на колонку технически несложно. Главная задача — решить, когда дом вообще имеет право заговорить. Если свет, двери, датчики и камеры комментируют каждое изменение, через несколько дней любой голосовой интерфейс начинают игнорировать.
Поэтому в проекте голос — не лог событий. Это канал для короткой информации, которая меняет действие человека прямо сейчас.
Рабочий пример: ворота
Сценарий строится от фактического состояния ворот, а не от команды «открыть». Когда система видит реальное изменение положения, Станция Макс в гостиной может сказать: «ворота открыты». Это короткая фраза без лишних деталей.
Если ворота остаются открыты дольше допустимого, это уже другое событие и другая важность. Оно не должно каждые 30 секунд повторять одно и то же: напоминание создаётся отдельным таймером и с ограничением повторов.
Реальный пример: человек у калитки
Камера и Frigate могут определить человека, а распознавание лица — добавить имя при достаточной уверенности. Для голосового канала полезна только короткая итоговая фраза. Все изображения, точное время и детали события лучше оставить Telegram.
Так голосовая колонка сообщает смысл, а не пересказывает весь pipeline компьютерного зрения.
Почему гостиная — основной канал днём
Станция Макс в гостиной находится в общей зоне, поэтому туда логично направлять обычные дневные события. Не нужно заставлять каждую колонку в доме повторять одну и ту же фразу. Чем меньше устройств говорят одновременно, тем легче понять, что именно произошло.
Ночная маршрутизация
Ночью важность события определяется не громкостью, а адресатом. Критическое сообщение должно прозвучать в спальне, если оно требует реакции взрослого. Обычное событие ночью может вообще не озвучиваться и уйти только в телефон.
Антиспам: без него голос быстро становится бесполезным
- debounce: кратковременные изменения состояния не озвучиваются сразу;
- cooldown: одинаковая фраза не повторяется слишком часто;
- dedup: одно физическое событие от нескольких сенсоров превращается в одно сообщение;
- escalation: повтор появляется только если проблема не исчезла;
- recovery: сообщение «всё нормально» используется только там, где действительно нужно закрыть тревогу.
Голос и Telegram не конкурируют
Telegram в проекте остаётся лучшим местом для снимка с камеры, статусов, истории, кнопок и диагностики. Голосовая колонка должна произнести максимум одну короткую мысль. Если фраза становится похожа на отчёт — её место уже не в TTS.
Как устроены голосовые объявления дома
Ниже два фрагмента рабочего контура. Слева — реальное меню управления умным домом в Telegram-боте, справа — настоящее событие Telegram. Оба скриншота сняты с рабочего контура.
Меню управления домом
Здесь собраны текущие статусы и быстрые действия Telegram-бота. Это реальный экран управления из рабочего контура, а не интерфейс Home Assistant.
Telegram получает детали
Телефон получает уже итог события: то, что человеку действительно нужно увидеть, не превращая голосовую колонку в журнал диагностики.
Как формируется фраза
Хорошее сообщение состоит из факта и, при необходимости, действия: «Ворота открыты», «Обнаружена протечка на кухне», «У калитки Артём». Не нужны технические названия entity, проценты confidence и внутренние имена камер.
Технические детали полезны разработчику системы, но человеку дома нужен человеческий смысл.
Контекст, который будет добавляться дальше
Отдельное правило для тревог
Критическая тревога не должна зависеть только от голосовой колонки. Если событие действительно важное — протечка, пожарный сигнал, потеря критического узла — параллельно должен существовать второй канал: Telegram, push или другой независимый путь.
Колонка удобна, но она не является гарантированным аварийным оповещателем сама по себе.
Дом говорит только тогда, когда это полезно
Следующий слой — единая матрица приоритетов для камер, ворот, протечек, сети и режимов дома.
