家庭视频监控。Zoneminder和Debian 8的实现

引言


大家好

有了运行Debian 8的家庭NAS(我曾经使用过Ubuntu Server 12.04和14.04),就想到了将其分配给监视服务器的角色。选择Zoneminder作为服务器部分。视频监视的算法应如下:不需要全天候录制,但是如果需要,需要具有在事件发生时启用录制的功能-触发移动,然后通过电子邮件发送通知并附带事件的屏幕截图。这是确保有人不在时控制公寓的必要条件。好吧,当然,您需要能够远程连接并检查是否一切正常。

在开发人员的网站上,我找到了最详细的专门用于在Debian 8 64位上安装的Wiki因此,我将从那里获取安装说明,并在评论中解释一些要点。

安装Zoneminder


因此,我们有一台以最低配置安装了Debian 8 64位的服务器(我使用了netinstall)。首先,您需要编辑sources.list,并向其中添加Jessie backports:

sudo nano /etc/apt/sources.list

在文件末尾,添加:

deb http://http.debian.net/debian jessie-backports main

或取消注释此行(如果已存在),即删除该行开头的#。更新包索引:

sudo apt-get update

现在一切准备就绪,可以安装Zoneminder,我们将这样做:

sudo apt-get install zoneminder

在安装过程中,还将自动安装Apache,MySQL,PHP。
安装完成后,创建MySQL数据库:

sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

在创建数据库的过程中,将提示您选择root密码。接下来,依次(通过sudo)执行以下命令,并在请求时输入密码:

mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"

mysqladmin -uroot -p reload

chmod 740 /etc/zm/zm.conf

chown root:www-data /etc/zm/zm.conf

打开Zoneminder自动运行:
systemctl enable zoneminder.service

我们将www-data用户添加到sudo组,这对于访问本地摄像机是必需的:

adduser www-data sudo

启动Zoneminder:
systemctl start zoneminder.service

检查Zoneminder是否正在运行:
systemctl status zoneminder.service

如果一切正常,命令的输出应如下所示:

● zoneminder.service - ZoneMinder CCTV recording and surveillance system
   Loaded: loaded (/lib/systemd/system/zoneminder.service; enabled)
   Active: active (running) since  2016-07-10 18:48:30 IRKT; 5h 31min ago
  Process: 6413 ExecStop=/usr/bin/zmpkg.pl stop (code=exited, status=0/SUCCESS)
  Process: 6455 ExecStart=/usr/bin/zmpkg.pl start (code=exited, status=0/SUCCESS)
 Main PID: 6474 (zmdc.pl)
   CGroup: /system.slice/zoneminder.service
           ├─6474 /usr/bin/perl -wT /usr/bin/zmdc.pl startup
           ├─6507 /usr/bin/perl -wT /usr/bin/zmfilter.pl
           ├─6514 /usr/bin/perl -wT /usr/bin/zmaudit.pl -c
           └─6521 /usr/bin/perl -wT /usr/bin/zmwatch.pl

配置Apache:
a2enmod cgi

a2enmod rewrite

a2enconf zoneminder

在PHP中添加您的时区:
sudo nano /etc/php5/apache2/php.ini

我们正在寻找[Date]部分,并将date.timezone更改为所需的日期:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Irkutsk

保存-Ctrl + O,退出-Ctrl +X。
重新启动Apache:
service apache2 restart

为了能够通过Internet Explorer控制Zoneminder,您需要安装Cambozola:

cd /usr/src && wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz

tar -xzvf cambozola-latest.tar.gz

replace 936 with cambozola version downloaded

cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder

这样就完成了Zoneminder的安装。现在,您需要配置邮件传输,以便Zoneminder可以通过电子邮件通知您事件。

设置邮件传输


要发送通知,Zoneminder可以使用ssmtp并进行安装:

sudo apt-get update

sudo apt-get install ssmtp

如果尚未安装此软件包,请同时安装mailutils:
sudo apt-get install mailutils

现在,代表要发送的通知配置邮件设置。假设邮箱位于gmail.com。打开ssmtp.conf:
sudo nano /etc/ssmtp/ssmtp.conf

并带到此表格,相应地指出您的数据:
root=mymail@gmail.com
mailhub=smtp.gmail.com:587
hostname=localhost
RewriteDomain=gmail.com
UseSTARTTLS=YES
UseTLS=YES
AuthUser=mymail@gmail.com
AuthPass=myverystrongpassword

正确的重新命名:
sudo nano /etc/ssmtp/revaliases

我们将其转换为以下形式:
root:pp@gmail.com:smtp.gmail.com:587
www-data:pp@gmail.com:smtp.gmail.com:587

我们通过发送测试信来检查设置的正确性:
echo "Hello, World" | mail -s "My email check" mne@napochtu.ru

如果测试成功,请继续下一步-安装MIME :: Lite和Net :: SMTP。检查是否安装了以下组件:
perl -MMIME::Lite -e "print \"Module installed.\\n\";"

perl -MNet::SMTP -e "print \"Module installed.\\n\";"

通过进入perl shell进行安装:
sudo perl -MCPAN -e shell

install MIME::Lite
install Net::SMTP


现在,我们需要进行一些非常重要的更改,否则,从Zoneminder进行的邮件传输将无法进行。请注意,仅当已安装的Zoneminder版本为1.29或更低时,才应进行这些更改。从1.30版开始,无需执行这些操作。

在编辑器中打开zmfilter.pl文件:

sudo nano /usr/bin/zmfilter.pl

转到第1179行,我们看到以下内容:
### Send the Message
MIME::Lite->send( "smtp", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
$mail->send();

注释掉线条
MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
$mail->send();

并在它们下面添加一条线
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

结果,从第1179行开始(对于我而言,但不完全是此行号),代码应如下所示:
### Send the Message
#MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
#$mail->send();
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

保存,退出。这样就完成了终端的工作。

Zoneminder Web界面


可以在ip.adress.servera / zm上进行管理。首先要做的是转到选项->用户,并设置管理员密码:



然后转到选项->系统并选中复选框OPT_USE_AUTH:



如果未完成,则Zoneminder允许您转到Web界面或通过客户端应用程序而不提示您输入登录名/密码,这当然是不安全的。奇怪的是,默认情况下未选中此非常必要的复选标记。

现在配置发送电子邮件。转到Optons->电子邮件并按类推进行配置:



在EMAIL_BODY字段中,您可以根据需要配置通知的格式。例如,如果将%EI1%添加到该字段,则从触发运动传感器那一刻起的第一个屏幕截图将附加到消息中。此处提供了通知选项的完整列表

添加相机


Zoneminder可以与USB和IP摄像机一起使用。目前,我的相机仍在使用中,因此,作为相机的临时测试版本,我使用旧的Alcatel Pop C2 Android智能手机,该智能手机安装了IP Webcam应用程序,可将智能手机变成Wi-Fi IP相机。安装并运行该应用程序后(首先,我建议在应用程序设置中设置视频流分辨率,我将其设置为800x480),智能手机将显示IP和端口,您可以通过其访问Web界面并在此处查看有趣的地方:



通常,有很多设置,但是我们对视频流的地址感兴趣。而且我们看到了配置Zoneminder的信息,这是个好消息。即,指示远程主机路径,该路径将需要在Zoneminder设置中输入-在需要添加/视频的IP摄像机之后:



返回Zoneminder Web界面以添加摄像机,选择“添加新监视器”:



在“名称”字段中,输入所需的名称,来源类型->远程:



在“源”选项卡中,填写以下字段:远程主机名->智能手机的IP,远程主机端口->运行IP Webcam的端口,远程主机路径->我们在IP Webcam设置中看到的路径,并指出视频流分辨率,应与我们之前在IP网络摄像头设置中选择的分辨率匹配:



我们保存设置->保存,然后在Zoneminder主菜单中看到添加的摄像机:



通过单击查看图像的名称:



摄像机可以在多种模式下操作,这由主菜单中的Function参数决定:



仅执行记录的模式在称为Modect的帧中移动,然后选择它。现在,只有在有充分理由的情况下,系统才会连续记录视频流。但是我们仍然需要通知框架中的运动。为此,您需要配置过滤器。在Zoneminder主菜单中打开“过滤器”,根据屏幕截图进行配置,将其保存为任何名称:



并且不要忘记选中“在后台运行过滤器”旁边的框:



因此,如果在帧中检测到运动,则系统将记录视频并向邮件发送通知。

客户申请


如果有永久IP,则不会阻止您转发路由器中的端口并通过Web界面从外部从智能手机进行连接,尤其是因为您可以在Zoneminder设置中选择接口的移动版本,但是除此之外,我决定为此寻找一些移动应用程序目标。在Google Play上搜索关键字“ zoneminder”后,我选择了zmNinja,因为评分很高,我喜欢屏幕截图。申请已付费,用于初步评估的试用版,a。该功能已绰绰有余-实时查看视频流,查看存档,记录的事件,切换摄像头模式等。











也有桌面版本适用于Linux,Windows和Mac OS X的zmNinja-免费分发。这就是我的Mint 18上运行的Linux版本的样子:



通常,所有系统的界面都是相同的。

就这样,谢谢您的关注。

Source: https://habr.com/ru/post/zh-CN396099/


All Articles