Домашняя страничка Стефурак П.Б. Yandex-пробки и другая информация на телевизоре LG lg32lh2000.
 
     Домашняя Промзона Спальный район  

Промзона \ Yandex-пробки и другая информация на телевизоре LG lg32lh2000.
Модификация ПО телевизора для показа пользовательской информации.

  Замечателен и могуч сервис Yandex-пробки. Хорошо с помощью него смотреть, где сейчас дорожные работы и/или аварии (пробки везде, так что на них можно и не смотреть). Одна незадача, нужен компьютер или смартфон, а так же подключение к WEB. Это все конечно есть, но было бы здорово видеть актуальную информацию на экране телевизора. Нажал перед выходом из дома 2 кнопки - и все на экране! К тому же у моего ТВ экран имеет разрешение 1366 на 768, а это пока ноутбуки и смартфоны не обеспечивают (при размере экрана в 32").
   
Чтож, сделаем это! ;)
 
Подготовка телевизора

  ТВ был модернизирован год назад подключением к нему USB-хаба, маленькой флешки, USB сетевой карты и небольшим изменением ПО по материалам замечательных ребят из OpenLGTV и конференции IXBT (респек им и уважуха, +100500).
  ТВ теперь умеет воспроизводить видео с NAS, имеет WEB сервер для настройки, FTP, Telnet и т.д. и т.п. сервера. Более подробно см. IXBT.
 
Yandex-пробки

  Сначала, все выглядело очень радужно - у "пробок" есть Static-API. Здорово, конечно, но "максимально допустимый размер изображения карты составляет 650x450 пикселов". Но у меня-то 1366 на 768! Не подойдет.
  Альтернативный путь - самостоятельно формировать нужное изображение (заходя немного дальше, скажу, что созданное решение универсально и подходит не только для этой задачи, а может быть использовано и для других).
  Разобравшись с JavaScript API 2.x, пишем короткую HTML-обертку для нашей задачи (ymaptrafic.html в архиве) - страница представляет собой карту Тюмени на все окно браузера с включённым отображением пробок и дорожных событий. Координаты центра карты и масштаб задаются так: center: [57.1445,65.57], zoom: 15.
  Для получения WEB-страницы, в виде изображения, была написана специальная программа (informer.exe в архиве). Она делает очень простую вещь: смотрит свой файл настроек (informer.ini в архиве) и для каждой секции:
  • Создает экземпляр браузера с размерами browser_Width на browser_Height пикселей - это нужно для правильного отображения страниц;
  • Если в template указан URL начинающийся с http://, то загружает в браузер соответствующую страницу по URL. Если указан локальный файл - загружает его;
  • Дожидается окончания загрузки страницы браузером и отработки им всех скриптов страницы - browser_wait;
  • Копирует страницу в виде рисунка с координатами и размерами picture_left, picture_Top, picture_Width, picture_Height - то есть вырезает из картинки с размерами browser_Width на browser_Height , что позволяет получить итоговое изображение нужного размера;
  • Если не пуст параметр datetime_stamp_format - используя его как шаблон, в правом верхнем углу картинки выводит соответствующий текст - в моем случае - текущую дату и время;
  • Сохраняет полученную картинку в локальный файл с именем result_filename - поддерживаемые форматы Jpeg и Png определяются по имени файла.
    По завершению работы программы мы имеем в текущем каталоге картинки в формате png с изображением Yandex-пробок и, скажем, прогноза погоды:
       
    Ок, откладываем это в сторону и смотрим тяжелым внимательным взглядом на ТВ.
     
    Доработка телевизора

      Да, можно на ТВ эти картинки смотреть с сервера по сети, штатными (теперь уже) для него средствами - Menu - USB - Фото - Диск1 - Подключенный сетевой ресурс - выбор файла - Показать. Но это не 2 касания кнопок пульта ДУ, а все 8 в лучшем случае! Скучно.
      Нескучный вариант родился, как говорится, внезапно.
      В данном ТВ есть встроенная система справки (Menu - кнопка info на пульте):
       
       
    А зачем она, кроме одного раза посмотреть? В общем, заменим, на более полезную информацию.
      ПО телевизора работает по управлением богомерзкой альтернативной ОС Linux. Копаясь по FTP и Telnet во внутреннем мире этого аппарата, я наткнулся на каталог /mnt/lg/res/emanual/ в недрах которого, как оказалось, как раз и хранится встроенная система справки!
       
    И тут первая проблема: по FTP файлы на изменение недоступны. Ок, цепляемся telnet'ом, смотрим откуда ноги растут у этой истории, команда mount намекает: /dev/mtdblock5 /mnt/lg/res/emanual squashfs ro. Ага.
      Создаем на флешке, подключенной к ТВ, папку emanual с частью иерархии оригинальной - в ней будет жить наша новая "справочная система ТВ" (emanual в архиве). Разобраться с форматом тамошних XML, оставляю Вам, уважаемый читатель, на закуску :).
      Через Web интерфейс ТВ в Autostart script прописываем:
    #Отключаем монтирование оригинальной справки
    umount /mnt/lg/res/emanual
    #На ее место монтируем свою, альтернативную
    mount /mnt/usb1/Drive1/emanual /mnt/lg/res/emanual -o rw
     
    Действуя таким образом, получаем доступ к /mnt/lg/res/emanual через /mnt/usb1/Drive1/emanual, т.е. через FTP (ftp://IP_LG_TV_в_сети/mnt/usb1/Drive1/emanual/)!
     
    Возвращаемся к компьютеру

      А дальше - все просто.
      В sheduler ОС (старт, скажем, каждые 15 мин.) прописываем старт bat файла (start_siqense.bat в архиве), в котором, по сути, выполняются 2 действия:
  • скачиваются нужные страницы и формируются png файлы;
  • полученные файлы, по FTP, закидываются в emanual/eu/image/, туда, где его ждет ТВ.
      Итого:
       
    Можно еще и XMLи менять динамически - хороший, в общем, аппарат lg32lh2000.

     
      Архив ПО и материалов статьи,    OpenLGTV,    IXBT,    Yandex-maps Static-API,    Yandex-maps JavaScript API 2.x,   
     
     
  •