Окей Google Телевизор Samsung

Как было бы удобно быстро запустить голосом любой канал на самом обычном телевизоре. Или управлять кондиционером, не имея под рукой пульта.

В этой статье я покажу, как можно без всякого программирования и паяльника реализовать голосовое управление любым телевизором с использованием ну очень дешевого контроллера Broadlink RM и пары приложений под Android.

Смотрим видеодемонстрацию результата, а потом читаем, как это сделать своими руками.

Что имеем?

  • Обычный зомбоящик телевизор
  • Пульт от него
  • Android смартфон
  • Контроллер Broadlink RM

Что за зверь такой — Broadlink RM?

Это такой дешевый контроллер умного дома, который можно купить всего за 3 тысячи рублей. Он умеет управлять любой глупой техникой, у которой есть ИК пульт управления. Это могут быть телевизоры, кондиционеры и множество всего остального.
Вдобавок он умеет управлять оборудованием на радио-частотах 315 и 433 MHz — типа всяких выключателей, диммеров и так далее. В принципе, обо всех его характеристиках и умениях хорошо написано вот тут.

Эта штука работает как ИК-бластер (не путать с бластером из Звездных Воин и всяких там Терминаторов). То есть ей по обычному вай-фаю передается команда от любого смартфона, планшета или компьютера, а она уже «пуляет» во все стороны нужный ИК сигнал.

Чего хотим в итоге?

Хотим сделать так, чтобы Google Now стал чуточку (ну хоть малюсенькую чуточку) умнее и научился понимать голосовые команды типа «Включи канал Спорт», «Сделай телек потише», ну и вообще все остальные кнопки научился нажимать. Так что больше не придется искать разные пульты и можно будет управлять всей техникой даже со смарт-часов на Android Wear.

Приступим

После первоначальной настройки Broadlink RM с помощью стандартного приложения под Android нам нужно научить его ИК кодам на нашем пульте управления ТВ. Чтобы потом, когда будем отправлять этой программе команды, она знала, какой сигнал нужно послать контроллеру.

Для этого устанавливаем приложение Broadlink Control (исходные коды открыты и лежат вот тут). Оно очень простое и позволяет научить Broadlink нашим кнопкам, а также добавить комбинации кнопок в виде функций. Потому что для некоторых ТВ каналов нужно нажать больше одной кнопки. Например, канал 11.

Все кнопки и функции именуются, функции можно потыкать в списке, чтобы протестировать их работу, а также позапускать их голосом прямо из программы.

Когда добавляем новую кнопку в базу программы, контроллер переходит в режим обучения новому ИК коду. Начинает мигать лампочка, подносим пульт управления и жмем нужную кнопку. Программа предложит назвать кнопку как-нибудь и сохранит в списке.

Это нужно проделать для всех кнопок пульта, которые необходимы!

Учим Google Now

Google Now — прекрасная штука для голосового управления. Вот только кнопки телевизора он щелкать не умеет… Сейчас исправим сей недочет инженеров Google!

Как известно, у Google Now нет никакого открытого API для «встраивания» своих функций. Зато есть русскоязычный голосовой ассистент Дуся, который умеет «выдергивать» из Google Now текст запроса и процессить его, если он подходит к одной из функций. Вдобавок, Дуся позволяет создавать свои функции без всякого программирования прямо в своем интерфейсе.

Эти «свои» функции называются скриптами, и они позволяют превратить фразу пользователя в некоторую последовательность действий, которую нужно провернуть на смартфоне. Как? С помощью шаблонов фраз, синтаксис которых довольно прост:

* (включи*|переключи*) [на] [канал*] $Text *

Под такой шаблон подходят фразы типа «Эй переключи на Новости». Или «Включи канал Спорт». При этом в переменную $Text будет помещено название канала, который нужно запустить. Все просто!

В качестве реакции на такую команду можно добавить отправку интента — то есть послать сигнал на локальном смартфоне другой программе. Этой программой будет Broadlink Control, который принимает строку текста, ищет по ней настроенный ранее канал и шлет Broadlink-у сигналы кнопок.

Вот в принципе и все!

Ну не все конечно...

Создадим такой скрипт в Дусе, добавим в него вышеописанный шаблон, а в действиях добавим отправку интента типа Broadcast с action com.broadlink.control.action.QUERY и в параметрах передадим нашу переменную $Text в параметре text. Как на скриншотах: Что еще можно сделать?Конечно, целью моей статьи не является обзор возможностей скриптов Дуси, но умеют они действительно много всего. Поэтому рекомендую обратиться за справкой на официальный сайт проекта.

Copyright © . All Rights Reserved