使用Raspberry Pi和motionEyeOS创建多摄像机CCTV系统

尽管市场上有无数的商用CCTV家庭安全系统,但使用Raspberry Pi(或其他单板计算机)将自己的DIY版本构建为DIY版本,具有可定制性的优点,可以满足您的确切目的。

名为motionEyeOS的特殊Linux发行版使使用一个或多个摄像机轻松设置安全系统成为可能。然后,它可以从摄像机视图检测运动,并通过电子邮件或推送通知发送警报。我们将向您展示如何启动和运行所有内容。

设置CCTV系统所需的条件

  • Raspberry Pi:任何模型都可以使用,包括Pi Zero和Compute Module
  • USB网络摄像头,Raspberry Pi摄像头模块或高质量摄像头模块

相关: Raspberry Pi,Pico,Arduino和其他单板计算机和微控制器

1.安装motionEyeOS

motionEyeOS不是一个应用程序,而是一个独立的操作系统,是许多Raspberry Pi OS之一。首先,您需要为Raspberry Pi模型找到正确的版本。转到支持的设备列表,然后单击最新版本的主板以将磁盘映像下载为.xz文件。

在Raspberry Pi上安装motionEyeOS的主要方法有两种。 motionEyeOS网站为Linux和macOS计算机提供了一个图像写入实用程序,可将磁盘图像写入microSD卡以在Raspberry Pi中使用。这提供了无线网络连接的可选设置以及设置静态IP地址。有关更多详细信息,请参见安装指南

第二种方法(我们将在这里使用,因为它也适用于Windows机器)是使用可从Raspberry Pi网站下载的标准Raspberry Pi Imager工具写入磁盘映像。

使用内置的读卡器或USB适配器,插入microSD卡以将其安装在计算机上,然后打开Raspberry Pi Imager。单击“选择操作系统”,然后滚动到列表底部以选择“使用自定义”

浏览到先前下载的motionEyeOS.xz文件。现在,单击“选择SD卡”,然后选择插入的microSD卡,可能称为“通用存储设备介质”。

最后,点击Write写入图像到卡上。

2.预先配置您的无线连接

在Raspberry Pi中使用microSD卡之前,您将需要预配置无线网络凭据。

打开纯文本编辑器(例如,macOS上的“文本编辑器”或Windows上的“记事本”),然后输入以下几行,用您自己的无线路由器的SSID(名称)和密码替换ssidpsk值。您还应该将国家/地区代码更改为设备将在其中运行的国家/地区代码

 country=US
update_config=1
ctrl_interface=/var/run/wpa_supplicant

network={
scan_ssid=1
ssid="MyWiFiSSID"
psk="MyWiFiPassword"
}

将文件另存为wpa_supplicant.conf保存到microSD卡的根目录中,在该根目录中,您还将看到其他文件,例如bootcode.binkernel.img 。如果文件以.txt后缀保存,请删除该后缀,以便将其命名为wpa_supplicant.conf

3.相机设置

如果您使用的是Raspberry Pi相机模块或高质量相机,请将其连接到Raspberry Pi的相机端口。如果使用网络摄像头,请连接到Raspberry Pi上的USB端口。

将microSD卡插入Raspberry Pi中并打开电源。如果连接到监视器,您将看到正在运行的命令列表。成功读取您的wpa_supplicant.conf文件后,它将连接到您的网络并在Interface wlan0具有IP地址后显示Raspberry Pi的IP地址。

或者,如果您的Raspberry Pi未连接到显示器,则可以始终通过在另一台设备上的Web浏览器中访问无线路由器的设置页面并查找名称以meye-开头的设备来找到IP地址。

4.访问Web界面

在另一台计算机或设备上的Web浏览器中,输入Raspberry Pi的IP地址,您应该会看到一个登录屏幕。只需输入admin作为用户名即可,无需输入密码。

如果您连接了Raspberry Pi摄像头模块或高质量摄像头,则应自动检测到它,并且您会在Web界面中从中看到摄像头视图。如果使用USB摄像机,请在出现的“添加摄像机”菜单中,选择“本地V4L2摄像机”作为“摄像机类型”,然后选择“ USB2.0摄像机:USB2.0摄像机”。

对于多摄像机设置,可以将多个摄像机连接到一个Raspberry Pi,尽管所使用的模型必须足够强大以处理所有流。

或者,您可以使用多个Raspberry Pi板,每个板都有一个摄像头,并指定另一个Raspberry Pi作为集线器来处理它们的流。如果要将摄像机放置在不同的房间中,这很有用。

还可以选择将常规Linux计算机用作中央服务器。

5.配置自定义设置

