babooshka tv, как самодельный видео-показатор сместил «точку сборки» моих пожилых родителей +27




Привет Хабра. Хочу я вам рассказать удивительную историю, приключившуюся с моими родителями благодаря небольшому приборчику, который я для них собрал в прошлом году. За одно расскажу о процессе создания, а так же поделюсь некоторыми любопытными открытиями.


Вместо аннотации...


Судя по всему, у старшего поколения доверие к ТВ, как источнику, обусловлено не столько узнаваемостью персонажей, стилем и структурой подачи, сколько морфологией самого носителя. Т.е. "сундук с кнопками" оказывает влияние на умы наших пожилых родственников просто в силу своей привычной формы и конфигурации, что бы в нем не демонстрировалось. Мои родители, как и многие прожившие всю жизнь в Советском Союзе люди — такие же не особо инициативные, недоверчивые и мыслящие себя "винтиками" от которых ничего не зависит, что, впрочем, не мешает им любить внуков и быть любимыми самим. Так или иначе, я, в порядке эксперимента, попробовал с этим что-то сделать.


Родители впервые смотрят нашумевший пару лет назад эпический фильм про он-вам-не-димона
Родители впервые смотрят нашумевший пару лет назад эпический фильм про он-вам-не-димона. (На крышке телевизора "голый" RPI первой модели, пруф оф концепт, так сказать)


Но обо всем по порядку…


Все началось с того, что мы с дочкой в очередной раз приехали к родителям в гости. Родители мои в возрасте. И как у всех пожилых пенсионеров, радости у них простые: цветочки полить, в парке погулять, пообщаться с детьми и внуками ну и, разумеется, телевизор. Куда же без него.


И вот последнее меня более всего расстраивало каждый раз. Дело даже не в том, что одни и те же персонажи рассказывают небылицы изо дня в день. Беда в том, что все российское тв (а другое они не смотрят) пропитано мощнейшим негативом. Я каждый раз, когда приезжал, просил выключить телек на все время нашего пребывания, просто потому что это невыносимо слушать даже фоном. Это какая-то бесконечная череда катастроф, происшествий и заговоров вперемешку со бравадами про "встающую с колен" промышленность и прочее "импортозамещение". А они в этом ежедневно. И это все, очевидным образом, сказывается на их психоэмоциональном состоянии.


Но, как же Интернет, спросите вы. Я тоже был уверен, что стоит родителям подарить компьютер, как тут же откроются новые информационные горизонты и родители мои забудут про этот шайтан-яшик сами собой. Не тут то было. Подаренный компьютер они худо-бедно освоили. Но используется он исключительно как средство для голосового общения. Увы, в пожилом возрасте вся техника сложнее скороварки (ну и привычного пульта телевизора, конечно же) представляется как непреодолимая сложность для освоения. И даже не то чтобы мне не удавалось их обучить, к примеру, открывать браузер, и искать что-нибудь. Папа все тщательно записывает в бумажный блокнотик. Пара дней повторений, и начинает получаться. Но, за отсутствием фактической мотивации, этот навык утрачивается столь же быстро, как и появляется. Одно дело — звонить детям и простить залить им фотографии внучки. Другое — получать какую-либо информацию об окружающей действительности в активной форме. Это воспринимается, попросту, как нечто чрезмерно сложное и потому лишенное особого смысла. "Есть же, вот, телевизор. Там новости показывают. Ну да, может быть несколько тенденциозные, но в целом же это все имеет место, держит в курсе, так сказать..." — так примерно рассуждал мой папа.


Решение пришло неожиданно.


Я тут время от времени допиливаю свой чудный проект Interplay Medium. Так вот у меня там есть плейер, который бегает на RPi и показывает кино в проектор. Я подумал, а что бы мне просто не подключить такую же штуку родителям в телек и не загружать им туда видео время от времени. Видосики, какие мы тут записываем. Наши маленькие домашние достижения. Зарисовки из поездок. Всевозможные компиляции из фото, а так же просто хорошие фильмы и… и можно еще что-нибудь полезное из актуальных образовательных youtube видео. И чтобы это все было максимально адаптировано для интуитивного управления с пульта того же ТВ. Нажал кнопку, оно началось. Нажал другую — остановилось.


Сказано — сделано.


Начало


Сперва я собрал все на бредборде и написал скриптец, который слушает IR сенсор и передает команды.


сборочка на бредборде с IR приемником и передатчиком (зачем нужен передатчик -- расскажу ниже)


Далее я буду рассказывать и сразу описывать процесс настройки и сборки. На тот случай, если вы захотите повторить конструкцию.


Чтобы завести babooshka.tv на Малинке, вам нужно по-минимуму произвести следующие действия:


  • установить lirc, чтобы ваши родители или бабушки с дедушками могли пользоваться привычным пультом от телевизора
  • установить основной пакет Бабушки + настроить атозагрузку
  • подключить IR датчик (и IR LED для управления, по желанию)
  • если вы планируете использовать RPi Zero (как это сделал я), вам понадобится еще спаять нехитрый фильтр для звука который будет подключен к двум PWM ногам Малинки

Моя первая версия была именно так и собрана. Пара вечеров, чтобы разобраться с софтом + один день чтобы собрать все вместе.


babooshka.tv первая версия


Название придумалось практически само собой (я даже на всякий случай, зарегистрировал домен :) пока думаю, что с ним делать, поделюсь соображениями ниже.


Настройка Малинки


Во первых рекомендуется установить свежий дистрибутив Raspberry OS. Raspberry Pi OS Lite image


