[PYTHON] Fabriquer un appareil de surveillance avec un capteur infrarouge

introduction

Veuillez préparer les éléments suivants [Capteur infrarouge](https://www.amazon.co.jp/SODIAL-R-267-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3% 83% AB% E7% 84% A6% E9% 9B% BB% E5% 9E% 8B% E8% B5% A4% E5% A4% 96% E7% B7% 9A% E6% A4% 9C% E5% 87% BA% E5% 99% A8PIR% E3% 83% A2% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3 / dp / B00L11K4RQ? Ie = UTF8 & ref_ = pe_1095802_173146692) Tarte aux framboises et produits connexes [Code](https://www.amazon.co.jp/%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%B5%E3%82 % A4% E3% 82% A8% E3% 83% B3% E3% 82% B9-SFE-PRT-08430-% E3% 82% B8% E3% 83% A3% E3% 83% B3% E3% 83% 91% E3% 83% AF% E3% 82% A4% E3% 83% A4-% E3% 83% A1% E3% 82% B9% EF% BD% 9E% E3% 83% A1% E3% 82% B9 -10% E6% 9C% AC% E3% 82% BB% E3% 83% 83% E3% 83% 88 / dp / B0079AXJ0W? Ie = UTF8 & ref_ = pe_1095802_173146692) Si possible, cherchez vous-même le moins cher.

Lien

abc.png

sensor raspbery pi
VCC 5V
OUT GPIO25:22
GND GND:25

commander

pi@raspberrypi:~$ sudo su
root@raspberrypi:/home/pi# 

Étant donné que GPIO utilise 25 broches, exportez GPIO25 vers l'espace utilisateur. Si vous ne le faites pas, vous ne pourrez pas accéder à GPIO.

root@raspberrypi:/home/pi# echo 25 > /sys/class/gpio/export

L'écriture dans le fichier d'exportation dans le répertoire / sys / class / gpio avec la commande echo crée un nouveau répertoire appelé / sys / class / gpio / gpio25, qui fournit les fichiers virtuels nécessaires pour contrôler GPIO. Cette fois, l'entrée du capteur est évaluée, donc définie dans le fichier de direction.

root@raspberrypi:/home/pi# cd /sys/class/gpio/gpio25
root@raspberrypi:/sys/class/gpio/gpio25# echo in > direction

Maintenant, si le capteur répond, 1 sera écrit dans le fichier de valeurs, et s'il n'y a pas de réponse, 0 sera écrit. Lorsque le capteur est mis à réagir et que la commande suivante est exécutée, 1 est écrit en valeur et l'opération peut être confirmée.

root@raspberrypi:/sys/class/gpio/gpio25# cat value
1

Création de script

Que faire cette fois ・ Envoyez un e-mail lorsque le capteur infrarouge répond

sudo nano sensor_push.py

sensor_push.py


#!/usr/bin/env python
#-*- coding: utf-8 -*-

import time
import RPi.GPIO as GPIO
import os.path
import datetime
import smtplib
from email import Encoders
from email.Utils import formatdate
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

INTAVAL = 3
SLEEPTIME = 5
SENSOR_PIN = 25

#Compte Gmail
ADDRESS = "Adresse Gmail"
PASSWARD = "Mot de passe Gmail"

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)

st = time.time()-INTAVAL

while True:
  print GPIO.input(SENSOR_PIN)
  if(GPIO.input(SENSOR_PIN) == GPIO.HIGH) and (st + INTAVAL < time.time()):
    st = time.time()
    print("Détecté une personne")
 
    def create_message(from_addr, to_addr, subject, body, mime=None, attach_file=None):
        
        msg = MIMEMultipart()
        msg["From"] = from_addr
        msg["To"] = to_addr
        msg["Date"] = formatdate()
        msg["Subject"] = subject
        body = MIMEText(body)
        msg.attach(body)
 
        #Pièce jointe
        if mime != None and attach_file != None:
            attachment = MIMEBase(mime['type'],mime['subtype'])
            file = open(attach_file['path'])
            attachment.set_payload(file.read())
            file.close()
            Encoders.encode_base64(attachment)
            msg.attach(attachment)
            attachment.add_header("Content-Disposition","attachment", filename=attach_file['name'])
 
        return msg
 
    def send(from_addr, to_addrs, msg):
  
        smtpobj = smtplib.SMTP(SMTP, PORT)
        smtpobj.ehlo()
        smtpobj.starttls()
        smtpobj.ehlo()
        smtpobj.login(ADDRESS, PASSWARD)
        smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
        smtpobj.close()
 
 
   if __name__ == '__main__':
 
       #adresse de destination
       to_addr = "adresse de destination"
 
       #Sujet et corps
       subject = "Thieves!Fire!Murder!"
       body = "Texte"
 
       #Paramètres des fichiers joints(text.Joindre un fichier txt)
       mime={'type':'text', 'subtype':'comma-separated-values'}
       attach_file={'name':'test.txt', 'path':'./text.txt'}
 
       #Rédiger un message(Il y a un fichier joint)
       #msg = create_message(ADDRESS, to_addr, subject, body, mime, attach_file)
 
       #Composition du message(Pas de pièces jointes)
       msg = create_message(ADDRESS, to_addr, subject, body)
 
       #Envoyer
       send(ADDRESS, [to_addr], msg)

    

  time.sleep(SLEEPTIME)

