directman

<<< Back

Использование колонки google home в качестве терминала Majordomo

с использованием google-home-notifier и сервиса IFTTT
Колонки семейства Google Home (mini) могут выступать в роли сетевой wifi колонки и в роли устройства голосового управления.

Сетевая wifi колонка:
В сети существует множество проектов для вывода контента на Google Home (mini), но единственный, который удалось без проблем поднять на любой платфоре linux liked систем (Raspberry, orange pi, x86-debian) называется google-home-notifier.

Установка проекта


sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install nodejs

git clone https://github.com/noelportugal/google-home-notifier
$ cd google-home-notifier
$ npm install

в файле example.js нужно прописать адрес google home и порт локального сервиса. Сервисов можно поднять несколько при наличии нескольких колонок.

Далее нужно Majordomo научить запускать сервис google-home-notifier, для этого через плагин cron добавить задание:

Title * google-home-notifier
Crontab * */10 * * * * (раз в 10 минут)
код: shell_exec("node /home/pi/google-home-notifier/example.js");

После установки проекта, можно вызвать сценарий вызова файла mp3

$zap=$params['text'];
if ($zap==""){$zap="http://188.226.32.227/cached/voice/1.mp3";}
//$cmd='curl -X POST -d "'.$zap.'" http://192.168.1.35:8091/google-home-notifier';
$cmd='curl -X GET http://192.168.1.39:8091/google-home-notifier?text='.urlencode($zap); 
echo $cmd;
echo "<br>";
$answ=shell_exec($cmd);
echo $answ;

при наличии соответсвующего файла по указанному пути колонка должна воспроизвести контент.

Далее добавляем новый терминал Google home notifier через вкладку Терминалы, указываем ip адрес текущего сервера, порт google-home-notifier (по умолчанию 8091)

Теперь на терминал Google home notifier можно отправлять медиа-поток, например из радио онлайн.

Для того, чтобы терминал был подписан на голосовые уведомления голосовых модулей, необходимо во вкладке Общий настройки -> Обработчики -> Before PlaySound (code)
указать следующий код:

if (preg_match('/cached\/voice.+/is',$filename,$m)) { $url='http://192.168.1.39/'.$m[0]; playMedia($url,'MAIN');DebMes($url,'googlenotifier');}

После последнего обновления я использую код

$url='http://192.168.1.39/cms/cached/voice/'.basename($filename); if (basename($filename)<>"dingdong.mp3"){playMedia($url,'MAIN');DebMes($url,'googlenotifier');}

Данный код воспроизводит последнее сообщение движда Yandex TTS. Если у вас другой TTS, то замените путь на другой.

Пока-что имеется не решенная задача с очередями, чтобы новое голосовое сообщение не замещалось предыдущим в момент совершения. Какого-то готового решения пока нет. Просто в сценарии вставляю команту sleep(60);

Управление сценариями с помошью голоса

Первым делом связываем умную колонку с домашним wifi, акаунтом гугл и т.д.

Далее через приложение Google Home заходим на сайт itfff.com и регистрируем новый акаунт, если еще не имеется. Связываем новый акаунт с учетной записью гугл.

Создаем NewApplet в правом углу сайта ifttt.com
1) нажимаем на + на фразе if ✚ this then that
2) ищем поиском Gogle Assistant и выбираем
3) Say a simple phrase
3) добавляем требуемую фразу
turn on the light in the corridor
и алиасы на всякий случай
turn light in the corridor
4) нажимаем + перед фразой that и выбираем webhooks
5) вводим публичный адрес своего сервера и изменяемого свойства или запуск сценария
http://login:password@xxx.xxx.xxx.xx/objects/?script=sendcamtelega

Теперь, если вы произнесете OK гугл, тёрн он лайт ин вэ коридор, у вас будет вызван сценарий sendcamtelega

Варианты написания по русских фраз по английски испробованы, но колонка на них реагирует не охотно. В течении 18 года русский язык должен появиться в гугл асистенте, соответсвенно скорее всего и появится в Google Home.

Также есть возможность настроить колонку через Api.ai (dialogflow) для передачи запроса в MD через соответсвующий плагин. (пока не тестировался, планирую протестировать после русификации асистента).

Тема на форуме http://majordomo.smartliving.ru/forum/viewtopic.php?f=23&t=5042&hilit=google+home

Сохраню тут на всякий случай состояние event_say:

{"pushbullet":{"filter":""},"pushover":{"filter":""},"sms_ru":{"filter":""},"ssdp_finder":{"filter":""},"telegram":{"filter":"","priority":10},"windows_tts":{"filter":""},"yandex_tts":{"filter":"","priority":10}}

Discuss (2) (3)

Екатеринбург, Россия

На форуме: directman66