Imao sam potrebu da prikažem kontrolnu tablu sa nadzorom na nekoliko ekrana u kancelariji. Postoji nekoliko starih Raspberry Pi Model B+ i hipervizor sa gotovo neograničenom količinom resursa.
Očigledno Raspberry Pi Model B+ nema dovoljno nasumice da bi pretraživač stalno radio i u njemu renderovao mnogo grafike, zbog čega se dešava da stranica djelimično greši i često pada.
Postojalo je prilično jednostavno i elegantno rješenje, koje želim podijeliti s vama.
Kao što znate, sve Raspberries imaju prilično moćan video procesor, koji je odličan za hardversko dekodiranje videa. Tako se pojavila ideja da pokrenemo pretraživač sa kontrolnom pločom negde drugde, a gotov stream sa renderovanom slikom prenesemo na malinu.
Osim toga, ovo bi trebalo da pojednostavi upravljanje, jer će se u ovom slučaju sva konfiguracija obavljati na jednoj virtuelnoj mašini, koju je lakše ažurirati i napraviti rezervnu kopiju.
Ne pre rečeno nego učinjeno.
Serverski dio
Koristimo spremno
Postavljamo novu virtuelnu mašinu i pre svega je instaliramo na nju
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 sistemski servis, tako da ćemo prvo napisati jedinični fajl 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
Potreban nam je Xdotool da bismo mogli odmah pokrenuti firefox u režimu celog ekrana.
Korištenje parametra -url
možete odrediti bilo koju stranicu tako da se automatski otvara kada se pretraživač pokrene.
U ovoj fazi naš kiosk je spreman, ali sada moramo eksportirati sliku preko mreže na druge monitore i uređaje. Za to ćemo iskoristiti 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, naveo sam brzinu osvježavanja: 1 kadar u sekundi (parametar -r 1
) i kvalitet kompresije: 5 (parametar -q:v 5
)
Pokušajmo sada prijeći na
Na strani klijenta
Ovdje je ipak lakše, kao što sam rekao, koristit ćemo Raspberry Pi Model B+.
Prije svega, hajde da ga instaliramo
Također ćemo morati izdvojiti više memorije za naš video čip, za ovo ćemo uređivati /boot/config.txt
gpu_mem=128
Pokrenimo naš novi sistem i ne zaboravite da inicijalizirate pacman privjesak za ključeve, instalirajte
pacman -Sy omxplayer
Zanimljivo je da OMXPlayer može raditi bez x, tako da sve što trebamo je da napišemo jediničnu datoteku za njega i pokrenemo:
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 sa našeg servera.
To je sve, slika sa našeg servera bi se odmah trebala pojaviti na povezanom ekranu. U slučaju bilo kakvih problema, stream će se automatski ponovo pokrenuti i klijenti će se ponovo povezati na njega.
Kao bonus, dobijenu sliku možete instalirati kao screensaver na svim računarima u kancelariji. 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še kolege biti veoma srećne 🙂
izvor: www.habr.com