Всем привет! Думаю к новому году порадовать любителей E2 новой модификацией к нашим ресиверам, а именно будем прикручивать нестандартные пульты (настолько разные, насколько хватит вашего воображения). Разговор будем вести про имиджи E2, которые используют в управлении пультами файлы evremote2 и lirc.conf. Сейчас посидел немного поэксперементировал и зацепил цифровой блок клавиш от пульта для управления dvd проигрователя BBK и пульта от старых телевизоров Витязь (ну дабы проще были эксперименты). Надо как-то собраться с мыслями и систематизировать данную информацию для сообщества, т.к. покупать пульты по космическим ценам - это не наш метод.
Так что продавцы, делайте на свои закупленные пульты для данной линейки ресиверов скидки и распродавайте их, пока я буду в свободное время оформлять материал!
Всем остальным (кто еще не знаком) советую пока изучить подключение ресивера к ПК через нуль-модемный кабель посредством Putty, т.к. данные вопросы уж точно описывать не буду.
Добавлено после непродолжительного отдыха:
Ковыряюсь дальше. Прошелся по остальным кнопкам. Подводные камни не всплыли. Все работает в штатном режиме. Вопрос решен полностью. Осталось описать сам процесс.
Как и обещал: описываю процесс «дружбы» различных пультов с ресивером на базе ПО Enigma2.
Часть 1. Начало пути.
Данное описание специально для пользователей GISCLUB.TV! Убедительная просьба, не копировать на сторонние ресурсы!
Распространение прошу давать ссылками! Заранее благодарю за уважение моего труда! Все манипуляции проводились на сборке CrIs_AR-P_OE2.0_213_alien-git-30-05-14, но данная информация будет также справедлива и для других имиджей использующих аналогичную «структуру» работы с пультом, т.е. где все взаимодействие идет через файлы: lircd.conf, evremote2, keyid.py, keymap.xml.
В данной сборке данные файлы расположены по пути:
1) lircd.conf - /etc/lircd.conf
2) evremote2 - /bin/evremote2
3) keyid.py - /usr/lib/enigma2/python/ keyid.py
4) keymap.xml - /usr/share/enigma2/keymap.xml (в данной сборке есть возможность выбора «поведения» пульта между стандартным E2 и Amiko, поэтому и файла по пути два. Второй соответственно keymap_amiko.xml).
Как происходит взаимодействие между данными файлами после нажатия клавиши на ПДУ, для наглядности, оформил в табличном виде (тут, конечно могу заблуждаться):
Понятно, чтобы пульт (кнопка) заработал: данная цепочка нигде не должна оборваться.
У меня старый пульт от GI 8120 (без кнопки портал) в lircd.conf наименование данного пульта звучит как name rc09(HOF-54D). Разберем такую запись в блоке нашего пульта для примера:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
0xDA25 – код клавиши пульта;
KEY_POWER – «наименование клавиши для дальнейшей обработки» (передачи в другой файл, т.е. в evremote2);
# POWER – комментарий для данного кода клавиши, т.е. буквенное (физическое) обозначение на самом пульте, т.к. это комментарий, то соответственно не является обязательным параметром, но прописать его стоит для себя, чтобы лучше ориентироваться в массиве кнопок. Понятно, что он завязан с кодом клавиши «жестко» (на что нажали, то и получили).
Переходим к рассмотрению работы второго файла - evrtmote2. Данный файл будем считать главным файлом во всей нашей «кухне», т.к. просто так видоизменить его не получится, поэтому и отталкиваться по всей «цепочке» будем от него. В большинстве случаев именно из-за отсутствия в нем соответствия на входной параметр «наименование клавиши для дальнейшей обработки» цифрового обозначения (id) клавиши в сборке E2 стопорится вся работа налаженной системы. И именно поэтому файлы lircd.conf и evrtmote2 из сборки в сборку мы носим вместе.
Т.е. если мы заменяем в работающей связке (lircd.conf и evrtmote2) в файле lircd.conf например:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
на
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
,
то для переданного в evrtmote2 значения «наименование клавиши для дальнейшей обработки» STANDBY не будет найдено числовое значение переменной keyid (Цифровое обозначение (id) клавиши в сборке Е2) и дальше передавать будет нечего, «цепочка» разорвется и клавиша не заработает.
Как же быть, если после очередной установки новой сборки E2 пульт отказался работать (например автор закинул файлы только на новый пульт, а у нас старый или вообще хотим юзать сборку на аппарат на аналогичном процессоре, но имеющий «специфический» пульт)? Заменой двух файлов (lircd.conf и evrtmote2) мы можем нарушить дальнейшую «цепочку» и если нам повезет, то конечно заработают все кнопки пульта, если нет, то может заработать половина, или вообще …
Более правильным вижу следующий выход из данной ситуации:
Т.к. я уже говорил, что файл evrtmote2 мы редактировать не будем, а файл lircd.conf в обязательном порядке будет содержать в своей структуре «наименование клавиши для дальнейшей обработки» (как их подсмотреть в файле evremote2 будет описано ниже), то и смотреть мы будем в первую очередь на файл lircd.conf идущий с данной сборкой (пусть и не для нашего пульта – сейчас нам это не важно!).
Берем коды первого указанного пульта (ну, раз в сборке пульт находится по умолчанию, то работать по идеи должен) и переписываем себе «наименование клавиши для дальнейшей обработки», т.е. те которые указаны перед кодом клавиши:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Эти наименования должны по умолчанию содержаться в evremote2. Согласны? Ну, тогда едем в процесс создания своего lircd.conf дальше.
Сейчас разберем, что мы будем делать, если надо (как уже писал) новый пульт (с кнопкой портал) из работающей сборки заменить на старый (соответственно без кнопки портал). Оговорюсь, что все это мы разбираем, чтобы понять суть работы и подобраться совершенно не к старому пульту, а например к пульту от Philips, BBK или …. (короче, как обещал). А делать мы будем следующее:
- возьмем файл lircd.conf на наш старый пульт;
- в этом файле оставим «шапку», т.е. описание параметров пульта до слов «begin codes»;
- коды клавиш также оставляем, т.е. 0xDA25 и т.д.;
- а вместо указанных в нашем файле «наименование клавиши для дальнейшей обработки», т.е. KEY_POWER указываем «наименование клавиши для дальнейшей обработки» из родного (для данного имиджа) файла lircd.conf (либо родного для имиджа evremote2 - как посмотреть их наименование там будет описано ниже). Возможно, они будут в нем без приставки KEY_ (например POWER, вместо нашего KEY_POWER) или вообще именоваться в другом стиле. Можно конечно на данном этапе постараться подобрать замену более менее исходя из логики, но я предлагаю на это забить особенно если в вашем файле (на свой пульт) нету комментария на физическое обозначение кнопки на пульте (т.е. то которое после #), что в скором времени мы исправим. Т.к. выискивать, что мы подобрали, а что нет, в дальнейшем - будет еще сложнее. Наша задача сейчас заполнить на все наши коды клавиш (0xDA25 и т.д.) «наименование клавиши для дальнейшей обработки» из родного (для данного имиджа) файла lircd.conf. И не пугайтесь, и не замарачивайтесь, заполняя на свою кнопочку с кодом 0xDA25 (KEY_POWER) имя клавиши «для дальнейшей обработки» как RED, т.к. в скором времени мы это все это исправим! Еще проще вместо самих команд (RED, GRREN и пр.), заполнить все цыфрами 01, 02, 03 и т.д. и дальше ориентироваться уже по ним, это поможет видя вывод через RS-232 не управлять пока ресивером прыгая в нем по папкам, каналам, и прочим командам. Просто в ввывод будет сыпать: unknown key и номер нашей кнопки.
- если файл готов, то останавливаем Е2 командой init 4, закидываем новоиспеченный файл с заменой (надеюсь копию себе при экспериментах оставляете всегда?), запускаем putty для связи через нуль-модемный кабель (rs-232), перезагружаем E2 командой init 6.
- пока система перегружается готовим листок бумаги и ручку;
- система загрузилась и в окно putty сыпется различная информация о происходящих процессах – отлично! Берем пульт и последовательно (как учили в школе: с лева – на право, с верху в низ) начинаем нажимать на клавиши пульта. Сейчас нам будет важно записать комментарии для наших кнопок (для файла lircd.conf) дабы в последствии навести порядок. Например физически нажимаем на кнопку увеличения громкости, а нам в лог сыпит (либо unknown key и номер нашей кнопки - смотря по какому пути пошли):
Помечаем себе на листочке грокость+ = KEY_GREEN. Так делаем для всех кнопок пульта.
Любуемся, что за информацию мы можем взять еще отсюда:
Наименование пульта (ценная информация, если в файле коды на несколько пультов) указанного в lircd.conf по которому прошло соответствие на сигнал ПДУ;
Интерпретация кода (00000000996638c7 – в lircd.conf указан в виде 0xXXXX) – можно обойтись и без данной информации.
- открываем свой файл lircd.conf (с которым проводили данные эксперименты) и правим (комментируем физические кнопки) исходя из полученной и записанной у себя информации:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
комментируем как:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
– т.к. ее и нажимали когда нам выдало KEY_GREEN.
В итоге у нас должен получиться файл с «жестко» зафиксированными соответствиями: код клавиши - #физическое наименование кнопки. Когда будем привязывать разные пульты (в т.ч. и не от sat ресиверов) без такой привязки мы просто запутаемся.
- вот теперь, на данном этапе, опираясь на «физическое» наименование кнопки и расставляем «наименование клавиши для дальнейшей обработки» взятые из родного для данного имиджа файла lircd.conf. Т.е. подбираем на ХХХ желаемую кнопку «для дальнейшей обработки» с имиджа. Например:
- до подбора вместо ХХХ любая несоответствующая хрень GRENы, POWERы и т.д. (мы ведь не подбирали соответствие):
ХХХ 0x22dd #громкость+
ХХХ 0x4AB5 #кнопка 1
А теперь, когда сделали привязку (код клавиши - #физическое наименование кнопки) можно будет подобрать, т.е. после подбора:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Чтобы вам было легче ориентироваться какие команды ("для дальнейшей обработки") могут быть прописаны до кодов , т.е. на место до 0хXXXX, давайте чуточку приоткроем занавесу файла evremote2 открыв его в notepad+. Ищем (через CTRL+F) строчку /var/run/lirc/lircd, далее в ней пойдет описание "кодов для дальнейшей обработки"
Для отображения без промежуточных "крякозябр" скопируйте ее и вставьте на чистый лист.
Вот теперь подбирайте для своих закомментированных кнопок # "коды для дальнейшей обработки".
Я физически на своем старом пульте (без кнопки портал) насчитал 54 кнопки, данный файл evremote2 cодержит 65 команд - следовательно этим количеством кнопок и ограничен наш новый пульт. А мой получается урезан на 65-54=11 возможных команд с пульта.
- сделали привязку по всем физическим клавишам отлично. init 4, закидываем новоиспеченный файл с заменой, init 6.
- загрузились. Проверили работу. Все работает! Если: нет, то тогда читаем еще раз.
С родным пультом понятно, в начале мы использовали его же шаблон (rc09(HOF-54D)) файла lircd.conf, а как быть с другими пультами на которые у нас нету lircd.conf с параметрами и кодами клавиш?
На самом деле вариантов несколько:
1) Самостоятельно создать файл в операционной системе Linux. Например в неплохо документированном дистрибутиве Ubuntu при помощи программы irrecord пакета lirc. К минусу данного способа можно отнести то, что нужно паять самодельный ir приемник (схемка не сложная, но многих оттолкнет). Все довольно хорошо документировано (по крайне мере в моменте создания lircd.conf). Данным способом получится подружить ресивер чуть ли не с пультом от электрочайника.
2) Посетить базу готовых файлов lircd.conf на различные пульты и подобрать файлик на тот пульт, который возможно есть дома или в ближайшем магазине по разумной цене и нормального вида (в плане расположения кнопок и качества исполнения).
Там на некоторые пульты и картинки есть.
Пока мы учимся, то расскажу, как пойти по второму способу (в первом, поверьте, сложного тоже ничего нет, но описывать его не буду по причине: все уже расписано – гуглим) и что из этого можно получить.
Осматриваюсь дома в поисках подходящих подопотных (сразу оговорюсь, задача была не заменить пульт, а поставить эксперимент, поэтому по наличию и расположению необходимого количества кнопок задача не стояла, ее я доверю Вам):
Пульт стандарта RC-5 (о данной кодировке «Philips» немного ниже, т.к. она ваш спаситель в мире универсальных пультов), такой который шел раньше с ЭЛТ телевизорами «Витязь», «Горизонт» и пр. – пульт покупался для работы с SkyStar USB HD под OC Linux, т.к. от одного только вида родного плакать хочется («хлипкое, угрюмое Г»). Как я его настроил (HOW-TO) писал на
XBMC. Кодировка RC-5 выбиралась не случайно, т.к. из поддерживаемых драйвером dvb карточки является самой дешевой, а также драйвер не поддерживает работу через lirc с другой кодировкой (дабы размахнутся на пульт от электрочайника).
Вторым подопотным стал пульт от старого, уже не используемого dvd проигрывателя BBK (маркировка на пульте RC-25).
Итак, берем первый пульт (RC-5 он же Philips), данная кодировка с успехом используется в TV, DVD, SAT, VCR и прочей технике с той лишь разницей, что «диапазоны» стандартизированных (да, да, были времена, когда все хорошо документировалось, за что говорим большое спасибо Philips) кодов не пересекаются между собой, т.е. пульт от dvd не будет мешать телевизору если оба работают в данной кодировке. Нам сейчас (и всем обладателям универсальных пультов, которые могут перевести работу своего ПДУ на кодировку Philips) надо двигаться дальше, а именно:
где брать в папке rc-5 файлик rc-5 по факту это lircd.conf, т.е. файл с параметрами и кодами кнопок для данной кодировки на различные виды техники (TV, DVD, SAT, VCR и пр. о чем нам говорит параметр sys_xx в нутрии файла, так например sys_00 – это для пультов от TV).
Дальше будем редактировать наш файл lircd.conf (который на ресивере). Нам надо вставить все от строк «begin remote» до «end remote» из файла гс-5 в наш lircd.conf (т.е. добавить еще один пульт с кучей кодов, ничего в нем не меняя). Не забываем про init 4, init 6.
И снова putty через rs-232. Теперь берем в руки пульт RC-5 (или свой универсальный переведенный в кодировку Philips) и клацаем на клавиши. Смотрим вывод, будет что-то вроде этого:
Разберем:
0000000000001020 00 – код нажатой клавиши;
unknown key – evremote2 не знает как обработать посылаемую ему команду sys_00_command_3b (он ждет, какого-нибудь KEY_VOLUMEUP, а тут sys_00_command_3b прилетает);
PHILIPS_RC-5 – название добавленного пульта введенного в параметрах lircd.conf (при желании пишем свое название).
Что делаем дальше догадались? Именно! Берем листочек и записываем комментарии для наших кнопок. Т.е. еще раз: нажали например кнопку MUTE, а в ответ пришло - sys_00_command_3b – это для себя и пометили. Так пробегаемся по всем клавишам. Открываем lircd.conf и оставляем строки только с нашими ответами sys_00_command-ами, остальные удаляем, т.к. нам они не нужны. На против них, за знаком # пишим физическое наименование кнопки на пульте. Далее привязываем вместо sys_00_command «наименования клавиш для дальнейшей обработки». Закидываем на ресивер. Перегруз. И пользуемся новым пультом!
По второму пульту BBK RC-25 все тоже самое, только загвоздка в том, что нету на сайте в папке bbk файла на пульт RC-25 (есть DV963SM, NP101S-v2, PV400s, RC022-03R). Ну, что попробуем подобрать. Делаем все тоже самое только в наш lircd.conf добавим уже все четыре пульта (DV963SM, NP101S-v2, PV400s, RC022-03R). И посмотрим, может на какой-нибудь отзовется.
Жмем кнопки, а глазки тем временем смотрят в окошко putty:
Ну, вот он BBK_RC022-03R – стоило догадаться, что по закону подлости он будет последним в списке. Не унываем, зато есть! Дальнейший ход действий известен.
Полученный файл lircd_BBK.conf в качестве примера для данного пульта в прищепке (прописан только этот пульт, т.е. при желании не заменять, а добавлять в свой lircd.conf). Ориентировался на keymap_amiko.xml, т.е. выбирать поведение пульта, как на amiko.
В продолжение операций по пульту BBK: разобрал, почистил (до этого не работали кнопки play, stop, pause). Кнопки: play, stop - заработали. По кнопке pause - вроде отклик есть (смотрим через камеру телефона), наверное просто нету кода на данную кнопку в файле RC022-03R.
Пока разбирал обратил внимание на отсутствие установленного конденсатора. Установил.
В конфиге у себя на данный пульт подправил eps c 30 до 45. В итоге пульт работает отлично.
Что получил в итоге: т.к. использовали родной lircd.conf и evremote2 (т.е. изначально наш родной пульт работал в данной сборке), то добавив в lircd.conf параметры полученные для пульта BBK RC-25 можно управлять E2 теперь и им. Единственный момент данный пульт не включит ресивер из режима полного выключения (читаем ниже), но для этого пока есть кнопочка на самом ресивере (фронт панель), а также возможность использования режима "ожидания", тогда и включить сможете с него.
Честное слово я старался! День убил.
По желанию:
- можно и спасибо сказать (кнопочкой)
P.S. Не подскажите: последние сутки распродажи родных пультов со скидками были?
УПС. Один подводный камешек все же всплыл, а именно: ресивер не включается по кнопке power неродного пульта, хотя выключается исправно. Видимо в режиме полного выключения (когда ресивер только на дежурном питании) первоначальное обращение происходит к другому файлу без считывания lircd.conf, возможно тот же evremote2. Будет время покопаюсь, возможно найду решение.
Пока, как временная мера: меню - настройка - система -интерфейс пользователя - короткое нажатие кнопки питания - режим ожидания. Те, кто постоянно используют данный режим, то инструкция рабочая полностью на 100%.
По режиму "полного не фальшивого выключения" - капаем дальше. У кого есть идеи - подкидывайте.
Часть 2. Final.