Экранро ба дастгоҳҳои сершумор тавассути шабака интиқол диҳед

Экранро ба дастгоҳҳои сершумор тавассути шабака интиқол диҳед

Ба ман лозим буд, ки панели идоракуниро бо мониторинг дар якчанд экранҳои офис намоиш диҳам. Якчанд Raspberry Pi Model B + кӯҳна ва гипервизор бо миқдори қариб номаҳдуди захираҳо мавҷуданд.

Эҳтимол, Raspberry Pi Model B + тасодуфии кофӣ надорад, то браузерро пайваста кор кунад ва дар он графикаи зиёдеро пешкаш кунад, аз ин рӯ, саҳифа қисман хато мешавад ва аксар вақт садама мешавад.

Як ҳалли хеле содда ва шево вуҷуд дошт, ки ман мехоҳам бо шумо мубодила кунам.

Тавре ки шумо медонед, ҳама Raspberries дорои протсессори видеоии хеле пуриқтидор мебошанд, ки барои рамзкушоии видеои сахтафзор бузург аст. Ҳамин тавр, идея пайдо шуд, ки браузери дорои панели идоракуниро дар ҷои дигар оғоз кунад ва ҷараёни тайёрро бо тасвири намоишшуда ба малина интиқол диҳад.

Илова бар ин, ин бояд идоракунии соддашуда дошта бошад, зеро дар ин ҳолат ҳама конфигуратсия дар як мошини виртуалӣ иҷро карда мешавад, ки навсозӣ ва нусхабардорӣ осонтар аст.

Ҳанӯз ногуфта иҷро шуд.

Қисми сервер

Мо тайёрро истифода мебарем Тасвири абрӣ барои Ubuntu. Талаб нест насб, он дорои ҳама чизро ба шумо лозим аст, ки ба зудӣ ҷойгир як мошини виртуалӣ, ва Дастгирии CloudInit барои фавран барпо кардани шабака, илова кардани калидҳои ssh ва зуд ба кор андохтани он кӯмак мекунад.

Мо мошини нави виртуалиро ҷойгир мекунем ва пеш аз ҳама онро дар он насб мекунем Xorg, нодм и қуттии флюс:

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

Мо инчунин конфигуратсияро барои Xorg истифода хоҳем бурд дода шудааст мо Диего Онгаро, илова танҳо як қарори нав 1920 × 1080, зеро ҳамаи мониторҳои мо аз он истифода хоҳанд кард:

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

Ҳоло мо Firefox-ро насб мекунем, мо онро ҳамчун хидмати система иҷро мекунем, аз ин рӯ барои як чиз мо файли воҳидиро барои он менависем:

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

Ба мо Xdotool лозим аст, то Firefox фавран дар ҳолати пурраи экран кор кунад.
Истифодаи параметр -url шумо метавонед ягон саҳифаро муайян кунед, то он вақте ки браузер оғоз меёбад, ба таври худкор кушода шавад.

Дар ин марҳила, киоски мо омода аст, аммо ҳоло мо бояд тасвирро тавассути шабака ба дигар мониторҳо ва дастгоҳҳо содир кунем. Барои ин мо аз имкониятхо истифода мебарем Ҷунбиши JPEG, формате, ки бештар барои ҷараён додани видео аз аксари веб-камераҳо истифода мешавад.

Барои ин ба мо ду чиз лозим аст: FFmpeg бо модул x11grab, барои гирифтани тасвирҳо аз X ва streamEye, ки онро ба мизоҷони мо паҳн мекунад:

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

Азбаски тасвири мо навсозии зудро талаб намекунад, ман суръати навсозиро муайян кардам: 1 кадр дар як сония (параметр -r 1) ва сифати фишурдасозӣ: 5 (параметр -q:v 5)

Акнун биёед кӯшиш кунем, ки ба он биравем http://your-vm:8080/, дар посух шумо скриншоти доимо навшавандаи мизи кориро хоҳед дид. Аҷоиб! — чй лозим буд.

Ҷониби муштарӣ

Дар ин ҷо ҳоло ҳам осонтар аст, тавре ки ман гуфтам, мо Raspberry Pi Model B + -ро истифода хоҳем бурд.

Пеш аз ҳама, биёед онро насб кунем ArchLinux ARM, барои ин мо пайравй мекунем дастурҳо дар вебсайти расмӣ.

Мо инчунин бояд барои чипи видеои худ хотираи бештар ҷудо кунем, барои ин мо таҳрир мекунем /boot/config.txt

gpu_mem=128

Биёед системаи нави худро пурбор кунем ва фаромӯш накунед, ки калидҳои pacman-ро оғоз кунед, насб кунед OMXPlayer:

pacman -Sy omxplayer

Ҷолиб он аст, ки OMXPlayer метавонад бидуни X кор кунад, аз ин рӯ ба мо танҳо як файли воҳидиро барои он навиштан ва иҷро кардан лозим аст:

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

Ҳамчун параметр -b http://your-vm:8080/ мо url-ро аз сервери худ мегузаронем.

Ҳамааш ин аст, ки расм аз сервери мо бояд фавран дар экрани пайвастшуда пайдо шавад. Дар сурати пайдо шудани мушкилот, ҷараён ба таври худкор аз нав оғоз мешавад ва муштариён дубора ба он пайваст мешаванд.

Ҳамчун бонус, шумо метавонед тасвири натиҷаро ҳамчун экран дар ҳама компютерҳои офис насб кунед. Барои ин ба шумо лозим меояд 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

Акнун ҳамкорони шумо хеле шод хоҳанд шуд 🙂

Манбаъ: will.com

Илова Эзоҳ