Kisha nevojë të shfaqja një panel me monitorim në disa ekrane në zyrë. Ka disa të vjetra Raspberry Pi Model B + dhe një hipervizor me një sasi pothuajse të pakufizuar burimesh.
Me sa duket, Raspberry Pi Model B+ nuk ka rastësi të mjaftueshme për ta mbajtur shfletuesin të funksionojë vazhdimisht dhe të shfaqë shumë grafikë në të, për shkak të së cilës ndodh që faqja të jetë pjesërisht me gabime dhe shpesh rrëzohet.
Kishte një zgjidhje mjaft të thjeshtë dhe elegante, të cilën dua ta ndaj me ju.
Siç e dini, të gjitha Raspberries kanë një procesor video mjaft të fuqishëm, i cili është i shkëlqyeshëm për dekodimin e videos harduerike. Kështu lindi ideja për të nisur një shfletues me një panel kontrolli diku tjetër, dhe për të transferuar një transmetim të gatshëm me një foto të dhënë në raspberry.
Plus, kjo duhet të ketë menaxhim të thjeshtuar, pasi në këtë rast i gjithë konfigurimi do të kryhet në një makinë virtuale, e cila është më e lehtë për tu përditësuar dhe rezervuar.
E thënë më shpejt se sa bëhet.
Pjesa e serverit
Ne përdorim gati
Ne vendosim një makinë të re virtuale dhe para së gjithash e instalojmë në të
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Ne gjithashtu do të përdorim konfigurimin për Xorg, me mirësi
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
Tani do të instalojmë Firefox-in, do ta ekzekutojmë si një shërbim sistemi, kështu që për një gjë do të shkruajmë një skedar njësi për të:
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
Ne kemi nevojë për Xdotool në mënyrë që të ekzekutojmë firefox menjëherë në modalitetin e ekranit të plotë.
Duke përdorur parametrin -url
ju mund të specifikoni çdo faqe në mënyrë që ajo të hapet automatikisht kur shfletuesi fillon.
Në këtë fazë, kioska jonë është gati, por tani duhet të eksportojmë imazhin përmes rrjetit në monitorë dhe pajisje të tjera. Për ta bërë këtë, ne do të përdorim mundësitë
Për këtë na duhen dy gjëra:
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
Meqenëse fotografia jonë nuk kërkon një përditësim të shpejtë, unë specifikova shpejtësinë e rifreskimit: 1 kornizë për sekondë (parametër -r 1
) dhe cilësia e kompresimit: 5 (parametri -q:v 5
)
Tani le të përpiqemi të shkojmë në
Nga ana e klientit
Është akoma më e lehtë këtu, siç thashë, ne do të përdorim Raspberry Pi Model B +.
Para së gjithash, le ta instalojmë
Do të na duhet gjithashtu të ndajmë më shumë memorie për çipin tonë video, për këtë do ta modifikojmë /boot/config.txt
gpu_mem=128
Le të nisim sistemin tonë të ri dhe të mos harrojmë të inicializojmë tastierën pacman, instalojmë
pacman -Sy omxplayer
Çuditërisht, OMXPlayer mund të funksionojë pa x, kështu që gjithçka që na nevojitet është të shkruajmë një skedar njësi për të dhe të ekzekutojmë:
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
Si parametër -b http://your-vm:8080/
ne po kalojmë url-në nga serveri ynë.
Kjo është e gjitha, një fotografi nga serveri ynë duhet të shfaqet menjëherë në ekranin e lidhur. Në rast të ndonjë problemi, transmetimi do të riniset automatikisht dhe klientët do të rilidhen me të.
Si një bonus, ju mund të instaloni foton që rezulton si një mbrojtës ekrani në të gjithë kompjuterët në zyrë. Për këtë do t'ju duhet
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
Tani kolegët tuaj do të jenë shumë të lumtur 🙂
Burimi: www.habr.com