如果您想利用树莓派构建一个家庭安全系统,那么您需要安装合适的软件来控制摄像头。据我所知,有些朋友对这类项目很感兴趣,于是我寻找了一个解决方案,发现ZoneMinder非常适合。不过,安装过程并不那么简单,所以我会在此做详细介绍。
ZoneMinder软件包在树莓派系统的默认软件源中即可找到,因此可以使用apt命令进行安装。但它依赖众多其他软件,您还需要单独安装并配置Apache、MySQL以及摄像头。
在简要介绍项目后,我将向您展示如何在树莓派上安装服务器部分,以及如何在网页界面中配置摄像头(及其他设备)。
ZoneMinder是什么?
如前所述,ZoneMinder是一款开源的CCTV解决方案。
因此,您通常可以将其用于家庭安全、婴儿监控或许多其他需要摄像头的任务。
它是一款完全免费的解决方案,您可以将其安装在您的系统上。因此,您可以掌控自己的数据并节省费用。这是它与其他通常需要基于云的订阅服务的解决方案的主要区别。
主要特点
网页界面:易于从任何设备(兼容移动设备)访问,并且您可以通过端口转发或VPN服务器从外部网络访问它。
智能手机应用:也有智能手机应用可用(我认为它们不是免费的,我没有测试过)。
兼容任何USB或IP摄像头:我稍后会介绍树莓派摄像头模块,但市场上的任何IP摄像头都可以与ZoneMinder配合使用。
第三方集成:有许多插件可用于与ZoneMinder进行交互。官方Wiki上有详细列表。
https://wiki.zoneminder.com/Utilities
与树莓派的兼容性
ZoneMinder并非专为树莓派开发,但其源代码可用,且默认软件源中包含软件包,因此在兼容性方面没有问题。
正如我在本文末尾所解释的,您可能可以直接在ZoneMinder中使用摄像头模块,但我未能迅速找到解决方案,因此我在本文中提供了变通方法。
此外,您手头上的任何带有USB端口的旧网络摄像头都可以轻松地通过树莓派改造为网络摄像头。
在树莓派上安装ZoneMinder
ZoneMinder在树莓派的软件源中即可找到,因此我们预期安装过程会很简单,对吧?其实不然,ZoneMinder需要一个Web服务器和一个数据库服务器,您需要在使用前安装并配置它们。软件包包含客户端,但服务器需要单独设置。
让我们看看如何安装所有内容!
先决条件
开始此项目,您不需要太多东西,但以下是我用于实验的设备:
树莓派4和树莓派3B+:我将使用两个摄像头连接到树莓派。树莓派4将托管ZoneMinder服务。
两个摄像头模块:我有一个官方摄像头模块和一个夜视摄像头模块:
树莓派摄像头模块
树莓派摄像头日夜两用版
树莓派系统:我使用的是树莓派系统桌面版,但如果您通过SSH和Web进行所有操作,精简版也可以。
如需,请查看我的树莓派系统安装教程。
https://raspberrytips.com/install-raspbian-raspberry-pi/
此外,我认为如果项目需要持续运行,触摸屏显示器将是一个很好的附加设备。例如,官方触摸屏显示器和屏幕外壳非常适合放在桌面或书架上。
安装Apache和MariaDB
我们将从安装服务器开始。
对于Web服务器,您可以安装Apache或Nginx。我选择使用我更为熟悉的Apache,因此我将向您展示如何操作。
https://raspberrytips.com/web-server-setup-on-raspberry-pi/
https://raspberrytips.com/nginx-on-raspberry-pi/
至于MySQL服务器,现在在Debian和树莓派系统上它被称为MariaDB。
安装以下软件包:
sudo?apt updatesudo apt upgradesudo apt install apache2 mariadb-server apt-transport-https
当提示时,按“Y”确认安装。
就这样,现在我们需要配置它们。
MySQL配置
在本节中,我们将配置数据库。过去,这是MySQL,但现在它已更名为MariaDB。不过,所有旧命令仍然以相同方式工作。
创建MariaDB用户
默认情况下,在MariaDB上,root用户无需密码即可连接。
但为了正确操作,我们将为ZoneMinder创建一个新的特定用户名:
使用root连接:
sudo?mysql
为ZoneMinder创建一个新数据库。我建议将其命名为“zm”,因为我们稍后要运行的脚本也使用此名称
CREATE?DATABASE zm;
然后,为ZoneMinder创建一个新用户:
CREATE?USER?'zoneminder'@'localhost'?IDENTIFIED?BY?'password';
不要忘记在此命令中更改密码。
为该用户添加对ZoneMinder数据库的所有权限:
GRANT?ALL PRIVILEGES ON?zm.*?TO?'zoneminder'@'localhost';
我认为并非所有权限都是必需的,但这将有助于使安装过程更顺畅。
最后,只需使用以下命令重新加载权限:
FLUSH?PRIVILEGES;
退出:
exit
就这样,您的数据库用户已创建,数据库已准备好使用。
如果您愿意,可以使用以下命令测试连接:
sudo mysql -uzoneminder -p
编辑ZoneMinder配置
现在,我们可以在ZoneMinder配置中添加此用户:
使用APT安装ZoneMinder:
sudo?apt install zoneminder
它将自动添加所有必需的依赖项。
使用Nano打开ZoneMinder配置文件:
sudo nano /etc/zm/zm.conf
查找并编辑以下行:
#ZoneMinder database type: so far only mysql is supportedZM_DB_TYPE=mysql#ZoneMinder database hostname or ip address and optionally port or unix socket#Acceptable formats include hostname[:port], ip_address[:port], or localhost:unix_socketZM_DB_HOST=localhost#ZoneMinder database nameZM_DB_NAME=zm#ZoneMinder database userZM_DB_USER=zoneminder#ZoneMinder database passwordZM_DB_PASS=<yourpassword>
理论上,您可能只需要更改数据库用户和数据库密码以匹配您之前设置的内容。
此外,您需要修复配置文件的权限,以便Web服务器可以访问:
sudo?chgrp?-c www-data /etc/zm/zm.conf
初始化ZoneMinder数据库
数据库的最后一步是创建ZoneMinder的表:
sudo mysql -uzoneminder -p<yourpassword> zm <?/usr/share/zoneminder/db/zm_create.sql
现在,MySQL部分应该已经完成了。
Apache配置
接下来是Apache配置,这要简单得多
为Apache启用ZoneMinder配置
sudo?a2enconf zoneminder
启用CGI模块
sudo?a2enmod cgi
重新加载Apache
sudo?systemctl restart apache2
我们几乎完成了。我稍后会给您一个快速修复方法,但Apache已经准备好了!
ZoneMinder服务
您现在应该能够启动ZoneMinder服务了:
启用服务以在启动时加载:
sudo systemctl?enable?zoneminder
现在启动它:
sudo?systemctl start zoneminder
重新启动ZoneMinder以重新加载任何剩余的配置:
sudo?systemctl restart zoneminder
检查当前状态:
sudo?systemctl status zoneminder
如果一切配置正确,它应该已启用。
如果没有,则在此处显示错误。
时区配置
如果您未在树莓派和PHP配置中正确设置时区,则将无法访问ZoneMinder界面。
我第一次尝试时遇到了此错误:
ZoneMinder?is?not installed properly: php's date.timezone?is?not?set?to a valid timezone
以下是如何修复它:
运行raspi-config以根据需要修复系统时区:
sudo?raspi-config
然后进入Localisation Options > Timezone
选择正确的时区,并记住它以备下一步使用
退出raspi-config
然后,您可以在PHP配置中添加它:
打开Apache的PHP配置:
sudo nano /etc/php/8.2/apache2/php.ini
根据您拥有的PHP版本,路径可能有所不同。
查找此行:
;date.timezone =
并取消注释以匹配您的时区,例如:
date.timezone?= Europe/Paris
使用您之前在raspi-config中找到的相同措辞。
不要忘记删除开头的“;”。
重新启动Apache以应用更改:
sudo?systemctl restart apache2
现在应该没问题了。无论如何,它为我解决了这个问题。
检查HTTP访问
最后,应该可以通过其Web界面访问ZoneMinder。
URL应该类似于这样:
http://<PI-IP-ADDRESS>/zm/
您首先应该看到的是ZoneMinder隐私政策,如果您愿意,可以拒绝以继续。
太好了!现在我们可以进入下一部分,并在界面中添加您的摄像头。
在继续之前,我想为您提供一些关于安装部分的额外信息。
ZoneMinder有相当完善的文档,您可以在此处找到。
https://zoneminder.readthedocs.io/en/stable/index.html
没有专门针对树莓派系统的内容,但Debian教程几乎相同。
此外,如果您感兴趣,此文档中提供了Docker镜像。
https://zoneminder.readthedocs.io/en/stable/installationguide/packpack.html
我自己没有尝试过,但以下是使用Docker的安装指南链接。
向ZoneMinder添加摄像头
好的,ZoneMinder已经安装好了,很酷。但是界面中还没有任何摄像头
让我们看看它是如何工作的,我们将在下一部分中添加一些摄像头。
介绍
ZoneMinder似乎无法在本地处理树莓派摄像头(或者至少我未能让其工作,可能存在变通方法)。
因此,您至少有两个选项来添加新摄像头:
使用您的树莓派摄像头模块创建网络流并在配置中使用它
使用市场上的IP摄像头。我知道Nest有相当不错的产品,但您真的可以使用任何IP摄像头(基本摄像头要便宜得多)。
在我的示例中,我将向您展示如何使用树莓派摄像头进行操作,但使用经典IP摄像头甚至更简单。
在ZoneMinder控制台中
在安装摄像头之前,以下是界面如何工作。
现在,当您访问Web界面时,其中没有任何内容。
您需要至少添加一个摄像头。
您可以点击ADD按钮进行此操作,然后会出现一个表单,其中包含您可以为该摄像头配置的所有选项。
ZoneMinder将摄像头称为监视器,您可以配置许多内容,如:
常规:监视器名称、服务器、存储组、源类型等。
源:根据源类型,路径或URL、图像大小和方向等。
存储:您希望以何种格式保存文件。
时间戳:时间戳格式和在图片上的位置。
缓冲区:流定制。
杂项:记录事件时的操作。
为ZoneMinder配置树莓派摄像头模块
现在,我将向您展示如何安装树莓派摄像头模块,并将其添加到ZoneMinder中。
如果您有IP摄像头,可以直接跳到最后一步。
安装摄像头
首先,如果尚未连接,请将摄像头连接到树莓派,连接器位于HDMI或Micro-HDMI端口附近:
然后,您需要在raspi-config中启用接口:
sudo?raspi-config
转到“Interfacing options” > “Camera”并启用它。
退出raspi-config并重新启动树莓派。
重新启动后,您可以使用以下命令检查摄像头是否正常工作:
libcamera-still -o image.jpg
在当前文件夹中会创建一个文件,您可以打开它以检查一切是否正常(在桌面版上,图像会显示在屏幕上)。
如果您在此方面遇到任何问题,请查看我的树莓派摄像头安装教程,这不是本文的重点。
https://raspberrytips.com/install-camera-raspberry-pi/
安装Motion
下一步是安装Motion。Motion是一种您可以在树莓派上运行的服务,用于使用树莓派摄像头模块创建网络流。
这正是我们为ZoneMinder所需要的,而且并不复杂,因此我的策略是为摄像头创建两个网络流:
安装Motion:
sudo?apt -y install motion libcamera-v4l2 libavcodec-dev libavformat-dev libavutil-dev libjpeg-dev libjpeg62-turbo-dev libpq-dev libswresample-dev
启用摄像头驱动程序:
sudo?modprobe bcm2835-v4l2
获取摄像头信息:
v4l2-ctl -V
这可能有助于配置ZoneMinder。
编辑默认Motion配置:
sudo nano /etc/motion/motion.conf
找到以下行:
stream_localhost?on
并将其更改为:
stream_localhost?off
(这样您就可以从计算机访问该流)
您可以根据硬件能力自由更改其他参数,如宽度和高度。
保存并退出(CTRL+X)
启动motion:
sudo?libcamerify motion
如果您希望它一直运行,可以在screen中启动它或在启动时启动它。
screen的使用方法在此处说明,此教程向您展示了如何在启动时启动程序。
https://raspberrytips.com/raspberry-pi-commands/#Misc
https://raspberrytips.com/autostart-a-program-on-boot/
检查视频流
一旦Motion运行,只需在Web浏览器中直接检查摄像头是否可访问。
默认情况下,它应该是类似于以下的内容:
http://<RASPBERRYPI_IP>:8081
如果一切正常,请转到下一步。
如果不正常,您可以停止motion(使用CTRL+C)并编辑配置以修复错误。
在ZoneMinder上添加摄像头
现在视频流已可用,您可以返回ZoneMinder并添加监视器:
打开Web界面:
http://<PI-IP-ADDRESS>/zm/
点击“Add”按钮
您唯一需要更改的是源选项卡。
选择HTTP Tunnel作为源类型,并在URL中填写视频流地址。
在配置中更改您想要的任何内容并保存。
例如,我的一个摄像头是翻转的,因此我在源选项卡的Orientation中选择了“Inverted”。
就这样,几秒钟后,您的摄像头应该以“Capturing”模式出现在列表中。
如果您在主菜单中点击“Montage”,您可以像在电影中的安全控制室一样全面查看摄像头图像。
连接过多
在屏幕上停留大约10-15分钟后,我遇到了类似以下的错误:
Unable?to?connect?to?ZM db.SQLSTATE[HY000]?[1040]?Too many connections
我不知道确切原因,可能是我的配置有问题(100个同时连接对于两个摄像头来说太高了!)。
但我通过增加MySQL中的最大连接数解决了这个问题:
打开MariaDB服务器的配置文件:
sudo nano?/etc/mysql/mariadb.conf.d/50-server.cnf
找到以下行:
max_connections?=?100
替换为:
max_connections?=?1000
如果行首有#,请删除它
保存并退出(CTRL+O, CTRL+X)
重新启动MariaDB:
sudo?service mariadb restart
刷新ZoneMinder页面,现在应该没问题了。
干得好,我认为这是一个不太简单的教程,但如果您能坚持到这里,那就是成功了。您做出了正确的选择,掌控自己的数据并了解系统的工作原理在当今是至关重要的。此安装结合了我在网站上已经探讨过的一些概念,因此如果您需要更多信息,请随时查看以下相关帖子:
如何在树莓派上安装摄像头
https://raspberrytips.com/install-camera-raspberry-pi/
如何在树莓派上安装Web服务器
https://raspberrytips.com/web-server-setup-on-raspberry-pi/
在树莓派上安装MariaDB
https://raspberrytips.com/install-mariadb-raspberry-pi/
如何将Pi摄像头模块用作Skype网络摄像头(现在几乎一切都可以使用了)
https://raspberrytips.com/raspberry-pi-camera-as-webcam/
如果觉得我们的内容不错,记得点赞+收藏+关注+转发~ 我们很乐意为您提供工业树莓派的解决方案,项目有需求请联系我们~?www.edatec.cn/zh
原文地址:
https://raspberrytips.com/install-zoneminder-raspberry-pi/
官方网站:https://edatec.cn/zh/cm0
淘宝网站:https://edatec.taobao.com/
583