Mul oli vajadus kuvada kontoris mitmel ekraanil armatuurlaud koos monitooringuga. Seal on mitu vana Raspberry Pi Model B+ ja peaaegu piiramatu hulga ressurssidega hüperviisor.
Ilmselt ei ole Raspberry Pi Model B+-l piisavalt juhuslikkust, et brauserit pidevalt töös hoida ja seal palju graafikat renderdada, mistõttu juhtub, et leht on osaliselt lollakas ja jookseb sageli kokku.
Seal oli üsna lihtne ja elegantne lahendus, mida ma tahan teiega jagada.
Nagu teate, on kõigil Vaarikatel üsna võimas videoprotsessor, mis sobib suurepäraselt riistvaralise video dekodeerimiseks. Nii tekkiski mõte käivitada kuskil mujal armatuurlauaga brauser ja vaarikale üle kanda renderdatud pildiga valmis voog.
Lisaks peaks sellel olema lihtsustatud haldamine, kuna sel juhul tehakse kogu konfiguratsioon ühes virtuaalmasinas, mida on lihtsam värskendada ja varundada.
Pole varem öeldud kui tehtud.
Serveri osa
Kasutame valmis
Juurutame uue virtuaalmasina ja installime selle esmalt sinna
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Me kasutame lahkelt ka Xorgi konfiguratsiooni
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
Nüüd installime Firefoxi, käivitame selle süsteemiteenusena, nii et ühe asjana kirjutame selle jaoks ühikfaili:
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
Firefoxi viivitamatuks täisekraanrežiimis käivitamiseks vajame Xdotooli.
Parameetri kasutamine -url
saate määrata mis tahes lehe nii, et see avaneks brauseri käivitamisel automaatselt.
Selles etapis on meie kiosk valmis, kuid nüüd peame eksportima pildi üle võrgu teistele monitoridele ja seadmetele. Selleks kasutame võimalusi
Selleks vajame kahte asja:
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
Kuna meie pilt ei vaja kiiret värskendamist, määrasin värskendussageduse: 1 kaader sekundis (parameeter -r 1
) ja tihenduskvaliteet: 5 (parameeter -q:v 5
)
Nüüd proovime minna
Kliendi pool
Siin on ikka lihtsam, nagu ma ütlesin, kasutame Raspberry Pi Model B+.
Kõigepealt installime selle
Samuti peame oma videokiibile eraldama rohkem mälu, selleks me redigeerime /boot/config.txt
gpu_mem=128
Käivitame oma uue süsteemi ja ärge unustage pacmani võtmehoidjat lähtestada, installida
pacman -Sy omxplayer
Tähelepanuväärne on see, et OMXPlayer saab töötada ka ilma x-ita, seega on meil vaja ainult kirjutada selle jaoks ühikfail ja käivitada:
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
Parameetrina -b http://your-vm:8080/
edastame URL-i oma serverist.
See on kõik, ühendatud ekraanile peaks kohe ilmuma pilt meie serverist. Probleemide korral taaskäivitatakse voog automaatselt ja kliendid loovad sellega uuesti ühenduse.
Boonusena saate tekkiva pildi installida ekraanisäästjana kõikidesse kontori arvutitesse. Selleks vajate
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
Nüüd on teie kolleegid väga õnnelikud 🙂
Allikas: www.habr.com