Aviu avutu bisognu di vede un dashboard cù monitorizazione in parechje schermi in l'uffiziu. Ci sò parechji vechji Raspberry Pi Model B + è un hypervisor cù una quantità quasi illimitata di risorse.
Apparentemente, u Raspberry Pi Model B + ùn hà micca abbastanza casualità per mantene u navigatore in permanenza in esecuzione è rende assai gràfiche in questu, per quessa chì succede chì a pagina hè parzialmente buggy è spessu crashes.
Ci era una suluzione abbastanza simplice è elegante, chì vogliu sparte cun voi.
Comu sapete, tutti i Raspberries anu un processatore video abbastanza putente, chì hè grande per a decodificazione di video hardware. Allora l'idea hè ghjunta per lancià un navigatore cù un dashboard in un altru locu, è trasfiriri un flussu prontu cù una stampa resa à u lampone.
In più, questu deve esse simplificatu a gestione, postu chì in questu casu tutte e cunfigurazioni seranu realizate nantu à una macchina virtuale, chì hè più faciule d'aghjurnà è di salvezza.
Nantu à dì chì fattu.
Parte di u servitore
Avemu aduprà pronta
Implementemu una nova macchina virtuale è prima di tuttu installate nantu à questu
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Avemu ancu aduprà a cunfigurazione per Xorg, per piacè
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
Avà stallà Firefox, u correremu cum'è un serviziu di sistema, cusì per una cosa scriveremu un schedariu di unità per questu:
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
Avemu bisognu di Xdotool per eseguisce firefox immediatamente in modalità di schermu pienu.
Utilizà u paràmetru -url
pudete specificà ogni pagina in modu chì si apre automaticamente quandu u navigatore principia.
À questu stadiu, u nostru kiosk hè prontu, ma avà avemu bisognu di esportà l'imaghjini nantu à a reta à altri monitori è dispusitivi. Per fà questu, avemu aduprà e pussibulità
Per questu avemu bisognu di duie cose:
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
Siccomu a nostra stampa ùn hà micca bisognu di una aghjurnazione rapida, aghju specificatu a freccia di rinfrescante: 1 frame per seconda (parametru -r 1
) è qualità di compressione: 5 (parametru -q:v 5
)
Avà pruvemu à andà
Latu di u cliente
Hè sempre più faciule quì, cum'è aghju dettu, useremu u Raspberry Pi Model B +.
Prima di tuttu, stallà nantu à questu
Avemu ancu bisognu di assignà più memoria per u nostru chip video, per questu avemu da edità in /boot/config.txt
gpu_mem=128
Avviate u nostru novu sistema è ùn vi scurdate di inizializà u keyring pacman, installate
pacman -Sy omxplayer
Notevolmente, OMXPlayer pò travaglià senza X, cusì tuttu ciò chì avemu bisognu hè di scrive un schedariu di unità per ellu è eseguisce:
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
Cum'è un paràmetru -b http://your-vm:8080/
passemu l'url da u nostru servitore.
Hè tuttu, una foto da u nostru servitore deve apparisce immediatamente nantu à u screnu cunnessu. In casu di prublemi, u flussu serà riavviatu automaticamente è i clienti si cunnettaranu cun ellu.
Cum'è un bonus, pudete installà a stampa resultanti cum'è screensaver in tutti l'urdinatori in l'uffiziu. Per questu avete bisognu
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
Avà i vostri culleghi seranu assai felici 🙂
Source: www.habr.com