Mi bezonis montri panelon kun monitorado sur pluraj ekranoj en la oficejo. Ni havas plurajn malnovajn Raspberry Pi Model B+ kaj hiperviziilon kun preskaŭ senlima kvanto da rimedoj.
Ŝajne la Raspberry Pi Model B+ ne havas sufiĉe da hazardo por teni la retumilon konstante funkcianta kaj prezenti grandan kvanton da grafikaĵoj en ĝi, tial okazas, ke la paĝo estas parte misa kaj ofte kraŝas.
Mi trovis sufiĉe simplan kaj elegantan solvon, kiun mi volas dividi kun vi.
Kiel vi scias, ĉiuj Framboj havas sufiĉe potencan videoprocesilon, kiu estas bonega por aparatara videomalkodado. Do venis la ideo lanĉi retumilon kun panelo aliloke, kaj transdoni pretan fluon kun bildita bildo al la frambo.
Krome, ĉi tio devus esti simpligita administrado, ĉar ĉi-kaze la tuta aranĝo estus farita sur unu virtuala maŝino, kiu estus pli facile ĝisdatigebla kaj rezerva.
Ne pli frue dirite ol farite.
Servila parto
Ni uzos la pretan
Ni deplojas novan virtualan maŝinon kaj unue instalas ĝin sur ĝi
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Ni ankaŭ uzos la agordon por Xorg, afable
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
Nun ni instalos Firefox, ni funkcios ĝin kiel sistema servo, do ni skribu unuopan dosieron por ĝi unufoje:
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
Ni bezonas Xdotool por lanĉi Firefox tuj en plenekrana reĝimo.
Uzante la parametron -url
Vi povas specifi ajnan paĝon por ke ĝi malfermu aŭtomate kiam la retumilo komenciĝas.
En ĉi tiu etapo, nia kiosko estas preta, sed nun ni devas eksporti la bildon tra la reto al aliaj ekranoj kaj aparatoj. Por fari tion ni profitos la ŝancojn
Por fari tion ni bezonas du aferojn:
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
Ĉar nia bildo ne postulas rapidan ĝisdatigon, mi specifis la refreŝigan indicon: 1 kadro por sekundo (parametro -r 1
) kaj kunprema kvalito: 5 (parametro -q:v 5
)
Nun ni provu iri al
Klienta parto
Ĉi tie ĉio estas eĉ pli simpla, kiel mi jam diris, ni uzos Raspberry Pi Model B+.
Antaŭ ĉio, ni instalu sur ĝi
Ni ankaŭ devos asigni pli da memoro por nia videoblato, por tio ni redaktos /boot/config.txt
gpu_mem=128
Ni lanĉu nian novan sistemon kaj, memorante pravalorigi la pacman-ŝlosilringon, instalu
pacman -Sy omxplayer
Kio estas rimarkinda estas, ke OMXPlayer povas funkcii sen X-oj, do ĉio, kion ni bezonas, estas skribi unu-dosieron por ĝi kaj ruli:
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
Kiel parametro -b http://your-vm:8080/
ni pasas la URL de nia servilo.
Jen ĉio, bildo de nia servilo tuj aperu sur la konektita ekrano. Se aperas iuj problemoj, la rivereto aŭtomate rekomenciĝos kaj klientoj rekonektos al ĝi.
Kiel gratifiko, vi povas instali la rezultan bildon kiel ekranŝirmilon sur ĉiuj komputiloj en la oficejo. Por ĉi tio vi bezonos
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
Nun viaj kolegoj estos tre feliĉaj :)
fonto: www.habr.com