ฉันจำเป็นต้องแสดงแดชบอร์ดพร้อมการตรวจสอบหลายหน้าจอในสำนักงาน มี Raspberry Pi Model B + รุ่นเก่าหลายตัวและไฮเปอร์ไวเซอร์ที่มีทรัพยากรเกือบไม่จำกัดจำนวน
เห็นได้ชัดว่า Raspberry Pi Model B+ ไม่มีการสุ่มเพียงพอที่จะทำให้เบราว์เซอร์ทำงานอย่างต่อเนื่องและแสดงผลกราฟิกจำนวนมากในนั้น เนื่องจากสิ่งนี้เกิดขึ้นที่หน้าบางส่วนมีบั๊กและมักจะหยุดทำงาน
มีวิธีแก้ปัญหาที่ค่อนข้างเรียบง่ายและสวยงาม ซึ่งฉันต้องการแบ่งปันกับคุณ
อย่างที่คุณทราบ ราสเบอร์รี่ทั้งหมดมีตัวประมวลผลวิดีโอที่ทรงพลังพอสมควร ซึ่งเหมาะสำหรับการถอดรหัสวิดีโอด้วยฮาร์ดแวร์ ดังนั้นจึงเกิดแนวคิดที่จะเปิดตัวเบราว์เซอร์ที่มีแดชบอร์ดที่อื่น และถ่ายโอนสตรีมสำเร็จรูปพร้อมรูปภาพที่เรนเดอร์ไปยังราสเบอร์รี่
นอกจากนี้ ควรทำให้การจัดการง่ายขึ้น เนื่องจากในกรณีนี้ การกำหนดค่าทั้งหมดจะดำเนินการในเครื่องเสมือนเครื่องเดียว ซึ่งง่ายต่อการอัปเดตและสำรองข้อมูล
ไม่พูดเร็วกว่าทำ
ส่วนเซิร์ฟเวอร์
เราใช้พร้อม
เราปรับใช้เครื่องเสมือนใหม่และก่อนอื่นติดตั้งบนเครื่อง
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
เราจะใช้การกำหนดค่าสำหรับ Xorg ด้วย
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
คุณสามารถระบุหน้าใดก็ได้เพื่อให้เปิดโดยอัตโนมัติเมื่อเบราว์เซอร์เริ่มทำงาน
ในขั้นตอนนี้ คีออสก์ของเราพร้อมแล้ว แต่ตอนนี้เราต้องส่งออกรูปภาพผ่านเครือข่ายไปยังจอภาพและอุปกรณ์อื่นๆ ในการทำเช่นนี้เราจะใช้ความเป็นไปได้
สำหรับสิ่งนี้เราต้องการสองสิ่ง:
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
)
ทีนี้มาลองไปที่
ด้านลูกค้า
มันง่ายกว่าที่นี่อย่างที่ฉันพูดเราจะใช้ Raspberry Pi Model B +
ก่อนอื่นมาติดตั้งกันก่อน
เราจะต้องจัดสรรหน่วยความจำเพิ่มเติมสำหรับชิปวิดีโอของเราด้วย เพื่อสิ่งนี้เราจะแก้ไข /boot/config.txt
gpu_mem=128
มาบูตระบบใหม่ของเราและอย่าลืมเริ่มต้นพวงกุญแจ pacman ติดตั้ง
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 จากเซิร์ฟเวอร์ของเรา
เพียงเท่านี้รูปภาพจากเซิร์ฟเวอร์ของเราควรปรากฏบนหน้าจอที่เชื่อมต่อทันที ในกรณีที่เกิดปัญหาใดๆ สตรีมจะเริ่มต้นใหม่โดยอัตโนมัติและไคลเอ็นต์จะเชื่อมต่อกับสตรีมอีกครั้ง
เป็นโบนัส คุณสามารถติดตั้งภาพที่ได้เป็นภาพพักหน้าจอบนคอมพิวเตอร์ทุกเครื่องในสำนักงาน สำหรับสิ่งนี้คุณจะต้อง
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