Страница 2 из 16
Re: Google Home - ifttt- web hook
Добавлено: Вт фев 06, 2018 10:04 pm
Vovix
lanket писал(а):Vovix писал(а):directman66 писал(а):itfff ....
ну что-же вы его постоянно обзываете то???
If this then that (IFTTT) – если здесь это, тогда там то.
(ну или дословно: IFTTT - IF THIS THEN THAT — «если это, тогда то»)
Может It fuc#ing favorite future? [emoji41]
Отправлено с моего Redmi Note 4 через Tapatalk
точно-точно!
Re: Google Home - ifttt- web hook
Добавлено: Вт фев 06, 2018 10:10 pm
directman66
Колонками вроде можно воспроизвести звуковой файл. По моему колонка отлично может выступать удаленным терминалом и отвечать голосом Алисы.
https://github.com/noelportugal/google-home-notifier - этот вариант проверил, работаетт!!! и самое интересное - говорит по русски, если польский заменить на руский в конфигурациооном файле example.js (pl->ru)
https://github.com/watusi/google-cast-public-address - альтернативный вариант, не пробовал.
Простейщий скрипт автозапуска
Код: Выделить всё
#!/bin/sh
cd /home/pi/google-home-notifier
node example.js
Команда говорит привет, но движок видимо какой-то древний, ударения ставит неправильно. Интересно, какой движок ТТС используется? Можно ли его замениь на альтернативный.
Код: Выделить всё
curl -X POST -d "text=привет привет привет" 192.168.1.35:8091/google-home-notifier
Команда проигрывает mp3 файл (из документации), почему-то не работает
Код: Выделить всё
curl -X POST -d "http://188.226.32.227/cached/voice/1.mp3" 192.168.1.35:8091/google-home-notifier
еще возникла идея: ifttt получает доступ к записанной фразе и отправляет ее в яндекс на распознавание )))
не забываем нажимать кнопку спасибо!
Re: Google Home - ifttt- web hook
Добавлено: Ср фев 07, 2018 7:03 am
directman66
Кстати, если в ifttt прописать команду на русском языке, при написании команды через гугл асисента на русском языке, интепретатор ifttt отрабатывает корректно. Т.е. когда появится распознавание на великом и могучем, будет нативная поддержка сервиса.
Re: Google Home - ifttt- web hook
Добавлено: Ср фев 07, 2018 9:42 am
directman66
В общем записи гугл активити скачать можно, но очень уж как то не тривиально, на при особом желании всего сообщества, думаю это реализуемо!!!
https://ruk.ca/content/downloading-your ... st-archive
Можно ли как то автоматизировать этот процесс? У меня пока мыслей на этот счет нет.
Re: Google Home - ifttt- web hook
Добавлено: Чт фев 08, 2018 9:16 am
directman66
В качестве эксперимента, сделал сценарии на переключение света по группам (коридор, кухня и т.д).
В ifttt добавил условия If You say "kuhnya", then make a web request, If You say "koridor", then make a web request и вызываю созданные сценарии.
На выходе имеем управление светом "как бы" на великом и могучем!!
Хотя я уже даже привык выговаривать все команды по английски.
Re: Google Home - ifttt- web hook
Добавлено: Вс фев 11, 2018 7:55 pm
directman66
По мотивам сообщения
https://majordomo.smartliving.ru/forum/ ... 497#p71049 делюсь своими сценариями.
Сценарий запуска скрипта (можно добавить в автозапуск)
Код: Выделить всё
shell_exec("node /home/pi/google-home-notifier/example.js");
Сценарий-функция вызова голосовой команды встроенного TTS
Код: Выделить всё
$text='Информация об автомобиле была обновлена 5 минут назад. ';
rs(saygoogle, array('text' =>$text));
Вызов сценария (проговаривает текст):
Код: Выделить всё
$text='Внимание, вы забыли закрыть входную дверь!!! ';
rs(saygoogle, array('text' =>$text));
И ВНИМАНИЕ!!!! Получилось воспроизвести 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.35:8091/google-home-notifier?text='.urlencode($zap);
echo $cmd;
echo "<br>";
$answ=shell_exec($cmd);
echo $answ;
Кстати на колонки без проблем стремятся аудипотоки по днла. Надо допинать мою тему со стримингом этого протокола.
https://majordomo.smartliving.ru/forum/ ... nla#p55241
Не забывайте нажимать кнопку "спасибо" )
Re: Google Home - ifttt- web hook
Добавлено: Чт фев 15, 2018 8:35 am
directman66
В виду того, что колонка без проблем управляется приложениями на телефоне BubbleUpnp, делаю вывод, что можно отказаться от google-home-notifier и переписать на php. В сети уже достаточно примеров управления chromecast на php, не думаю что тут должно чем-то сильно отличаться.
В соседней ветке мы ковыряем протокол dnla-render (dnla-sharing
https://majordomo.smartliving.ru/forum/ ... f=6&t=4156), который с помощью HTTP запросов может управлять медиа-устройствами (смарт телевизаторами), тут ситуация аналогичная, только используется немного другой протокол.
Пока я выяснил, что для поиска и управления используется протокол DIAL - некий симбиоз SSDP для поиска и HTTP REST + XML для управления. SSDP, возможно, знаком вам, если вы использовали UPnP и DLNA, а REST-часть достаточно простая. (
https://habrahabr.ru/post/210742/ )
Задача:
1) Обнаружить устройства в домашней сети M-SEARCH запросом (пример этого прокола у меня уже есть, я ранее пытался им просканировать приставки MAG250
https://majordomo.smartliving.ru/forum/ ... 250#p55505 )
Код: Выделить всё
error_reporting(E_ALL);
ini_set('display_errors', 1);
class UPnPFind
{
/**
* Find devices by UPnP multicast message and stores them to cache
*
* @return array Parsed device list
*/
public static function findDevices()
{
$discover = self::discover(10);
return($discover); //!!
/*
$devices = array();
flush();
foreach ($discover as $response) {
$device = new Device();
if ($device->initByDiscoveryReponse($response)) {
$device->saveToCache();
try {
$client = $device->getClient('ConnectionManager');
$protocolInfo = $client->call('GetProtocolInfo');
$sink = $protocolInfo['Sink'];
$tmp = explode(',', $sink);
$protocols = array();
foreach ($tmp as $protocol) {
$t = explode(':', $protocol);
if ($t[0] == 'http-get') {
$protocols[] = $t[2];
}
}
} catch (UPnPException $upnpe) {
$protocols = array();
}
$device->protocolInfo = $protocols;
$cache[$device->getId()] = array(
'name' => $device->getName(),
'services' => $device->getServices(),
'icons' => $device->getIcons(),
'protocols' => $device->getProtocolInfo()
);
}
}
return $cache;
*/
}
/**
* Performs a standardized UPnP multicast request to 239.255.255.250:1900
* and listens $timeout seconds for responses
*
* Thanks to artheus (https://github.com/artheus/PHP-UPnP/blob/master/phpupnp.class.php)
*
* @param int $timeout Timeout to wait for responses
*
* @return array Response
*/
private static function discover($timeout = 2)
{
$msg = 'M-SEARCH * HTTP/1.1' . "\r\n";
$msg .= 'HOST: 239.255.255.250:1900' . "\r\n";
$msg .= 'MAN: "ssdp:discover"' . "\r\n";
$msg .= "MX: 3\r\n";
$msg .= "ST: upnp:rootdevice\r\n";
$msg .= '' . "\r\n";
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($socket, $msg, strlen($msg), 0, '239.255.255.250', 1900);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
$response = array();
do {
$buf = null;
@socket_recvfrom($socket, $buf, 1024, MSG_WAITALL, $from, $port);
if (!is_null($buf)) {
$response[] = self::discoveryReponse2Array($buf);
}
} while (!is_null($buf));
//socket_close($socket);
return $response;
}
/**
* Transforms discovery response string to key/value array
*
* @param string $res discovery response
*
* @return \stdObj
*/
private static function discoveryReponse2Array($res)
{
$result = array();
$lines = explode("\n", trim($res));
if (trim($lines[0]) == 'HTTP/1.1 200 OK') {
array_shift($lines);
}
foreach ($lines as $line) {
echo '<br>';
$tmp = explode(':', trim($line));
$key = strtoupper(array_shift($tmp));
$value = (count($tmp) > 0 ? trim(join(':', $tmp)) : null);
$result[$key] = $value;
echo $value;
}
return (Object)$result;
}
}
$devices = UPnPFind::findDevices();
//echo $devices;
print_r($devices);
а описание протокола DIAL я нашел по ссылке
https://github.com/jloutsenhizer/CR-Cas ... tation-WIP
он видит другие устройства, но колонка от гугл почему-то на мой запрос не отвечает
2) Отправить контент на устройство HTTP запросом
При очередной распродаже по 30$ за мини версию, считаю что должен купить каждый фан умного дома

Тем более сейчас вроде какая-то акция и можно купить 2 шт за 60$ в американском сторе. Доставка сервисом типа бандерольки у меня вышла 35$. Итого получилось по 47$ (2600 руб.) за штуку. Также я создал группу в телеграм, куда я и члены группы скидывают интересные ссылки на подобные железяки
https://t.me/iot_gadgets
снифинг пакетов программы BubbleUpnp:
Re: Google Home - ifttt- web hook
Добавлено: Чт фев 15, 2018 9:36 am
directman66
Получить более подробную информацию о своем гугл хоум можно узнать запросив сценарием:
Код: Выделить всё
$host='192.168.1.197';
$port=8008;
$url=$host.':'.$port.'/ssdp/device-desc.xml';
$cmd='curl '.$url;
$answ=shell_exec($cmd);
echo $answ."<br><br>";
$url=$host.':'.$port.'/setup/eureka_info?options=detail';
$cmd='curl '.$url;
$answ=shell_exec($cmd);
echo $answ."<br><br>";
$url=$host.':'.$port.'/setup/scan_results';
$cmd='curl '.$url;
$answ=shell_exec($cmd);
echo $answ."<br><br>";
$url=$host.':'.$port.'/setup/supported_timezones';
$cmd='curl '.$url;
$answ=shell_exec($cmd);
echo $answ."<br><br>";
Re: Google Home - ifttt- web hook
Добавлено: Чт фев 15, 2018 7:50 pm
Dicont
А не смотрел много трафика и какого на сервера Googla отправляет в пассивном режиме, когда стоит и ждет команды?
И фраза активации только Ok Google?
Кнопку можно на колонке нажать чтобы постоянно Окей не говорить?
Можно на ней Offline синтезатор\распознование голоса настроить?
Re: Google Home - ifttt- web hook
Добавлено: Чт фев 15, 2018 8:32 pm
directman66
Dicont писал(а):А не смотрел много трафика и какого на сервера Googla отправляет в пассивном режиме, когда стоит и ждет команды?
И фраза активации только Ok Google?
Кнопку можно на колонке нажать чтобы постоянно Окей не говорить?
Можно на ней Offline синтезатор\распознование голоса настроить?
я предполагаю, что отправляет только после команды ок гугл, слышал, что насчет фразы гугл обещал подумать. Пруфов нет. Есть выключатель команды на колонке. Кнопки "случаю" вроде нет. Но там настроек много, и не все доступны, так как часть настроек настраивается через приложение гугл асистент, которое пока не устанавливается.