Man bija nepieciešams parādīt informācijas paneli ar uzraudzību vairākos biroja ekrānos. Ir vairāki veci Raspberry Pi Model B+ un hipervizors ar gandrīz neierobežotu resursu daudzumu.
Acīmredzot Raspberry Pi Model B+ nav pietiekami daudz nejaušības, lai pārlūkprogramma nepārtraukti darbotos un tajā tiktu renderēts daudz grafikas, kā dēļ gadās, ka lapa ir daļēji buggy un bieži avarē.
Bija diezgan vienkāršs un elegants risinājums, ar kuru es vēlos dalīties ar jums.
Kā zināms, visām Raspberries ir diezgan jaudīgs video procesors, kas lieliski noder aparatūras video dekodēšanai. Tā radās ideja palaist pārlūkprogrammu ar informācijas paneli kaut kur citur un nosūtīt gatavu straumi ar renderētu attēlu uz aveņu.
Turklāt tam vajadzētu būt vienkāršotai pārvaldībai, jo šajā gadījumā visa konfigurācija tiks veikta vienā virtuālajā mašīnā, kuru ir vieglāk atjaunināt un dublēt.
Ne ātrāk pateikts, kā izdarīts.
Servera daļa
Mēs izmantojam gatavu
Mēs izvietojam jaunu virtuālo mašīnu un vispirms instalējam to tajā
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Mēs arī izmantosim Xorg konfigurāciju
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
Tagad mēs instalēsim Firefox, mēs to darbosim kā sistēmas pakalpojumu, tāpēc vienai lietai mēs tam uzrakstīsim vienības failu:
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
Mums ir nepieciešams Xdotool, lai nekavējoties palaistu Firefox pilnekrāna režīmā.
Izmantojot parametru -url
varat norādīt jebkuru lapu, lai tā tiktu automātiski atvērta, startējot pārlūkprogrammu.
Šajā posmā mūsu kiosks ir gatavs, taču tagad mums ir jāeksportē attēls tīklā uz citiem monitoriem un ierīcēm. Lai to izdarītu, mēs izmantosim iespējas
Šim nolūkam mums ir vajadzīgas divas lietas:
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
Tā kā mūsu attēlam nav nepieciešama ātra atjaunināšana, es norādīju atsvaidzes intensitāti: 1 kadrs sekundē (parametrs -r 1
) un saspiešanas kvalitāte: 5 (parametrs -q:v 5
)
Tagad mēģināsim doties uz
Klienta puse
Šeit joprojām ir vieglāk, kā jau teicu, mēs izmantosim Raspberry Pi Model B+.
Pirmkārt, instalēsim to
Mums būs arī jāpiešķir vairāk atmiņas mūsu video mikroshēmai, lai to rediģētu /boot/config.txt
gpu_mem=128
Sāknēsim savu jauno sistēmu un neaizmirsīsim inicializēt pacman atslēgu piekariņu, instalējiet
pacman -Sy omxplayer
Jāatzīmē, ka OMXPlayer var darboties bez x, tāpēc viss, kas mums nepieciešams, ir uzrakstīt tam vienības failu un palaist:
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
Kā parametrs -b http://your-vm:8080/
mēs nododam URL no sava servera.
Tas arī viss, pievienotajā ekrānā nekavējoties jāparādās attēlam no mūsu servera. Problēmu gadījumā straume tiks automātiski restartēta, un klienti ar to atkal izveidos savienojumu.
Kā bonusu jūs varat instalēt iegūto attēlu kā ekrānsaudzētāju visos biroja datoros. Šim nolūkam jums būs nepieciešams
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
Tagad jūsu kolēģi būs ļoti priecīgi 🙂
Avots: www.habr.com