Schießt automatisch, wenn sich ein Objekt kreuzt! Einführung eines Systems, das Bilder an LINE sendet.
** Frisst Ihre Katze während eines zweitägigen Ausflugs von einer Nacht richtig? Ich war besorgt, ob ich Wasser trinke, also habe ich es geschafft. ** **.
Es wird ein einfaches System mit Raspeltorte sein. Es wird empfohlen, da Sie das Kamerabild während Ihrer Abwesenheit auf LINE überprüfen können, z. B. wenn Sie Haustiere haben.
Buch "Sanft beginnender Himbeerkuchen" Es ist ein sehr leicht verständliches Buch für Anfänger von Razpai, und ich kann es nur empfehlen. Ungefähr 80% dieses Systems haben Ideen aus diesem Buch m (_ _) m entlehnt
Klicken Sie hier für das GitHub-Repository. https://github.com/akiraseto/security_cam
Raspberry Pi (im Folgenden als "Raspberry Pi" bezeichnet) wird verwendet, um den Sensor und die Kamera zu verbinden.
Verbinden Sie den menschlichen Sensor mit dem GPIO Mithilfe von Infrarotstrahlen wird erkannt, wann sich etwas bewegt, das heißer als die Umgebung ist, z. B. eine Person oder ein Tier. Ich habe die nicht gekennzeichneten Teile des Sets für den menschlichen Sensor verwendet, aber es ist kein Problem, ihn mit dem in Akizuki verkauften "SE-10" zu verwenden. Ich denke. Raspeye GPIO: Sensor OUTPUT an Nummer 23 anschließen Raspeye GPIO: LED-Anode an Nummer 18 anschließen.
USB-Verbindung mit Webcam Stecken Sie es einfach wie einen PC in den USB-Anschluss, und Sie müssen nichts Besonderes tun.
So ↓ ↓
LINEnotify Mit der von LINE bereitgestellten API können Sie verschiedene Benachrichtigungen frei an LINE senden, indem Sie sie in das Programm integrieren. Es ist sehr praktisch und scheint verschiedene Verwendungszwecke zu haben. https://notify-bot.line.me/ja/
Diese Seite ist detailliert. https://qiita.com/iitenkida7/items/576a8226ba6584864d95
Registrieren Sie sich und kooperieren Sie, um ein Zugriffstoken auszustellen. Das Zugriffstoken wird nur einmal angezeigt. Vergessen Sie also nicht, es zu kopieren.
security_cam/
├── README.md
├── config.py #LINE Token benachrichtigen
└── security_cam.py
#Bildspeicherverzeichnis
/media/pi/rasUSB/security_cam/img
Was die Images betrifft, möchte ich die Kapazität der Bootdiskette nicht überfordern, daher speichere ich sie separat im USB-Speicher. Übertrieben mit der Gesamtkonfiguration ist die eigentliche Programmdatei nur "security_cam.py".
security_cam.py
import RPi.GPIO as GPIO
from time import sleep
import datetime, requests, cv2, os, glob, config
#LINE Token benachrichtigen
TOKEN = config.TOKEN
API = 'https://notify-api.line.me/api/notify'
#GPIO-Port-Einstellungen
SENSOR_PORT = 23
LED_PORT = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PORT, GPIO.IN)
GPIO.setup(LED_PORT, GPIO.OUT)
#CV2-Vorbereitung
camera = cv2.VideoCapture(0)
IMG_SIZE = (600,400)
#Führen Sie einen Befehl zum Fotografieren aus(Dateiname auf Datum und Uhrzeit)
last_post = datetime.datetime(2000, 1, 1) #Richtig initialisieren
def take_photo():
global last_post
#Mach ein Foto
now = datetime.datetime.now()
fname = "/media/pi/rasUSB/security_cam/img/" + now.strftime('%Y-%m-%d_%H-%M-%S') + ".jpg "
#Altes Bild löschen
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)
#Schießen
_, frame = camera.read()
img = cv2.resize(frame, IMG_SIZE)
ret = cv2.imwrite(fname, img)
if ret:
print('Aufgenommenes Bild: ' + fname)
else:
print('Failed to write image.')
#LINE benachrichtigen
#10 Minuten werden jedoch nicht benachrichtigt--- (*1)
sec = (now - last_post).seconds
if sec < 10 * 60: return
last_post = now
#Benachrichtigung in LINE einfügen--- (*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 #Kontinuierlicher Schießschutz
#Holen Sie sich den Wert des Sensors wiederholt
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 (Tage = 3)
.Dies ist ein einfaches Programm.
Um ehrlich zu sein, benutze ich es nur gelegentlich. Nicht nur Katzen, sondern jedes Mal, wenn meine Familie überquerte, kamen LINE-Benachrichtigungen. .. (´Д `) Als empfohlene Verwendung Es ist Zeit, das Haus für eine Weile zu verlassen, z. B. einen zweitägigen Ausflug für eine Nacht oder einen Ausflug mit Ihrer Familie von morgens bis abends. Es fühlt sich gut an, eine aktive Rolle bei der Überprüfung des Zustands der Katze zu spielen.
Wie wäre es mit denen, die sich Sorgen machen, Wasser für ihre Haustiere zu essen und zu trinken, während sie unterwegs sind? Natürlich macht es Spaß, sich durch LINE entspannt zu fühlen, wie zum Beispiel "Bist du gekommen, um Wasser zu trinken?" Und "Du isst zu viel."
Recommended Posts