Требаше да прикажам контролна табла со мониторинг на неколку екрани во канцеларијата. Имаме неколку стари Raspberry Pi Model B+ и хипервизор со речиси неограничен број ресурси.
Очигледно Raspberry Pi Model B+ нема доволно случајност за да го одржува прелистувачот постојано да работи и да прикажува голема количина на графика во него, поради што се случува страницата да биде делумно блескава и често да паѓа.
Најдов прилично едноставно и елегантно решение, кое сакам да го споделам со вас.
Како што знаете, сите малини имаат прилично моќен видео процесор, кој е одличен за хардверско декодирање на видео. Така се појави идејата да се стартува прелистувач со контролна табла на друго место и да се префрли готов стрим со рендерирана слика на малина.
Плус, ова треба да има поедноставено управување, бидејќи во овој случај целото поставување ќе се изврши на една виртуелна машина, што ќе биде полесно за ажурирање и резервна копија.
Не порано кажано отколку направено.
Серверски дел
Ќе го искористиме готовиот
Распоредуваме нова виртуелна машина и прво ја инсталираме на неа
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Ќе ја користиме и конфигурацијата за Xorg, љубезно
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
Сега ќе го инсталираме Firefox, ќе го работиме како системска услуга, па ајде да напишеме единица датотека за него во еден потег:
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
Ни треба Xdotool за да го стартуваме 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
)
Сега да се обидеме да одиме на
Клиентска страна
Тука сè е уште поедноставно, како што веќе реков, ќе користиме Raspberry Pi Model B+.
Прво, да го инсталираме
Исто така, ќе треба да одвоиме повеќе меморија за нашиот видео чип, за ова ќе го уредиме /boot/config.txt
gpu_mem=128
Ајде да го подигнеме нашиот нов систем и, не заборавајте да го иницијализираме клучот на Pacman, да го инсталираме
pacman -Sy omxplayer
Она што е забележливо е дека OMXPlayer може да работи без Xs, така што сè што ни треба е да напишеме единица датотека за него и да извршиме:
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/
го пренесуваме URL-то од нашиот сервер.
Тоа е сè, на поврзаниот екран веднаш треба да се појави слика од нашиот сервер. Ако се појават проблеми, преносот автоматски ќе се рестартира и клиентите повторно ќе се поврзат со него.
Како бонус, можете да ја инсталирате добиената слика како заштитник на екранот на сите компјутери во канцеларијата. За ова ќе ви треба
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
Сега вашите колеги ќе бидат многу среќни :)
Извор: www.habr.com