コード例 #1
0
    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)
コード例 #2
0
 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
コード例 #3
0
    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()
コード例 #4
0
    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)
コード例 #5
0
    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'))
コード例 #6
0
    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)
コード例 #7
0
ファイル: test_main.py プロジェクト: DimitarTerzov/live_view
    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()