树莓派制成的 — 带运动检测和摄像头的安防系统

news2024/9/20 16:53:21

自动布防/撤防、运动检测、带图片的移动通知

图片

项目所用物品

硬件组件

  • Raspberry Pi  1 Model A+ 一个:任何支持摄像头模块的 Raspberry Pi 均可

  • Raspberry Pi  摄像头模块一个 

  • USB WLAN/WiFi适配器一个:必须支持监控模式,推荐使用RT5370

  • Makerbeam(可选)一个:用于制作外壳

软件应用和在线服务

  • Raspberry Pi  Raspbian

  • Telegram Bot

项目简介

Raspberry Pi安防系统是一个简单的基于Raspberry Pi 的安防系统,具有以下功能:

  • 使用摄像头进行运动检测和拍照

  • 发送带照片的移动通知

  • 自动检测是否有人在家并自动布防或撤防

  • 可通过Telegram远程禁用或查询

类似产品:

  • https://www.kickstarter.com/projects/vivienmuller/ulo/

  • http://canary.is/

图片

所需条件

硬件需求

  • 带有摄像头接口的Raspberry Pi (我使用的是Model A+)

  • Raspberry Pi 摄像头模块

  • 支持监控模式的USB Wi-Fi适配器(我使用的是基于RT5370的适配器,价格约为6欧元,易于购买)

  • 某种形式的外壳(我制作的硬件详情在此)

其他需求

  • Telegram机器人:免费且易于设置

  • 已安装Raspbian发行版(我使用的是Jessie lite,也可以使用其他操作系统,但未经测试)

  • Python 3

工作原理

自动化检测

我的主要目标之一是使系统完全自动化,无需在离家或回家时手动布防或撤防。我认为实现这一目标的最简单方法是尝试检测家中居住者的手机。从概念上讲,这很简单,但在实践中最具挑战性,因为:

  • 在Wi-Fi接口上捕获所有数据包非常耗费资源

  • 目前没有好的支持监控模式的5Ghz USB Wi-Fi适配器,这意味着数据包监控仅限于2.4Ghz,而大多数现代手机现在使用5Ghz

  • 手机并非始终在线并通过Wi-Fi发送数据包,有时它们会保持未连接状态长达15分钟或更长时间

  • 即使准确率达到99%,误报也会令人烦恼

经过大量测试,我采用了一种结合主动(ARP扫描)和被动(数据包捕获)检测的方法,通过Wi-Fi适配器实现,并基于已知的手机MAC地址。手机MAC地址在配置中设置,rpi-security应用程序在监控模式接口上捕获具有以下过滤条件的数据包:

  • 来自任何已配置MAC的Wi-Fi探测请求

  • 从已配置MAC发送到运行rpi-security的主机的任何数据包

当检测到数据包时,应用程序会重置计数器,如果计数器超过约10分钟,则系统布防。为了消除许多误报,在从布防到撤防状态或反之的转换过程中,应用程序会对每个已配置的MAC地址执行ARP扫描,以确保它们确实在线或离线。iOS和Android在99%的情况下都会响应此ARP扫描,而ICMP ping则相当不可靠。通过结合捕获Wi-Fi探测请求和使用ARP扫描,Wi-Fi频率无关紧要,因为手机在两个频率上都发送探测请求,ARP扫描也适用于两个频率。

通知

使用Telegram机器人发送带捕获图片的通知。他们有良好的移动应用程序和友好的API。您还可以在浏览器中查看消息,并且消息会在设备之间同步。

如果系统处于布防状态并检测到运动,则会从Telegram机器人向您发送带有捕获图片的消息。

在任何警报状态更改时也会发送通知。

图片

远程控制

您可以向Telegram机器人发送命令以触发某些操作:

  • /disable:禁用服务,直到重新启用

  • /enable:在禁用后启用服务

  • /status:发送状态报告

  • /photo:捕获并发送照片

  • /gif:捕获并发送gif

图片

Python

该应用程序是用Python 3编写的。大部分功能由以下pip模块提供:

  • picamera

  • Scapy

  • python-telegram-bot

应用程序使用多线程以异步方式处理事件。有四个线程:

  • telegram_bot:响应命令

  • monitor_alarm_state:布防和撤防系统

  • capture_packets:捕获来自移动设备的数据包

  • process_photos:通过Telegram消息发送捕获的图片

安装、配置和运行

连接到您的WiFi网络的接口必须是支持监控模式的接口,并且这必须是手机连接的同一个WiFi网络。

首先安装必要的软件包:

sudo apt-get updatesudo apt-get install -y tcpdump iw python3-dev python3-pip libjpeg8-dev zlib1g-dev libffi-dev python3-numpysudo pip3 install --upgrade pip

安装rpi-security服务,重新加载systemd配置并启用服务:​​​​​​​

sudo pip3 install https://github.com/FutureSharks/rpi-security/archive/master.zipsudo systemctl daemon-reloadsudo systemctl enable rpi-security.service

在/etc/rpi-security.conf文件中添加你的MAC地址、Telegram机器人API密钥以及任何其他需要更改的配置。

