Пишу о программировании, книгах, науке и жизни
4 заметки с тегом

raspberry_pi

Выводим температуру процессора Raspberry Pi 3 в интерфейс Kodi

18 июля 2017, 23:03

Понадобилось мне иметь под рукой показания температуры процессора во время воспроизведения. Все дальнейшие действия будут описаны для обложки Estuary медиацентра Kodi на операционной системе OSMC.

Все дополнения Kodi находятся в этом каталоге:

cd /usr/share/kodi/addons/

Каталоги с файлами обложек начинаются со слова «skin.», шаблоны лежат в папке «xml»

cd skin.estuary/xml

Так как я хотел вывести температуру процессора рядом со временем, я просто поискал по соответствующей строке «System.Time». Весь список подобных информационных меток можно найти на вики-ресурсе Kodi.

grep "System.Time" *.xml --color=auto

Нашлось два файла, Custom_1109_TopBarOverlay.xml — файл верхней панели, которая появляется при воспроизведении и Includes.xml, который отвечает за внешний вид, размер и расположение элементов управления по умолчанию, метка времени из этого файла отображается на домашней странице.

Для того, чтобы было интереснее выведем рядом в температурой процесса текущий FPS.

sudo nano Custom_1109_TopBarOverlay.xml

Нажимаем Ctrl+W и ищем метку System.Time

Отлично, вот здесь ниже и добавим наши новые элементы. Для экономии места сгруппируем их в горизонтальную группу.

<control type="group">

    <!-- Часы -->
    <visible>!Window.IsVisible(extendedprogressdialog)</visible>
    <animation effect="fade" time="150">VisibleChange</animation>
    <control type="label">
        <font>font_clock</font>
        <shadowcolor>text_shadow</shadowcolor>
        <top>0</top>
        <right>20</right>
        <height>200</height>
        <width>600</width>
        <align>right</align>
        <label>$INFO[System.Time]</label>
    </control>

    <!-- НАШ КУСОК КОДА -->
    <control type="grouplist">
        <!-- Группа будет горизонтальной -->
        <orientation>horizontal</orientation>
        <!-- Использовать координаты элемента управления в качестве местоположения -->
        <usecontrolcoords>true</usecontrolcoords>
        <!-- Отступ справа -->
        <right>24</right>
        <!-- Отступ сверху -->
        <top>130</top>
        <!-- Выравнивание -->
        <align>right</align>
        <!-- Ширина -->
        <width>500</width>
        <!-- Высота -->
        <height>100</height>
        <!-- Промежуток между элементами в списке -->
        <itemgap>15</itemgap>
        <!-- Надпись -->
        <control type="label">
            <width>auto</width>
            <height>100</height>
            <!-- Текст -->
            <label>FPS: $INFO[System.FPS]</label>
            <!-- Размер шрифта -->
            <font>font12</font>
            <!-- Тень от текста -->
            <shadowcolor>text_shadow</shadowcolor>
        </control>
        <control type="label">
            <width>auto</width>
            <height>100</height>
            <label>CPU: $INFO[System.CPUTemperature]</label>
            <font>font12</font>
            <shadowcolor>text_shadow</shadowcolor>
         </control>
    </control>
    <!--  // НАШ КУСОК КОДА -->
    
    <!-- Информация о времени окончания воспроизведения -->
    <control type="grouplist">
        <right>24</right>
        <top>90</top>
        <width>800</width>
        <height>100</height>
        <align>right</align>
        <itemgap>5</itemgap>
        <orientation>horizontal</orientation>
        <usecontrolcoords>true</usecontrolcoords>
        <control type="label">
            <label>$INFO[Player.FinishTime,$LOCALIZE[31080]: ]</label>
            <shadowcolor>text_shadow</shadowcolor>
            <height>100</height>
            <width>auto</width>
            <visible>!String.isempty(Player.Duration)</visible>
            <visible>Player.HasVideo</visible>
            <visible>!VideoPlayer.Content(LiveTV) | VideoPlayer.HasEpg</visible>
        </control>
        <control type="image">
            <top>2</top>
            <left>0</left>
            <width>60</width>
            <height>40</height>
            <fadetime>300</fadetime>
            <aspectratio aligny="center" align="right">keep</aspectratio>
            <texture>dialogs/volume/mute.png</texture>
            <visible>Player.Muted</visible>
        </control>
    </control>

</control>

Жмём Ctrl+X, затем вводим Y для сохранения, потом Enter и перезапустим Kodi для применения сделанных изменений:

sudo systemctl restart mediacenter

