Плагин Voice Control

Назначение

Плагин Voice Control предназначен для голосового управления в нативных приложениях для смартфонов Android и iOS.

Описание

Плагин принимает команды на языке интерфейса (ключевые фразы).
Возвращает команды управления устройствами, групповые команды или команды на запуск сценариев и ответ в текстовом виде.

Входящая фраза: Включи верхний свет в гараже

Команда на сервер: plugin.do(‘LAMP200’, ‘on’)

Ответ клиенту:  Гараж. Верхний свет включен 

Есть два варианта создания ключевых фраз. Оба варианта можно использовать одновременно.

Вариант 1

Включение и выключение устройств

Плагин автоматически формирует ключевые фразы, опираясь на названия устройств, их привязку к зонам/уровням.
Ничего настраивать не надо. Для этого подхода важно, как называются устройства. Если название не уникально, нужно указать размещение, например:

Включи люстру — если люстра в проекте только одна

Включи точечные светильники в гостиной — если есть еще точечные светильники в других помещениях

Автоматическое формирование можно отключить в параметрах плагина. Также можно исключить какие-то подсистемы, например, выбрать только Освещение и Климат.

Если флажок Формировать команды управления устройствами установлен, а в списке Выборочно по подсистемам ничего не отмечено, то команды Включить/Выключить будут сформированы для всех актуаторов проекта.

Групповое включение и выключение

Флажок Формировать групповые команды управления позволяет автоматически (так сказать из коробки) сформировать групповые команды для зон и уровней.

В параметрах плагина нужно задать правила для формирования:

Для подсистемы — фильтр по подсистеме, по умолчанию Освещение (подсистема с id=1).

Для устройств — фильтр по типам устройств, например, для Освещения выбрать Светильник, Диммер

Ключевое слово группы — можно ввести слово или несколько слов, по умолчанию Свет

Если оставить все дефолтные настройки, то будут сформированы команды для управления освещением для каждого помещения и уровня:

Выключи свет на кухне — выключит все устройства с типами Светильник,Диммер в зоне Кухня

Выключи свет на 1 этаже — выключит все устройства с типами Светильник,Диммер на 1 этаже

Если не выбирать типы, то команда сработает для всех устройств (актуаторов) подсистемы Освещение. И наоборот, если не выбирать подсистему, то команда будет действовать для заданного типа устройств любых подсистем.

Вариант 2

По этому варианту можно задать свои фразы для управления устройствами, запуска сценариев и групповых операций. 

Ключевые фразы можно настроить в разделе плагина Расширения.

Выбираем, что нужно запустить — Сценарий или Команда устройства или Групповая команда.
Далее выбирается сценарий для запуска или команда для устройства (группы устройств). Здесь наряду с on/off можно использовать команды toggle и set. Дополнительные команды set+ и set- позволяют создать фразы для увеличения/уменьшения яркости, громкости и т.д. Поле Значение в этом случае определяет дискрету — насколько нужно увеличить/уменьшить целевую величину.

Механизм распознавания текстовых команд

На основе фраз плагин строит словарь с набором ключевых слов.

При разборе фразы выполняется поиск ключевых слов по частотному словарю (начиная с наиболее редко встречающегося слова). Входящая фраза может содержать лишние слова, порядок слов значения не имеет. Для русского языка обрабатываются окончания.

Для совпадения требуется наличие во фразе всех ключевых слов команды.

Например, набор ключевых слов «гараж включить верхний свет»:

=> стемнело пора включать верхний свет в гараже

=> Але гараж включи верхний свет

=> Домовой, в гараже верхний свет включай быстрей

Все фразы будут распознаны c результатом: Гараж. Верхний свет включен

Формирование ключевых слов управления устройствами

Плагин загружает список устройств (актуаторов) с сервера, включая названия уровней и помещений.

Текущая версия плагина формирует только команды Включить-Выключить для устройств и групповых операций. В дальнейшем планируется расширить набор команд, добавив возможность управления аналоговыми актуаторами (команды Увеличить-Уменьшить яркость, громкость, и т д), а также индивидуальную настройку для разных типов устройства.

Нужно заметить, что любую недостающую команду можно реализовать с помощью сценария.

Наборы ключевых слов формируются по следующему принципу:

  • Если название устройства уникально (например, у вас один кондиционер в проекте), то ключевым набором будет просто включи кондиционер.

  • Все слова из названия устройства считаются ключевыми.

Например, если устройство называется «Подсветка зеркала», то ключевым набором будет не включи подсветку, а включи подсветку зеркала.

  • Если в названии есть текст в скобках, он игнорируется: Например, если устройство называется «Подсветка зеркала (точечный светильник)», то ключевым набором будет включи подсветку зеркала.

  • Если кондиционеров несколько, но вы назвали их по разному, например, «Большой кондиционер» и «Малый кондиционер», то есть название уникально, ключевыми наборами будут включи большой кондиционер и включи малый кондиционер

  • Если кондиционеров несколько, все называются просто «кондиционер», и определены помещения, где они находятся, то наборы будут гостиная включи кондиционер, спальня включи кондиционер.

  • Наконец, если определен только уровень, но не помещение, ключевым набором будет 1 этаж включи кондиционер.

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

Возможно, совпадают названия устройств в одном помещении.

Например, в комнате несколько светильников, все называются просто «Светильник». Вы можете изменить названия — «Люстра», «Торшер», «Верхний свет», «Светильник над диваном»,…

Или просто перенумеровать их — «Светильник 1», «Светильник №2»,…

В этом случае ключевыми будут «первый светильник <помещение>», «второй светильник <помещение>». Если больше нравится — можно говорить «светильник (номер) один», «светильник (номер) два» — такой вариант тоже распознается.

Если после максимального расширения набора ключевых слов не удается сформировать уникальный набор, то такая команда в словарь не включается.

Плагин выдает команды, не включенные в словарь, в отладчике при старте плагина:

31.08 07:42:10.169 voicecontrol: Загрузка сценариев: 25
31.08 07:42:11.816 voicecontrol: Уникальные команды: 275
31.08 07:42:11.817 voicecontrol: Не уникальные (не включены в словарь): 1

Естественно, вы всегда можете упоминать в команде и уровень, и помещение. Просто это обычно не является необходимым. В ответ всегда включаются и уровень и помещение, если они для устройства определены.

Например:

=> включи точечные светильники

<= Мансарда Зимний сад. Точечные светильники включены

Формирование ключевых слов для групповых команд

Текущая версия плагина автоматически формирует групповые команды для управления светом.

Для каждого помещения/уровня формируются команды «<место> включи свет» и «<место> выключи свет». Команда распространяется на устройства с типами «Светильник», «Диммер»,»Светильник RGB»

Например:

выключи свет на кухне — будет выключен весь свет в помещении Кухня

выключи свет на территории — будет выключен весь свет уровня Территория

спальня 1 этаж выключи свет — будет выключен весь свет в спальне, здесь спальни есть на 1 и 2 этаже — нужно указать этаж

Список сформированных ключевых слов можно посмотреть в разделе  «Список каналов»: