Li ser torê dîmenderê ji gelek cîhazan re biherikînin

Li ser torê dîmenderê ji gelek cîhazan re biherikînin

Hewcedariya min hebû ku ez tabloyek bi çavdêrîkirinê li ser gelek ekranên nivîsgehê nîşan bidim. Gelek Raspberry Pi Model B + û hîpervisorek bi çavkaniyek hema hema bêsînor hene.

Xuya ye ku Raspberry Pi Model B+ têra xwe ne rasthatî ye ku gerok bi domdarî bixebite û tê de gelek grafîk çêdike, ji ber vê yekê diqewime ku rûpel hinekî xelet e û pir caran têk diçe.

Çareseriyek pir hêsan û elegant hebû, ku ez dixwazim bi we re parve bikim.

Wekî ku hûn dizanin, hemî Raspberries xwedan pêvajoyek vîdyoyê ya pir bi hêz in, ku ji bo deşîfrekirina vîdyoya hardware pir girîng e. Ji ber vê yekê fikir derket ku meriv gerokek bi dashboardek li cîhek din bide destpêkirin, û stûnek amade bi wêneyek çêkirî veguhezîne raspberry.

Zêdetir, ev pêdivî ye ku rêveberiya hêsan hebe, ji ber ku di vê rewşê de dê hemî mîheng li ser yek makîneyek virtual, ku nûvekirin û paşvekişandina hêsantir e, were kirin.

Ne zû got.

Beşa serverê

Em amade bikar tînin Wêne Cloud ji bo Ubuntu. Ne hewceyê sazkirinê ye, ew her tiştê ku hûn hewce ne ku hûn bilez makîneyek virtual saz bikin dihewîne, û Piştgiriya CloudInit dibe alîkar ku tavilê torgilokek saz bike, bişkokên ssh lê zêde bike û bi lez bikeve xebatê.

Em makîneyek nû ya virtual saz dikin û berî her tiştî wê li ser saz dikin Xorg, nodm и qutiya fluksê:

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

Em ê ji bo Xorg jî mîhengê bikar bînin, ji kerema xwe dayîn me Diego Ongaro, tenê çareseriyek nû lê zêde kir 1920 × 1080, ji ber ku hemî çavdêrên me wê bikar bînin:

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

Naha em ê Firefox-ê saz bikin, em ê wê wekî karûbarek pergalê bimeşînin, ji ber vê yekê em ê ji bo wê pelek yekîneyek binivîsin:

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

Ji bo ku firefox tavilê di moda ekrana tevahî de bimeşîne em hewceyê Xdotool in.
Bikaranîna pîvanê -url hûn dikarin her rûpelê diyar bikin da ku gava gerok dest pê dike ew bixweber vebe.

Di vê qonaxê de, kioska me amade ye, lê naha pêdivî ye ku em wêneyê li ser torê ji çavdêr û amûrên din re derxînin. Ji bo vê jî em ê îmkanan bikar bînin Tevger JPEG, formatek ku bêtir ji bo weşana vîdyoyê ji piraniya webkameran tê bikar anîn.

Ji bo vê em du tiştan hewce ne: FFmpeg bi modul x11 girtin, ji bo kişandina wêneyan ji x û streamEye, ku dê wê li xerîdarên me belav bike:

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

Ji ber ku wêneyê me nûvekirinek bilez hewce nake, min rêjeya nûvekirinê diyar kir: 1 çarçove per saniyeyê (parametre -r 1) û kalîteya kompresyonê: 5 (parametre -q:v 5)

Niha em hewl bidin ku biçin http://your-vm:8080/, di bersivê de hûn ê dîmenek sermaseyê ya bi domdarî nûvekirî bibînin. Ecêb! - çi hewce bû.

Aliyê xerîdar

Li vir hîn jî hêsantir e, wekî ku min got, em ê Raspberry Pi Model B + bikar bînin.

Berî her tiştî, em wê saz bikin Arch ARM Linux, ji bo vê em dişopînin fermanên li ser malpera fermî.

Di heman demê de pêdivî ye ku em ji bo çîpa vîdyoya xwe bêtir bîranîn veqetînin, ji bo vê yekê em ê biguherînin /boot/config.txt

gpu_mem=128

Werin em pergala xweya nû boot bikin û ji bîr nekin ku mifteya pacman bidin destpêkirin, saz bikin OMXPlayer:

pacman -Sy omxplayer

Balkêş e, OMXPlayer dikare bêyî X bixebite, ji ber vê yekê ya ku em hewce ne ev e ku em pelek yekîneyek ji bo wê binivîsin û bimeşînin:

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

Wek parametre -b http://your-vm:8080/ em url ji servera xwe derbas dikin.

Ew hemî ye, wêneyek ji servera me divê tavilê li ser ekrana girêdayî xuya bibe. Di rewşek pirsgirêkek de, weşan dê bixweber ji nû ve were destpêkirin û xerîdar dê ji nû ve bi wê ve werin girêdan.

Wekî bonus, hûn dikarin wêneya encamkirî wekî dîmenderek li ser hemî komputerên li nivîsgehê saz bikin. Ji bo vê hûn ê hewce bibin 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

Niha hevkarên we dê pir kêfxweş bibin 🙂

Source: www.habr.com

Add a comment