Tôi có nhu cầu hiển thị bảng điều khiển có giám sát trên một số màn hình trong văn phòng. Có một số Raspberry Pi Model B + cũ và một trình ảo hóa với lượng tài nguyên gần như không giới hạn.
Rõ ràng Raspberry Pi Model B+ không có đủ tính ngẫu nhiên để giữ cho trình duyệt chạy liên tục và hiển thị nhiều đồ họa trong đó, do đó, trang này bị lỗi một phần và thường xuyên bị treo.
Có một giải pháp khá đơn giản và tao nhã mà tôi muốn chia sẻ với bạn.
Như bạn đã biết, tất cả các quả mâm xôi đều có bộ xử lý video khá mạnh, rất phù hợp để giải mã video phần cứng. Vì vậy, ý tưởng nảy ra là khởi chạy một trình duyệt có bảng điều khiển ở một nơi khác và chuyển một luồng tạo sẵn có hình ảnh kết xuất sang mâm xôi.
Ngoài ra, điều này sẽ đơn giản hóa việc quản lý, vì trong trường hợp này, tất cả cấu hình sẽ được thực hiện trên một máy ảo, dễ dàng cập nhật và sao lưu hơn.
Không sớm nói hơn làm.
Phần máy chủ
Chúng tôi sử dụng sẵn sàng
Chúng tôi triển khai một máy ảo mới và trước hết hãy cài đặt nó trên đó
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Chúng tôi cũng sẽ sử dụng cấu hình cho Xorg, vui lòng
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
Bây giờ chúng tôi sẽ cài đặt Firefox, chúng tôi sẽ chạy nó như một dịch vụ hệ thống, vì vậy chúng tôi sẽ viết một tệp đơn vị cho nó:
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
Chúng tôi cần Xdotool để chạy firefox ngay lập tức ở chế độ toàn màn hình.
Sử dụng tham số -url
bạn có thể chỉ định bất kỳ trang nào để nó tự động mở khi trình duyệt khởi động.
Ở giai đoạn này, ki-ốt của chúng tôi đã sẵn sàng, nhưng bây giờ chúng tôi cần xuất hình ảnh qua mạng sang các màn hình và thiết bị khác. Để làm điều này, chúng tôi sẽ sử dụng các khả năng
Đối với điều này, chúng ta cần hai điều:
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
Vì hình ảnh của chúng tôi không yêu cầu cập nhật nhanh nên tôi đã chỉ định tốc độ làm mới: 1 khung hình mỗi giây (tham số -r 1
) và chất lượng nén: 5 (tham số -q:v 5
)
Bây giờ chúng ta hãy cố gắng đi đến
Phía khách hàng
Ở đây vẫn dễ dàng hơn, như tôi đã nói, chúng tôi sẽ sử dụng Raspberry Pi Model B+.
Trước hết, hãy cài đặt trên nó
Chúng tôi cũng sẽ cần phân bổ thêm bộ nhớ cho chip video của mình, vì điều này chúng tôi sẽ chỉnh sửa trong /boot/config.txt
gpu_mem=128
Hãy khởi động hệ thống mới của chúng ta và đừng quên khởi tạo keyring pacman, cài đặt
pacman -Sy omxplayer
Đáng chú ý, OMXPlayer có thể hoạt động mà không cần X, vì vậy tất cả những gì chúng ta cần là viết một tệp đơn vị cho nó và chạy:
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
Là một tham số -b http://your-vm:8080/
chúng tôi đang chuyển url từ máy chủ của chúng tôi.
Đó là tất cả, hình ảnh từ máy chủ của chúng tôi sẽ ngay lập tức xuất hiện trên màn hình được kết nối. Trong trường hợp có bất kỳ sự cố nào, luồng sẽ tự động khởi động lại và khách hàng sẽ kết nối lại với luồng đó.
Như một phần thưởng, bạn có thể cài đặt hình ảnh kết quả làm trình bảo vệ màn hình trên tất cả các máy tính trong văn phòng. Đối với điều này, bạn sẽ cần
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
Bây giờ đồng nghiệp của bạn sẽ rất hạnh phúc 🙂
Nguồn: www.habr.com