def __init__(self, app_log): """Initializes the Photo To Cloud System.""" try: self.processing = False self.start_time = datetime.now() self.app_log = app_log self.app_log.info("Initialising PhotoToCloud ") #initiate the database self.settings_database = ptc_database.SettingsDatabase( self.app_log) self.sequence_step_database = ptc_database.SequenceStepsDatabase( self.app_log) self.led_groups_database = ptc_database.LEDGroupsDatabase( self.app_log) #Setup the IO self.app_log.info("setting up IO") GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) ######### # self.buzzer = int(self.settings_database.get_setting('buzzer_gpio')) # self.switch = int(self.settings_database.get_setting('switch_gpio')) # self.app_log.info("Shutter GPIO = %s", self.switch) # self.shut_down = int(self.settings_database.get_setting('shutdown_gpio')) # self.status_light = int(self.settings_database.get_setting('status_light_index')) ######### self.buzzer = 25 # self.switch = 6 # self.shut_down = GPIO.setup(self.buzzer, GPIO.OUT) # GPIO.setup(self.switch, GPIO.IN, pull_up_down=GPIO.PUD_UP) # GPIO.setup(self.shut_down, GPIO.IN, pull_up_down=GPIO.PUD_UP) ######### # self.camera = ptc_camera.PTCCamera(self.app_log, self.sequence_step_database, self.settings_database) self.lights = lights.Lights(self.app_log, self.sequence_step_database, self.settings_database, self.led_groups_database) self.app_log.info("Init time is %d ms", self.millis()) except Exception as exception: self.app_log.exception('Exception: %s', exception) finally: success = True if not self.lights.initialised: success = False # if not self.camera.initialised: # success = False if success: self.lights.set_status(lights.GREEN) else: self.lights.set_status(lights.RED)
def __init__(self, app_log,*args, **kwargs): QThread.__init__(self) self.app_log = app_log self.settings_database = ptc_database.SettingsDatabase(self.app_log) self.signal_tx.connect(self.pin_read) self.status = "" self.camera = PiCamera() self.camera.resolution = (320, 240) self.camera.rotation = int(self.settings_database.get_setting('rotation')) self.camera.start_preview() self.brightness = 50
def __init__(self): self.log_formatter = logging.Formatter('%(asctime)s %(levelname)s %(funcName)s(%(lineno)d) %(message)s') self.my_handler = RotatingFileHandler('/home/pi/Desktop/code_1/logs/upload_files.log', mode='a', maxBytes=5*1024*1024, backupCount=1, encoding=None, delay=0) self.my_handler.setFormatter(self.log_formatter) self.my_handler.setLevel(logging.INFO) self.app_log = logging.getLogger('root') self.app_log.setLevel(logging.INFO) self.app_log.addHandler(self.my_handler) self.settings_database = ptc_database.SettingsDatabase(self.app_log) # self.settings_database.download() self.dbx = dropbox.Dropbox(self.settings_database.get_setting('dropbox_access_token')) self.app_log.info("Initialized dropbox") #initiate the database self.settings_database = ptc_database.SettingsDatabase(self.app_log) self.settings_database.download()
def run(self, *args, **kwargs): # super(serialThread, self).run(*args, **kwargs) self.settings_database1 = ptc_database.SettingsDatabase(self.app_log) lastswitch1 = 1 lastswitch2 = 1 lastswitch3 = 1 while(1): # switch1_value = GPIO.input(self.switch1) # switch2_value = GPIO.input(self.switch2) # switch3_value = GPIO.input(self.switch3) # if (switch1_value == GPIO.LOW and lastswitch1 == 1): # self.signal_rx.emit('1') # # if (switch2_value == GPIO.LOW and lastswitch2 == 1): # self.signal_rx.emit('2') # if (switch3_value == GPIO.LOW and lastswitch3 == 1): # self.signal_rx.emit('3') # lastswitch1 = switch1_value # lastswitch2 = switch2_value # lastswitch3 = switch3_value if self.status == "start": print("started") try: self.camera = PiCamera() self.camera.resolution = (320, 240) self.camera.rotation = int(self.settings_database1.get_setting('rotation')) print("pin_status:", int(self.settings_database1.get_setting('rotation'))) # self.camera.brightness = self.brightness self.camera.start_preview() except: pass self.status = "ok" elif self.status == "stop": print("stopeed") try: self.camera.close() self.signal_rx.emit('stopped') print("camera stopped and signal emitted") except Exception as e: print("Exception at camera close : ", e) self.status = "ok" elif "brightness" in self.status: s = self.status self.brightness = int(s.split("=")[1]) print("birghtness123 value set",self.brightness) self.status = "ok" self.msleep(200)
def __init__(self, BASE_PATH, QObject_parent=None): super().__init__(QObject_parent) self.SLEEP_TIME = 1 self.BASE_PATH = BASE_PATH self.log_formatter = logging.Formatter( '%(asctime)s %(levelname)s %(funcName)s(%(lineno)d) %(message)s') self.my_handler = RotatingFileHandler('{}'.format( os.path.join(self.BASE_PATH, 'logs/upload_files.log')), mode='a', maxBytes=5 * 1024 * 1024, backupCount=1, encoding=None, delay=0) self.my_handler.setFormatter(self.log_formatter) self.my_handler.setLevel(logging.INFO) self.app_log = logging.getLogger('root') self.app_log.setLevel(logging.INFO) self.app_log.addHandler(self.my_handler) self.settings_database = ptc_database.SettingsDatabase(self.app_log) # self.settings_database.download() print("Dropbox token ", self.settings_database.get_setting('dropbox_access_token')) self.dropbox_destination_folder = self.settings_database.get_setting( 'dropbox_destination_folder') print("dropbox_destination_folder: ", self.settings_database.get_setting('dropbox_destination_folder')) self.dbx = dropbox.Dropbox( self.settings_database.get_setting('dropbox_access_token'))
def run(self, *args, **kwargs): # super(serialThread, self).run(*args, **kwargs) time_diff = 60 time_diff_shudown = 10 * 60 low_battery_pin = 26 GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) count_down_poweroff = 5 shutdown_status = False poweroff_status = False restart_status = False self.brightness = 0 GPIO.setup(low_battery_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) prev_time = datetime.now() prev_time_shutdown = datetime.now() prev_updatetime = datetime.now() Prevtime_poweroff = datetime.now() prev_time_showtimer = datetime.now() self.phototocloud = PhotoToCloud(self.app_log) if (self.check_internet()): self.signal_rx.emit("connected") else: self.signal_rx.emit("disconnected") self.settings_database = ptc_database.SettingsDatabase(self.app_log) self.sequence_step_database = ptc_database.SequenceStepsDatabase( self.app_log) self.led_groups_database = ptc_database.LEDGroupsDatabase(self.app_log) self.sequences_database = ptc_database.SequencesDatabase(self.app_log) while (1): if self.status == "start": sequence_id = self.read_sequence_id() if sequence_id is not None: print("file read sequnce", sequence_id) print("Process started") # steps = 10 steps = self.phototocloud.start_process(sequence_id) print("total number of steself.brightnessps to process", steps) for step in range(0, steps): print(step, "started") self.phototocloud.process_step(step, sequence_id, self.brightness) self.signal_rx.emit(str(step)) self.phototocloud.stop_process() self.signal_rx.emit("finished") # self.phototocloud.short_beep() # self.phototocloud.short_beep() time.sleep(1) self.signal_rx.emit("backtomaainpage") self.status = "status" elif self.status == "exitfromapp": self.phototocloud.lights_all_off() self.status = "status" sys.exit(1) elif self.status == "turnofflight": self.phototocloud.lights_all_off() self.status = "status" elif self.status == "beepstart": self.phototocloud.beepstart() self.status = "status" elif self.status == "cancel": print("cancel signal got") poweroff_status = False restart_status = False count_down_poweroff = 5 sent_data = "Action Cancelled by User" self.signal_rx.emit(sent_data) self.status = "status" elif self.status == "download": print("download") self.download_database() self.status = "status" elif self.status == "status": pass elif self.status == "poweroff": poweroff_status = True Prevtime_poweroff = datetime.now() count_down_poweroff = 5 self.status = "status" elif self.status == "restart": restart_status = True Prevtime_poweroff = datetime.now() count_down_poweroff = 5 self.status = "status" elif type(self.status) is str: if "brightness" in self.status: s = self.status self.brightness = int(s.split("=")[1]) print("birghtness value set", self.brightness) self.status = "status" else: sequence_id = self.read_sequence_id() print("step for light source") self.phototocloud.led_step(int(self.status), sequence_id, self.brightness) self.status = "status" if poweroff_status == True: poweroff_diff = datetime.now() - Prevtime_poweroff if poweroff_diff.total_seconds() > 5: self.phototocloud.lights_all_off() print("sudo poweroff") os.system("sudo poweroff") else: hh = datetime.now() - prev_time_showtimer if hh.total_seconds() > 1: sent_data = "Shutting down in " + str( count_down_poweroff) self.signal_rx.emit(sent_data) prev_time_showtimer = datetime.now() count_down_poweroff -= 1 if restart_status == True: poweroff_diff = datetime.now() - Prevtime_poweroff if poweroff_diff.total_seconds() > 5: self.phototocloud.lights_all_off() print("sudo reboot") os.system("sudo reboot") else: hh = datetime.now() - prev_time_showtimer if hh.total_seconds() > 1: sent_data = "Restart in " + str(count_down_poweroff) self.signal_rx.emit(sent_data) prev_time_showtimer = datetime.now() count_down_poweroff -= 1 current_time = datetime.now() diff_time = current_time - prev_time if (diff_time.total_seconds()) > time_diff: if (self.check_internet()): self.signal_rx.emit("connected") else: self.signal_rx.emit("disconnected") prev_time = current_time low_battery_pin_value = GPIO.input(low_battery_pin) if (low_battery_pin_value == GPIO.LOW): if shutdown_status == False: shutdown_status = True prev_time_shutdown = datetime.now() else: ss = datetime.now() - prev_time_shutdown if (ss.total_seconds()) > time_diff_shudown: self.phototocloud.stop_process() os.system("sudo poweroff") dd = datetime.now() - prev_updatetime if dd.total_seconds() > 15: timeremaining = time_diff_shudown - ss.total_seconds() sent_data = "Low Battery " + str(int(timeremaining)) self.signal_rx.emit(sent_data) prev_updatetime = datetime.now() else: # self.signal_rx.emit("full mode") prev_time_shutdown = datetime.now() shutdown_status = False self.msleep(100)
def __init__(self, args, parent=None): super(MyMainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) if len(args) > 1: # self.resize(480, 640) self.showFullScreen() # self.setWindowFlags(QtCore.Qt.WindowStaysOnBottomHint) # self.showFullScreen() self.BASE_PATH = BASE_PATH self.log_formatter = logging.Formatter( '%(asctime)s %(levelname)s %(funcName)s(%(lineno)d) %(message)s') self.my_handler = RotatingFileHandler('{}'.format( os.path.join(self.BASE_PATH, 'logs/photo_to_cloud.log')), mode='a', maxBytes=5 * 1024 * 1024, backupCount=1, encoding=None, delay=0) self.my_handler.setFormatter(self.log_formatter) self.my_handler.setLevel(logging.INFO) self.app_log = logging.getLogger('root') self.app_log.setLevel(logging.INFO) self.app_log.addHandler(self.my_handler) # page set up self.main_page = 0 self.menu_page = 1 self.setting_page = 2 self.Led_sequence = 3 self.brightness = 4 self.screen_brightness = 5 self.Network_status = 6 self.password_input = 7 self.get_update = 8 self.shutdown_page = 9 self.camerastatus_page = 10 self.shutdowntatus_page = 11 self.step = 0 self.process_started = False self.pinThread = pin_status(self.app_log) self.pinThread.signal_rx.connect(self.pinDataEvent) self.pinThread.start() self.photo_thread = PhotoCloudThread(self.BASE_PATH, self.app_log) self.photo_thread.signal_rx.connect(self.photo_event) self.photo_thread.start() self.wifilist = [] self.wifiselected = "" self.sequence_list = [] self.sequence_id = [] self.sequence_selected = "" # self.phototocloud = PhotoToCloud() self.ui.menuButton.clicked.connect(self.menubuttonClicked) self.ui.menuNextbutton.clicked.connect(self.selectClicked) self.ui.settingsNextbutton.clicked.connect(self.settins_selectClicked) self.ui.nextWiFiButton.clicked.connect(self.wifi_selectClicked) self.ui.nextLedSeqButton.clicked.connect(self.sequence_selectClicked) self.ui.exitWifipassButton.clicked.connect( self.select_exitwifi_password) self.ui.menuExitButton.clicked.connect(self.backtomain) self.ui.exitImageBrightnessButton.clicked.connect( self.brightness_increase) self.ui.brightnessLessButton.clicked.connect(self.brightness_decrease) self.ui.selectImageBrightnessButton.clicked.connect( self.chage_image_brightness) self.ui.exitScreenBrightnessButton.clicked.connect( self.screen_brightness_increase) self.ui.lessScreenBrightnessButton.clicked.connect( self.screen_brightness_decrease) self.ui.selectScreenBrightnessButton.clicked.connect( self.chage_screen_brightness) # self.ui.getUpdateButton.clicked.connect(self.update_database) self.ui.lightSourcepushbutton.clicked.connect(self.light_source_update) self.ui.takePhotoButton.clicked.connect(self.process_light) self.ui.shutdownButton.clicked.connect(self.shutdownsystem) self.ui.restartButton.clicked.connect(self.restartsystem) # self.ui.lineEdit.clicked.connect(self.open_keyboard) # self.ui.lineEdit.installEventFilter(self) # self.ui.lineEdit.focusOutEvent() # self.ui.lineEdit.focusInEvent = MatchBoxLineEdit() # self.ui.lineEdit.setFocusPolicy(QtCore.Qt.StrongFocus) # self.ui.lineEdit.setFocus(True) self.ui.menuSelectButton.clicked.connect(self.nextClicked) self.ui.settingsSelectbutton.clicked.connect(self.nextClicked_settings) self.ui.selectWiFiButton.clicked.connect(self.nextClicked_wifi) self.ui.selectLedSeqButton.clicked.connect(self.nextClicked_sequence) self.ui.pushButton_6.clicked.connect(self.rescanNetwork) self.ui.exitAppButton.clicked.connect(self.exitApp) self.ui.settingsExitbutton.clicked.connect(self.backtomenu) self.ui.exitLedSeqButton.clicked.connect(self.backtomenu) self.ui.exitWiFiButton.clicked.connect(self.backtomenu) self.ui.exitUpdateButton.clicked.connect(self.backtomenu) self.ui.exitShutdownButton.clicked.connect(self.backtomenu) self.ui.saveWifipassButton.clicked.connect(self.save_wifi) self.ui.exitWiFiButton.clicked.connect(self.backtomenu) self.ui.cancelShutdownButton.clicked.connect( self.cancelActionShutDownOrRestart) self.ui.stopshutdown.clicked.connect( self.cancelActionShutDownOrRestart) self.ui.showKeyboardButton.clicked.connect(self.showKeyboard) self.ui.menuList.clicked.connect(self.menulistclicked) self.ui.settingsList.clicked.connect(self.settingslistclicked) self.ui.sequenceList.clicked.connect(self.sequencelistclicked) self.ui.wifiavailableList.clicked.connect(self.wifilistclicked) self.ui.updateSequenceButton.clicked.connect(self.update_database) # Database access self.processing = False self.start_time = datetime.now() # initiate the database self.settings_database = ptc_database.SettingsDatabase(self.app_log) self.sequence_step_database = ptc_database.SequenceStepsDatabase( self.app_log) self.led_groups_database = ptc_database.LEDGroupsDatabase(self.app_log) self.sequences_database = ptc_database.SequencesDatabase(self.app_log) self.ui.stackedWidget.setCurrentIndex(0) self.sequences = [] # self.ui.wifiavailableList.itemSelectionChanged.connect(self.selectionChanged) self.ui.statusInfo.setText("Waiting") self.set_sequnce_main_page() self.status_light_source = True self.light_source_update() time.sleep(1) self.startUploadFileThread()