Imao sam potrebu prikazati nadzornu ploču s nadzorom na nekoliko ekrana u uredu. Postoji nekoliko starih Raspberry Pi Model B+ i hipervizor s gotovo neograničenom količinom resursa.
Navodno Raspberry Pi Model B+ nema dovoljno slučajnosti da bi preglednik stalno radio i renderirao puno grafike u njemu, zbog čega se događa da stranica djelomično bugi i često se ruši.
Postojalo je prilično jednostavno i elegantno rješenje koje želim podijeliti s vama.
Kao što znate, sve Maline imaju prilično snažan video procesor, koji je izvrstan za hardversko dekodiranje videa. Pa je došla ideja pokrenuti preglednik s nadzornom pločom negdje drugdje, i prebaciti gotov stream s renderiranom slikom na malinu.
Osim toga, ovo bi trebalo imati pojednostavljeno upravljanje, budući da će se u ovom slučaju sva konfiguracija izvoditi na jednom virtualnom računalu, koje je lakše ažurirati i sigurnosno kopirati.
Tek što je rečeno nego učinjeno.
Serverski dio
Koristimo spremno
Postavljamo novi virtualni stroj i prije svega ga instaliramo na njega
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Također ćemo koristiti konfiguraciju za Xorg, ljubazno
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
Sada ćemo instalirati Firefox, pokrenut ćemo ga kao sistemsku uslugu, tako da ćemo kao prvo napisati jediničnu datoteku za njega:
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
Trebamo Xdotool kako bismo odmah pokrenuli firefox na cijelom zaslonu.
Korištenje parametra -url
možete odrediti bilo koju stranicu tako da se automatski otvara kada se preglednik pokrene.
U ovoj fazi naš kiosk je spreman, ali sada trebamo izvesti sliku preko mreže na druge monitore i uređaje. Da bismo to učinili, iskoristit ćemo mogućnosti
Za ovo su nam potrebne dvije stvari:
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
Budući da naša slika ne zahtijeva brzo ažuriranje, odredio sam brzinu osvježavanja: 1 okvir u sekundi (parametar -r 1
) i kvaliteta kompresije: 5 (parametar -q:v 5
)
Sada pokušajmo otići na
Strana klijenta
Ovdje je još lakše, kao što sam rekao, koristit ćemo Raspberry Pi Model B+.
Prije svega, instalirajmo ga
Također ćemo morati dodijeliti više memorije za naš video čip, za ovo ćemo uređivati /boot/config.txt
gpu_mem=128
Pokrenimo naš novi sustav i ne zaboravimo inicijalizirati pacman keyring, instaliraj
pacman -Sy omxplayer
Nevjerojatno, OMXPlayer može raditi bez x-a, tako da sve što trebamo je napisati jediničnu datoteku za njega i pokrenuti:
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
Kao parametar -b http://your-vm:8080/
prosljeđujemo url s našeg poslužitelja.
To je sve, slika s našeg poslužitelja trebala bi se odmah pojaviti na povezanom ekranu. U slučaju bilo kakvih problema, stream će se automatski ponovno pokrenuti i klijenti će se ponovno spojiti na njega.
Kao bonus, možete instalirati rezultirajuću sliku kao čuvar zaslona na svim računalima u uredu. Za ovo će vam trebati
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
Sada će vaši kolege biti jako sretni 🙂
Izvor: www.habr.com