예제 #1
0
 def start(self):
     pir = MotionSensor(self._pin)
     try:
         pir.when_motion = self.motion
         self.interrupted.wait()
     finally:
         pir.close()
         print('Shutdown gracefully.')
        camera.close()
        text = msg.as_string()
        mail.send_email(server_mail,email_user,email_sender,password_sender,text)

def create_folder_drive(service,mimeType,namefolder):
    flag, id_folder = qs.query_files(service,mimeType)
    if flag:
        print('Folder exists')
    else:
        id_folder = qs.create_folder(service,namefolder)
    return id_folder

try:
    service = qs.main()
    id_folder = create_folder_drive(service,mimeType,name_folder)
    msg = mail.header(email_user,email_sender,subject,body)
    while True:

        pir.wait_for_motion()
        print('Motion detected')
        GPIO.output(PIN_LED,GPIO.HIGH)
        photo_camera(service,id_folder)
        pir.wait_for_no_motion()
        print('Wait for motion')
        GPIO.output(PIN_LED,GPIO.LOW)

finally:
    print('This is the finally')
    pir.close()

예제 #3
0
        '--shutdown_after_seconds',
        required=False,
        default=5 * 60,
        help=
        "In seconds, how long to wait after no motion is detected to shut down the LED. (default: 5 * 60)"
    )
    parser.add_argument(
        '--rescan_after_seconds',
        required=False,
        default=1,
        help="In seconds, how long to wait between motion checks. (default: 1)"
    )
    args = parser.parse_args()
    sensor = MotionSensor(args.sensor_pin)
    led = LED(args.led_pin)
    detection_led = LED(args.detection_led_pin)
    while True:
        try:
            turn_on_and_wait(
                sensor=sensor,
                led=led,
                detection_led=detection_led,
                shutdown_after_seconds=int(args.shutdown_after_seconds),
                rescan_after_seconds=int(args.rescan_after_seconds))
        except KeyboardInterrupt:
            print("Ending the program.")
            sensor.close()
            led.close()
            detection_led.close()
            break
예제 #4
0
class RaspiGpioSensor(MotionDetectorImpl):
    """ Class for wrapping python motion sensor
    """
    def __init__(self, settings: RaspiGpioSensorSettings) -> None:
        super().__init__()

        LOGGER.info(f"Using motion sensor on pin {settings.gpio_pin_number}")
        self.__motion_sensor = GPIOMotionSensor(
            pin=settings.gpio_pin_number,
            queue_len=settings.queue_length,
            sample_rate=settings.sample_rate,
            threshold=settings.threshold)

        self.__settings = settings
        self.__motion_sensor.when_activated = self.__when_activated
        self.__motion_sensor.when_deactivated = self.__when_deactivated
        self.__handler: Optional[Callable[..., None]] = None

        self.__led: Optional[LED] = None
        if settings.led_gpio_pin_number > 0:
            self.__led = LED(settings.led_gpio_pin_number)

        # store activation status
        self._activated = False

    def register_handler(self, handler: Callable[..., None]) -> None:
        LOGGER.debug("Registering motion_sensor callback")
        self.__handler = handler

    def shutdown(self) -> None:
        LOGGER.info("Shutting down")
        # shutdown motion sensor thread and join
        self.__motion_sensor.close()

    @property
    def id(self) -> int:
        return self.__settings.gpio_pin_number

    def __when_activated(self) -> None:
        if self.disabled:
            LOGGER.debug("Sensor disabled, activation signal ignored")
            return

        self._activated = True
        LOGGER.debug("Sensor activated")

        if self.__led:
            self.__led.on()

        if self.__handler:
            self.__handler()

    def __when_deactivated(self) -> None:
        # when disabled, still check activation flag - in case of disable between activation cycle
        if self.disabled and not self._activated:
            LOGGER.debug("Sensor disabled, deactivation signal ignored")
            return

        self._activated = False
        LOGGER.debug("Sensor deactivated")

        if self.__led:
            self.__led.off()