Найти тему
Мой умный дом

Передаем сообщение через Siri на колонку с Алисой используя Home Assistant

Оглавление
Обложка статьи
Обложка статьи

Не так давно стал владельцем iPhone и погрузился в удивительный мир встроенной возможности создания скриптов и автоматизаций штатными средствами системы. На самом деле выбор действий, который можно использовать довольно велик, но вот придумать что-то полезное на практике оказалось довольно проблематично.

Единственное, что удалось придумать для умного дома - это распознавать произнесенный текст, передавать его на сервер умного дома и озвучивать на Яндекс станции. К сожалению я пока не смог придумать как получить обратную связь, если необходимо передать информацию с колонки на телефон. Для корректной работы необходимо чтобы колонки были добавлены в HA через интеграцию YandexStation от AlexxIT.

Пример работы готового решения показан на видео ниже. Данный сценарий можно запускать вызвав Siri из любого места в системе или добавить на экран блокировки с помощью дополнительного приложения. Ссылку на шорткат прикрепил в конце статьи.

Часть 1 - подготовка сервера

Для начала необходимо создать 2 вспомогательных текстовых элемента. Это можно сделать перейдя в настройки Home Assistant -> Устройства и службы -> Вспомогательное. Настройки элементов я оставил по умолчанию изменив только имя. В моем случае элемент yashortcut - хранит в себе распознанный текст, а yashortcut_device - название сущности колонки, на которую необходимо передать сообщение.

Вспомогательные объекты для автоматизации
Вспомогательные объекты для автоматизации

Воспроизведение текста колонкой выполняется при помощи следующей автоматизации:

1. Если текст в поле yashortcut изменяется, то это служит триггером для начала работы автоматизации.

Триггер автоматизации
Триггер автоматизации

2. Вызываем службу media_player.play_media и передаем данные при помощи шаблонов. Подробнее про использование данной службы можно прочитать на странице автора.

Выполнение действий автоматизации
Выполнение действий автоматизации

Часть 2 - Обработка и передача данных

Дальше нужно создать новую команду в приложении Команды на телефоне.

Либо я чего-то не понимаю, либо работа с объектами в Siri Shortcuts реализована не лучшим образом. Я так и не разобрался, как дать определенному словарю отдельное имя, чтобы в дальнейшем точно знать какой конкретно словарь использовать в данный момент. Так что пойдем по порядку и разберем каждое из действий.

1. Первым делом я сделал так, чтобы iphone произносил фразу "Что нужно передать?" и начинал слушать речь с дальнейшей расшифровкой.

Начало автоматизации
Начало автоматизации

К распознанному тексту мы вернемся в самом конце скрипта.

2. Следующим шагом является создание словаря (списка), который в качестве ключа содержит название комнаты, а в качестве значения entity_id колонки в HA. После чего мы формируем уведомление с названиями комнат из ключей словаря и выбираем название сущности нашего из словаря по ключу (комнате).

Создаем список комнат и уведомление
Создаем список комнат и уведомление

3. Дальше мы передаем полученное значение в новый словарь (это необходимо для работы с официальным приложением HA на ios) и изменяем поле yashortcut в самом HA с помощью вызова службы input_text.set_value.

Передаем на сервер выбранную колонку
Передаем на сервер выбранную колонку

Таким образом мы указали какая колонка должна быть задействована при срабатывании автоматизации.

4. И наконец - мы делаем практически тоже самое что и на прошлом шаге, но теперь в новом словаре в качестве значения мы используем распознанный текст из самого начала шортката и снова передаем данные в HA. Паузу в 1 секунду добавил на всякий случай.

Передаем на сервер распознанный текст и ждем запуска автоматизации :)
Передаем на сервер распознанный текст и ждем запуска автоматизации :)

Сама команда доступна по ссылке ниже, не забудьте указать название вашего сервера.

Shortcuts

Вот и все, чем я хотел поделиться. Большое спасибо за прочтение, обнял