Ek het 'n behoefte gehad om 'n dashboard met monitering op verskeie skerms in die kantoor te vertoon. Daar is verskeie ou Raspberry Pi Model B + en 'n hypervisor met 'n byna onbeperkte hoeveelheid hulpbronne.
Blykbaar het die Raspberry Pi Model B+ nie genoeg ewekansigheid om die blaaier voortdurend aan die gang te hou en baie grafika daarin weer te gee nie, en daarom gebeur dit dat die bladsy gedeeltelik karig is en dikwels ineenstort.
Daar was 'n redelik eenvoudige en elegante oplossing, wat ek met jou wil deel.
Soos u weet, het alle Frambose 'n redelik kragtige videoverwerker, wat ideaal is vir hardeware video-dekodering. Die idee het dus opgekom om 'n blaaier met 'n dashboard iewers anders te begin, en 'n klaargemaakte stroom met 'n gelewerde prentjie na die framboos te stuur.
Boonop behoort dit bestuur te vereenvoudig, aangesien in hierdie geval alle konfigurasie op een virtuele masjien uitgevoer sal word, wat makliker is om op te dateer en te rugsteun.
Nie gou gesΓͺ as gedaan nie.
Bediener deel
Ons gebruik gereed
Ons ontplooi 'n nuwe virtuele masjien en installeer dit eerstens daarop
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Ons sal ook die konfigurasie vir Xorg gebruik, asseblief
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
Nou sal ons Firefox installeer, ons sal dit as 'n stelseldiens laat loop, so vir een ding sal ons 'n eenheidlΓͺer daarvoor skryf:
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
Ons het Xdotool nodig om Firefox onmiddellik in volskermmodus te laat loop.
Gebruik die parameter -url
jy kan enige bladsy spesifiseer sodat dit outomaties oopmaak wanneer die blaaier begin.
Op hierdie stadium is ons kiosk gereed, maar nou moet ons die beeld oor die netwerk na ander monitors en toestelle uitvoer. Om dit te doen, sal ons die moontlikhede gebruik
Hiervoor het ons twee dinge nodig:
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
Aangesien ons foto nie 'n vinnige opdatering benodig nie, het ek die verversingstempo gespesifiseer: 1 raam per sekonde (parameter -r 1
) en kompressiekwaliteit: 5 (parameter -q:v 5
)
Kom ons probeer nou gaan na
KliΓ«ntkant
Dit is steeds makliker hier, soos ek gesΓͺ het, ons sal die Raspberry Pi Model B + gebruik.
Eerstens, laat ons dit installeer
Ons sal ook meer geheue vir ons videoskyfie moet toewys, hiervoor sal ons redigeer /boot/config.txt
gpu_mem=128
Kom ons begin ons nuwe stelsel en moenie vergeet om die pacman-sleutelring te inisialiseer nie, installeer
pacman -Sy omxplayer
Merkwaardig genoeg kan OMXPlayer sonder x werk, so al wat ons nodig het is om 'n eenheidlΓͺer daarvoor te skryf en te hardloop:
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
As 'n parameter -b http://your-vm:8080/
ons gee die url van ons bediener af.
Dit is al, 'n prentjie van ons bediener moet onmiddellik op die gekoppelde skerm verskyn. In die geval van enige probleme, sal die stroom outomaties herbegin word en kliΓ«nte sal weer daaraan koppel.
As 'n bonus kan jy die resulterende prentjie as 'n skermbewaarder op alle rekenaars in die kantoor installeer. Hiervoor sal jy nodig hΓͺ
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
Nou sal jou kollegas baie gelukkig wees π
Bron: will.com