Имао сам потребу да прикажем контролну таблу са надзором на неколико екрана у канцеларији. Постоји неколико старих Распберри Пи Модел Б+ и хипервизор са скоро неограниченом количином ресурса.
Очигледно Распберри Пи Модел Б+ нема довољно насумице да би прегледач стално радио и у њему приказивао много графике, због чега се дешава да страница делимично греши и често пада.
Постојало је прилично једноставно и елегантно решење, које желим да поделим са вама.
Као што знате, све малине имају прилично моћан видео процесор, који је одличан за хардверско декодирање видеа. Тако се појавила идеја да покренемо претраживач са контролном таблом негде другде, а готов стреам са рендерованом сликом пренесемо на малину.
Осим тога, ово би требало да поједностави управљање, јер ће се у овом случају сва конфигурација обављати на једној виртуелној машини, коју је лакше ажурирати и направити резервну копију.
Не пре речено него учињено.
Серверски део
Користимо спремно
Ми постављамо нову виртуелну машину и пре свега је инсталирамо на њу
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Такође ћемо користити конфигурацију за Ксорг, љубазно
cat > /etc/X11/xorg.conf <<EOT
Section "Device"
Identifier "device"
Driver "vesa"
EndSection
Section "Screen"
Identifier "screen"
Device "device"
Monitor "monitor"
DefaultDepth 16
SubSection "Display"
Modes "1920x1080" "1280x1024" "1024x768" "800x600"
EndSubSection
EndSection
Section "Monitor"
Identifier "monitor"
HorizSync 20.0 - 50.0
VertRefresh 40.0 - 80.0
Option "DPMS"
EndSection
Section "ServerLayout"
Identifier "layout"
Screen "screen"
EndSection
EOT
systemctl restart nodm
Сада ћемо инсталирати Фирефок, покренућемо га као системску услугу, тако да ћемо прво написати јединичну датотеку за њега:
apt-get install -y firefox xdotool
cat > /etc/systemd/system/firefox.service <<EOT
[Unit]
Description=Firefox
After=network.target
[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/usr/bin/firefox -url 'http://example.org/mydashboard'
ExecStartPost=/usr/bin/xdotool search --sync --onlyvisible --class "Firefox" windowactivate key F11
[Install]
WantedBy=graphical.target
EOT
systemctl enable firefox
systemctl start firefox
Потребан нам је Ксдотоол да бисмо одмах покренули фирефок у режиму целог екрана.
Користећи параметар -url
можете одредити било коју страницу тако да се аутоматски отвара када се претраживач покрене.
У овој фази, наш киоск је спреман, али сада треба да експортујемо слику преко мреже на друге мониторе и уређаје. Да бисмо то урадили, користићемо могућности
За ово су нам потребне две ствари:
apt-get install -y make gcc ffmpeg
cd /tmp/
wget https://github.com/ccrisan/streameye/archive/master.tar.gz
tar xvf master.tar.gz
cd streameye-master/
make
make install
cat > /etc/systemd/system/streameye.service <<EOT
[Unit]
Description=streamEye
After=network.target
[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/bin/sh -c 'ffmpeg -f x11grab -s 1920x1080 -i :0 -r 1 -f mjpeg -q:v 5 - 2>/dev/null | streameye'
[Install]
WantedBy=graphical.target
EOT
systemctl enable streameye
systemctl start streameye
Пошто наша слика не захтева брзо ажурирање, навео сам брзину освежавања: 1 кадар у секунди (параметар -r 1
) и квалитет компресије: 5 (параметар -q:v 5
)
Покушајмо сада да пређемо на
На страни клијента
Овде је још лакше, као што сам рекао, користићемо Распберри Пи Модел Б +.
Пре свега, хајде да га инсталирамо
Такође ћемо морати да издвојимо више меморије за наш видео чип, за ово ћемо уређивати /boot/config.txt
gpu_mem=128
Хајде да покренемо наш нови систем и не заборавимо да иницијализујемо пацман привезак за кључеве, инсталирамо
pacman -Sy omxplayer
Занимљиво је да ОМКСПлаиер може да ради без к, тако да све што нам треба је да напишемо јединичну датотеку за њега и покренемо:
cat > /etc/systemd/system/omxplayer.service <<EOT
[Unit]
Description=OMXPlayer
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/omxplayer -r --live -b http://your-vm:8080/ --aspect-mode full
[Install]
WantedBy=multi-user.target
EOT
systemctl enable omxplayer
systemctl start omxplayer
Као параметар -b http://your-vm:8080/
прослеђујемо УРЛ са нашег сервера.
То је све, слика са нашег сервера треба одмах да се појави на повезаном екрану. У случају било каквих проблема, стрим ће се аутоматски поново покренути и клијенти ће се поново повезати на њега.
Као бонус, добијену слику можете инсталирати као чувар екрана на свим рачунарима у канцеларији. За ово ће вам требати
mode: one
selected: 0
programs:
"Monitoring Screen" mpv --really-quiet --no-audio --fs
--loop=inf --no-stop-screensaver
--wid=$XSCREENSAVER_WINDOW
http://your-vm:8080/ n
maze -root n
electricsheep --root 1 n
Сада ће ваше колеге бити веома срећне 🙂
Извор: ввв.хабр.цом