Menga ofisdagi bir nechta ekranlarda monitoring bilan asboblar panelini ko'rsatish kerak edi. Bir nechta eski Raspberry Pi Model B + va deyarli cheksiz miqdordagi resurslarga ega gipervisor mavjud.
Ko'rinishidan, Raspberry Pi Model B+ brauzerning doimiy ishlashi va undagi ko'plab grafiklarni ko'rsatishi uchun etarli tasodifiylikka ega emas, buning natijasida sahifa qisman noto'g'ri va tez-tez ishdan chiqadi.
Men siz bilan baham ko'rmoqchi bo'lgan juda oddiy va oqlangan yechim bor edi.
Ma'lumki, barcha Raspberries juda kuchli video protsessorga ega, bu apparatli video dekodlash uchun juda yaxshi. Shunday qilib, boshqa joyda asboblar paneli bilan brauzerni ishga tushirish va renderlangan rasm bilan tayyor oqimni malinaga o'tkazish g'oyasi paydo bo'ldi.
Bundan tashqari, bu soddalashtirilgan boshqaruvga ega bo'lishi kerak, chunki bu holda barcha konfiguratsiyalar bitta virtual mashinada amalga oshiriladi, uni yangilash va zaxiralash osonroq bo'ladi.
Aytilgan gap otilgan o'q.
Server qismi
Biz tayyor holda foydalanamiz
Biz yangi virtual mashinani joylashtiramiz va birinchi navbatda uni o'rnatamiz
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Xorg uchun konfiguratsiyadan ham foydalanamiz, iltimos
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
Endi biz Firefox-ni o'rnatamiz, uni tizim xizmati sifatida ishga tushiramiz, shuning uchun bir narsa uchun biz unga birlik faylini yozamiz:
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
Firefox-ni darhol to'liq ekran rejimida ishga tushirish uchun bizga Xdotool kerak.
Parametrdan foydalanish -url
brauzer ishga tushganda avtomatik ravishda ochiladigan har qanday sahifani belgilashingiz mumkin.
Ushbu bosqichda bizning kioskimiz tayyor, ammo endi biz tasvirni tarmoq orqali boshqa monitor va qurilmalarga eksport qilishimiz kerak. Buning uchun biz imkoniyatlardan foydalanamiz
Buning uchun bizga ikkita narsa kerak:
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
Bizning rasmimiz tez yangilanishni talab qilmagani uchun men yangilanish tezligini belgilab qo'ydim: soniyasiga 1 kadr (parametr -r 1
) va siqish sifati: 5 (parametr -q:v 5
)
Endi borishga harakat qilaylik
Mijoz tomoni
Bu erda hali ham osonroq, aytganimdek, biz Raspberry Pi Model B + dan foydalanamiz.
Avvalo, uni o'rnatamiz
Shuningdek, biz video chipimiz uchun ko'proq xotira ajratishimiz kerak, buning uchun biz tahrir qilamiz /boot/config.txt
gpu_mem=128
Keling, yangi tizimimizni ishga tushiramiz va pacman kalitini ishga tushirishni, o'rnatishni unutmang
pacman -Sy omxplayer
Shunisi e'tiborga loyiqki, OMXPlayer X holda ishlay oladi, shuning uchun bizga kerak bo'lgan yagona narsa uning uchun birlik faylini yozish va ishga tushirish:
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
Parametr sifatida -b http://your-vm:8080/
biz urlni serverimizdan uzatmoqdamiz.
Hammasi shu, bizning serverimizdagi rasm darhol ulangan ekranda paydo bo'lishi kerak. Har qanday muammo yuzaga kelsa, oqim avtomatik ravishda qayta ishga tushiriladi va mijozlar unga qayta ulanadi.
Bonus sifatida siz olingan rasmni ofisdagi barcha kompyuterlarga ekran pardasi sifatida o'rnatishingiz mumkin. Buning uchun sizga kerak bo'ladi
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
Endi sizning hamkasblaringiz juda xursand bo'lishadi π
Manba: www.habr.com