Tiririsha skrini kwenye vifaa vingi kupitia mtandao

Tiririsha skrini kwenye vifaa vingi kupitia mtandao

Nilikuwa na hitaji la kuonyesha dashibodi yenye ufuatiliaji kwenye skrini kadhaa ofisini. Kuna Raspberry Pi Model B + ya zamani na hypervisor iliyo na rasilimali karibu isiyo na kikomo.

Inavyoonekana Raspberry Pi Model B+ haina randomness ya kutosha ili kuweka kivinjari kiendelee kila mara na kutoa picha nyingi ndani yake, kwa sababu ambayo hutokea kwamba ukurasa ni sehemu ya buggy na mara nyingi huanguka.

Kulikuwa na suluhisho rahisi na la kifahari, ambalo nataka kushiriki nawe.

Kama unavyojua, Raspberries zote zina kichakataji cha video chenye nguvu, ambacho ni bora kwa usimbaji wa video wa maunzi. Kwa hivyo wazo lilikuja kuzindua kivinjari na dashibodi mahali pengine, na kuhamisha mkondo uliotengenezwa tayari na picha iliyotolewa kwa raspberry.

Pamoja, hii inapaswa kuwa na usimamizi rahisi, kwani katika kesi hii usanidi wote utafanywa kwenye mashine moja ya kawaida, ambayo ni rahisi kusasisha na kuhifadhi nakala.

Hakuna mapema kusema kuliko kufanya.

Sehemu ya seva

Tunatumia tayari Picha ya Wingu kwa Ubuntu. Haihitaji usakinishaji, ina kila kitu unachohitaji ili kupeleka haraka mashine ya kawaida, na Msaada wa CloudInit husaidia kusanidi mtandao mara moja, ongeza funguo za ssh na uifanye kazi haraka.

Tunapeleka mashine mpya pepe na kwanza kabisa kuisakinisha juu yake Xorg, jina ΠΈ sanduku la flux:

apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm

Pia tutatumia usanidi wa Xorg, kwa huruma imetolewa sisi Diego Ongaro, akiongeza tu azimio jipya 1920 Γ— 1080, kwa kuwa wachunguzi wetu wote wataitumia:

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

Sasa tutasakinisha Firefox, tutaiendesha kama huduma ya mfumo, kwa hivyo kwa jambo moja tutaandika faili ya kitengo kwa ajili yake:

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

Tunahitaji Xdotool ili kuendesha firefox mara moja katika hali ya skrini nzima.
Kwa kutumia parameter -url unaweza kutaja ukurasa wowote ili ufungue kiotomati wakati kivinjari kinapoanza.

Katika hatua hii, kioski chetu kiko tayari, lakini sasa tunahitaji kusafirisha picha kupitia mtandao kwa vidhibiti na vifaa vingine. Kwa kufanya hivyo, tutatumia uwezekano Mwendo JPEG, umbizo linalotumiwa zaidi kutiririsha video kutoka kwa kamera nyingi za wavuti.

Kwa hili tunahitaji vitu viwili: FFmpeg na moduli x11 kunyakua, kwa kunasa picha kutoka kwa x na streamEye, ambayo itaisambaza kwa wateja wetu:

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

Kwa kuwa picha yetu haiitaji sasisho la haraka, nilitaja kiwango cha kuburudisha: fremu 1 kwa sekunde (parameta -r 1) na ubora wa mgandamizo: 5 (parameta -q:v 5)

Sasa hebu tujaribu kwenda http://your-vm:8080/, kwa kujibu utaona picha ya skrini iliyosasishwa kila mara ya eneo-kazi. Kubwa! - nini kilihitajika.

Upande wa mteja

Bado ni rahisi hapa, kama nilivyosema, tutatumia Raspberry Pi Model B +.

Kwanza kabisa, hebu tusakinishe ArchLinux ARM, kwa hili tunafuata maelekezo kwenye wavuti rasmi.

Tutahitaji pia kutenga kumbukumbu zaidi kwa chipu yetu ya video, kwa hili tutahariri /boot/config.txt

gpu_mem=128

Wacha tuwashe mfumo wetu mpya na usisahau kuanzisha ufunguo wa pacman, sakinisha OMXPlayer:

pacman -Sy omxplayer

Kwa kushangaza, OMXPlayer inaweza kufanya kazi bila x, kwa hivyo tunachohitaji ni kuiandikia faili ya kitengo na kukimbia:

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

Kama kigezo -b http://your-vm:8080/ tunapitisha url kutoka kwa seva yetu.

Hiyo yote, picha kutoka kwa seva yetu inapaswa kuonekana mara moja kwenye skrini iliyounganishwa. Iwapo kutatokea matatizo yoyote, mtiririko huo utazimwa upya kiotomatiki na wateja wataunganisha tena.

Kama bonasi, unaweza kusakinisha picha inayotokana kama kihifadhi skrini kwenye kompyuta zote ofisini. Kwa hili utahitaji MPV ΠΈ XScreenSaver:

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

Sasa wenzako watafurahi sana πŸ™‚

Chanzo: mapenzi.com

Kuongeza maoni