Ofiste birkaç ekranda izleme içeren bir pano görüntülemeye ihtiyacım vardı. Birkaç eski Raspberry Pi Model B + ve neredeyse sınırsız miktarda kaynağa sahip bir hipervizör var.
Görünüşe göre Raspberry Pi Model B+, tarayıcının sürekli çalışmasını ve içinde çok sayıda grafik oluşturmasını sağlayacak kadar rastgeleliğe sahip değil, bu nedenle sayfa kısmen hatalı ve sık sık çöküyor.
Sizinle paylaşmak istediğim oldukça basit ve zarif bir çözüm vardı.
Bildiğiniz gibi, tüm Ahududu oldukça güçlü bir video işlemciye sahiptir ve bu, donanım video kod çözme için harikadır. Bu nedenle, başka bir yerde bir gösterge panosuna sahip bir tarayıcı başlatmak ve işlenmiş bir resim içeren hazır bir akışı ahududuya aktarmak fikri ortaya çıktı.
Ayrıca, yönetimin basitleştirilmiş olması gerekir, çünkü bu durumda tüm yapılandırma güncellemesi ve yedeklemesi daha kolay olan tek bir sanal makinede gerçekleştirilecektir.
Daha erken olmaz dedi ve bitirdi.
Sunucu bölümü
hazır kullanıyoruz
Yeni bir sanal makine dağıtıyoruz ve her şeyden önce üzerine kuruyoruz.
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Xorg için yapılandırmayı da kullanacağız, lütfen
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
Şimdi Firefox'u kuracağız, onu bir sistem servisi olarak çalıştıracağız, yani bir kere bunun için bir birim dosyası yazacağız:
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
Firefox'u hemen tam ekran modunda çalıştırmak için Xdotool'a ihtiyacımız var.
parametreyi kullanma -url
tarayıcı başladığında otomatik olarak açılması için herhangi bir sayfayı belirtebilirsiniz.
Bu aşamada kioskumuz hazır ama artık imajı ağ üzerinden diğer monitör ve cihazlara aktarmamız gerekiyor. Bunu yapmak için olasılıkları kullanacağız
Bunun için iki şeye ihtiyacımız var:
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
Resmimiz hızlı güncelleme gerektirmediği için yenileme hızını belirledim: 1 kare/saniye (parametre -r 1
) ve sıkıştırma kalitesi: 5 (parametre -q:v 5
)
Şimdi gitmeyi deneyelim
İstemci tarafı
Burada yine daha kolay dediğim gibi biz Raspberry Pi Model B+ kullanacağız.
Öncelikle onu yükleyelim
Ayrıca video çipimiz için daha fazla bellek ayırmamız gerekecek, bunun için düzenleme yapacağız. /boot/config.txt
gpu_mem=128
Yeni sistemimizi başlatalım ve pacman anahtarlığını başlatmayı unutmayın, kurun
pacman -Sy omxplayer
Dikkat çekici bir şekilde, OMXPlayer x olmadan çalışabilir, bu nedenle tek ihtiyacımız olan onun için bir birim dosyası yazmak ve şunu çalıştırmak:
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
parametre olarak -b http://your-vm:8080/
url'yi sunucumuzdan geçiriyoruz.
Hepsi bu kadar, sunucumuzdan bir resim hemen bağlı ekranda görünmelidir. Herhangi bir sorun olması durumunda akış otomatik olarak yeniden başlatılacak ve istemciler akışa yeniden bağlanacaktır.
Bonus olarak, ortaya çıkan resmi ofisteki tüm bilgisayarlara ekran koruyucu olarak yükleyebilirsiniz. Bunun için ihtiyacınız olacak
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
Şimdi iş arkadaşlarınız çok mutlu olacak 🙂
Kaynak: habr.com