[Модуль] DLNA (app_dlna)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Hold
Сообщения: 57
Зарегистрирован: Пн окт 16, 2017 4:11 pm
Благодарил (а): 81 раз
Поблагодарили: 5 раз

Re: [Модуль] DLNA

Сообщение Hold » Пн мар 26, 2018 9:06 pm

fandaymon писал(а): Название кэшируемого файла в RHVoice формируется так

ROOT . 'cached/voice/rh_' . md5($message) . '.wav';

Т.е. зависит от $message. Если сделать свой обработчик HOOK_EVENT_SAY и сделать приоритет меньше чем у RHVoice, то сначала будет отрабатывать RHVoice, формировать нужный wav, а дальше найти этот wav по переданному в обработчик $message - дело техники
Эх, да я в мажордомо полгода, в php и линуксе итого меньше. Вот недавно с винды на малину перешел. Можно код целиком? Посмотрел в HOOK_EVENT_SAY и темный лес. По поводу как формируется имя понял.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] DLNA

Сообщение fandaymon » Пн мар 26, 2018 9:56 pm

Hold писал(а): Эх, да я в мажордомо полгода, в php и линуксе итого меньше. Вот недавно с винды на малину перешел. Можно код целиком? Посмотрел в HOOK_EVENT_SAY и темный лес. По поводу как формируется имя понял.
У меня примерно та же история, за исключением того, что Мажердомо уже почти 2 года стоит. И да - тоже недавно с Винды на Малинку перешёл. Целиком кода естественно нету. Есть намётки. Можно взять за образец модуль RHVoice. Сделать в /modules/ директорию dlnavoice. В него скопировать файл из директории rhvoice. Поменять
СпойлерПоказать
class dlnavoice extends module {

function dlnavoice() {
$this->name = "dlnavoice";
$this->title = "DLNAVoice";
$this->module_category = "<#LANG_SECTION_APPLICATIONS#>";
$this->checkInstalled();
}
Посмотреть функцию admin - убрать не нужные конфиги, добавить свои (если нужны)

$out['VOICE']=$this->config['VOICE']; - там где OUT это мы выводит на экран (в соответствующий темплейт) параметр VOICE. Наверное можно всё выкинуть для начала.

В функции оставить

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

   function processSubscription($event, &$details) {
        $this->getConfig();
        if ($event == 'SAY' && !$details['ignoreVoice']) {
            $level = $details['level'];
            $message = $details['message'];
             $cached_filename = ROOT . 'cached/voice/rh_' . md5($message) . '.wav';
             if (file_exists($cached_filename)) {
                \\И вот тут берём $cached_filename и отправляем
                $url='http://IPMDM/'.$cached_filename; 
                sg('MultiCastBathroom.playUrl',$url);
                DebMes($url,'googlenotifier');
             }

         }
    }
Когда этот модуль будет инсталлироваться, он сделает subscribeToEvent($this->name, 'SAY');
Потом в phpmyadmin в таблице settings найти HOOK_EVENT_SAY и поставить у rhvoice priority=50
По идее теперь когда Мажордомо будет что-то произносить, то RHVoice закеширует сообщение, а DLNAVoice отправит этот файл на DLNA устройство. Но конечно всё это умозрительно и надо пробовать
Если этот код, вставленный куда-нибудь в сценарий, сможет отправить голосовое сообщение, то можно пытаться реализовать и то, что выше набрано

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

   
$message='какая-нибудь из фраз закешированных';            
$cached_filename = ROOT . 'cached/voice/rh_' . md5($message) . '.wav';
$url='http://IPMDM/'.$cached_filename; 
sg('MultiCastBathroom.playUrl',$url);
DebMes($url,'googlenotifier');
Аватара пользователя
Hold
Сообщения: 57
Зарегистрирован: Пн окт 16, 2017 4:11 pm
Благодарил (а): 81 раз
Поблагодарили: 5 раз

Re: [Модуль] DLNA

Сообщение Hold » Пн мар 26, 2018 10:43 pm

Код отработал, в свойство урл передался

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

http://http://192.168.2.74//var/www/html/cached/voice/rh_aa9d56d6007aa2aefaf4fd8f761fccb1.wav 
Но не проигрался поток в DLNA устройстве, завтра проверю, может с железкой что не так.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] DLNA

