24 ноября | 2024г. | 08:12:59


АвторТема: Тонкая настройка HDMI-CEC - управление всеми устройствами одним пультом  (Прочитано 364451 раз)

moskvish и 1 Гость смотрят эту тему.

Оффлайн NomadАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 116
  • Поблагодарили: 212
  • Уважение: 0
Итак, предлагаю обсудить тему уменьшения количества пультов в доме.

В моём случае - есть очень удобный пульт от плазмы LG, после которого VU+ в руки брать не хочется. :) И ещё открывается интересная возможность: программно из ресивера управлять работой телевизора - переключать режимы 4:3/16:9, громкость и т.д.

Тема предполагает желание копаться в плагинах на питоне. Если такого желания нет - смысла читать статью дальше тоже нет.

Модуль HDMI-CEC встроен практически во все прошивки, и в теории позволяет управлять всеми устройствами, соединёнными по HDMI, одним пультом. Скорость там небольшая, ~30 байт/сек, но для управления хватит. :) На практике - единого обязательного стандарта нет, и каждый производитель норовит приделать свои особые команды. LG видимо решил идти этим путём, и в стандартной конфигурации у меня HDMI-CEC не работает.

Далее, к вшитому модулю цепляется плагин на питоне, который в разных прошивках реализован по разному:

- BlackHole - полностью закрыт. Внешне видно, что функции похожи, но разбираться методом тыка - неинтересно;
- OpenPli - всё открыто, полная реализация стандарта;
- VTI - всё открыто, но в ядерном модуле (как минимум в версии VTI 3.1) есть ошибка, препятствующая полной реализации.

Ну, OpenPli я попробовал, но никакого терпения не хватает настроить всё в ней под себя. :) Может потом когда-нибудь, когда времени будет больше. ;)

Остановился на VTI.
Плагин ставится в /usr/lib/enigma2/python/Plugins/SystemPlugins/HDMICEC/plugin.py

Для наших целей нужно будет добавить пару строк в конфиг Энигмы:

1) заходим в терминал;
2) останавливаем Энигму: init 4
3) в файл /etc/enigma2/settings дописываем строки:
        config.hdmicec.logenabledserial=true
        config.hdmicec.logenabledfile=true

4) запускаем Энигму: init 3

После этого в файл /tmp/hdmicec.log будет записываться весь журнал обмена.

Выглядит он примерно так:
Спойлер   :
[VTI HDMI-CEC] received cec message 87 from 0
[VTI HDMI-CEC] received cec message 0 from 0
[VTI HDMI-CEC] received cec message 89 from 0
[VTI HDMI-CEC] ** WakeUpMessage ** send message: 4 to address 0
[VTI HDMI-CEC] ** ActiveSourceMessage ** send message: 82:10:0 to address f
[VTI HDMI-CEC] ** Active VU Message ** send message: 85 to address f
[VTI HDMI-CEC] received cec message 87 from 0
[VTI HDMI-CEC] send cec message 82:10:0 to f
[VTI HDMI-CEC] send cec message 8e:0 to f
[VTI HDMI-CEC] received cec message 0 from 0
[VTI HDMI-CEC] received cec message 89 from 0
[VTI HDMI-CEC] received cec message 89 from 0
[VTI HDMI-CEC] received cec message 82 from 0

Дальше жмём кнопки на пульте ТВ и смотрим коды в журнале.
Если хочется обратного эффекта, то есть другой инструмент:
В скрипте начиная со строки 103 есть закомментированный блок:
Спойлер   :
# only used for testing
#      self.list.append( self.hdmiinputaddress )
#      self.list.append( self.hdmiinputvalue1 )
#      self.list.append( self.hdmiinputvalue2 )
#      self.list.append( self.hdmiinputvalue3 )
#      self.list.append( self.hdmiinputvalue4 )
#      self.list.append( self.hdmilogenabledfile )
#      self.list.append( self.hdmilogenabledserial )
# end testing
Если снять значок комментария (#), то после перезагрузки Энигмы из интерфейса плагина можно будет выдавать любые команды в телевизор, и смотреть на результат. :) Список команд с описанием - в присоединённом эксельном файле.

Далее: обработку принятых от телевизора команд добавляем в функцию messageReceived (по примеру уже написанных).
Например, я добавил отклик на запросы телевизора "Request Vendor ID" (запрос производителя ресивера), и "Request a status of device" (запрос состояния ресивера):
Спойлер   :
         elif message == 0x8c: # request vendor id
            address = addresstv
            cecmessage = 0x87  # send vendor id
            cecmessagetwo = 0x00
            cecmessagethree = 0x1d
            cecmessagefour = 0xec  # 001dec - Marusys, 000934 - DreamMultimedia, 001c62 - LG
            cmd = struct.pack('BBBB',cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour)
            logcmd = "[VTI HDMI-CEC] send cec message %x:%x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour,address)

         elif message == 0x1a: # request a status of device
            address = addresstv
            cecmessage = 0x1b  # send a status of device
            cecmessagetwo = 0x11  # play
            cmd = struct.pack('BB',cecmessage,cecmessagetwo)
            logcmdtwo = "[VTI HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
Отступы строго соблюдаем - в питоне это критично!
Как видно, вполне можно притвориться и дримбоксом. :)
По идее, эти строчки должны улучшить распознавание и работу разных моделей ТВ с ресивером.

