Prend automatiquement des prises lorsqu'un objet traverse! Présentation d'un système qui envoie des images à LINE.
** Votre chat mange-t-il correctement lors d'une excursion d'une nuit et de deux jours? J'étais inquiet si je buvais de l'eau, alors je l'ai fait. ** **
Ce sera un système simple utilisant la tarte à la râpe, Il est recommandé car vous pouvez vérifier l'image de la caméra sur LINE lorsque vous êtes absent, comme ceux qui ont des animaux domestiques.
Livre «Démarrez doucement la tarte aux framboises» C'est un livre très facile à comprendre pour les débutants de Razpai, et je le recommande vivement. Environ 80% de ce système ont emprunté des idées à ce livre m (_ _) m
Cliquez ici pour le référentiel GitHub. https://github.com/akiraseto/security_cam
Raspberry Pi (ci-après dénommé «Raspberry Pi») est utilisé pour connecter le capteur et la caméra.
Connectez le capteur humain avec GPIO Il utilise des rayons infrarouges pour détecter quand quelque chose de plus chaud que l'environnement, comme une personne ou un animal, bouge. J'ai utilisé les parties non marquées de l'ensemble pour le capteur humain, mais il n'y a aucun problème à l'utiliser avec le "SE-10" vendu en Akizuki. Je pense. Raspeye GPIO: connectez la sortie du capteur au numéro 23 Raspeye GPIO: connectez l'anode LED au numéro 18.
Connexion USB avec webcam Tout comme un PC, insérez-le simplement dans la borne USB et vous n'avez rien de spécial à faire.
Comme ça ↓ ↓
LINEnotify Avec l'API fournie par LINE, vous pouvez envoyer librement diverses notifications à LINE en l'incorporant dans le programme. C'est assez pratique et semble avoir diverses utilisations. https://notify-bot.line.me/ja/
Cette page est détaillée. https://qiita.com/iitenkida7/items/576a8226ba6584864d95
Inscrivez-vous et coopérez pour émettre un jeton d'accès. Le jeton d'accès n'est affiché qu'une seule fois, veillez donc à ne pas oublier de le copier.
security_cam/
├── README.md
├── config.py #Jeton de notification LINE
└── security_cam.py
#Répertoire de stockage d'images
/media/pi/rasUSB/security_cam/img
Je ne veux pas surcharger la capacité du disque de démarrage pour les images, je les sauvegarde donc séparément dans une clé USB.
De manière exagérée avec la configuration globale, le fichier de programme réel est seulement security_cam.py
.
security_cam.py
import RPi.GPIO as GPIO
from time import sleep
import datetime, requests, cv2, os, glob, config
#Jeton de notification LINE
TOKEN = config.TOKEN
API = 'https://notify-api.line.me/api/notify'
#Paramètres du port GPIO
SENSOR_PORT = 23
LED_PORT = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PORT, GPIO.IN)
GPIO.setup(LED_PORT, GPIO.OUT)
#Préparation CV2
camera = cv2.VideoCapture(0)
IMG_SIZE = (600,400)
#Exécuter une commande de prise de vue(Nom du fichier à la date et à l'heure)
last_post = datetime.datetime(2000, 1, 1) #Initialisez correctement
def take_photo():
global last_post
#Prendre une photo
now = datetime.datetime.now()
fname = "/media/pi/rasUSB/security_cam/img/" + now.strftime('%Y-%m-%d_%H-%M-%S') + ".jpg "
#Supprimer l'ancienne image
file_list = glob.glob("/media/pi/rasUSB/security_cam/img/*jpg")
dif_time = datetime.timedelta(days=3)
for file in file_list:
file_time = datetime.datetime.fromtimestamp(os.path.getatime(file))
if (file_time < now - dif_time):
print("remove:{0}".format(file))
os.remove(file)
#Tournage
_, frame = camera.read()
img = cv2.resize(frame, IMG_SIZE)
ret = cv2.imwrite(fname, img)
if ret:
print('Image capturée: ' + fname)
else:
print('Failed to write image.')
#Notifier LINE
#Cependant, 10 minutes ne seront pas notifiées--- (*1)
sec = (now - last_post).seconds
if sec < 10 * 60: return
last_post = now
#Insérer une notification dans LINE--- (*2)
post_data = {'message': 'Nyans'}
headers = {'Authorization': 'Bearer ' + TOKEN}
files={'imageFile': open(fname,'rb')}
res = requests.post(API, data=post_data,
headers=headers,files=files)
print(res.text)
try:
sw = 0 #Prévention de la prise de vue en continu
#Obtenez la valeur du capteur à plusieurs reprises
while True:
v = GPIO.input(SENSOR_PORT)
if v == GPIO.HIGH:
GPIO.output(LED_PORT, GPIO.HIGH)
take_photo()
sw = 1
else:
GPIO.output(LED_PORT, GPIO.LOW)
sw = 0
sleep(10.0)
except KeyboardInterrupt:
pass
GPIO.cleanup()
dif_time = datetime.timedelta (days = 3)
.Ceci est un programme simple.
Pour être honnête, je ne l'utilise qu'occasionnellement. Non seulement les chats, mais à chaque fois que ma famille se croisait, les notifications LINE se faisaient exploser. .. (´Д `) Comme utilisation recommandée Il est temps de quitter la maison pendant un certain temps, comme une excursion d'une nuit ou de deux jours ou de sortir avec votre famille du matin au soir. Cela fait du bien de jouer un rôle actif dans la vérification de l'état du chat.
Qu'en est-il de ceux qui s'inquiètent de manger et de boire de l'eau pour leurs animaux de compagnie pendant leur absence? Bien sûr, c'est amusant de se sentir détendu grâce à LINE, comme "Êtes-vous venu boire de l'eau?" Et "Vous mangez trop de nourriture".