Таймеры, несколько команд устройству, TTS (Node-RED)
Требуются прямые руки И вдумчивое отношение к инструкции
Мы не несём никакой ответственности за правильное или неправильное применение, или неприменение, и/или неспособность применить данное руководство.
Телефон вызова экстренных служб - 112.
Телефон вызова экстренных служб - 112.
Постановка задачи
Часто в нашем тг-чате задаются вопросы вида "Как посылать любые текстовые сообщения или команды на колонку?"
Задача:
Мне хочется, чтобы колонки (Ирбис и Мини) автоматически на ночь стихали, а утром возвращались на дневную громкость. Встроенные скрипты Яндекса пока не умеют в таймеры, а говорить каждый вечер "Алиса, тихо" - не круто.
Решение:
- В 21:59 на обе колонки отправляется текстовое оповещение: "Через минуту я убавлю громкость на 2";
- В 22:00 - сами команды на убавление громкости.
- В 8:59 - команды установки громкости на 6.
- В 9:00 - текстовое оповещение "Настало 9 утра, я установила громкость на 6".
Теперь о том, как это всё реализовать.
Нам понадобится Node-RED и немного терпения (за основу взята статья с homever.ru).
Установка Node-RED
Возможны 2 варианта установки:
- У вас уже есть свой локальный сервер УД, то ставить прям рядом с ним (скорее всего, это будет какая-то малинка).
- У вас нет сервера. Тогда необходимо развернуть виртуальную машину и установить в ней node-red.
Что это за зверь, и как его устанавливать, описано здесь.
Вторым действием устанавливаем ноду, которая будет взаимодействовать с колонкой:
npm install node-red-contrib-yandex-alice-command
Страница автора ноды здесь (не забудьте закинуть "на пивко" автору ;)
- Перезапускаем node-RED (в зависимости от варианта установки - командой перезапуска "node-red-stop/start" или перезагрузкой всей виртуалки).
- Открываем веб-интерфейс и находим ноду "Speaker", в которой будет единственная нода: "alice send".
- Кидаем ноду на форму, двойным кликом по ноде "alice send" открываем её свойства, видим 3 пункта:
- Name - для удобства задается имя, которое будет отображено на форме;
- Yandex login - ваш аккаунт яндекса (кто боится вводить свой акк - читать доку/исходный код/отказаться от этой идеи);
- Command type - 2 варианта: "text to speach" и "voice command". Первый - произнести текст, второй - выполнить команду.
Автор рекомендует указать token и cookies, чтобы уменьшить задержки выполнения команд. Как их получить - смотрите на странице проекта.
На этом настройка ноды закончена. Дальше включаем фантазию и предлагаем свои идеи для использования этой фичи.
Отправка текста на колонку
- Из ноды "common" нам понадобится "inject", кидаем её на форму;
- Внутри находим "payload", выбираем тип "string" и пишем текст для проверки (привет, мир!);
- В нашей ноде "alice send" выбираем тип "command type": "text to speach";
- Соединяем "инжект" с нодой "alice send";
- В верхнем правом углу ОБЯЗАТЕЛЬНО нажимаем кнопку "Deploy";
- Нажимаем у "инжекта" слева кнопку запуска/посыла текста, и через пару секунд колонка должна произнести указанный текст.
Отправка команды
Всё точно так же, только "command type" укажем "voice command". Если теперь в "инжект" прописать "Включи мою музыку" - выполнится команда включения музыки.
Для справки: "инжект" выполняет команду или при ручном выполнении, или по таймеру. Если открыть дабл кликом его свойства, то можно увидеть свойство "repeat" - в котором можно указать время выполнения. Что с этим делать решать только Вам.
Пример включения/отключения громкости на колонках
Тут всё просто, на основе информации выше, кидаем на форму 4 инжекта, 2 алисы.
- два инжекта содержат текстовую озвучку, другие два - команду на убавление/прибавление громкости.
- первая алиса посылает команду на убавление громкости, вторая - на добавление.
- в первой алисе, в поле "command type" укажем "text to speach", у второй - "voice command".
- соединяем инжекты с каждой алисой и тестируем руками.
- если руками всё ок, внутри инжекта в поле "repeat" задаем время выполнения команд.