Чтобы сделать пробуждение ресивера от телевизора, надо править в этой-же функции messageReceived строку:
    elif message == 0x85: # request active source
подставляем вместо 0x85 нужный код (я временно подставил 0x87), и ресивер будет просыпаться по команде с телевизора.

Теперь об обещанном ляпе в VTI: команды HDMI-CEC содержат собственно код команды, и параметры. Так вот, параметры в VTI просто решили не принимать! :( То есть в случае команды с параметрами - получить её просто не удастся. Зачем они это сделали - непонятно.

Добавлено  15 сентября | 2011г. | 19:21:20   
Ну вот - в моём случае это всё. Синхронного включения/выключения я добился, а дальше продвинуться не удаётся: телевизор всё передаёт исключительно параметрами в команде 89, которые нигде не документированы. Надеюсь, в видеооборудовании других марок не такие кардинальные отличия от стандартов. :)

Оффлайн 2boom

  • Рыцарь Джедай
  • *****
  • Сообщений: 15162
  • Поблагодарили: 23781
  • Уважение: +168
  • VU+ Duo 2 | Vu + Ultimo | DM800se (A8P) | MK-Digital xp1000
на подкуп резидента webmoney: R152988468288  yandex: 410011849574352  Приват24 (в личку)
Авторские работы (скины, пиконы, плагины) выкладывать на сторонних ресурсах запрещено, без согласования с автором
ПИКОНЫ (PICONS) мини FAQ 
ПАКЕТЫ ПИКОНОВ - РЕФЕРЕНС, ПРОВАЙДЕРЫ, СПУТНИКИ

Оффлайн NomadАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 116
  • Поблагодарили: 212
  • Уважение: 0
тут пасутся разрабы VTI
Ага, видел. Немцы там... скорее всего пошлют они меня с моим английским. :)

Оффлайн 2boom

  • Рыцарь Джедай
  • *****
  • Сообщений: 15162
  • Поблагодарили: 23781
  • Уважение: +168
Nomad, ситуация двоякая, когда просто постиш, обычно удаляют, но если конкретно поделу, то мирятся с английским, притом на форуме есть English Corner .....
  • VU+ Duo 2 | Vu + Ultimo | DM800se (A8P) | MK-Digital xp1000
на подкуп резидента webmoney: R152988468288  yandex: 410011849574352  Приват24 (в личку)
Авторские работы (скины, пиконы, плагины) выкладывать на сторонних ресурсах запрещено, без согласования с автором
ПИКОНЫ (PICONS) мини FAQ 
ПАКЕТЫ ПИКОНОВ - РЕФЕРЕНС, ПРОВАЙДЕРЫ, СПУТНИКИ

Оффлайн NomadАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 116
  • Поблагодарили: 212
  • Уважение: 0
Ну вот, с одной стороны понимание есть, хотя и частичное: разработчики выдали мне тестовую версию ядра VTI с полной реализацией HDMI-CEC. Коды от телевизора увидел.
Но вот с другой стороны - полностью глухо: описания параметров команды 0x89 нигде нет, а саппорт LG тупо посылает с такими вопросами подальше.
Так что если хотите нормального управления по HDMI-CEC - не берите LG. ;)

Оффлайн 2boom

  • Рыцарь Джедай
  • *****
  • Сообщений: 15162
  • Поблагодарили: 23781
  • Уважение: +168
Nomad, Проще непользавться этой примочкой во всем остальном телики LG очень неплохи в умелых руках....
Поройся на форуме ixbt, там народец даже свои прошивки под телики lg собирает, если я конечно не ошибаюсь, может инфа которая тебе требуется есть там....
  • VU+ Duo 2 | Vu + Ultimo | DM800se (A8P) | MK-Digital xp1000
на подкуп резидента webmoney: R152988468288  yandex: 410011849574352  Приват24 (в личку)
Авторские работы (скины, пиконы, плагины) выкладывать на сторонних ресурсах запрещено, без согласования с автором
ПИКОНЫ (PICONS) мини FAQ 
ПАКЕТЫ ПИКОНОВ - РЕФЕРЕНС, ПРОВАЙДЕРЫ, СПУТНИКИ

