Aku kudu nampilake dashboard kanthi ngawasi ing sawetara layar ing kantor. Ana sawetara Raspberry Pi Model B + lawas lan hypervisor karo jumlah meh Unlimited sumber.
Ketoke Raspberry Pi Model B + ora cukup randomness kanggo njaga browser terus-terusan mlaku lan Rendering akèh grafis ing, amarga iku kedaden sing kaca sebagian buggy lan asring tubrukan.
Ana solusi sing cukup prasaja lan elegan, sing aku pengin bareng karo sampeyan.
Kaya sing sampeyan ngerteni, kabeh Raspberry duwe prosesor video sing cukup kuat, sing apik kanggo dekoding video hardware. Dadi idea teka munggah kanggo mbukak browser karo dashboard nang endi wae liya, lan nransfer stream siap-digawe karo gambar render menyang raspberry.
Kajaba iku, iki kudu nyederhanakake manajemen, amarga ing kasus iki kabeh konfigurasi bakal ditindakake ing siji mesin virtual, sing luwih gampang nganyari lan nggawe serep.
Ora let suwe diomongke.
Bagian server
Kita nggunakake siap
Kita masang mesin virtual anyar lan pisanan nginstal ing
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Kita uga bakal nggunakake config kanggo Xorg, kindly
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
Saiki kita bakal nginstal Firefox, kita bakal mbukak minangka layanan sistem, supaya siji bab kita bakal nulis file unit kanggo iku:
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
Kita butuh Xdotool supaya bisa langsung mbukak firefox ing mode layar wutuh.
Nggunakake parameter -url
sampeyan bisa nemtokake kaca apa wae supaya mbukak kanthi otomatis nalika browser diwiwiti.
Ing tahap iki, kios kita wis siyap, nanging saiki kita kudu ngekspor gambar liwat jaringan menyang monitor lan piranti liyane. Kanggo nindakake iki, kita bakal nggunakake kemungkinan
Kanggo iki, kita butuh rong perkara:
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
Amarga gambar kita ora mbutuhake nganyari cepet, aku nemtokake tingkat refresh: 1 pigura per detik (parameter -r 1
) lan kualitas kompresi: 5 (parameter -q:v 5
)
Saiki ayo nyoba menyang
sisih klien
Iki isih luwih gampang, kaya sing dakkandhakake, kita bakal nggunakake Raspberry Pi Model B +.
Kaping pisanan, ayo nginstal
Kita uga kudu nyedhiakke memori liyane kanggo chip video kita, kanggo iki kita bakal ngowahi ing /boot/config.txt
gpu_mem=128
Ayo boot sistem anyar kita lan aja lali miwiti pacman keyring, nginstal
pacman -Sy omxplayer
Apik banget, OMXPlayer bisa digunakake tanpa x, dadi mung kudu nulis file unit lan mbukak:
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
Minangka parameter -b http://your-vm:8080/
kita ngliwati url saka server kita.
Sing kabeh, gambar saka server kita kudu langsung katon ing layar sing disambungake. Yen ana masalah, stream kasebut bakal diwiwiti maneh kanthi otomatis lan klien bakal nyambung maneh.
Minangka bonus, sampeyan bisa nginstal gambar asil minangka screensaver ing kabeh komputer ing kantor. Kanggo iki sampeyan kudu
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
Saiki kolega sampeyan bakal seneng banget π
Source: www.habr.com