Изображение
Наш текущий проект предусматривает создание устройства с этими функциями с использованием Rasberry PI 3B +:
1.) Обнаружение движения с помощью двух или более ИК-датчиков
2.) PIR-датчики, запускающие две или более PiCameras на мультиплексоре для записи видео (PIR-датчик 1, соответствующий камере 1 / датчик 2, соответствующий камере 2)
3.) Отправка полученноговидеофайлы на адрес электронной почты.
Следующий код позволяет устройству выполнять эти функции, хотя только с одной камерой и ИК-датчиком без использования мультиплексора:
from gpiozero import MotionSensor
from picamera import PiCamera
from datetime import datetime
from time import sleep
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
import email.encoders
import smtplib
import os
import email
import sys
import time
camera = PiCamera()
pir = MotionSensor(4)
camera.rotation = 180 # delete or adjust to 90, 180, or 270 accordingly
h264_video = ".h264"
mp4_video = ".mp4"
while True:
# record h264 video then save as mp4
pir.wait_for_motion()
video_name = datetime.now().strftime("%m-%d-%Y_%H.%M.%S")
camera.start_recording(video_name + h264_video)
pir.wait_for_no_motion()
sleep(5)
camera.stop_recording()
os.system("MP4Box -add " + video_name + h264_video + " " + video_name + mp4_video) # tutorial for install to make this conversion possible at: http://raspi.tv/2013/another-way-to-convert-raspberry-pi-camera-h264-output-to-mp4
os.system("rm " + video_name + h264_video) # delete h264 file
footage = video_name + mp4_video
# prepare the email
f_time = datetime.now().strftime("%A %B %d %Y @ %H:%M:%S")
msg = MIMEMultipart()
msg["Subject"] = f_time
msg["From"] = "your_address@gmail.com"
msg["To"] = "to_address@gmail.com"
text = MIMEText("WARNING! Motion Detected!")
msg.attach(text)
# attach mp4 video to email
part = MIMEBase("application", "octet-stream")
part.set_payload(open(footage, "rb").read())
email.encoders.encode_base64(part)
part.add_header("Content-Disposition", "attachment; filename= %s" % os.path.basename(footage))
msg.attach(part)
# access Gmail account and send email
server = smtplib.SMTP("smtp.gmail.com:587")
server.starttls()
server.login("jeyessalazar@gmail.com","js04221997")
server.sendmail("jeyessalazar@gmail.com", "salazarjohnseth@gmail.com", msg.as_string())
server.quit()
# delete mp4 from Pi after it has been emailed
os.system("rm " + footage)
Чтомы хотим перенести эти функции на еще один PIR-датчик и камеру с помощью мультиплексора arducam, всего 2 камеры и 2 PIR-датчика, и отправить два видеофайла с этих двух камер.Тем не менее, с нашим ограниченным знанием Python, как вы можете видеть из нашего кода, в основном вставленного с копией, мы не можем понять, как это сделать, не испортив ничего.Обычно мы пытаемся устранить неполадки, но у нас есть ограниченный период времени для завершения проекта.
Что-то вроде этого:
import os
gp.setwarnings(False)
gp.setmode(gp.BOARD)
gp.setup(7, gp.OUT)
gp.setup(11, gp.OUT)
gp.setup(12, gp.OUT)
gp.setup(15, gp.OUT)
gp.setup(16, gp.OUT)
gp.setup(21, gp.OUT)
gp.setup(22, gp.OUT)
gp.output(11, True)
gp.output(12, True)
gp.output(15, True)
gp.output(16, True)
gp.output(21, True)
gp.output(22, True)
def main():
gp.output(7, False)
gp.output(11, False)
gp.output(12, True)
capture(1)
gp.output(7, False)
gp.output(11, True)
gp.output(12, False)
capture(3)
def capture(cam):
cmd = "raspistill -o capture_%d.jpg" % cam
os.system(cmd)
if __name__ == "__main__":
main()
gp.output(7, False)
gp.output(11, False)
gp.output(12, True)
, но с функцией, которая позволяет двум отдельным камерам бытьзапускается двумя датчиками PIR и отправляет полученный видеофайл на указанный адрес электронной почты.Было бы здорово, если бы кто-то мог помочь.Спасибо!