Saya perlu menampilkan dasbor dengan pemantauan di beberapa layar di kantor. Ada beberapa Raspberry Pi Model B + lama dan hypervisor dengan sumber daya yang hampir tidak terbatas.
Rupanya Raspberry Pi Model B + tidak memiliki cukup keacakan untuk menjaga browser tetap berjalan dan merender banyak grafik di dalamnya, karena itu halaman sebagian bermasalah dan sering macet.
Ada solusi yang cukup sederhana dan elegan, yang ingin saya bagikan dengan Anda.
Seperti yang Anda ketahui, semua Raspberry memiliki prosesor video yang cukup kuat, yang bagus untuk decoding video perangkat keras. Jadi muncul ide untuk meluncurkan browser dengan dasbor di tempat lain, dan mentransfer aliran yang sudah jadi dengan gambar yang dirender ke raspberry.
Plus, ini harus menyederhanakan manajemen, karena dalam hal ini semua konfigurasi akan dilakukan pada satu mesin virtual, yang lebih mudah untuk diperbarui dan dicadangkan.
Tidak lebih cepat diucapkan daripada dilakukan.
bagian pelayan
Kami menggunakan siap
Kami menggunakan mesin virtual baru dan pertama-tama menginstalnya
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Kami juga akan menggunakan konfigurasi untuk 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
Sekarang kami akan menginstal Firefox, kami akan menjalankannya sebagai layanan sistem, jadi untuk satu hal kami akan menulis file unit untuknya:
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
Kami membutuhkan Xdotool untuk segera menjalankan firefox dalam mode layar penuh.
Menggunakan parameter -url
Anda dapat menentukan halaman mana saja agar terbuka secara otomatis saat browser dimulai.
Pada tahap ini, kios kami sudah siap, tetapi sekarang kami perlu mengekspor gambar melalui jaringan ke monitor dan perangkat lain. Untuk melakukan ini, kami akan menggunakan kemungkinan
Untuk ini kita membutuhkan dua hal:
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
Karena gambar kita tidak memerlukan pembaruan cepat, saya menetapkan kecepatan penyegaran: 1 bingkai per detik (parameter -r 1
) dan kualitas kompresi: 5 (parameter -q:v 5
)
Sekarang mari kita coba pergi ke
Sisi klien
Di sini masih lebih mudah, seperti yang saya katakan, kita akan menggunakan Raspberry Pi Model B +.
Pertama-tama, mari kita instal
Kami juga perlu mengalokasikan lebih banyak memori untuk chip video kami, untuk ini kami akan mengeditnya /boot/config.txt
gpu_mem=128
Mari boot sistem baru kita dan jangan lupa menginisialisasi keyring pacman, instal
pacman -Sy omxplayer
Hebatnya, OMXPlayer dapat bekerja tanpa x, jadi yang kita perlukan hanyalah menulis file unit untuknya dan menjalankan:
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
Sebagai parameter -b http://your-vm:8080/
kami melewati url dari server kami.
Itu saja, gambar dari server kami akan segera muncul di layar yang terhubung. Jika ada masalah, streaming akan dimulai ulang secara otomatis dan klien akan menyambungkannya kembali.
Sebagai bonus, Anda dapat memasang gambar yang dihasilkan sebagai screensaver di semua komputer di kantor. Untuk ini, Anda perlu
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
Sekarang kolega Anda akan sangat senang π
Sumber: www.habr.com