
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 . Ùn richiede micca installazione, cuntene tuttu ciò chì avete bisognu per implementà rapidamente una macchina virtuale, è aiuta à stallà istantaneamente una rete, aghjunghje chjavi ssh è mette in opera rapidamente.
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/nodmAvemu ancu aduprà a cunfigurazione per Xorg, per piacè noi Diego Ongaro, aghjunghjendu solu una nova risoluzione 1920 × 1080, postu chì tutti i nostri monitori l'utilizanu:
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 nodmAvà 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 firefoxAvemu 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à , un furmatu chì hè più comunmente utilizatu per streaming video da a maiò parte di webcam.
Per questu avemu bisognu di duie cose: cù u modulu , per catturà ritratti da X è , chì u distribuirà à i nostri clienti:
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 streameyeSiccomu 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à , in risposta vi vede una screenshot constantemente aghjurnata di u desktop. Perfettu! - ciò chì era necessariu.
Latu di u cliente
Hè sempre più faciule quì, cum'è aghju dettu, useremu u Raspberry Pi Model B +.
Prima di tuttu, stallà nantu à questu , per questu seguitemu in u situ ufficiale.
Avemu ancu bisognu di assignà più memoria per u nostru chip video, per questu avemu da edità in /boot/config.txt
gpu_mem=128Avviate u nostru novu sistema è ùn vi scurdate di inizializà u keyring pacman, installate :
pacman -Sy omxplayerNotevolmente, 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 omxplayerCum'è 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 nAvà i vostri culleghi seranu assai felici 🙂
Source: www.habr.com
