树莓派做的远程服务器监控
放在学校的台式机突然就连不上了,救是没法救了,刚好手头有一个在做软路由的树莓派,拿来开个刀试着做一个服务器监控/控制设备用。用到的工具主要有:树莓派4B,USB-HDMI采集卡,串口转USB-HID模块。具体工程见文末。
当然市场上有类似的东西:向日葵控控a2,如果有钱直接买那肯定是最佳解决方案。而且如果对性能要求不高的话,可以试试玩玩FriendlyElec的ZeroPi,千兆口+USB2.0+串口,刚刚好不多不少。
搭架构
树莓派连接网络做处理,装上raspbian之后,只需要实现远程连接、音视频采集和控制输出就行。网络用板载2.4GWiFi连接就行,如果有需求也可以通过4G/5G联网。
远程连接
一方面是实时操控,写轮子是不可能自己写的,这辈子都不可能自己写轮子。刚好常用的TeamViewer有Raspbian直接可用的Host端,问题解决了。另外Anydesk也有树莓派的Host端,可以作备选。
另一方面是常备监控,用直播推流就行,需要看的时候连上直播间看一眼,找了一圈刚好腾讯云有直播推流服务,在树莓派端抓取视频然后推流就行,还有20GB赠送流量。同样的不可能自己造轮子,找了一圈,开源的Obs Studio刚刚好。
obs编译安装好就可以推流了。由于性能和内存限制,如果要整清晰的,可能需要更多swap空间。但是我为了节省流量设定推流码率256kbps,帧率8FPS,好像没什么压力。
另外要注意的是在Pi4b上的Raspbian Buster调用OpenGL的时候似乎会尝试Version 1.4,然后就会报错。解决方法是强制Version 3.3运行,可以写个脚本做快速启动。如果想要obs推流高清一点,建议用4g内存版本的树莓派并再开个4g的swap。
1 | #! /bin/bash |
音视频采集
掏出万能的淘宝闲鱼拼多多,找最便宜的HDMI-USB采集卡,咸鱼62包邮还加一条1.5M的HDMI线,还要什么自行车!垃圾佬走起!虽然上手质量不怎么样,实测输出由于USB2.0的带宽瓶颈,最多720p,30fps,颜色也有很大损失,不过能用就行。
控制
既然要远程控制的话,用obs就不太好用了。用python写一个简单的抓取视频流+映射鼠标键盘的功能不难,这里用串口连接到CH9329(频率不高,瞎画能连起来就行),插进电脑直接识别USB-HID设备。采集卡的视频用opencv-python取出来,用pygame写的gui放出来。在pygame里面通过键盘和鼠标相关事件控制CH9329实现键鼠的映射。最终效果,中规中矩。
实际测试
等开学,现在只能祈祷台式机别被老鼠糟蹋了。
[202006更新]原来电脑跪了的原因是便宜货内存走的时候设定了超频忘记降下来了。
书签
Obs安装方法出处
OBS Raspberry Pi Build Instructions
graphics driver problem
pygame相关资料
pygame documentation
Event loop tutorial
HID转串口的片子
CH9329
代码的Github仓库
RaspberryPiRemoteControl