Сообщение fandaymon » Пн мар 26, 2018 10:48 pm

Hold писал(а):Код отработал, в свойство урл передался

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

http://http://192.168.2.74//var/www/html/cached/voice/rh_aa9d56d6007aa2aefaf4fd8f761fccb1.wav  
Но не проигрался поток в DLNA устройстве, завтра проверю, может с железкой что не так.
Один http лишний
Аватара пользователя
Hold
Сообщения: 57
Зарегистрирован: Пн окт 16, 2017 4:11 pm
Благодарил (а): 81 раз
Поблагодарили: 5 раз

Re: [Модуль] DLNA

Сообщение Hold » Пн мар 26, 2018 10:51 pm

fandaymon писал(а): Один http лишний
Да, я заметил, сразу его убрал.
Видимо что то с путями. Попробовал урл воспроизвести VLC
Ошибка.
Этот источник не открывается:
VLC не может открыть MRL 'http://192.168.2.74//var/www/html/cache ... 1fccb1.wav'. Ищите более подробную информацию в лог-файле.

Куда копнуть?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] DLNA

Сообщение fandaymon » Пн мар 26, 2018 10:58 pm

Hold писал(а):
fandaymon писал(а): Один http лишний
Да, я заметил, сразу его убрал.
Видимо что то с путями. Попробовал урл воспроизвести VLC
Ошибка.
Этот источник не открывается:
VLC не может открыть MRL 'http://192.168.2.74//var/www/html/cache ... 1fccb1.wav'. Ищите более подробную информацию в лог-файле.

Куда копнуть?
Адрес скорее всего будет http://192.168.2.74/cached/voice/rh_aa9 ... 1fccb1.wav ну или
http://192.168.2.74/html/cached/voice/r ... 1fccb1.wav

Тут нужен не путь, по которому находится файл, а путь относительно корня апача, так как мы пытаемся прочесть файл через http
Аватара пользователя
Hold
Сообщения: 57
Зарегистрирован: Пн окт 16, 2017 4:11 pm
Благодарил (а): 81 раз
Поблагодарили: 5 раз

Re: [Модуль] DLNA

Сообщение Hold » Пн мар 26, 2018 10:59 pm

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

http://192.168.2.74/cached/voice/rh_aa9d56d6007aa2aefaf4fd8f761fccb1.wav   
Вот такой отыграл в браузере и DLNA колонка тоже смогла проиграть
Как теперь код сценария поправить?
/var/www/html/ что бы вырезало.
Последний раз редактировалось Hold Пн мар 26, 2018 11:03 pm, всего редактировалось 1 раз.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] DLNA

Сообщение fandaymon » Пн мар 26, 2018 11:03 pm

Тогда в скрипте должно быть так

$message='какая-нибудь из фраз закешированных';
$cached_filename = 'cached/voice/rh_' . md5($message) . '.wav';
$url='http://192.168.2.74/'.$cached_filename;
sg('MultiCastBathroom.playUrl',$url);
DebMes($url,'googlenotifier');
За это сообщение автора fandaymon поблагодарил:
Hold (Пн мар 26, 2018 11:06 pm)
Рейтинг: 1.16%
Аватара пользователя
Hold
Сообщения: 57
Зарегистрирован: Пн окт 16, 2017 4:11 pm
Благодарил (а): 81 раз
Поблагодарили: 5 раз

Re: [Модуль] DLNA

Сообщение Hold » Пн мар 26, 2018 11:06 pm

Отрабатывает как надо.
Первая часть балета окончена ;)
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] DLNA

Сообщение fandaymon » Пн мар 26, 2018 11:09 pm

Hold писал(а):Отрабатывает как надо.
Первая часть балета окончена ;)
Ну супер!
Ответить