Смотрим, что получилось:

Дело сделано!
По аналогии можно также добавить любые необходимые элементы на главный экран через файл Includes.xml.

osmc   raspberry_pi

RSS + Transmission на OSMC и Raspberry Pi 3

18 июля 2017, 22:22

Как решить задачу автозакачки торрентов на Raspberry Pi 3 и операционной системе OSMC?

  1. Ставим в App Store OSMC торрент-клиент Transmission.
  2. Настраиваем его согласно этой статье на Хабре, указываем папку для загрузки и включаем удаленное управление.
  3. Устанавливаем скрипт для закачки торрентов по RSS.
  4. Регистрируемся на сервисе litr.cc, добавляем раздачи для отслеживания обновлений.
  5. Копируем адрес RSS для закачки в настройки скрипта, в секцию FEED_URLS_AND_DIRS.
  6. Добавляем скрипт в планировщик, как указано в статье о нём.

Выгода!

osmc   raspberry_pi   rss   торренты

OSMC, Raspberry Pi 3 — ТВ, телепрограмма и значки каналов

4 февраля 2017, 19:49

Ссылки

Настройка телепрограммы EPG
Домашний медиаплеер из Raspberry Pi

Дисклаймер

Кратко о том, как настроить телевещание и телепрограмму на Raspberry Pi + OSMC.
Около двух сотен каналов за 1$/месяц, неплохо, правда?

Телеканалы

  1. Регистрируемся на Edem.TV, запускаем мастер настройки.
  2. Оплачиваем, формируем плейлист. Я выбрал все галочки, кроме армянских и украинских телеканалов.
  3. Система -> Настройки -> Дополнения -> Мои дополнения -> Клиенты PVR -> PVR IPTV Simple Client -> Установить.
  4. Жмакаем настройку PVR клиента, указываем в поле «Ссылка на M3U» ссылку на плейлист без авторизации со страницы https://edem.tv/playlist
  5. Переходим на вкладку «Логотипы каналов», поле «Логотипы каналов из XMLTV» — предпочтительно XMLTV.
  6. Система -> Настройки -> ТВ -> Общие -> Включить

Телепрограмма

  1. Переходим на вкладку EPG, указываем в поле «Ссылка на XMLTV» адрес: http://www.teleguide.info/download/new3/xmltv.xml.gz
  2. Телепрограмма формируется по московскому времени. Поэтому считайте: если вы живёте в часовом поясе +2 к Москве. то в поле «Сдвиг по времени для EPG (часов)», нужно указать —2.00.
  3. Установить галочку «Применять сдвиг по времени для всех каналов».

Логотипы каналов

Скачиваем логотипы каналов:

wget http://shtyrlyaev.ru/uploads/rpi/channels.zip
sudo unzip channels.zip

Переходим в Система -> Настройка -> ТВ -> Меню/OSD -> Папка со значками каналов, указываем папку с логотипами каналов, жмакаем «Искать недостающие значки». Перезапускаем малинку и наслаждаемся жизнью без смарт-тв.

И что мы таки имеем, Сара?

Хуева туча каналов, есть HD-каналы, фильмы, сериалы, музыка, научпоп, эротика, кулинария. Работает ничуть ни хуже среднестатистического телека, если ты конечно пульт настроил. Телепрограмма в удобном виде, опять же. Доллар в месяц, сущие копейки. Нужен только интернет и немного свободного времени для настройки.

osmc   raspberry_pi   tv

OSMC, Raspberry Pi 3 и удалённое управление пультом

4 февраля 2017, 11:49

Ссылки по теме

Как сделать медиаплеер на основе Raspberry Pi 3
Медиаплеер из содержимого кладовки
Infrared Remote for Raspberry Pi Mediacenter
Дистанционное управление в Linux

Зачем тебе пульт?

Приложения Kodi или Yatse для удалённого управления медиацентром XBMC конечно хороши, но нет главного — нельзя пользоваться ими вслепую как пультом от телевизора, кнопки то тактильно не ощущаешь. Да и включать постоянно приложение, искать телефон — ну его нафиг, лучше искать пульт, по старой русской традиции, предварительно обернув его в плёночку.

Поэтому берём какой-нибудь ненужный пульт и идём обучать малинку работать с него. Желательно, чтобы у пульта были кнопки регулирования громкости, воспроизведения/паузы, кнопка выключения и самое главное — джойстик с кнопкой ОК. Отлично подойдет пульт от DVD-плеера, например, BBK RC-026-01, который стоит около 300 рублей:

