Ofisdə bir neçə ekranda monitorinqi olan tablosunu nümayiş etdirməyə ehtiyacım var idi. Bir neçə köhnə Raspberry Pi Model B + və demək olar ki, qeyri-məhdud resurslu hipervizor var.
Göründüyü kimi, Raspberry Pi Model B+ brauzerin daim işləməsini və çoxlu qrafika göstərməsini təmin etmək üçün kifayət qədər təsadüfiliyə malik deyil, buna görə də səhifə qismən səhv olur və tez-tez çökür.
Kifayət qədər sadə və zərif bir həll var idi, onu sizinlə bölüşmək istəyirəm.
Bildiyiniz kimi, bütün Raspberries kifayət qədər güclü video prosessoruna malikdir, bu, videonun dekodlanması üçün əladır. Beləliklə, başqa bir yerdə tablosuna malik brauzeri işə salmaq və göstərilən şəkil ilə hazır axını moruqa köçürmək fikri ortaya çıxdı.
Üstəlik, bu idarəetməni sadələşdirməlidir, çünki bu halda bütün konfiqurasiya yeniləmək və ehtiyat nüsxəsini çıxarmaq daha asan olan bir virtual maşında həyata keçiriləcəkdir.
Daha tez deyildi.
Server hissəsi
Hazır istifadə edirik
Yeni virtual maşın yerləşdiririk və ilk növbədə ona quraşdırırıq
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Xorg üçün konfiqurasiyadan da istifadə edəcəyik
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
İndi Firefox-u quraşdıracağıq, onu sistem xidməti kimi işlədəcəyik, ona görə də bir şey üçün onun üçün vahid fayl yazacağıq:
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-u dərhal tam ekran rejimində işə salmaq üçün bizə Xdotool lazımdır.
Parametrdən istifadə etməklə -url
hər hansı bir səhifəni təyin edə bilərsiniz ki, brauzer işə salındıqda avtomatik olaraq açılsın.
Bu mərhələdə köşkümüz hazırdır, lakin indi görüntünü şəbəkə üzərindən digər monitorlara və cihazlara ixrac etməliyik. Bunun üçün biz imkanlardan istifadə edəcəyik
Bunun üçün bizə iki şey lazımdır:
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
Şəkilimiz sürətli yeniləmə tələb etmədiyi üçün yeniləmə sürətini təyin etdim: saniyədə 1 kadr (parametr -r 1
) və sıxılma keyfiyyəti: 5 (parametr -q:v 5
)
İndi getməyə çalışaq
Müştəri tərəfi
Burada hələ daha asandır, dediyim kimi, Raspberry Pi Model B+-dan istifadə edəcəyik.
Əvvəlcə onu quraşdıraq
Video çipimiz üçün daha çox yaddaş ayırmalıyıq, bunun üçün redaktə edəcəyik /boot/config.txt
gpu_mem=128
Gəlin yeni sistemimizi yükləyək və pacman açarını işə salmağı, quraşdırmağı unutmayın
pacman -Sy omxplayer
Maraqlıdır ki, OMXPlayer x olmadan işləyə bilər, ona görə də bizə lazım olan tək şey onun üçün vahid fayl yazmaq və işə salmaqdır:
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 kimi -b http://your-vm:8080/
url-ni serverimizdən ötürürük.
Hamısı budur, serverimizdən bir şəkil dərhal qoşulmuş ekranda görünməlidir. Hər hansı problem olarsa, axın avtomatik olaraq yenidən işə salınacaq və müştərilər ona yenidən qoşulacaqlar.
Bonus olaraq, ortaya çıxan şəkli ofisdəki bütün kompüterlərə ekran qoruyucusu kimi quraşdıra bilərsiniz. Bunun üçün sizə lazım olacaq
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
İndi həmkarlarınız çox sevinəcək 🙂
Mənbə: www.habr.com