Raspberry pi просмотр Youtube по расписанию
Просматривать Youtube на малинке будем с помощью VLC.
Содержание
Предварительная настройка
Обновление системы и прошивки
sudo apt-get update sudo apt-get upgrade sudo rpi-update
Отключаем скринсервер
в файле:
- ~/.config/lxsession/LXDE/autostart
либо в файл если первого нет:
- /etc/xdg/lxsession/LXDE-pi/autostart
Оставим только:
@lxpanel --profile LXDE @pcmanfm --desktop --profile LXDE
Отключение гашения экрана
В файле:
- /boot/cmdline.txt
установим:
- consoleblank=0
Скрытие курсора
apt-get install unclutter
добавим в файл:
- ~/.config/lxsession/LXDE/autostart
либо в файл:
- /etc/xdg/lxsession/LXDE-pi/autostart
строку
@unclutter -display :0 -idle 3 -root -noevents
raspi-config
Для начала настроим Raspberry Pi запустим raspi-config:
# raspi-config
Проходим по меню:
6 Advanced Options Configure advanced settingsA2 GL Driver Enable/disable experimental desktop GL driver
и выбираем:
G2 GL (Fake KMS) OpenGL desktop driver with fake KMS
Сохраняем и перезагружаем.
VLC
Запускаем VLC проходим по меню:
- Инструменты
- Настройки
- Вкладка Видео
- в Output выбираем Модуль вывода видео через MMAL (для Raspberry Pi) (либо MMAL x11 splitter for Raspberry Pi)
Скрипт
Будем запускать скрипт через крон для просмотра трансляции
#!/bin/bash # Убиваем все vlc killall -9 vlc # # Управление телевиром (в часности питанием) # sudo apt install cec-utils # # Поиск устройства, нам нужно будет выбрать адресс (В нашем случае address: 0.0.0.0) # echo 'scan' | cec-client -s -d 1 # # Включение устройства # echo 'on 0.0.0.0' | cec-client -s -d 1 # # Отправка устройства в режим ожидания # echo 'standby 0.0.0.0 | cec-client -s -d 1 # # Нам хватит, но получение справки по командам # echo 'h' | cec-client -s -d 1 # Включаем HDMI (Тут нам не понадобилось) # /opt/vc/bin/tvservice -p # Включение TV echo 'on 0.0.0.0' | cec-client -s -d 1 # Текущее время в секундах START=$(date +%s) # Проверяем если скрипт выполняется дольше 45 минут (2700 сек), заканчиваем его while [ $(($(date +%s) - $START)) -lt 2700 ] do # Запускаем YouTube # Переменные XDG_RUNTIME_DIR, DISPLAY, XAUTHORITY берем из консоли через echo, это самый простой путь установить окружение для запуска из cron XDG_RUNTIME_DIR=/run/user/1000 DISPLAY=:0 XAUTHORITY=/home/pi/.XauthorityFV cvlc --file-caching=5000 --network-caching=5000 --fullscreen --video-on-top --play-and-exit --preferred-resolution 1080 https://www.youtube.com/c/NsktvRu/live # Ждем 5 сек между переподключениями (т.к. мы не знаем когда точно запустится прямая трансляция) sleep 5 done # Убиваем все vlc killall -9 vlc # Отправка устройства в режим ожидания echo 'standby 0.0.0.0' | cec-client -s -d 1 # Выключаем HDMI (Тут нам не понадобилось) # /opt/vc/bin/tvservice -o
Так же раз в час запускаем маленький скрипт tv-standby.sh который переводит телевизор в "сон"
#!/bin/bash # Отправка устройства в режим ожидания echo 'standby 0.0.0.0' | cec-client -s -d 1
Защита флешки
После того как все настройки закончены можно перевести флешку в режим только чтение. Например как описано тут.
Тут упрощенный пересказ.
Создадим файл
- /usr/local/bin/mount_unionfs
Следующего содержимого
#!/bin/sh DIR=$1 ROOT_MOUNT=$(awk '$2=="/" {print substr($4,1,2)}' < /etc/fstab) if [ $ROOT_MOUNT = "rw" ]; then /bin/mount --bind ${DIR}.orig ${DIR} else # Для /var 40М выделяем в памяти if [ ${DIR} = "/var" ]; then /bin/mount -t tmpfs -o size=40M ramdisk ${DIR}.rw /usr/bin/unionfs-fuse -o cow,allow_other,suid,dev,nonempty ${DIR}.rw=RW:${DIR}.orig=RO ${DIR} else # Для остального выделяем по 10M памяти /bin/mount -t tmpfs -o size=10M ramdisk ${DIR}.rw /usr/bin/unionfs-fuse -o cow,allow_other,suid,dev,nonempty ${DIR}.rw=RW:${DIR}.orig=RO ${DIR} fi fi
Дадим права на запуск:
chown root /usr/local/bin/mount_unionfs && chmod 744 /usr/local/bin/mount_unionfs
Настроим параметры старта системы: Приведем файл
- /boot/cmdline.txt
к виду
logo.nologo dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=8b53c330-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap
Подготовим разделы:
cp -al /etc /etc.orig # -l, --link Делает жесткие ссылки вместо копирования обычных файлов (не каталогов) mv /var /var.orig mv /home /home.orig mkdir /etc.rw /var /var.rw /home /home.rw
Файл:
- /etc/fstab
приводим к виду:
proc /proc proc defaults 0 0 #PARTUUID=8b53c330-01 /boot vfat defaults 0 2 #PARTUUID=8b53c330-02 / ext4 defaults,noatime 0 1 #######Перемонтировать / в режим чтения############## mount -o rw,remount / PARTUUID=8b53c330-01 /boot vfat ro 0 2 PARTUUID=8b53c330-02 / ext4 ro 0 1 tmpfs /tmp tmpfs defaults,nosuid,mode=1777,size=20M 0 0 mount_unionfs /etc fuse defaults 0 0 mount_unionfs /var fuse defaults 0 0 mount_unionfs /home fuse defaults 0 0
Перезагрузка.
Возвращение в rw режим
Перемонтируем корневую систему в режим записи:
mount -o rw,remount /
Вернем fstab в исходное состояние (раскомментируем до #######Перемонтировать / в режим чтения############## и закомментируем после) и вернем на место каталоги /var.orig и /home.orig со всем содержимым.