Перейти к содержанию

Таймеры, несколько команд устройству, TTS (Node-RED)

Материал из Wiki yaboard
Версия от 13:13, 22 июня 2020; Ws23pro (обсуждение | вклад) (Новая страница: «== Вступление == тут надо сделать вставку про прямые руки Инструкция о том, как посылать л…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Содержание

Вступление

тут надо сделать вставку про прямые руки

Инструкция о том, как посылать любые текстовые сообщения или команды на колонку. За основу взята статья https://homever.ru/?p=1178 и разжована.

Чего можно добиться:

Личный пример. У меня 2 колонки: ирбис и мини. Мне хотелось, чтобы на ночь колонки умолкали, а утром громкость возвращалась. И, главное условие, - полная автоматизация. Пока что, встроенные скрипты Яндекса не умеют в таймеры, а говорить каждый вечер "алиса, тихо" не круто. И вот как я решил эту проблему. В 21:59 на обе колонки летит сообщение, которое она озвучивает: "через минуту, я убавлю громкость на 2", а утром, в 9:00 наоборот "время 9 утра, я установила громкость на 6". Соответственно, в 22:00/8:59 посылаются команды на убавление/прибавление громкости. Теперь о том, как это всё реализовать.

Платформа

Чтобы это реализовать, нам как минимум нужна такая штука, как node-red.

Есть 2 варианта установки:

  • у Вас есть свой локальный сервер УД, то ставить прям рядом с ним. Быстрее всего это будет какая-то малинка.
  • развернуть виртуальную машину и поставить там node-red.

О том, что это за зверь и как его устанавливать, описано здесь: https://sprut-ai.turbopages.org/s/sprut.ai/client/article/1820


Затем устанавливаем ноду которая будет взаимодействовать с колонкой:

npm install node-red-contrib-yandex-alice-command

Страница автора этой ноды: https://flows.nodered.org/node/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"
  • После этого, нажимаем у "инжекта" слева кнопку как бы запуска/посыла текста и через пару сек колонка должна произнести указанный текст

Отправка команды.

Всё тоже самое, только в ноде "алиса" нужно указать "voice command" и если в "инжект" прописать "включи мою музыку" - выполнится команда включения музыки.

 Для справки: "инжект" выполняет команду или при ручном выполнении, или по таймеру. Если открыть дабл кликом его свойства, то можно увидеть свойство "repeat" - в котором можно указать время выполнения.
 Что с этим делать решать только Вам.

Пример включения/отключения громкости на колонках

Тут всё просто, на основе информации выше, кидаем на форму 4 инжекта, 2 алисы.

  • два инжекта содержат текстовую озвучку, другие два - команду на убавление/прибавление громкости.
  • первая алиса посылает команду на убавление громкости, вторая - на добавление.
  • в первой алисе, в поле "command type" укажем "text to speach", у второй - "voice command".
  • соединяем инжекты с каждой алисой и тестируем руками.
  • если руками всё ок, внутри инжекта в поле "repeat" задаем время выполнения команд.


форма инжект_кмд инжект_текст