确保你已经使用raspi-config启用了相机模块。

启动rpi-security服务:

sudo systemctl start rpi-security.service

你需要至少向Telegram机器人发送一条消息,以便服务能够保存你的Telegram chat_id。发送/status命令即可。

rpi-security作为服务运行,并将日志记录到syslog中。要查看日志,请检查 /var/log/syslog。

还有一个调试选项,它将日志输出到stdout:

root@raspberrypi:~# iw phy phy0 interface add mon0 type monitorroot@raspberrypi:~# ifconfig mon0 uproot@raspberrypi:~# rpi-security.py -d2016-05-28 14:43:30 DEBUG   rpi-security.py:73  MainThread          State file read: /var/lib/rpi-security/state.yaml2016-05-28 14:43:30 DEBUG   rpi-security.py:44  MainThread          Calculated network: 192.168.178.0/242016-05-28 14:43:41 INFO    rpi-security.py:214 monitor_alarm_state thread running2016-05-28 14:43:41 INFO    rpi-security.py:196 capture_packets     thread running2016-05-28 14:43:41 INFO    rpi-security.py:259 telegram_bot        thread running2016-05-28 14:43:41 INFO    rpi-security.py:154 process_photos      thread running2016-05-28 14:43:43 INFO    rpi-security.py:392 MainThread          rpi-security running2016-05-28 14:43:43 INFO    rpi-security.py:112 MainThread          Telegram message Sent: "rpi-security running"2016-05-28 14:44:29 DEBUG   rpi-security.py:191 capture_packets     Packet detected from aa:aa:aa:bb:bb:bb2016-05-28 14:44:29 DEBUG   rpi-security.py:191 capture_packets     Packet detected from aa:aa:aa:bb:bb:bb2016-05-28 14:44:48 DEBUG   rpi-security.py:280 Dummy-1             Motion detected but current_state is: disarmed

这就是Raspberry Pi A+模型所需要的全部内容。这显示了我的无线局域网网络设备布局:​​​​​​​

root@raspberrypi:~# iw devphy#0        Interface mon0                ifindex 4                wdev 0x3                addr 00:0f:60:08:9c:01                type monitor        Interface wlan0                ifindex 2                wdev 0x1                addr 00:0f:60:08:9c:01                type managed                channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz

你可能会遇到具有不同名称的接口,只需在/etc/rpi-security.conf 文件中更改 network_interface 参数,并同时更改 rpi-security.service 中对 mon0 的引用即可。

带有PIR传感器运动检测的旧版本

目前,该摄像头用于运动检测。如果您想使用支持PIR传感器的旧版本,请查看0.7版本:

https://github.com/FutureSharks/rpi-security/releases/tag/0.7

连接丢失时重启

大约每个月或两个月,我的Raspberry Pi 会丢失WLAN连接。我创建了一个cron作业来检查连接,并在检查失败时重启。

echo '*/20 * * * * root /usr/bin/host api.telegram.org > /dev/null 2>1 || (/usr/bin/logger "Rebooting due to connectivity issue"; /sbin/shutdown -r now)' > /etc/cron.d/reboot-on-connection-failure

自定义部件和外壳

硬件详情

摄像头和PIR传感器Makerbeam支架的CAD文件:

https://github.com/FutureSharks/rpi-security/tree/master/hardware

代码

Github链接(安装、配置等):

https://github.com/FutureSharks/rpi-security

一个用Python编写的安全系统,用于在Raspberry Pi 上运行,具有运动检测和移动通知功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NGINX高性能web服务器

1.web服务器介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版…

使用一台电脑监控全体员工电脑,怎么实现?安全高效两不误,透视全公司电脑使用情况!

传统的管理模式无法监管员工上班时间内的所有行为,如聊天、浏览与工作无关的网站、玩游戏等等,总不能让企业管理者一直盯着员工办公吧? 员工电脑作为企业运营的神经末梢,其安全与使用效率直接关系到企业的稳定发展。那么&#xf…

Jenkins docker容器时区修改

背景 用docker搭建的Jenkins环境时间显示和我们本地时间相差8个小时,可能是由于docker run的时候没有加上/etc/localtime:/etc/localtime去同步时区,所以需修改容器内部的系统时间 查看时间 先查看宿主机的系统时间 date -R 进docker容器查看时间 d…

