Imel sem potrebo prikazati nadzorno ploščo z nadzorom na več zaslonih v pisarni. Obstaja več starih Raspberry Pi Model B + in hipervizor s skoraj neomejeno količino virov.
Očitno Raspberry Pi Model B+ nima dovolj naključnosti, da bi brskalnik ves čas deloval in v njem upodabljal veliko grafike, zaradi česar se zgodi, da je stran delno hrošča in se pogosto sesuje.
Obstaja dokaj preprosta in elegantna rešitev, ki jo želim deliti z vami.
Kot veste, imajo vse maline dokaj močan video procesor, ki je odličen za strojno dekodiranje videa. Tako se je porodila ideja, da bi brskalnik z nadzorno ploščo zagnal nekje drugje, na malino pa prenesel že pripravljen tok z izrisano sliko.
Poleg tega bi to moralo imeti poenostavljeno upravljanje, saj bo v tem primeru vsa konfiguracija izvedena na enem virtualnem stroju, ki ga je lažje posodabljati in varnostno kopirati.
Ni prej povedano kot storjeno.
Strežniški del
Uporabljamo pripravljeno
Razmestimo nov virtualni stroj in ga najprej namestimo nanj
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Vljudno bomo uporabili tudi konfiguracijo za Xorg
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
Zdaj bomo namestili Firefox, zagnali ga bomo kot sistemsko storitev, zato bomo zanj napisali datoteko enote:
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
Za takojšnji zagon firefoxa v celozaslonskem načinu potrebujemo Xdotool.
Uporaba parametra -url
katero koli stran lahko določite tako, da se samodejno odpre ob zagonu brskalnika.
Na tej stopnji je naš kiosk pripravljen, zdaj pa moramo sliko izvoziti po omrežju na druge monitorje in naprave. Da bi to naredili, bomo uporabili možnosti
Za to potrebujemo dve 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
Ker naša slika ne zahteva hitre posodobitve, sem določil hitrost osveževanja: 1 slika na sekundo (parameter -r 1
) in kakovost stiskanja: 5 (parameter -q:v 5
)
Zdaj pa poskusimo iti na
Stranka za stranke
Tukaj je še vedno lažje, kot sem rekel, uporabili bomo Raspberry Pi Model B+.
Najprej ga namestimo
Prav tako bomo morali dodeliti več pomnilnika za naš video čip, za to bomo urejali /boot/config.txt
gpu_mem=128
Zaženimo naš novi sistem in ne pozabimo inicializirati obeska za ključe pacman, namestimo
pacman -Sy omxplayer
Zanimivo je, da lahko OMXPlayer deluje brez x, tako da potrebujemo le, da zanj napišemo datoteko enote in zaženemo:
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
Kot parameter -b http://your-vm:8080/
posredujemo url iz našega strežnika.
To je vse, slika iz našega strežnika bi se morala takoj prikazati na povezanem zaslonu. V primeru težav se bo tok samodejno znova zagnal in odjemalci se bodo znova povezali z njim.
Kot bonus lahko nastalo sliko namestite kot ohranjevalnik zaslona na vse računalnike v pisarni. Za to boste potrebovali
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
Zdaj bodo vaši sodelavci zelo veseli 🙂
Vir: www.habr.com