在Web界面中,单击左上角的三个垂直线图标以打开设置面板。如果使用单个摄像机,请在“首选项”菜单中将“布局列”选项更改为1,这样视图将填满整个屏幕。

通过“视频设备”菜单,可以更改当前所选摄像机的分辨率,旋转率和帧频。您还可以将摄像机重命名为描述性的名称,例如其所在的房间。更改任何菜单设置后,单击“应用”按钮以应用它们。

对于安全摄像机设置,您将需要从摄像机视图中检测运动。打开运动检测菜单,然后将其打开。其他选项使您可以设置检测运动所需的帧更改阈值。将其设置得太低可能会导致过多的误报。 “运动间隙”选项是触发后试图再次检测运动之前的延迟。

要查看从运动检测中捕获的电影,请单击实时摄像机视图,然后选择三角形播放按钮图标。还可以手动查看或通过将“静态图像”菜单中的“捕获模式”设置为“运动触发”来查看相机捕获静态图像

7.发送电子邮件通知

运动通知菜单使您可以在检测到运动时向自己发送电子邮件。开启后,输入您要将通知发送到的电子邮件地址。您将需要输入帐户的其他设置。

如果使用Gmail,请将SMTP服务器设置为smtp.gmail.com,将SMTP端口设置为587,并将SMTP帐户设置为电子邮件地址的第一部分(即,不带@ gmail.com)。 SMTP密码是您用来登录Gmail帐户的密码。发件人地址可以保留为空白或设置为自定义地址。将TLS设置为on。

在另一个浏览器标签中,访问您Google帐户的“安全性”菜单,然后将“不安全的应用程序访问权限”设置为“开” -收到安全警报后,请确认是您更改了它。请注意,这样做需要您自担风险。为此,我们建立了一个专用的新Gmail帐户。

现在,您应该能够从motionEyeOS发送测试电子邮件,而无需触发Google安全警报。请注意,如果使用多个摄像头,则需要分别为每个摄像头设置电子邮件通知。

要通过电子邮件通知接收图像,建议将“附加图片的时间跨度”选项设置为5到30。在“静止图像”菜单中,还需要将“捕获模式”设置为“运动触发”。

8.添加推送通知

您还可以使用运动通知”菜单中的“运行命令”选项发送推送通知。例如,要使用Pushover服务(提供适用于Android,iOS和台式机的应用程序),您需要创建一个简短的Python脚本以使其运行。

申请Pushover 。请记住,在3​​0天的免费试用期后,您需要一次性进行5美元的应用内购买才能继续使用。

之后,点击创建应用程序/ API令牌。记下为其指定的API令牌/密钥,以及仪表板上的用户密钥。

下载:适用于iOS的Pushover | Android (可免费试用)

使用Pushover网站上的样板代码,您可以创建Python脚本:

 import httplib, urllib
conn = httplib.HTTPSConnection("api.pushover.net:443")
conn.request("POST", "/1/messages.json",
urllib.urlencode({
"token": "abc123",
"user": "user123",
"title": "CCTV alert"
"message": "Motion detected on camera 1!",
"url": "http://IP.ADD.RE.SS",
"url_title": "View live stream",
}), { "Content-type": "application/x-www-form-urlencoded" })
conn.getresponse()

abc123替换为应用程序的API令牌,将user123替换为用户密钥。用您的motionEyeOS设置的IP地址替换IP.ADD.RE.SS。

要将其放置在您的motionEyeOS系统上,您需要通过输入以下内容使用终端应用程序(或Windows上的WinSCP)从另一台计算机上SSH:

 ssh [email protected]&IP_ADDRESS

用motionEyeOS系统的IP地址替换IP_ADDRESS 。现在输入:

 cd /data

现在,您在数据目录中,创建一个名为pushover.py的新文件:

 nano pushover.py

在其中粘贴或键入Python脚本,然后按Ctrl + X ,然后按Y进行保存。现在使用以下命令使其可执行:

 chmod +x pushover.py

或者,在Windows上的WinSCP中,按F9 ,将权限设置为0775,然后按OK

通过运行以下命令来测试脚本:

 python pushover.py

您应该从Pushover应用程序中的motionEyeOS收到带有声音警报的通知。

返回motionEyeOS Web界面“运动通知”菜单中,打开“运行命令”选项,然后在命令”字段中键入python /data/pushover.py ,以告诉它运行Python脚本。

单击“应用”按钮。请注意,您可以为设置中的每个摄像机应用不同的“运行A命令”脚本,因此您可以创建多个Python脚本,每个脚本都说明检测到哪个摄像机运动。

制作自己的DIY安全监控系统

恭喜,您现在已经使用Raspberry Pi建立了自己的可定制CCTV安全系统,并附带电子邮件和推送通知,以提醒您相机上检测到任何入侵者。