From 8d2c25c8b313426b723870ba684144ec2d086698 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Thu, 31 Jan 2019 20:52:22 +0800
Subject: [PATCH] Add monitord.py source code
---
monitord/monitord.py | 129 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 129 insertions(+), 0 deletions(-)
diff --git a/monitord/monitord.py b/monitord/monitord.py
new file mode 100755
index 0000000..ee31791
--- /dev/null
+++ b/monitord/monitord.py
@@ -0,0 +1,129 @@
+#!/usr/bin/python
+#-*- coding: utf-8 -*-
+
+import pygame
+import pygame.camera
+import time
+import signal
+import RPi.GPIO as GPIO
+
+from pygame.locals import *
+from ftplib import FTP
+
+ON=1
+OFF=0
+
+# I/O Pin connected to PIN#16, BCM code pin number is 23 and wPi pin number is 4
+infrared_pin=16
+
+# I/O Pin connected to PIN#12, which can set be PWM mode
+buzzer_pin=12
+
+# I/O Pin connected to PIN#18, BCM code pin number is 24 and wPi pin number is 5
+relay_pin=18
+
+capture_times=2
+local_image="rpi_capture.jpg"
+
+def turn_relay(cmd):
+ if OFF == cmd:
+ print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) +" turn relay off");
+ GPIO.output(relay_pin, GPIO.LOW)
+ else:
+ GPIO.output(relay_pin, GPIO.HIGH)
+ print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) +" turn relay on");
+
+def sig_proc(signum, frame):
+ print("Catch stop signal and program exit now...")
+ GPIO.cleanup()
+ exit()
+
+
+def alarm_handler(signum, frame):
+ turn_relay(OFF)
+
+signal.signal(signal.SIGALRM, alarm_handler)
+signal.signal(signal.SIGINT, sig_proc)
+signal.signal(signal.SIGTERM, sig_proc)
+
+def module_int():
+
+ #Raspberry Python GPIO Initialise
+ GPIO.setwarnings(False)
+ GPIO.setmode(GPIO.BOARD)
+
+ # Initialise infrared GPIO port
+ GPIO.setup(infrared_pin, GPIO.IN)
+
+ # Initialise relay GPIO port
+ GPIO.setup(relay_pin, GPIO.OUT)
+
+ # Initialise camera library
+ pygame.init()
+ pygame.camera.init()
+
+
+def turn_buzzer_on():
+ GPIO.setup(buzzer_pin, GPIO.OUT)
+ p = GPIO.PWM(buzzer_pin, 2800)
+ #p.ChangeFrequency(2800)
+ #p.ChangeDutyCycle(50);
+
+ p.start(50)
+ time.sleep(1.5)
+ p.stop()
+
+ GPIO.setup(buzzer_pin, GPIO.IN)
+
+
+def ftp_connect(host, username, password):
+ ftp = FTP()
+ ftp.connect(host, 21)
+ ftp.login(username, password)
+ return ftp
+
+def upload_file(ftp, remotepath, localpath):
+ bufsize = 1024
+ fp = open(localpath, 'rb')
+ ftp.storbinary('STOR '+ remotepath , fp, bufsize)
+ fp.close()
+
+def detect_handler(channel):
+ print( time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + " Someone is closing on!")
+ #turn_buzzer_on()
+
+ turn_relay(ON)
+ signal.alarm(30)
+
+ camera = pygame.camera.Camera("/dev/video0",(1024,768))
+ camera.start()
+ time.sleep(3)
+
+ for i in range(capture_times):
+ #print("start camera capture image times [%d]" % (i+1));
+ image = camera.get_image()
+ pygame.image.save(image, local_image)
+
+ #print("Start FTP upload image file");
+ remote_image="StudioCapture_"+time.strftime('%Y%m%d_%H%M%S',time.localtime(time.time()))+".jpg"
+ ftp = ftp_connect("master.iot-yun.com", "raspberry", "raspberry@pi")
+ upload_file(ftp, remote_image, local_image)
+ ftp.quit()
+
+ print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) +" camere capture and ftp upload done");
+ time.sleep(2)
+
+ camera.stop()
+
+
+
+if __name__ == "__main__":
+ module_int()
+ GPIO.add_event_detect(infrared_pin, GPIO.RISING, detect_handler)
+
+ while True:
+ if GPIO.input(infrared_pin) == False:
+ print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" No one nearby!"
+
+ time.sleep(1);
+
--
Gitblit v1.9.1