【加分二叉树】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 30; int a[N]; int f[N][N], root[N][N]; int n; void Print(int i, int j) {if(i j){cout << i << " ";return;}if(i > j) return;int k root[i][j];cout << k …

十大经典排序算法:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、计数排序、基数排序、桶排序

1.排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序…

AWS 使用 Amazon EC2 控制台安装和配置 CloudWatch 代理以添加其他指标如内存

默认情况下&#xff0c;Amazon CloudWatch 提供基本指标&#xff08;例如 CPUUtilization 和 NetworkIn&#xff09;用于监控 Amazon EC2 实例。要收集其他指标&#xff0c;您可以在 EC2 实例上安装 CloudWatch 代理&#xff0c;然后将该代理配置为发出所选指标。您可以使用 Am…

Linux系统中的HTTP协议

目录 一.http1.url和域名2.URL编码&#xff08;Encode&#xff09;和解码&#xff08;Decode&#xff09;4.http协议格式5.http的方法和状态码6.cookie和session 二.https1.加密2.https的方案与MITM3.证书 一.http 1.url和域名 url即统一资源定位符&#xff0c;通常会包括协议…

【JPCS独立出版 | 见刊检索稳定】第二届应用统计、建模与先进算法国际学术会议(ASMA2024,9月27日-29)

由哈尔滨理工大学主办的第二届应用统计、建模与先进算法国际学术会议&#xff08;ASMA2024&#xff09;将于2024年9月27日-29日于中国哈尔滨召开。 会议将围绕应用统计、建模及先进算法等在数学领域中的最新研究成果&#xff0c;为来自国内外高等院校、科学研究所、企事业单位的…

C语言 | Leetcode C语言题解之第375题猜数字大小II

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…

OpenCV几何图像变换(11)极坐标转换函数warpPolar()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数将图像重映射到极坐标或半对数极坐标空间。 极坐标重映射参考 用以下转换来转换源图像&#xff1a; d s t ( ρ , ϕ ) s r c ( x , y ) ds…

别着急面试㊙先背完答案✅offer接到手软

别着急面试㊙先背完答案✅offer接到手软 21/100 保存草稿 发布文章 2401_85378759 未选择任何文件 new 面试大模型岗的小伙伴们最近面试题背的怎么样啦 - 大模型&#xff08;LLM&#xff09;面试题是面试中比较常问到的&#xff0c;今天给大家整理了120个常见的大模型面试题✅…

【惠农网-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

图论:图的遍历(DFS vs. BFS)

文章目录 引言基本概念无向图示例绘制图形 深度优先搜索&#xff08;DFS&#xff09;基本概念可视化 DFS 过程深度优先搜索&#xff08;DFS&#xff09;DFS 应用场景 广度优先搜索&#xff08;BFS&#xff09;基本概念可视化 BFS 过程广度优先搜索&#xff08;BFS&#xff09;应…

有效三角形个数问题

目录 一题目简述&#xff1a; 二思路总结&#xff1a; 21不被认可的暴力破解思路&#xff1a; 22优化后的思路&#xff1a; 221优化后的判断三角形方法&#xff1a; 222 定一动二指针朝内筛选遍历&#xff1a; 三解答代码&#xff1a; 一题目简述&#xff1a; leetcode链…

500以内有好用的开放式耳机推荐吗?五款500以内开放式耳机推荐

作为一个几乎醒了就离不开耳机的人&#xff0c;我经常在思考什么样子的耳机才能做到佩戴无感、不塞耳、没有胀痛&#xff0c;还可以随时为我们提供高品质音乐呢&#xff1f;划拉来&#xff0c;划拉去还是觉得开放式耳机比较适合&#xff0c;它不入耳的设计能够让空气在耳朵流通…

基于大模型 + 知识库的 Code Review 实践

背景 &#x1f4a1; 想法源于在一次 Code Review 时&#xff0c;向 Claude 询问哪种写法代码更优雅得来。当时就想能不能让 AI 帮我们辅助做 Code Review&#xff1f; 痛点 信息安全合规问题&#xff1a;公司内代码直接调 ChatGPT / Claude 会有安全/合规问题&#xff0c;为了…

HR招聘,如何解决面试流程繁琐的问题

要解决面试流程繁琐的问题&#xff0c;就必须要精简和优化招聘流程。比如精简面试环节&#xff0c;制定标准化流程&#xff0c;完善信息管理&#xff0c;对面试环节进行细致梳理之后&#xff0c;尽快识别并去除那些不必要的步骤&#xff0c;这样就能够减少求职者的等待时间&…

零成本搭建个人 APP 和小程序后台

前言 前面也说了&#xff0c;通过 GitHub PagesGitHub Actions 只是解决了动态数据展示&#xff0c;但是要零成本得完成将用户信息存储下来&#xff0c;并实现数据交互呢&#xff1f; 我开始是想用云文档&#xff0c;种种原因&#xff0c;我还是希望有个自己能二次修改的后台…

动态网格交易、科创板做市、股票 CTA……DolphinDB 中高频策略回测实例之股票篇

股票中高频交易是量化交易的重要分支&#xff0c;其核心在于在极短时间内处理大量市场数据&#xff0c;执行多笔交易&#xff0c;从而捕捉细微的价格波动并获取利润。中高频交易策略的成功依赖于精准的算法设计、低延迟的交易系统以及交易程序强大的数据分析能力。作为实盘操作…

【系统架构设计】设计模式

【系统架构设计】设计模式 设计模式概述GoF设计模式Factory MethodAbstract Factory &#xff08;*&#xff09;BuilderPrototype(原型)Singleton&#xff08;*&#xff09;AdapterBridgeComposite(组合)Decorator(装饰)&#xff08;*&#xff09;Facade(外观)&#xff08;*&am…