Более старая версия (старее 2018) имеет отличный от описанного способ настройки IR. Я его тоже пробовал, и он даже несколько проще приведенного. Но повторять это тут будет, на мой взгляд, несколько избыточно. Различие заключается в способе коммуникации через виртуальный файл устройства. В предыдущей версии для RX и TX использовался общий /dev/lirc, сейчас они разделены. И если вы хотите использовать и RX и TX одновременно, в настоящей версии требуется руками прописать соответствующую конфигурацию. Впрочем, если вам нужен только приемник, вы можете ограничиться конфигурацией устанавливаемой по-умолчанию.


Процедуру подключения wifi и настройку SSH я описывать здесь, пожалуй, не стану. Подозреваю, что уважаемый читатель самостоятельно справится с этой нехитрой процедурой. Если вы, все же, не уверены в себе, ddg it!


Установка нужного ПО


Далее все описываемые действия выполняются на Малинке.


По первых, обновите репозитории и установите требуемые зависимости


apt update  
apt install mc fbi omxplayer sox

Попробуйте установить freefonts (чтобы omxplayer показывал титры и сообщения)


apt install ttf-freefont

По какой-то причине пакет freefonts был выпилен из последних дистрибутивов RPi, и репозитории я не нашел, поэтому если на сей момент ничего не поменялось, то просто скопируйте freefonts в /usr/share/fonts/truetype/...
при участии sudo