Le reste

sudo python sensor_push.py

Vous sera envoyé (si le capteur infrarouge répond)

~ Au fait ~

Le sujet est "Voleurs! Feu! Meurtre!"

Postscript

~~ J'ai confirmé l'opération, donc si vous voulez pouvoir l'exécuter automatiquement ~~

pi@raspberrypi:~$ crontab -e
#
#
@reboot python sensor_push.py
!!Mise en garde!!#####

Avant "@ reboot python sensor_push.py"

(N'écrivez pas "# @ reboot python sensor_push.py"!)

référence

[* Raspberry Pi *] C'est l'été! Faisons retentir les vers en utilisant le capteur humain [Envoyez facilement des e-mails avec Gmail](http://make.bcde.jp/python/gmail%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AB%E3%83] % A1% E3% 83% BC% E3% 83% AB% E9% 80% 81% E4% BF% A1 /)

Recommended Posts

Fabriquer un appareil de surveillance avec un capteur infrarouge
Créer une animation GIF avec surveillance des dossiers
Faites une loterie avec Python
Faire un feu avec kdeplot
Faisons une interface graphique avec python.
Faites un son avec le notebook Jupyter
Faisons une rupture de bloc avec wxPython
Créer un système de recommandation avec python
Créer un filtre avec un modèle django
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Créer un itérateur de modèle avec PySide
Créer un exe Scrapy avec Pyinstaller
Faire un joli graphique avec plotly
Créer un contrôleur d'interface audio avec pyusb (2)
Créer un lecteur vidéo avec PySimpleGUI + OpenCV
Surveillance des appareils effectuée par Python On-box de IOS-XE
Créer un contrôleur d'interface audio avec pyusb (1)
Créez un simulateur de gacha rare avec Flask
J'ai créé un capteur d'ouverture / fermeture (lien Twitter) avec TWE-Lite-2525A
Créez un pipeline de notebook avec Kedro + Papermill
Faire une figure partiellement zoomée avec matplotlib
Créez un quiz de dessin avec kivy + PyTorch
Faisons la voix lentement avec Python
Créez un classificateur en cascade avec Google Colaboratory
Faisons un langage simple avec PLY 1
Faire un circuit logique avec Perceptron (Perceptron multicouche)
Faire Oui Non Popup avec Kivy
Faire une minuterie de lavage-séchage avec Raspberry Pi
Créez un framework Web avec Python! (1)
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Faisons une IA à trois yeux avec Pylearn 2
Créez une application de bureau avec Python avec Electron
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Créons une application Web de conversion A vers B avec Flask! De zéro ...
Comment créer un pilote de périphérique Linux intégré (11)
Un mémorandum pour faire WebDAV uniquement avec nginx
Comment créer un pilote de périphérique Linux intégré (8)
Comment créer un pilote de périphérique Linux intégré (1)
Créer un bot Twitter Trend avec heroku + Python
Comment créer un pilote de périphérique Linux intégré (4)
Créez un simple générateur d'images par points avec Flask
Comment créer un dictionnaire avec une structure hiérarchique.
Comment créer un pilote de périphérique Linux intégré (7)
Je veux faire un jeu avec Python
Comment créer un pilote de périphérique Linux intégré (2)
Comment créer un pilote de périphérique Linux intégré (3)
Essayez de créer un code de "décryptage" en Python
Remplaçons UWSC par Python (5) Faisons un robot
Comment créer un pilote de périphérique Linux intégré (6)
Essayez de créer un groupe de dièdre avec Python
[Chat De Tornado] Créez un chat en utilisant WebSocket dans Tornado
Transformez les données de vacances en une trame de données avec les pandas
Créer un bot LINE WORKS avec Amazon Lex
Comment créer un pilote de périphérique Linux intégré (5)
Comment créer un pilote de périphérique Linux intégré (10)