Example #1
0
    def __init__(self, config):
        self.out = Output(config)
        self.cfg = config

        self.camera = picamera.PiCamera()
        self.camera.hflip = config.get('global', 'hflip')
        self.camera.vflip = config.get('global', 'vflip')
        self.camera.resolution = (config.getint('global', 'width'),config.getint('global', 'height'))
Example #2
0
    def __init__(self, config):
        self.out = Output(config)
        self.cfg = config
        self.cam = Camera(config)

        self.GPIO_PIR = None if config.get('global', 'pin_pir') is '' else int(config.get('global', 'pin_pir'))
        self.GPIO_LED = None if config.get('global', 'pin_led') is '' else int(config.get('global', 'pin_led'))
        GPIO.setmode(GPIO.BOARD)
        # Set pin as input
        GPIO.setup(self.GPIO_PIR, GPIO.IN)
        self.out.msg('Setting pin %s for PIR sensor' % self.GPIO_PIR, DEBUG)
        # Set up pin for LED
        if self.GPIO_LED:
            GPIO.setup(self.GPIO_LED, GPIO.OUT)
            self.out.msg('Setting pin %s for LED diode' % self.GPIO_LED, DEBUG)
            self.blink(4)
Example #3
0
class Sensor():
    cfg = None
    cam = None
    prevState = False
    currState = False
    GPIO_PIR = None
    GPIO_LED = None
    start_time = None

    def __init__(self, config):
        self.out = Output(config)
        self.cfg = config
        self.cam = Camera(config)

        self.GPIO_PIR = None if config.get('global', 'pin_pir') is '' else int(config.get('global', 'pin_pir'))
        self.GPIO_LED = None if config.get('global', 'pin_led') is '' else int(config.get('global', 'pin_led'))
        GPIO.setmode(GPIO.BOARD)
        # Set pin as input
        GPIO.setup(self.GPIO_PIR, GPIO.IN)
        self.out.msg('Setting pin %s for PIR sensor' % self.GPIO_PIR, DEBUG)
        # Set up pin for LED
        if self.GPIO_LED:
            GPIO.setup(self.GPIO_LED, GPIO.OUT)
            self.out.msg('Setting pin %s for LED diode' % self.GPIO_LED, DEBUG)
            self.blink(4)

    def led_enable(self):
        if self.GPIO_LED:
            GPIO.output(self.GPIO_LED, True)
            self.out.msg('Enabling LED diode at pin %s' % self.GPIO_LED, DEBUG)

    def led_disable(self):
        if self.GPIO_LED:
            GPIO.output(self.GPIO_LED, False)
            self.out.msg('Disabling LED diode at pin %s' % self.GPIO_LED, DEBUG)

    def blink(self, number):
        for i in range(0,number):
            self.led_enable()
            time.sleep(0.1)
            self.led_disable()
            time.sleep(0.1)

    def movement(self):
        self.start_time = time.time()
        self.led_enable()
        if self.cam:
            self.cam.start_recording()

    def quiet(self):
        if self.cam:
            self.cam.stop_recording()
        self.led_disable()
        self.out.msg('Detected movement for %s seconds' % (time.time() - self.start_time), DEBUG)

    def settledown(self):
        self.out.msg('Waiting for PIR to settle...', DEBUG)
        # Loop until PIR output is 0
        while GPIO.input(self.GPIO_PIR)==1:
            self.currState = 0
        self.out.msg('... Ready', DEBUG)

    def sense(self):
        try:
            if self.cfg.getboolean('global', 'pin_pir_settle'):
                self.settledown()

            while True:
                time.sleep(0.1)
                self.prevState = self.currState
                self.currState = GPIO.input(self.GPIO_PIR)

                if self.currState != self.prevState:
                    newState = "HIGH" if self.currState else "LOW"
                    self.out.msg("GPIO pin %s is %s" % (self.GPIO_PIR, newState), DEBUG)

                    if self.currState:
                        self.movement()
                    else:
                        self.quiet()

        except KeyboardInterrupt:
            self.out.msg("Keyboard Interrupted...", INFO)
            # Reset GPIO settings
            GPIO.cleanup()
Example #4
0
class Camera():
    cfg = None
    camera = None
    out = None

    def __init__(self, config):
        self.out = Output(config)
        self.cfg = config

        self.camera = picamera.PiCamera()
        self.camera.hflip = config.get('global', 'hflip')
        self.camera.vflip = config.get('global', 'vflip')
        self.camera.resolution = (config.getint('global', 'width'),config.getint('global', 'height'))

    def getFileName(self, extension='.h264'):
        directory = self.out.getDir()
        time = str(datetime.datetime.now().strftime("%H_%M_%S"))
        return directory + time + extension

    def capture_image(self):
        fileName = self.getFileName(extension='.jpg')
        self.out.msg('Picture preview', DEBUG)
        self.camera.start_preview()
        self.out.msg('Picture capture: %s' % fileName, DEBUG)
        self.camera.capture(fileName)
        self.out.msg('Picture captured', INFO)

    def capture_sequence(self):
        fileName = self.getFileName(extension='__{counter:03d}.jpg')
        self.out.msg('Picture sequence preview', DEBUG)
        self.camera.start_preview()
        self.out.msg('Picture sequence recording: %s' % fileName, DEBUG)
        self.camera.capture_continuous(fileName)

    def capture_video(self):
        fileName = self.getFileName()
        self.out.msg('Video preview', DEBUG)
        self.camera.start_preview()
        self.out.msg('Video recording: %s' % fileName, DEBUG)
        self.camera.start_recording(fileName)


    def start_recording(self):
        self.out.msg('Initiating recording', DEBUG)

        if self.cfg.get('global', 'type') == 'image':
            self.capture_image()
        if self.cfg.get('global', 'type') == 'image_sequence':
            self.capture_squence()
        if self.cfg.get('global', 'type') == 'video':
            self.capture_video()

    def stop_recording(self):
        if self.cfg.get('global', 'type') in ('image_sequence', 'video'):
            self.camera.stop_preview()
            self.camera.stop_recording()
            self.out.msg('Finished recording', INFO)