"Đi học thoai": Phần 2 - Nhận clip quay từ nhà mỗi 30 phút với Raspberry Pi và Python

Mô tả dự án: 

Không như dự án trước, phải đợi cháy nhà rồi mới quay phim gửi mail. Bài này tui sẽ viết về cách dùng Raspberry Pi quay phim rồi gửi mail cho bạn mỗi 30 phút với ngôn ngữ Python.

Nguyên lý

Trong Arduino có hàm delay() thì Raspberry có hàm time.sleep() để hẹn giờ rất tiện. Bạn chỉ cần chỉnh số giây sleep là đã có thể làm nhiều trò hay ho mà không cần tới module thời gian thực (RTC).

Chuẩn bị

Đơn giản tới mức không thể đơn giản hơn:

Python code

Chép đoạn code sau và lưu lại với tên di_hoc_thoi_2.py


#!/usr/bin/bash
#By MonsieurVechai
import time
import os, subprocess
import re, serial
import smtplib
from email import Encoders
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText


def send_mail(file):    
    UserName = "somethingd@gmail.com"
    Password = "something"
    Recipient = "something"
    
    msg = MIMEMultipart()
    msg['From'] = UserName
    msg['To'] = Recipient
    msg['Subject'] = "Hourly report"        
    text = "Hourly video from the house. Time: " + datetime.now().strftime("%Y_%m_%d_%H_%M_%S.h264")
    msg.attach( MIMEText(text) ) 
    
    part = MIMEBase("application", "octet-stream")
    fo=open(file,"rb")
    part.set_payload(fo.read() )
    Encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename="%s"'  %os.path.basename(file))
    msg.attach(part)

    s = smtplib.SMTP('smtp.gmail.com:587')
    s.ehlo()
    s.starttls()
    s.login(UserName, Password)
    s.sendmail(UserName, Recipient, msg.as_string())
    s.close()


def main(): 

    camera = PiCamera()
    print "Pi Camera is ready."

    try:       
        # Loop until users quit with CTRL-C
        while True :  
                time.sleep(60*30)
                print "Start recording movie"
                filename = datetime.now().strftime("%Y_%m_%d_%H_%M_%S.h264")
                camera.start_recording(filename)
                time.sleep(20)
                camera.stop_recording()
                path_of_movie = os.path.abspath(filename)
                   
                #Sending email
                try:
                    send_mail(path_of_movie)
                    print "Sending email done. Ready to read new temperature."
                except IOError:
                    print "Something wrong. Mail not sent."
                time.sleep(0.01)
    
    except KeyboardInterrupt:
        print "Quit program"
        
        
if __name__ == "__main__":
    main()

Thay đổi địa chỉ email bằng địa chỉ email và password của bạn (phải là Gmail (cho dễ) nhé). Nhớ là phải để trong ngoặc kép nha:

Lưu code lại. Mở terminal trong thư mục bạn lưu file python và nhập lệnh:

python di_hoc_thoi_2.py

Lưu ý

  • Code này chỉ hoạt động được trên tài khoản gmail thôi nha! Và bạn phải vào https://www.google.com/settings/secu..., chọn "Turn on" cho phần "Access for less secure apps" thì mới gửi mail bằng Python được.
  • Bạn nên tạo 1 tài khoản gmail email riêng vì bất cứ ai mở file python đều có thể đọc được mật khẩu hộp thư cá nhân của bạn.
  • Lần đầu làm bạn nên comment # cho đoạn send_mail(path_of_movie) để tránh tài khoảng bị khóa hộp thư vì bị hiểu nhầm là spam.
  • Bạn có thể chỉnh sửa thời gian quay ở đây, nhưng mà quay ít ít thoai, nặng quá là không gửi qua email được đâu (max 20MB):
time.sleep(20)
  • Bạn có thể chỉnh số phút chờ giữa 2 lần quay phim ở phần này của code:
time.sleep(60*30)

Gợi ý nâng cao

  • Kết hợp với các bài trước, gửi thêm thông tin về số người ở nhà (MAC address), nhiệt độ nhà...
  • Kết hợp với cảm biến PIR đếm số người đi đã vào phòng của bạn

Gửi video qua mail hoài cũng chán, và có thể bạn cũng không cần xem video từ nhà mỗi 30 phút. Bài tới tui sẽ hướng dẫn các bạn quay time-lapse từ Raspberry để cuối ngày xem lại. 

lên
12 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

(Phòng chống) Nghệ thuật hắc ám với ESP8266 - Phần 4: Thủ khoa đại học có khó?

Trong bài đầu tiên tui đã hướng dẫn các bạn hack kỳ thi quốc gia với module ESP8266. Dĩ nhiên là không ai cho các bạn cầm theo điện thoại vào phòng thi để mà các bạn mở lên tìm beacon đáp án. Tuy nhiên không ai cấm các bạn mang máy tính casio vào phòng thi cả. Bài này tui sẽ hướng dẫn các bạn gắn wifi vào chiếc máy tính casio huyền thoại để nhận phao thi từ bất kỳ nơi nào trên thế giới. Lưu ý là các bạn nên chế cháo có trách nhiệm, chớ nên kinh doanh buôn bán thành quả nếu các bạn không muốn cục tình báo C2 gõ cửa hỏi thăm. 

lên
9 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

"Đi học thoai": Phần 6 - Hẹn giờ bật tắt đèn từ xa với Raspberry Pi

Trong bài trước tui đã hướng dẫn các bạn thu thập dữ liệu từ xa với Raspberry Pi và WebIOPi. Bài này chúng ta sẽ tìm hiểu sâu hơn 1 tí về ứng dụng WebIOPi qua việc thiết lập 1 hệ thống điều khiển bóng đèn từ xa qua Internet. Tutorial này được tham khảo từ trang http://webiopi.trouch.com/Tutorial_Basis.html

LƯU Ý: Tutorial này có liên quan đến nguồn điện 220V có thể gây chết người nên đề nghị các bạn cẩn thận. Tui không chịu trách nhiệm nếu tai nạn xảy ra.

lên
5 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: