树莓派远程监控

技术文章请注意时效!原理才是根本。

motion使用

树莓派csi夜视摄像头

开始

执行raspi-config打开csi摄像头

执行raspistill -o test.jpg拍张照片测是摄像头是否可用

摄像头参数

帧速 30FPS 最高分辨率 2592*1944

motion安装配置

1.apt-get -y install motion #安装motion

2.motion中默认配置的设备是videodevice /dev/video0

执行motion命令后,会提示motion找不到divice

motion文档中 https://motion-project.github.io/motion_config.html 的方法

3.nano /etc/default/motion

4.nano /etc/motion/motion.conf

配置好的motion具有可以从网络查看录像,自动保存有运动物体的照片到文件夹,等功能

5.启动motion

flask web

先来看看页面

1.使用两个舵机组成云台控制摄像头。

RPi.GPIO库也能控制舵机,不过会有抖动,这是software pwm。需要hardware pwm。RPIO库利用 DMA 为 Raspberry Pi 实现 PWM,不再抖动。

RPIO.PWM provides PWM via DMA for the Raspberry Pi, using the onboard PWM module for semi-hardware pulse width modulation with a precision of up to 1µs. ​ With RPIO.PWM you can use any of the 15 DMA channels and any number of GPIOs per channel. Since the PWM is done via DMA, RPIO.PWM uses almost zero CPU resources and can generate stable pulses with a very high resolution. RPIO.PWM is implemented in C (source); you can use it in Python via the provided wrapper, as well as directly from your C source.

按照作者说明安装,回报错

需要安装https://github.com/metachris/RPIO/tree/v2

2.安装相关库

3.为了节省资源,没有安装数据库,把用户名和密码的hash信息放到了文件里。

4.uwsgi部署flask

pip3 install uwsgi #安装

uwsgi –socket 0.0.0.0:5000 –protocol=http -w run_manager:app #这样就能启动了

配置uwsgi服务

nano /etc/systemd/system/uwsgi.service

systemctl daemon-reload
systemctl disable uwsgi
systemctl enable uwsgi
systemctl restart uwsgi
systemctl status uwsgi

uwsgiconfig.ini

5.uwsgi线程阻止关机

谷歌了一下,没有找到解决办法,uwsgi的文档也不是很友好。只能hack的方法解决了,关机前把uwsgi结束任务。

touch /usr/local/bin/cleanup.sh
chmod a+x /usr/local/bin/cleanup.sh
nano /usr/local/bin/cleanup.sh

nano /lib/systemd/system/cleanup.service

systemctl disable cleanup
systemctl enable cleanup
systemctl restart cleanup
systemctl status cleanup

6.motion的监控页面通过iframe直接嵌入到自己的web界面中,不能改变大小,有cross domain的问题,所以使用flask代理motion监控页面,同时还省去了motion的密码配置,使用flask统一认证。

7.nginx代理flask web

frp内网穿透

服务器frps

1.安装frps

2.配置frps

nano frps.ini

3.打开相应端口

4.配置服务

nano /etc/systemd/system/frps.service

systemctl disable frps
systemctl enable frps
systemctl restart frps
systemctl status frps

树莓派frpc

1.安装frpc

2.配置frpc

3.配置服务

nano /etc/systemd/system/frpc.service

systemctl disable frpc
systemctl enable frpc
systemctl restart frpc
systemctl status frpc

服务器配置域名访问

配置好frp就可以外网访问了,只是通过服务器ip:端口这种形式访问,需要配置域名访问。

服务器nginx配置

跳转带不带端口号问题

这样访问域名就可以访问到树莓派上的flask web了,跳转的时候也没有问题。但是内网访问,内网ip:端口,跳转的时候就不带有端口了,这样就出问题了。

解决方法:树莓派上的nginx配置,需要带上端口号

这样内网跳转是带上端口号了,但通过域名外网访问也会带上端口号,又出错了。

所以,nginx需要判断是否是从外网访问的。

这样问题就完美解决了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注