Kailangan kong magpakita ng dashboard na may pagsubaybay sa ilang mga screen sa opisina. Mayroong ilang lumang Raspberry Pi Model B + at isang hypervisor na may halos walang limitasyong dami ng mga mapagkukunan.
Tila ang Raspberry Pi Model B+ ay walang sapat na randomness upang panatilihing patuloy na tumatakbo ang browser at nag-render ng maraming graphics dito, dahil kung saan nangyayari na ang page ay bahagyang buggy at madalas na nag-crash.
Nagkaroon ng medyo simple at eleganteng solusyon, na gusto kong ibahagi sa iyo.
Tulad ng alam mo, ang lahat ng mga Raspberry ay may medyo malakas na processor ng video, na mahusay para sa pag-decode ng video ng hardware. Kaya ang ideya ay dumating upang ilunsad ang isang browser na may dashboard sa ibang lugar, at ilipat ang isang handa na stream na may isang nai-render na larawan sa raspberry.
Dagdag pa, dapat itong pinasimple na pamamahala, dahil sa kasong ito ang lahat ng pagsasaayos ay isasagawa sa isang virtual machine, na mas madaling i-update at i-backup.
Wala pang sinabi at tapos na.
Bahagi ng server
Ginagamit namin ang handa
Nag-deploy kami ng bagong virtual machine at una sa lahat, i-install ito dito
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Gagamitin din namin ang config para sa Xorg, mabait
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
Ngayon ay i-install namin ang Firefox, patakbuhin namin ito bilang isang serbisyo ng system, kaya para sa isang bagay ay magsusulat kami ng isang file ng yunit para dito:
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
Kailangan namin ng Xdotool upang mapatakbo kaagad ang firefox sa full screen mode.
Gamit ang parameter -url
maaari mong tukuyin ang anumang pahina upang awtomatiko itong magbubukas kapag nagsimula ang browser.
Sa yugtong ito, handa na ang aming kiosk, ngunit ngayon ay kailangan naming i-export ang larawan sa network sa iba pang mga monitor at device. Upang gawin ito, gagamitin namin ang mga posibilidad
Para dito kailangan namin ng dalawang bagay:
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
Dahil ang aming larawan ay hindi nangangailangan ng mabilis na pag-update, tinukoy ko ang rate ng pag-refresh: 1 frame bawat segundo (parameter -r 1
) at kalidad ng compression: 5 (parameter -q:v 5
)
Ngayon subukan nating pumunta sa
panig ng kliyente
Mas madali pa rin dito, gaya ng sinabi ko, gagamitin natin ang Raspberry Pi Model B +.
Una sa lahat, i-install natin ito
Kakailanganin din naming maglaan ng mas maraming memory para sa aming video chip, para dito kami mag-e-edit /boot/config.txt
gpu_mem=128
Let's boot our new system and don't forget to initialize the pacman keyring, install
pacman -Sy omxplayer
Kapansin-pansin, ang OMXPlayer ay maaaring gumana nang walang x, kaya ang kailangan lang namin ay magsulat ng isang unit file para dito at tumakbo:
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
Bilang isang parameter -b http://your-vm:8080/
ipinapasa namin ang url mula sa aming server.
Iyon lang, dapat na agad na lumabas ang isang larawan mula sa aming server sa nakakonektang screen. Sa kaso ng anumang mga problema, ang stream ay awtomatikong ire-restart at ang mga kliyente ay muling kumonekta dito.
Bilang isang bonus, maaari mong i-install ang resultang larawan bilang isang screensaver sa lahat ng mga computer sa opisina. Para dito kakailanganin mo
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
Ngayon ang iyong mga kasamahan ay magiging napakasaya π
Pinagmulan: www.habr.com