Оффлайн NomadАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 116
  • Поблагодарили: 212
  • Уважение: 0
Проще непользавться этой примочкой
Не пользоваться полезными и интересными штуками - это не наш метод. ;)

Поройся на форуме ixbt, там народец даже свои прошивки под телики lg собирает, если я конечно не ошибаюсь, может инфа которая тебе требуется есть там....
Я в курсе прошивок под Saturn 6 (LG), и всего что с ними связано. :) Ни у кого этой инфы нет, кроме самой LG. Arno наверное может выяснить её с дизасмом в руках, но ему это не надо. Ну и ладно - всё равно разберусь по мере накопления информации/логов/статистики. Может и дизасм возьму, если совсем нечего делать будет. :)

Оффлайн raven_2001

  • Падаван
  • *
  • Сообщений: 10
  • Поблагодарили: 0
  • Уважение: 0
С Панасоником - выключатся -выключается, а включятся - нет ! помогите - у кого работает !

Оффлайн NomadАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 116
  • Поблагодарили: 212
  • Уважение: 0
С Панасоником - выключатся -выключается, а включятся - нет !
В первом посте я эту ситуацию детально описал. СмОтрите код в журнале, ставите его вместо 0x85 - и будет Вам счастье. :)

Оффлайн kopengagen

  • Джедай
  • ***
  • Сообщений: 325
  • Поблагодарили: 158
  • Уважение: 0
У меня телевизор Samsung UE-46D7000 LS подключен через ресивер Yamaha rx 767  к  Gis 9895 . Tак вот если выключить Gis 9895  то выключится всё, если выключить телевизор, тоже всё выключится. Если включить Gis 9895 включается всё. Если включить телевизор включается всё, но через примерно 30 сек, т.е не в момент включения телевизора, а в момент когда телевизор выдает обратный сигнал аудио по HDMI. После включения кнопками пульта телевизора можно управлять  Gis 9895.,
а если в в плагине изменить elif message == 0x85: # request active source на 87, то после включения телевизора всё включается сразу, но Gis 9895 не реагирует на кнопки пульта телевизора. Есть какие нибудь мысли?

Оффлайн Дмитрий73

  • Джедай Куратор
  • **
  • Сообщений: 4404
  • Поблагодарили: 11815
  • Уважение: +95
А может у кого есть список кодов от тв Samsung?
Интересует код  команды выключения тв.

Оффлайн NomadАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 116
  • Поблагодарили: 212
  • Уважение: 0
Интересует код  команды выключения тв.
Стандартный - 0x36, если не подходит, то смотришь в журнал при выключении и подставляешь код, который он выдаёт.

Оффлайн KVI

  • Младший Джедай
  • **
  • Сообщений: 103
  • Поблагодарили: 67
  • Уважение: +1
Можно ли этот плагин "прикрутить" к имиджу CuBiC (for Uno). И где его скачать отдельно? В онлайне у имиджа CuBiC этого плагина нет.

Оффлайн Дмитрий73

  • Джедай Куратор
  • **
  • Сообщений: 4404
  • Поблагодарили: 11815
  • Уважение: +95
Стандартный - 0x36, если не подходит, то смотришь в журнал при выключении и подставляешь код, который он выдаёт.
А где сам плаг взять?Я на этом форуме новичок.

Оффлайн konman

  • Младший Джедай
  • **
  • Сообщений: 85
  • Поблагодарили: 55
  • Уважение: 0
Добрый вечер.
Может кто скинет готовый ipk пакет :drinks:
Добавлено  15 октября | 2011г. | 22:32:26   
Блин вот это с тормозил. Разобрался где его стянуть. :beta:
Добавлено  15 октября | 2011г. | 22:35:07   
С Панасоником - выключатся -выключается, а включятся - нет ! помогите - у кого работает !

У меня тоже Панас поставь как в начале написано в место 085 087 и всё окей па шит  включается и выключается (в ходит и выходит) :bye:

Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
21 Ответов
27921 Просмотров
Последний ответ 08 июля | 2014г. | 23:47:42
от spy77777
6 Ответов
9622 Просмотров
Последний ответ 30 августа | 2019г. | 19:11:58
от UHD4K
1 Ответов
4180 Просмотров
Последний ответ 19 марта | 2014г. | 21:27:42
от demmi
1 Ответов
5123 Просмотров
Последний ответ 13 мая | 2014г. | 22:37:25
от MENNEMO
1 Ответов
4709 Просмотров
Последний ответ 03 февраля | 2015г. | 08:11:52
от Alex.Caribsky



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!