Найти в Дзене
HASSStas: Рецепты HomeAssistant

Алиса: озвучивание событий

Третье, что мне хотелось от Яндекс.Станции - это озвучивание каких-либо событий.

Изображение с сайта 3dnews.ru
Изображение с сайта 3dnews.ru

Напомню, первое - это проигрывание музыки, о чём я уже писал ранее. Кстати, если кто не знает, примерно с декабря Яндекс.Станции умеют мультирум (одновременное и синхронное проигрывание одного контента на разных станциях).

Второе, о чём я ещё только буду писать - это управление устройствами умного дома голосом, но это отдельная интеграция с не самой простой настройкой, сначала надо разобраться с тем, что есть.

Итак: озвучивание каких-либо событий.

Тут, на самом деле, всё достаточно просто. После того, как мы подключили Яндекс.Станцию любого формата в наш HomeAssistant, мы получили возможность отправлять на неё любые команды. В простом примере - команду включить музыку. Но это не единственное, что можно отправить на станцию.

Помимо контента и команды на станцию можно отправить обычный текст, который станция произнесёт голосом Алисы. Делается это так же, как и отправка команды:

- service: media_player.play_media
entity_id: media_player.yandex_station_[...]
data:
media_content_id: Привет, мой господин!
media_content_type: text

Эту конструкцию можно использовать в автоматизациях и скриптах, а так же напрямую при нажатии кнопки. По первости я баловался шаблонными разговорами Алисы с дочерью, очень помогало сказать что-то в духе "Лена, пора спать", и ребёнок бежит укладываться в кровать. Или "Лена, надо покушать", и ложка мелькает на радость маме.

Вот, например, мой скрипт выключения мультиков по расписанию (scripts.yaml):

stop_multik:
  alias: Выключить мультики в 21:00
sequence:
- service: media_player.play_media
entity_id: media_player.yandex_station_[...]
data:
media_content_id: Телевизор устал и пошёл спать. Спокойной ночи.
media_content_type: text
  - service: media_player.select_source
data:
entity_id: media_player.tv_box
source: '!com.liskovsoft.smarttubetv.beta'
- service: script.turn_on
entity_id: script.media_toggle_display

Как видно из названия, скрипт выключает мультики в 21:00, при этом в скрипте последовательно выполняются три действия:

  • на Яндекс.Станцию отправляется текст "Телевизор устал и пошёл спать. Спокойной ночи", чтобы было понятно, почему вдруг телевизор внезапно выключился;
  • на медиа-приставку отправляется команда завершить приложение SmartTube beta (клиент Ютуба), при этом происходит переход в лончер;
  • на телевизор отправляется команда погасить экран.

Кроме этого, аналогичные озвучки у меня используются на разных датчиках, например на индикаторах плесени, при превышении порогового значения, отправляется команда на станцию - сообщить, что в какой-то комнате слишком влажно и пора проветрить:

action:
- service: media_player.play_media
  entity_id: media_player.yandex_station_ff98f029a78650ae25f9e027
  data:
    media_content_id: "Высокая влажность {{ zone_entity }}, надо бы проветрить"
    media_content_type: text

К слову о таких автоматизациях: не так давно в HomeAssistant появились так называемые bluerpints, или, по-русски, схемы - это шаблоны скриптов и автоматизаций, в которые можно передавать наборы параметров, чтобы не прописывать для похожих вещей одни и те же автоматизации по нескольку раз. Например у меня пять индикаторов плесени, и вызов голосового оповещения для каждого из них сделан через вызов такой схемы и в результате, если я захочу что-то поменять, мне не придётся пять раз менять скрипт автоматизации для каждого индикатора, а достаточно поменять схему.

Об этом, я думаю, я напишу в следующей заметке, так что stay tuna.