Orange Pi Zero в качестве терминала?

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

chief
Сообщения: 33
Зарегистрирован: Чт май 19, 2016 8:43 pm
Откуда: Украина, Черкассы
Благодарил (а): 5 раз
Поблагодарили: 1 раз

Re: Orange Pi Zero в качестве терминала?

Сообщение chief » Пт янв 27, 2017 12:06 pm

Попробовал на WIN7, не хочет коннектиться, выдает ошибку:
Warning: fsockopen(): in C:\_majordomo\htdocs\lib\squeezephpapi\class.SqueezeConnection.php on line 222

192.168.0.5 - как я понимаю, это IP терминала со сквизом?
9090 - это порт, он фиксированый или меняется?
Аватара пользователя
savenko_egor
Сообщения: 688
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 100 раз
Поблагодарили: 132 раза
Контактная информация:

Re: Orange Pi Zero в качестве терминала?

Сообщение savenko_egor » Вт дек 19, 2017 11:31 pm

Добавлю для "потомков"... Обсуждали на канале в Телеграме.

Как воспроизвести голос Алисы на терминале.

...Из своего скрипта мы заставляем заговорить Алису и тем самым закешировать необходимый нам файл. Например:

Код: Выделить всё

$weather = "Погода такая погодная. Всё будет супер и солнечно.";
say($weather,1);
В переменной $weather хранится информация о погоде в текстовом виде. Этот текст можно получить как угодно, например из какого либо погодного модуля.
Система проговаривает эту инфу на сервере и тем самым кеширует аудио файл в папку cms/cached/voice/. Теперь для того чтобы узнать имя файла, нам достаточно выполнить функцию:

Код: Выделить всё

$md5hash = md5($weather);
То есть в переменной $md5hash будет хранится md5 хеш нашего текста о погоде.
Теперь для того чтобы сформировать ссылку на mp3 файл достаточно такой строки:

Код: Выделить всё

$link_on_mp3_file = "http://domain.com/cms/cached/voice/".$md5hash."_yandex.mp3";
Прошу заметить что у меня Яндекс TTS, потому в конце "_yandex.mp3". Как там для других TTS, смотрите у себя в папке cms/cached/voice/.
Теперь имея ссылку на файл с нашим продиктованым текстом, мы можем эту ссылку отправить на проигрование на нужном нам терминале. Например так:

Код: Выделить всё

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$url = "http://domain.com/popup/app_player.html?ajax=1&play_terminal=$terminal&command=refresh&play=".urlencode($link_on_mp3_file);
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
curl_close($ch);
В переменной $terminal хранится имя терминала на котором необходимо воспроизвести файл. Можно задать ранее, можно передавать в скрипт как параметр, можно просто вместо имени переменной вручную вписать имя терминала или задать переменную перед запросом:
$terminal = "phone";

Так же для того чтобы сократить код вызова URL, то есть код отправки команды на проигрывание, можно вызвать ссылку кодом:

Код: Выделить всё

getURLBackground($url);
То есть конечный вид сценария будет иметь вид:

Код: Выделить всё

$weather = "Погода такая погодная.";
say($weather,1);
$md5hash = md5($weather);
$link_on_mp3_file = "http://domain.com/cms/cached/voice/".$md5hash."_yandex.mp3";
$terminal = "phone";
$url = "http://domain.com/popup/app_player.html?ajax=1&play_terminal=$terminal&command=refresh&play=".urlencode($link_on_mp3_file);
getURLBackground($url);
Ссылка на заметку в блоге: Проговаривание сообщений Алисы на терминалах(MPD, VLC, etc.)
Всё работает. Проверил только что.
При этом работает на:
1. MPD на OPi Zero.
2. Majordorid.
3. MPD на Android.
Последний раз редактировалось savenko_egor Ср дек 20, 2017 10:54 pm, всего редактировалось 4 раза.
За это сообщение автора savenko_egor поблагодарил:
Руслан (Пт мар 30, 2018 1:27 pm)
Рейтинг: 1.27%
skysilver
Сообщения: 2687
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 348 раз
Поблагодарили: 1551 раз
Контактная информация:

