def __init__(self): gpio.setwarnings(False) gpio.setmode(gpio.BOARD) self.logger = logger.Logger() self.config = config.Config() self.config.read_config() self.cameras_switcher = cameras_switcher.CamerasSwitcher(gpio) self.pi_camera = PiCamera() self.pi_camera.resolution = (1920, 1080) self.protected_areas = protected_areas.ProtectedAreas(self.logger, gpio, self.cameras_switcher, self.pi_camera) self.modem = modem.Modem(self.logger) self.email = email_sender.EmailSender(self.logger, self.config) self.sms = sms.Sms(self.config, self.email) self.detectors_controller = detectors.Detectors(self.config, self.protected_areas) self.avail_space_controller = avail_space.AvailSpace(self.logger) self.alarm_controller = alarm.Alarm( self.logger, self.config, self.avail_space_controller, self.detectors_controller, self.protected_areas, self.sms, self.email)
def setUp(self): self.logger = logging.getLogger('MotionNotify') self.logger.level = logging.DEBUG self.logger.addHandler(logging.StreamHandler(sys.stdout)) self.config = config_mod.Config("../motion-notify.cfg") self.config.set_on_event_start_event_action_list("SmtpEmailNotifyAction:if_active") self.config.set_on_picture_save_event_action_list( "GoogleDriveUploadAction:always,SmtpEmailNotifyAction:if_active") self.config.set_on_movie_end_event_action_list("SmtpEmailNotifyAction:if_active") pass
def bottle_worker(host, port): bottle.run(host=host, port=port, server="gevent") if __name__ == "__main__": # Create folders if needed console.printn("> Checking folders...") paths = [".data"] for i in paths: if not os.path.exists(i): os.makedirs(i, 0o770) console.done() # Load and check config.json console.printn("> Loading config file...") glob.config = config.Config() # TODO: Use exceptions if glob.config.status != config.ConfigStatus.VALID: console.warning() if glob.config.status == config.ConfigStatus.DOESNT_EXIST: console.colored("> The config file doesn't exist", bcolors.YELLOW) elif glob.config.status == config.ConfigStatus.INVALID: console.colored("> The config file has an invalid structure", bcolors.YELLOW) elif glob.config.status == config.ConfigStatus.INVALID_SYNTAX: console.colored("> Couldn't parse config.json", bcolors.YELLOW) else: console.colored("> Unknown error", bcolors.YELLOW) yn = input("> Do you want to generate a default config.json? (y/n): ")
logger.debug("All events actions handled...") def __init__(self, config_obj, motion_event_obj): logger.debug("Initializing...") self.config_obj = config_obj self.motion_event_obj = motion_event_obj self.is_system_active = False self.handle_event() if __name__ == '__main__': logger.info("Motion Notify script started") try: if len(sys.argv) < 6: exit( 'Motion Notify - Usage: motion-notify.py {config-file-path} {media-file-path} {event-type on_event_start, on_picture_save or on_movie_end} {timestamp} {event_id} {file_type} ') cfg_path = sys.argv[1] if not os.path.exists(cfg_path): exit('Config file does not exist [%s]' % cfg_path) motion_event_obj = motion_event_mod.MotionEvent(sys.argv[2], event_type_mod.EventType[sys.argv[3]], sys.argv[4], sys.argv[5], sys.argv[6]) MotionNotify(config_mod.Config(cfg_path), motion_event_obj) except Exception as e: logger.error("Initialization error..." + e.__str__()) exit('Error: [%s]' % e)