Вот уже как пару дней, я пользуюсь своим детектором движений на малине. Основной принцип работы, я описал в первом абзаце этого поста. Фото и видео делает Pi Camera Module. Вот статья, в которой описаны основные моменты. Питанием для всей системы я выбрал Xiaomi Mi Power Bank 16000mAh. Реальная емкость где-то на уровне 12000 мАч. Непрерывной работы от одной полной зарядки банки хватает на 24-25 часов. Значит система потребляет где-то 500мА в час.
Корпусом для мини-пк я выбрал коробку от смартфона. Прорезал в ней отверстия под питание, usb-выход и кабеля для датчика движений. В итоге, в собранном виде все это дело выглядит вот так:
На Raspberry был установлен TeamViewer и, перед каждым уходом на работу, я подключаюсь и запускаю скрипт. Для того что бы камера не фиксировала меня когда я ухожу, я поставил задержку в 1 минуту.
Привожу полный код скрипта, который сейчас благополучно работает у меня:
Код по записи видео я закомментировал - мне, пока что, без надобности.
В итоге, хочу сказать спасибо людям, которые делились (и делятся) своими знаниями в Интернете касательно Raspberry Pi и всего, что его окружает.
Корпусом для мини-пк я выбрал коробку от смартфона. Прорезал в ней отверстия под питание, usb-выход и кабеля для датчика движений. В итоге, в собранном виде все это дело выглядит вот так:
На Raspberry был установлен TeamViewer и, перед каждым уходом на работу, я подключаюсь и запускаю скрипт. Для того что бы камера не фиксировала меня когда я ухожу, я поставил задержку в 1 минуту.
Привожу полный код скрипта, который сейчас благополучно работает у меня:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import picamera | |
import time | |
import RPi.GPIO as GPIO | |
from datetime import datetime | |
import smtplib | |
from os.path import basename | |
from email.mime.application import MIMEApplication | |
from email.mime.multipart import MIMEMultipart | |
#send e-mail via gmail | |
def send_mail(send_from, password, send_to, send_to_hidden, subject, file_name): | |
msg = MIMEMultipart() | |
msg['From'] = send_from | |
msg['To'] = send_to | |
msg['Subject'] = subject | |
with open(file_name, "rb") as fil: | |
part = MIMEApplication( | |
fil.read(), | |
Name=basename(file_name) | |
) | |
part['Content-Disposition'] = 'attachment; filename="%s"' % basename(file_name) | |
msg.attach(part) | |
smtp = smtplib.SMTP('smtp.gmail.com', 587) | |
smtp.starttls() | |
smtp.login(send_from, password) | |
smtp.sendmail(send_from, [send_to] + [send_to_hidden], msg.as_string()) | |
smtp.quit() | |
### main block ### | |
#number of GPIO on board | |
sensor = 4 | |
GPIO.setmode(GPIO.BCM) | |
GPIO.setup(sensor, GPIO.IN) | |
delay_sec = 60 | |
mark_time = time.time() | |
cur_state = 0 | |
while True: | |
time.sleep(1) | |
cur_state = GPIO.input(sensor) | |
print(cur_state) | |
if cur_state == 1: | |
if time.time() - mark_time > delay_sec: | |
delay_sec = 10 | |
msg = "Some movement. Time: {0}".format(str(datetime.now())[:-7]) | |
print(msg) | |
mark_time = time.time() | |
with picamera.PiCamera() as camera: | |
#photo | |
camera.resolution = (1280, 720) | |
time.sleep(1) | |
filename = '/home/pi/Desktop/Pictures/%s.jpg' % str(datetime.now()) | |
camera.capture(filename) | |
#send email | |
send_mail('my_email@gmail.com', | |
'mypass', | |
'first_email@gmail.com', | |
'second_email@gmail.com', | |
str(datetime.now()), | |
filename) | |
#video | |
# filename = '/home/pi/Desktop/Pictures/%s.h264' % str(datetime.now()) | |
# camera.start_recording(filename) | |
# time.sleep(5) | |
# camera.stop_recording() | |
Код по записи видео я закомментировал - мне, пока что, без надобности.
В итоге, хочу сказать спасибо людям, которые делились (и делятся) своими знаниями в Интернете касательно Raspberry Pi и всего, что его окружает.