Не так давно стал владельцем 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 секунду добавил на всякий случай.
Сама команда доступна по ссылке ниже, не забудьте указать название вашего сервера.
Вот и все, чем я хотел поделиться. Большое спасибо за прочтение, обнял