Эх, да я в мажордомо полгода, в php и линуксе итого меньше. Вот недавно с винды на малину перешел. Можно код целиком? Посмотрел в HOOK_EVENT_SAY и темный лес. По поводу как формируется имя понял.fandaymon писал(а): Название кэшируемого файла в RHVoice формируется так
ROOT . 'cached/voice/rh_' . md5($message) . '.wav';
Т.е. зависит от $message. Если сделать свой обработчик HOOK_EVENT_SAY и сделать приоритет меньше чем у RHVoice, то сначала будет отрабатывать RHVoice, формировать нужный wav, а дальше найти этот wav по переданному в обработчик $message - дело техники
[Модуль] DLNA (app_dlna)
Модератор: immortal
- Hold
- Сообщения: 57
- Зарегистрирован: Пн окт 16, 2017 4:11 pm
- Благодарил (а): 81 раз
- Поблагодарили: 5 раз
Re: [Модуль] DLNA
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] DLNA
У меня примерно та же история, за исключением того, что Мажердомо уже почти 2 года стоит. И да - тоже недавно с Винды на Малинку перешёл. Целиком кода естественно нету. Есть намётки. Можно взять за образец модуль RHVoice. Сделать в /modules/ директорию dlnavoice. В него скопировать файл из директории rhvoice. ПоменятьHold писал(а): Эх, да я в мажордомо полгода, в php и линуксе итого меньше. Вот недавно с винды на малину перешел. Можно код целиком? Посмотрел в HOOK_EVENT_SAY и темный лес. По поводу как формируется имя понял.
СпойлерПоказать
class dlnavoice extends module {
function dlnavoice() {
$this->name = "dlnavoice";
$this->title = "DLNAVoice";
$this->module_category = "<#LANG_SECTION_APPLICATIONS#>";
$this->checkInstalled();
}
function dlnavoice() {
$this->name = "dlnavoice";
$this->title = "DLNAVoice";
$this->module_category = "<#LANG_SECTION_APPLICATIONS#>";
$this->checkInstalled();
}
$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');
}
}
}
Потом в 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
Код отработал, в свойство урл передался
Но не проигрался поток в DLNA устройстве, завтра проверю, может с железкой что не так.
Код: Выделить всё
http://http://192.168.2.74//var/www/html/cached/voice/rh_aa9d56d6007aa2aefaf4fd8f761fccb1.wav
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] DLNA
Один http лишнийHold писал(а):Код отработал, в свойство урл передалсяНо не проигрался поток в DLNA устройстве, завтра проверю, может с железкой что не так.Код: Выделить всё
http://http://192.168.2.74//var/www/html/cached/voice/rh_aa9d56d6007aa2aefaf4fd8f761fccb1.wav
- Hold
- Сообщения: 57
- Зарегистрирован: Пн окт 16, 2017 4:11 pm
- Благодарил (а): 81 раз
- Поблагодарили: 5 раз
Re: [Модуль] DLNA
Да, я заметил, сразу его убрал.fandaymon писал(а): Один http лишний
Видимо что то с путями. Попробовал урл воспроизвести VLC
Ошибка.
Этот источник не открывается:
VLC не может открыть MRL 'http://192.168.2.74//var/www/html/cache ... 1fccb1.wav'. Ищите более подробную информацию в лог-файле.
Куда копнуть?
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] DLNA
Адрес скорее всего будет http://192.168.2.74/cached/voice/rh_aa9 ... 1fccb1.wav ну илиHold писал(а):Да, я заметил, сразу его убрал.fandaymon писал(а): Один http лишний
Видимо что то с путями. Попробовал урл воспроизвести VLC
Ошибка.
Этот источник не открывается:
VLC не может открыть MRL 'http://192.168.2.74//var/www/html/cache ... 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
Код: Выделить всё
http://192.168.2.74/cached/voice/rh_aa9d56d6007aa2aefaf4fd8f761fccb1.wav
Как теперь код сценария поправить?
/var/www/html/ что бы вырезало.
Последний раз редактировалось Hold Пн мар 26, 2018 11:03 pm, всего редактировалось 1 раз.
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] DLNA
Тогда в скрипте должно быть так
$message='какая-нибудь из фраз закешированных';
$cached_filename = 'cached/voice/rh_' . md5($message) . '.wav';
$url='http://192.168.2.74/'.$cached_filename;
sg('MultiCastBathroom.playUrl',$url);
DebMes($url,'googlenotifier');
$message='какая-нибудь из фраз закешированных';
$cached_filename = 'cached/voice/rh_' . md5($message) . '.wav';
$url='http://192.168.2.74/'.$cached_filename;
sg('MultiCastBathroom.playUrl',$url);
DebMes($url,'googlenotifier');
- Рейтинг: 1.16%