Re: Orange Pi Zero в качестве терминала?

Сообщение skysilver » Ср дек 20, 2017 10:31 am

А штатный getURL() не работает? (вместо curl)
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
savenko_egor
Сообщения: 688
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 100 раз
Поблагодарили: 132 раза
Контактная информация:

Re: Orange Pi Zero в качестве терминала?

Сообщение savenko_egor » Ср дек 20, 2017 10:48 am

skysilver писал(а):А штатный getURL() не работает? (вместо curl)
Не пробовал. Но думаю будет работать.

UPD:
Проверил. Работает. Обновил пост.
lihodeev
Сообщения: 72
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Orange Pi Zero в качестве терминала?

Сообщение lihodeev » Чт сен 06, 2018 1:44 pm

Я так понимаю, этот вариант на сегодня уже не работает? Как тогда заставить говорить и петь в терминал? 3 дня поисков не дал рабочего варианта.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3
Аватара пользователя
savenko_egor
Сообщения: 688
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 100 раз
Поблагодарили: 132 раза
Контактная информация:

Re: Orange Pi Zero в качестве терминала?

Сообщение savenko_egor » Чт сен 06, 2018 2:01 pm

lihodeev писал(а):Я так понимаю, этот вариант на сегодня уже не работает? Как тогда заставить говорить и петь в терминал? 3 дня поисков не дал рабочего варианта.
Плохо ищите. Парни давно сделали модуль mdmpiterminal. https://github.com/devoff/mdmPiTerminal/
lihodeev
Сообщения: 72
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Orange Pi Zero в качестве терминала?

Сообщение lihodeev » Чт сен 06, 2018 2:06 pm

именно это и не работает. Ответа голосом от алисы на терминал добиться не смог(только на сервере), петь тоже не хочет. Управление голосом девайсами - работает.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3
Аватара пользователя
savenko_egor
Сообщения: 688
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 100 раз
Поблагодарили: 132 раза
Контактная информация:

Re: Orange Pi Zero в качестве терминала?

Сообщение savenko_egor » Чт сен 06, 2018 2:12 pm

lihodeev писал(а):
Чт сен 06, 2018 2:06 pm
именно это и не работает. Ответа голосом от алисы на терминал добиться не смог(только на сервере), петь тоже не хочет. Управление голосом девайсами - работает.
Ну так задавайте вопросы. Или пишите в Телегу: https://t.me/mdmPiTerminal
lihodeev
Сообщения: 72
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Orange Pi Zero в качестве терминала?

Сообщение lihodeev » Чт сен 06, 2018 2:20 pm

я даже не знаю как задать.. попробую - Алиса живет в малине есть два терминала на апельсине и на WIN7. Говорю в терминал - давай включим getURL('http://localhost/popup/app_101ru.html?a ... tion&id=88', 0); алиса отвечает на сервере ОК и так же послушно выполняет команду НО на сервере. как будто не понимает что мне надо в терминал или просто издевается.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3
fandaymon
Сообщения: 758
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 26 раз
Поблагодарили: 330 раз

Re: Orange Pi Zero в качестве терминала?

Сообщение fandaymon » Чт сен 06, 2018 3:09 pm

lihodeev писал(а):
Чт сен 06, 2018 2:20 pm
я даже не знаю как задать.. попробую - Алиса живет в малине есть два терминала на апельсине и на WIN7. Говорю в терминал - давай включим getURL('http://localhost/popup/app_101ru.html?a ... tion&id=88', 0); алиса отвечает на сервере ОК и так же послушно выполняет команду НО на сервере. как будто не понимает что мне надо в терминал или просто издевается.
Конечно не понимает. Терминал он для общения - ввод/вывод звука. Всякие команды выполняются на сервере. Отправить файл на проигрывание на терминале можно командой playMedia($path, $host ), вроде бы текущая версия mdmPiTerminal позволяет это сделать. Файл должен быть виден на терминале
Ответить