cp -r freefont /usr/share/fonts/truetype/freefont  
chown root:root /usr/share/fonts/truetype/freefont  
chown root:root /usr/share/fonts/truetype/freefont/*

Настройка IR


apt install lirc

отредактируйте /etc/lirc/hardware.conf


# Run "lircd --driver=help" for a list of supported drivers.  
DRIVER="default"

# usually /dev/lirc0 is the correct setting for systems using udev  
DEVICE="/dev/lirc1"  
MODULES="gpio_ir_recv"

отредактируйте /etc/lirc/lirc_options.conf
ВНИМАНИЕ! нужно добавить пустую строку в конце файла, этот баг известен known bug и до сих пор не пофиксен. Я убил полвечера, пытаясь понять, почему у меня не запускается порт.


driver        = default  
device        = /dev/lirc1

Поиск готового конфига для ТВ пульта. Попробуйте найти ваш пульт с помощью вот этой команды


irdb-get find YOUR_DEVICE  

Если получилось, установите YOUR_DEVICE.conf в /etc/lirc/lircd.conf.d/ (возможно, он там автоматически устанавливается, проверьте, я что-то запамятовал)


Если по той или иной причине не получилось, поищите ваш телек вот в этом списке: Список устройств, которые поддерживает Lirc 'из коробки'. В конечном итоге, если и на этот раз не повезло (что маловероятно, но вдруг...) или если в установленном конфиге только половина кнопок (что более вероятно), вы всегда можете записать свой конфиг. Об этом чуть ниже.


Скопируйте lircd.conf


cp /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf

Внесите изменения в /boot/config.txt, чтобы включить аналоговый PAL видео выход и запустить соответствующий оверлей для IR порта:


disable_splash=1

# disable_overscan=1

framebuffer_width=720
framebuffer_height=576

# enable PWM audio (add this line)
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

# uncomment for composite PAL
sdtv_mode=2

# uncomment if hdmi display is not detected and composite is being output
# hdmi_force_hotplug=1

# Uncomment this to enable the gpio-ir module
dtoverlay=gpio-ir,gpio_pin=23,gpio_pull=up
dtoverlay=gpio-ir-tx,gpio_pin=22

Делаем чтобы IR работал как на прием, так и на передачу


Инструкция взята практически без изменений из этого комментария на GitHub. Спасибо @elmicha


Добавляем правила в /etc/udev/rules.d/71-lirc.rules чтобы у нас появились устройства /dev/lirc-rx и /dev/lirc-tx:


ACTION=="add", SUBSYSTEM=="lirc", DRIVERS=="gpio_ir_recv", SYMLINK+="lirc-rx"
ACTION=="add", SUBSYSTEM=="lirc", DRIVERS=="gpio-ir-tx", SYMLINK+="lirc-tx"
ACTION=="add", SUBSYSTEM=="lirc", DRIVERS=="pwm-ir-tx", SYMLINK+="lirc-tx"

Меняем имя устройства и порт в /etc/lirc/lirc_options.conf:


device        = /dev/lirc-rx
listen        = 0.0.0.0:8766

Копируем lirc_options.conf в lirc_tx_options.conf и редактируем там следующие строчки:


device        = /dev/lirc-tx
output        = /var/run/lirc/lircd-tx
pidfile      = /var/run/lirc/lircd-tx.pid
listen        = 0.0.0.0:8765
connect      = 127.0.0.1:8766

Создаем /etc/systemd/system/lircd-tx.service (из вывода systemctl cat lircd) и добавляем туда настройки:


[Unit]  
Documentation=man:lircd(8)  
Documentation=http://lirc.org/html/configure.html  
Description=Second lircd, the transmitter  
Wants=lircd-setup.service  
After=network.target lircd-setup.service lircd.service  

[Service]  
Type=simple  
ExecStart=/usr/sbin/lircd --nodaemon --options-file /etc/lirc/lirc_tx_options.conf  

[Install]  
WantedBy=multi-user.target  
Create /etc/systemd/system/lircd-tx.socket (from the output of systemctl cat lircd.socket) and edit it:  

[Socket]  
ListenStream=/run/lirc/lircd-tx  

[Install]  
WantedBy=sockets.target  
Also=lircd-tx.service  

Создаем /usr/local/bin/irsend и делаем его запускаемым


#! /bin/sh  
exec /usr/bin/irsend --device=/var/run/lirc/lircd-tx "$@"
chmod +x /usr/local/bin/irsend

Запускаем lircd-tx сервис (при участии sudo)


systemctl daemon-reload
systemctl start lircd-tx
systemctl enable lircd-tx

Активизируем RX (sudo ...)


systemctl enable lircd.service
systemctl enable lircd.socket

systemctl restart lircd

ВНИМАНИЕ! Там может быть Warning of duplication of "begin remote… end remote". Это ок. Не обращайте внимание.


Перезагружаем и проверяем статус :)


systemctl reboot

systemctl status lircd.service
systemctl status lircd.socket

Тестирование IR пульта


После загрузки пробуем что-нибудь отправить в сторону ТВ. Тут есть нюанс. Мощности IR диода может быть маловато, особенно если вы поленились припаять MOSFET :) Поэтому, если ничего не получается, попробуйте поднести LED непосредственно к окошку IR датчика телевизора.


irsend SEND_ONCE SONY-TV KEY_1

Читаем RX


irw

Запись своих команд


Это как раз на тот случай, если вы не нашли пульт или в конфиге не все кнопки. Перед записью нужно выключать сервис и потом включать его обратно.


systemctl stop lircd.socket
systemctl stop lircd.service

record with own key names
irrecord --disable-namespace

systemctl start lircd.socket
systemctl start lircd.service

Можно еще запустить рекордер в raw режиме (обычно не требуется)


irrecord -f -d /dev/lirc0 ~/lirc.conf

Настройка пульта


Если все ок, и ваш пульт читается на Малинке, вам нужно выбрать кнопки, которыми вы будете управлять Бабушкой. Вот полный список:


  • next
  • prev
  • forward +10min
  • backward -10min
  • play/pause toggle
  • pause on switching-off
  • stop
  • audio track switch
  • subtitles switch

Так они размечены в remoteir.sh


Впрочем, как показала практика, востребованы всего три: next, prev и play/pause toggle. Однако, если у вас хватает свободных кнопок на пульте, я рекомендую присвоить все. Делается это просто. В файле remoteir.sh нужно команды "ARR_DOWN" "ARR_UP" и т.д. заменить на те, что показывает вам irw при нажатии на соответствующие кнопки. Запустите irw и копируйте из вывода по очереди, нажимая кнопки.


irw

Установка основного пакета babooshka.tv


cd /home/pi/
git clone https://git.shalnoff.com/git/BABOOSHKA.TV
cd BABOOSHKA.TV/

или если у вас не стоит git, просто скачайте последний снэпшот. В последнем случае не забудьте переименовать директорию в BABOOSHKA.TV после распаковки.


Убедитесь что все .sh скрипты запускаемые (выставлен флаг +x)


ls --all 

Если нет, сделайте chmod +x .sh*


Сервис systemd для раннего запуска (чтобы показывать заставку и включить LED управление)


Создаем /etc/systemd/system/splash.service и добавляет туда


[Unit]  
DefaultDependencies=no  
After=local-fs.target  

[Service]  
StandardInput=tty  
StandardOutput=tty  
ExecStart=/home/pi/BABOOSHKA.TV/early_init.sh  

[Install]  
WantedBy=sysinit.target  

Активируем сервис


sudo systemctl enable splash.service

Запуск при загрузке


Добавляем в /etc/rc.local строку


sudo -H -u pi /home/pi/BABOOSHKA.TV/start.babooshka.sh > /dev/null &


После чего перезагружаем (с sudo) и проверяем.


systemctl reboot

Если все ок, у нас замигает зеленый светодиод при загрузке и покажется заставка babooshka.tv. Она там демонстрируется чуть с опозданием. Т.е. вначале, все же, стартует файловая подсистема. Но я уже заморачиваться с интеграцией в ramfs не стал. Да и так даже круче. Люблю модный лог при перезагрузке на экране :) У нас он там коротенько выскакивает.


Далее


  • скопируйте пару каких-нибудь тестовых видео в директорию ~/BABOOSHKA.TV/VIDEO/
  • проверьте, что оно появилось в playlist (там раз в 10 секунд проверка)
  • нажмите кнопку, которой вы присвоили PLAY на пульте
  • если что-то не работает, смотрите Отладку, ниже

Косметическая полировка


Чтобы убрать вывод лога при старте, отредактируем /boot/cmdline.txt. Убедитесь, что у вас указаны console=tty3 quiet consoleblank=0 и logo.nologo. У меня строка параметров выглядит так:


console=serial0,115200 console=tty3 quiet consoleblank=0 loglevel=1 root=PARTUUID=6c586e13-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait logo.nologo

Выключаем мигающий курсор (возможно не нужно, попробуйте без этого сперва)


vt.global_cursor_default=0

Убираем tty login, чтобы курсор уж точно не появлялся


sudo systemctl disable getty@tty1 

Собственно все. Теперь осталось подключить все это к телевизору любимых родителей (ну или бабушки с дедушкой, в зависимости от возраста) и время от времени пополнять плейлист.


Ах да… про IR TX. Зачем TX, вы спросите. По не вполне осознанной причине я решил добавить и IR передатчик тоже. Во первых, если что-то сбойнет, или родители забудут куда нажимать, можно всегда будет включить нужный видео-вход или отрегулировать громкость. Во вторых, я подумал, что для каких-то действий, возможно, потребуется комбинировать команды с управлением ТВ. Например, чтобы автоматически переключаться на нужный канал. Однако, в нынешней версии это пока никак не используется. Но управлять ТВ можно.


… версус цифровое ТВ


Как вы поняли, это была только первая часть истории. Вторая началась, когда мне позвонил папа и сказал, что аналоговое ТВ повсеместно выключают, и, мол, намедни к ним приходил умный молодой человек, который объяснил, что теперь у них будет цифровое ТВ и вручил специальный девайс для просмотра этого самого цифрового ТВ. Мою коробочку он, разумеется, отключил.


Про то, что молодой человек (кто бы сомневался) был из другой провайдер-компании и подмахлул пенсионерам мимоходом новый контракт, история умалчивает. Благо хоть за те же деньги примерно (аррр!...)

Ну да роботы бы с ней, подумал я. Будут мои родители теперь смотреть RTVI, Евроньюс, DW и что там еще на русском языке есть вменяемое… Не тут то было. Приезжаю. И что вы думаете? Раша Тудэй, бла бла бла… сирийские повстанцы бла бла бла… наши самолеты самые самолетные в мире… все вот это.


В общем, долго ли коротко, я подключил коробочку ко второму входу и решил, что моя пепяка теперь будет конкурировать с RT. У меня, при любом раскладе, неоспоримое преимущество в виде бомбического контента про строительство карусельки из бумаги с внучкой и семейное выпекание пирожков.


На том я и успокоился. Пока, однажды, исследуя известный китайский сайт на предмет нужных электронных компонентов, я не решил посмотреть, а что там насчет аналоговых ТВ конвертеров. Т.е. мне ранее приходила в голову мысль — а что, если подключить по высокочастотному каналу. Антена же свободна. И кнопка 1 на пульте для родителей привычна как ни что другое. Я было даже попробовал это дело на коленке, но ковыряться с аналоговым модулятором мне, по правде сказать, не шибко хотелось. В основном из за звука, который надо чуть смещать по частоте. Компонентов для схем найденных в Сети у меня сходу не нашлось. Короче я как-то "подзабил". Но тут вдруг подумал, а ведь наверняка есть готовый какой-нибудь модуль.


Нашелся не просто готовый модуль. Обнаружилась вот такая готовая коробочка. Размеры корпуса сразу намекали, что если из него выкинуть блок питания, то туда точно можно уместить RPi и сделать аккуратный мега-показатор.


Китайская убер-коробочка


Каково же было мое удивление, когда я, получив посылку, развентил корпус и увидел вот это...


Плата TV-RF модулятора


Справедливости ради нужно отметить, что внутри был еще небольшого размера трансформатор, но его я сразу отпаял и отложил до лучших времен. Все остальное место пустовало. "Эта коробочка словно создана для того, чтобы быть переделанной в аналоговую медиа-приставку!" — подумал я.


Не долго думая, я подобрал примерно подходящий по размеру и мощности блок питания, болтики с гаечками пластиковые, а так же разъем для провода питания и заказал это все скопом.


будь внимателен, дорогой коллега. Мощность тут важна. Крохотный однокорпусной преобразователь ~200-5v на 400 mA, коих множество на Али, Малинку не запустит. Бери минимум на 1A.

Блок питания внутри импровизированного корпуса babooshka.tv. Не забудьте отпаять конденсатор перед выпиливанием боковой прорези.


Плату блока питания пришлось немного подпилить, чтобы она вставлялась между креплениями болтов. Кроме этого, я чуть увеличил боковые прорези разъема 220v, чтобы тот плотно зажимался между верхней и нижней частью корпуса.
За исключением этого разъем встал, как родной. Осталось только добавить micro USB для Малинки и микро-разъем для питания самого модулятора.


Модулятор питается вот так. 5v. Резистор R1 нужно выпаять.
Модулятор питается вот так. 5v. Резистор R1 нужно выпаять. (ах эти китайские солевые разводы на плате… помыл потом, конечно)


Подключение периферии


Люблю, чтобы было а) аккуратно б) ремонтропригодно. Т.е. чтобы ничего не болталось, проводки запаяны в кембрики, везде, где нужно — удобные разъёмчики.


проводки babooshka.tv


Вам наверняка понадобится распиновка Pi Zero IO
У меня подключено все следующим образом:


Оранжевый LED подсоединен напрямую к+3,3v через резистор 470R


GPIO 0  BCM17   LED зеленый, загрузка  
GPIO 2  BCM27   LED красный, статус видео (новое, незавершенное)

Токоограничительные резисторы требуются для всех диодов (Красный обычно ярче, так что я бы рекомендовал ~470R для оранжевого и зеленого и 1K для красного)


IR интерфейс


GPIO 3  BCM22   IR TX  
GPIO 4  BCM23   IR RX  

    38kHz -- стандарт 

    +-----------------------+ 3
    |                       +---------------------o +3.3V
    |      ______________   |
    |     /                 |
    |    (                  | 2  
    |     \______________   +---------------------o GND
    |                       |
    |                       | 1
    |               data -> +---------------------o GPIO 4 (BCM23)
    +-----------------------+

    950nm светодиод (например TSUS5400, но можно любой другой)

                     +5V
                      o
                      |
                     | |  51 Ohm (в зависимости от типа MOSFET, может и не нужен)
                     |_|
                      |
                     _|_
                     \ / 
                     ---  IR LED
                      |
                      |
         ___      |---'
  o-----|___|-----|       MOSFET
         10K      |->--
    GPIO 3 (BCM22)     |
                       |
                    ----- GND
                     ---
                      - 

Аналоговый звук, PWM выходы


GPIO 1  BCM18   R AUDIO
GPIO 23 BCM13   L AUDIO

Видео выход


RPi TV out
Картинка стащена отсюда, спасибо автору :)


Чтобы закрепить RPi внутри корпуса я приклеил пластиковые болтики к нижней стенке суперклеем. Рекомендую залить по бокам основательно и оставить сушиться. Моя первая попытка была не особо удачной. Сами болтики хорошо видны на картинке выше. А вот как выглядит все вместе в подключенном состоянии.


babooshka.tv в разобранном виде
Здесь вы также можете заметить переходнчек для WiFi донгла. Он там отлично размещается внутри корпуса.


Финальная сборка. Оцените компоновку. Там даже IR RX датчик вставляется аккурат в защелочку средней ногой. В сущности, все что требуется для доработки корпуса — сделать отверстия для IR и диодов, ну и приклеить болтики.


babooshka.tv, финальная сборка


Дыру для IR я закрыл вклеенным круглым кусочком акрила, ранее оставшимся от лазерной резки. Эту штуку я не придумал чем заменить пока. Было бы изящнее, конечно, сделать какую-то тонированную заглушку, прозрачную для 950nm.


babooshka.tv вид сзади. Все надписи, разумеется, не релевантны, но нужны ли они при таком раскладе :)
Оцените вид сзади. Все надписи, разумеется, не релевантны, но нужны ли они при таком раскладе :)


Если вы хотите управлять телевизором вашей бабушки, но он не реагирует на команды, попробуйте приделать удлинитель. Я у себя для этих целей намеренно сделал микро-разъем. Чтобы в случае чего…


IR диод может быть вынесен из корпуса и заклеплен возле датчика ТВ


Немного о нюансах


ТВ модулятор. "Колхозный" фильтр звука на SMD компонентах.


Это фильтр звука. Я собрал его вот по этой схеме.


RPi Zero Audio
Картинка стащенна вот отсюда, Спасибо автору!


Как видите, я слепил все там прямо на плате на SMD, перепилив и залудив дорожки. Однако, сейчас думаю, что навесным монтажем было бы проще и не так колхозно. Тем более, что места там уйма.


Все проводки целиком


Так выглядит все проводное подключение с разъемами целиком. Обратите внимание, IR датчик подключен на картинке неправильно. Будьте внимательны. Впрочем, благодаря тому факту, что я спалил-таки один, я выяснил, что качество их в комплекте не одинаковое. Т.е. в китайском наборе может быть один более чувствительный, а второй — так себе. Берите несколько, в общем. Тем более, что они копеечные по нынешним временам.


Работа устройства


babooshka.tv демонстрация работы

Что можно делать с пульта:


  • включать и выключать проигрывание видео;
  • проматывать видео взад и вперед (по 10 минут туда-сюда);
  • перемещаться по плейлисту взад и вперед также;
  • поставить на паузу видео (происходит автоматом, если выключить телек или переключиться на другой видео-вход);
  • листать титры одной кнопкой;
  • так же можно листать аудио дорожки (опять же одной кнопкой для простоты)

Сама же приставочка, кроме перечисленного, умеет делать следующее:


  • играть плейлист;
  • выбирать предпочтительный язык звуковой дорожки автоматически;
  • показывать наличие нового видео LED индикатором;
  • запоминать место остановки видео в случае выключения ТВ, чтобы потом в это же место "встать" при включении;
  • автоматически добавлять в плейлист новые файлы, появляющиеся в директориях VIDEO и YOUTUBE;
  • помечать просмотренные видео в плейлисте, а так же добавлять сколько/из скольки просмотрено (это чтобы вы могли мониторить, что родители уже посмотрели, например)

кроме этого можно


  • добавлять комментарии в сам плейлист (см Usage: при запуске без параметров);
  • скрывать "ремаркой" видео в плейлисте, добавляя символ ';' в начало строки;
  • настроить на "сплошное" проигрывание до конца плейлиста или проигрывание по одному видео (до нажатия кнопки в следующий раз) (см Usage: при запуске без параметров);

Теперь, чтобы закинуть что-нибудь в эту коробочку, я делаю


scp <your_super_cool_kitten_flick.mp4>  <babooshka>:BABOOSHKA.TV/VIDEO/

или


    ssh babooshka 
    cd BABOOSHKA.TV/YOUTUBE/
    youtube-dl -f 'bestvideo[vcodec=avc1][height<=720]+bestaudio/best[abr<=120]' --merge-output-format mp4 -o '%(playlist_index)s - %(title)s.%(ext)s' <youtube link>

и вуаля :) проблема родительского вечернего досуга решена.


Плюшки


Да. для того, чтобы работал youtube-dl вам нужно установить


apt install mkvtoolnix python-pip
pip install -U youtube-dl

Еще полезно записать вот эту команду для конвертирования. Ключевой параметр -level 3.0. Я ломал голову, пока не обнаружил, что хардверный кодек RPi не умеет в low profile. Вот здесь вы можете почитать подробнее про различия профилей H264.


ffmpeg -i FILEIN -vcodec libx264 -preset slow -level 3.0 -b 700k -s 720x404 FILEOUT

Если вы так же как и я решите разместить все внутри означенной китайской коробочки, вот вам веселый стикер для скачивания.


babooshka.tv обрела веселый стикер с логотипом


Что я планирую доделать


  • автоапдейт youtube-dl (актуальная штука)
  • автоскачивание с youtube (потому как предварительное ожидание, пока youtube-dl отдаст линк на RPi занимает время и выглядит не слишком комфортно) пока там предусмотрена картинка с загрузкой
  • приделать камеру и попробовать запустить там Tox, чтобы можно было бы еще и общаться непосредственно по телеку. Для родителей это будет супер-просто. В принципе там даже есть место для камеры внутри. Слева от IR сенсора.

Исходники и подробная инструкция по настройке


https://git.shalnoff.com/BABOOSHKA.TV

Пожалуйста, пользуйтесь и расскажите вашим друзьям.


Предвкушая вопросы аудитории, сразу скажу, почему я не стал использовать что-нибудь вроде готового дистрибутива OpenELEC или OSMC. Дело в том, что мне хотелось сохранить максимальную ТВ аутентичность и простоту интерфейса. Т.е. чтобы впечатление (думал минуту, как написать слово experience в контексте :) и ощущение было на 100% олдсульным и привычным моим пожилым родителям. Нажал кнопку — идет передача. К тому же, как я уже писал выше, все интерфейсы сложнее трех кнопок моих старичков только расстраивают :)


Возможно, для неискушенного юзернейма все это выглядит несколько сложновато. На деле же это весьма простая штука. Если не заморачиваться корпусом и светодиодами, то, фактически нужно только припаять IR приемник и провода для ТВ. (+ 4 резистора и 2 конденсатора для фильтра аудио, если у вас RPi Zero). А если приделать упомянутую коробочку, то можно и вовсе древний телевизор подключить, и тем самым осчастливить бабушку чудными домашними "передачами". Ну а если ее "подписать" на видео Екатерины Шульман, то, глядишь, бабушка перестанет бездумно голосовать за тех, на кого ей покажут в обмен на гречку или лотерейный билетик. И жизнь заиграет новыми красками.


Небольшое лирическое отступление


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


Уж не знаю, насколько просмотр качественных youtubе каналов скажется на их электоральных предпочтениях. Но, во всяком случае, качество моих обсуждений с родителями актуальных событий выросло несравненно. У нас теперь есть общие темы. Не говоря уже о том, что родителей несказанно радует формат домашних видеозарисовок. Для них это эдакое "продолжение телевидения" в котором теперь есть часть близкой им реальности.


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


Что дальше


Как я написал выше, я пока не вполне придумал, что с этим можно делать. Но что-то мне подсказывает, что такая форма доставки медиа-контента может неиллюзорно скрасить досуг наших любимых старичков. Мысли у меня пока вот такие:


  • сделать приватные плейлисты. Без регистрации и смс, просто добавлять instant ссылки по скрытым линкам, временные или постоянные, публичные или приватные;
  • формировать RSS/JSON/plain списки на основе этих листов;
  • сделать автоподгрузку оных в коробочку;
  • показывать статистику популярности публичных;
  • на основе этой статистики формировать тематические плейлисты;
  • дать возможность делиться плейлистами и добавлять листы других к себе в условный "френд-лист";
  • подписываться на RSS каналы с youtube/vimeo

Т.е. использовать это можно как агрегатор видео с youtube, vimeo и что там у нас еще. Сформированные листы можно использовать для чего угодно, не обязательно для моей коробочки. Можно подключить к тому же OpenELEC, или написать свое простое приложение, которое будет обновлять контент на домашнем медиацентре.


Еще, пожалуй, было бы отлично хранить/архивировать выборочно видео в IPFS.


Если у кого-нибудь есть идеи и желание принять участие… велкам. Пишите. Буду рад пообщаться. Не обещаю быстро отвечать, дел уйма. Но отвечу обязательно всем.


Папа и мама смотрят про котиков и внучку
Папа и мама смотрят про котиков и внучку


PS Disclaimer (красненьким): ни в коем разе не делайте передатчик небольшой мощности для соседской бабушки. Это запрещено! Вдруг бабушка соседская до сих пор время от времени нажимает привычную кнопку первого канала и ненароком посмотрит видео про Навального там или про Каца какого-нибудь с Яшиным, нидайбох. А во многих населенных пунктах эта кнопка до сих пор работает как и прежде. В общем, я вас предупредил :)

Теги:




Комментарии (35):

  1. tea1975
    /#21830542 / -5

    Так и вижу теперь картину — Всё мать, сынок уехал, вырубай эту хрень малиновую, давай обратно про встающую с колен…
    Вы не задумывались, что в конце концов если у вас иное мировоззрение, пихать его через технический прогресс родителям как то уродливо? В конце концов я бы просто поставил им спутниковую тарелку и предоставил выбор в виде иных от кнопок 1и 2 каналов. Техническую сторону статьи оцениваю положительно. Только опыты на родителях ставить не стоит

    • DikSoft
      /#21830558 / +12

      Информационный голод + привычка это очень сильный фактор.
      У моих вопрос решился настройкой учетной записи в Youtube + обход блокировок + закладки на нормальные новостные каналы Live.
      За психику родителей от просмотра россиских каналов я тоже очень беспокоился. Теперь такой проблемы нет.
      Когда появился выбор, они перестали смотреть эту постоянную истерику, накачку и потоки лжи и ненависти.

      • algotrader2013
        /#21830754 / +1

        Что думаете о том, что у пожилых людей своя тусовка одногодок в виде друзей, с которыми по телефону говорят, соседей, случайных людей в очереди. И у них всех примерно одни темы для разговора.
        И поэтому, очистка мозгов от мусора приведёт к тому, что социализироваться им будет так же просто, как и десятилетнему пацану, рассуждающему дворовым пацанам про интегралы

        • DikSoft
          /#21830762

          Удивительно, но опыт показал, что появление новых тем очень даже помогает в общении. Тревожность и аргессия, навязываемые официальными каналами, снизились.
          Прекращение зомбирования повлияло положительно. Как на настроение, так и на общение.

          • novoselov
            /#21830804 / +2

            Было бы очень полезно сделать список каналов с категориями, чтобы можно было сразу включать/отключать что нужно и с отдельными аккаунтами.
            Общие каналы про прогресс в мире, путешествия, серьезную науку и культуру.
            Аккаунт для бабушки: дополнительно про природу, животных, сад/огород…
            Аккаунт для дедушки: дополнительно рыбалка/охота, машины, механизмы…
            Аккаунт внуки приехали: популярная наука, изобретения, развивающие мультики…
            Аналогично для YouTube

      • SpiderEkb
        /#21830854 / -1

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


        И начали смотреть другую истерику, накачку и потоки ненависти. Плюс еще менторство — «вы все тупая вата, а мы умные и прогрессивные и поставлены что вас вывести из мрака заблуждений».

        Увы, но всегда надо помнить — если вы не платите за то, что смотрите и читаете, значит кто-то заплатил чтобы вы это смотрели и читали. И сделал это исключительно ради своих интересов.

        Просто переключение канала с «Россия встает с колен под мудрым руководством» на «Рашка по уши в дерьме из за бездарного руководства» ничего не решает.

        Решает возможность получать информацию из разных источников и привычка ее беспристрастно анализировать. В том числе и видеть «второй план» в тех блоках информации, которые вроде бы и совсем «не про то». Ну и каждому факту искать подтверждения в иных источниках. И уметь оценивать достоверность источника и понимать кому и зачем выгодно то, что там подается (а это всегда кому-то выгодно — независимых источников нет, все живут на чьи-то деньги)

        • DikSoft
          /#21830880 / +2

          Не надо считать всех глупее себя и додумывать то, чего нет. Когда есть выбор, что смотреть, зомбирование как-то сразу ломается.

          PS Возможно, такие аргументы в методичке указано приводить?

        • artemerschow
          /#21830892

          а это всегда кому-то выгодно
          Вот формально то правда и вроде бы правильно, но фактически это чаще в теории заговора проваливается.

    • Adverte
      /#21830620

      На спутниках из официально распространяемых в РФ (те что обычно висят на 36 градусе) контент тот же самый что и в эфирном ТВ.
      А про технический прогресс — вы почему то забыли упомянуть в комментарии, что продавец из провайдера именно им и воспользовался чтобы впихнуть рашатудей родителям в дом

    • a1ex322
      /#21830788

      Раз интернет есть можно и обычной медиаприставкой обойтись.

      • yarkov
        /#21831068

        А паяльник с 3D принтером простаивать будут?

  2. andreishe
    /#21830628 / +3

    Как насчет использовать HDMI CEC вместо LIRC, чтобы не городить огород с ИК датчиком?

  3. nanmen
    /#21830634 / +3

    Однако, как показала практика, если видео про котиков и внучков ненавязчиво разбавлять периодически актуальными репортажами, тематическими передачами Шульман, ток-шоу с молодыми политиками и прочими полезными для выхода из пропагандистского информационного пузыря материалами

    Ха! Автор хвастается тем, что снимает у стариков «алкогольную-телевизионную» зависимость «героиновой-ютубной», и делает это с такой самоуверенностью, что сам не замечает, как жалко это выглядит.

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

    • DikSoft
      /#21830640 / +3

      Мои вот старики вообще не смотрят телевизор
      Значит это не ваш случай. Вам крупно повезло.
      Зависимость от включенного негативного информационного фона реально есть у многих, автор предложил нормальный работающий вариант.

      • nanmen
        /#21830666 / +9

        Вы чем читали, товарищ? Ролики «молодых политиков» — это не позитивный информационный фон. Если вместо них крутить что-то полезное, то я бы понял.
        Но автор хочет манипулировать своими родителями, навязав им свою (как ему кажется правильную) картину мира. Не то, чтобы она была ошибочной, просто с этической точки зрения это как-то… Чтобы убить дракона самому становится драконом, «мини-останкинской иглой».
        Странно, что автор этого не понимает сам.

        • DikSoft
          /#21830692

          Судя по вашей реакции, вы сами очень сильно зависимы, если _все_ политические альтернативные каналы причисляете скопом к негативу.
          Моим родителям не хватало разносторонней картины. Теперь она есть. А что смотреть им ума хватает выбрать самим. И да, «Он вам не димон» они тоже посмотрели.

          • nanmen
            /#21830708 / +5

            Я все каналы, не только альтернативные причисляю скопом к негативу. Так же и всю официальную/полуофициальную опозицию, которая кормится с тех же рук, что и правящие круги, и создает этот балаган и иллюзию выбора.
            Вот что позитивного ваши родители узнали из «Он вам не Димон»? Что власть коррумпированные сволочи? Так они и так до этого знали, достаточно выглянуть в окно.
            Но позитивная ли это повестка?
            Они могли узнать о том, что помимо Путина есть еще какая-то оппозиция. И что это поменяет?


            Мы со своими родителями договорились, что программу любой партии надо смотреть совсем под другим углом. Не слушать всю эту брехню про институты, коррупцию, честные или частные суды. Надо сразу ставить вопрос ребром: «Будут ли пересмотрены итоги незаконной приватизации и преступных залоговых аукционов?». Если нет, то сразу слать нафиг, потому что не важно какая власть, важно в чьих руках собственность. Вышеупомянутые вещи создали гигантскую имбу в экономике, потому рули вам никто не отдаст. Хоть по две-три галочки за Навального ставьте, хоть съеште биллютень, урну, или всю избирательную комиссию. Не таким способом эта собственность была украдена, не таким способом ее и возвращать.
            Что касается всяких Шульман и прочих Навальных, не смотря на кажущиеся разногласия со властью, в данном вопросе они проявляют с ней удивительное единодушие.
            Такие пироги.

            • barbaris76
              /#21831158

              С таким же успехом можно требовать от властей США вернуть все земли индейцам и всех чёрных вывезти назад в Африку, а также от всех остальных — немедленно внедрить в государственное управление идеи Жака Фреско.
              Не было этого и не будет никогда, если только не хочется устроить третью мировую. Но можно попытаться хотя бы сделать жизнь людей лучше с учётом того, что имеем на сегодняшний момент.

        • dead_moros
          /#21830694 / +1

          А вы статью читали? Автор не запрещает смотреть первый канал, а даёт возможность смотреть что-то ещё.

          • nanmen
            /#21830730 / +3

            А по уму как раз его запретить, оставив полезный контент. Товарищ же к бутылке с синькой предлагает шприц с фентанилом, и говорит что есть выбор.

            • dead_moros
              /#21830736 / +1

              Дело за малым — составить список полезного контента.

          • SpiderEkb
            /#21830792

            Любое IPTV «от провайдера» вполне себе позволяет смотреть «что-то еще». У меня сейчас и CNN есть и BBC и DW и Евроньюс и еще куча информационных каналов на любой вкус.

        • rg_software
          /#21830732

          Ваша мысль ясна и в чём-то справедлива, но вы уж слишком демонизируете автора. Считайте, что он просто подключил родителям дополнительный канал «Сын-ТВ», что в этом ужасного? Ну и не его вина в том, что существующие каналы кажутся ему недостаточными. В конце концов, нам существующий софт кажется недостаточным, вот мы и пилим свой, но не запрещаем остальное.

      • SpiderEkb
        /#21830780 / +1

        Это не нормальный вариант, увы. И нет никакого

        выхода из пропагандистского информационного пузыря


        Есть переход в другой пропагандистско-информационный пузырь. Где все плохо, все полимеры просраны, все украдено и все вокруг сволочи а народ — тупое быдло, сидящее на игле первого канала. Ну кроме выступающего с экрана — тот, естественно, весь в белом.

        Более-менее восстановить картин можно просматривая несколько полярных источников — те же CNN, BBC, RT, Евроньюс. Правда, кроме Евроньюс, все вещают на английском — нужно неплохо ловить его со слуха.

        А от инфорпомойки в виде YouTube стоит вообще держаться подальше.

    • Gourry_aka_pm
      /#21830744

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

  4. osmanpasha
    /#21830636 / +1

    Очень круто вышло! И проблема решается, на мой взгляд, актуальная.


    А что в итоге делает оригинальная плата от китайской коробки? Она подключена в малину или независимо выдает сигнал в отдельные разъемы? Даже не так, она принимает сигнал в антенный разъем, выдает в три тюльпана… и все?


    Правильно ли я понимаю, что у вас малина грузится по полминуты, как и все малины примерно? Не делали ли что-то с этим? По сравнению с телевизором, который сразу показывает, довольно сильное отличие (я просто некоторое время назад пытался собрать минимальный образ малины на buildriot, но по скорости загрузки особых успехов не достиг)

    • Adverte
      /#21830656 / +1

      Быстро же все забыли как ламповые телевизоры «грузились» по две минуты

      • osmanpasha
        /#21830688

        Ну как быстро, на Хабр уже приходит поколение, которое кинескопных телевизоров в глаза не видело. Ну и я действительно не знаю, про какие года вы говорите, где телевизоры по 2 минуты грелись; у нас в девяностые был Рекорд-В312, он секунд за 10 начинал картинку показывать, специально сейчас youtube посмотрел.

        • balamutang
          /#21830752

          Старые цветные долго грелись, по крайней мере 3е поколение которые лампово-полупроводниковые, там умножитель питался от лампы строчной развертки, т.е. сначала лампа развертки нагреться должна, потом умножитель разгоняется до 25 киловольт и потом уже картинка появляется. 4е поколение, которые на проводниках все — уже включалось быстро, почти как ч/б телеки. А 5е поколение (т.н. "кубики", с пультами управления уже) включались за секунду.

  5. yurisv3
    /#21830642 / -1

    Roennebergstra?e 16, 12161 Berlin, Germany

    Хм…

  6. kovigor
    /#21830660 / -1

    Вы забыли самое главное.
    Эти чернушные новости вредны исключительно для вас и разрушают исключительно вашу психику. Для родителей же это штатный, рабочий режим, они это смотрят, затаив дыхание, и становятся от этого только здоровее и крепче (многая им и благая лета).
    Откуда я это знаю? Так ведь у меня та же ситуация! От того, что смотрит отец, меня давно свезли бы в психушку. А ему это только в радость и на здоровье :)

    • ncrmnt
      /#21830718

      Поставь родителям на плечо глюкометр Freestyle Libre и посмотри по графику, что кратковременный хронический стресс делает с уровнем сахара в крови.

  7. Loxmatiymamont
    /#21831124

    Хорошая идея, хорошая могла-бы быть техническая статья, но надо было в неё налить никому не нужной политоты и всё свести к срачу, за которым не видно проделанной работы.

  8. modestguy
    /#21831192

    image