Нам понадобится:

  1. ИК-приёмник, например TSOP382
  2. Пульт от телевизора
  3. Putty, для доступа по SSH

Подключение

Распиновка с лицевой стороны инфракрасного приёмника:

Распиновка GPIO Raspberry Pi

Подключаем или припаиваем контакты ИК-приемника:

GPIO 18 — к контакту GPIO 18 на малинке, жёлтый контакт на схеме с числом 18
GND — к любому контакту Ground (земля) на малинке, черный контакт на схеме, любой
+3.3V — к контакту 3.3V на малинке, оранжевый контакт на схеме, их всего 2 шт.

Если вы хотите включать и выключать малинку по кнопке POWER c пульта, то дополнительно припаяйте контакт GPIO 18 ИК-приёмника к GPIO 3 малинки, при замыкании этого контакта на землю, происходит вкл./выкл. платы.

Проверяем контакты на всякий случай и включаем малинку в сеть.

Настройка

Первым делом нужно включить LibRC в настройках OSMC:
Система -> Настройки -> My OSMC -> Pi Config -> Hardware Support (логотип малинки)
Включаем параметр Enable LIRC GPIO support и выставляем gpio_in_pin — 18.

Перезагружаем малинку и подключаемся к ней по SSH c помощью Putty (прописываем IP малины и порт 22).
Рекомендую в своем домашнем роутере выставить фиксированный IP-адрес для малины, чтобы всегда можно было зайти по одному и тому же айпишнику. Логин-пароль: osmc/osmc.

Установим стандартный пакет для управления процессами

sudo apt-get update && sudo apt-get install psmisc

Теперь можно приступать к обучению пульта, убьем процесс LibRC и запустим получение данных с пульта:

sudo killall lircd
mode2 -d /dev/lirc0

Теперь, если посветить пультом в ИК-приемник, в терминале будут отображаться принятые сигналы:

Если вдруг уже идут сигналы без нажатия кнопок на пульте, то это могут быть помехи от китайских блоков питания, ртутных ламп и пр. Итак, если сигналы идут, значит ИК-приемник мы подключили правильно и сигналы принимаются малинкой.

Начнем выставлять соответствия кнопкам пульта, для обучения существует специальная утилита irrecord:

irrecord -d /dev/lirc0 lircd.conf

Нажимаем два раза Enter и начинаем зажимать подряд все кнопки на пульте, пока утилита не сообщит нам о том, что она получила паттерн. Затем утилита попросит еще раз понажимать кнопки на пульте, зажимая их на 1 сек. После этого, irrecord предложит нам ввести название кнопок и записать их сигнал. Весь список кнопок выложен тут или его можно получить по команде:

irrecord --list namespace

Список самых необходимых кнопок (наглядная картинка расположения кнопок на пульте):

KEY_POWER Выключение/включение платы
KEY_MUTE Выключение звука
KEY_VOLUMEDOWN Убавление громкости
KEY_VOLUMEUP Добавление громкости
KEY_PLAY Воспроизведение
KEY_PAUSE Пауза
KEY_PLAYPAUSE Совмещённая кнопка Воспроиз./Паузы
KEY_STOP Остановка воспроизведения
KEY_LEFT Кнопка влево
KEY_RIGHT Кнопка вправо
KEY_DOWN Кнопка вниз
KEY_UP Кнопка вверх
KEY_OK Кнопка ОК/Enter
KEY_EXIT Выход/Отмена
KEY_INFO Краткая информация о проигрываемом файле
KEY_EPG Телепрограмма
KEY_SUBTITLE Субтитры
KEY_AUDIO Переход в раздел «Музыка»
KEY_PREVIOUS Предыдущий трек
KEY_NEXT Следующий трек
KEY_0 ... 9 Цифровые кнопки от 0 до 9
KEY_HOME Вернуться на главный экран
KEY_TITLE Техническая информация о проигрываемом файле
KEY_CONTEXT_MENU Контекстное меню
KEY_REWIND Перемотка назад
KEY_FORWARD Перемотка вперёд

Вводим название кнопки в терминал, жмакаем ее на пульте и ждем ответа от утилиты:

После того, как обучили все нужные кнопки, утилита попросит проверить битовую маску, для этого нужно быстро понажимать на каждую кнопку несколько раз.
Как будет написано, что файл конфигурации записан — идём опять в My OSMC, в раздел Remote. Выбираем наш файл конфигурации (по кнопке Browse), применяем, перезагружаем плату и начинаем управлять малинкой как белые люди — пультом!

osmc   raspberry_pi