Exemple #1
0
    def __init__(self, TP, Father, RE_VAL):
        Thread.__init__(self)
        # import oven and multimeter
        if APP_OVEN_PRESENT:
            self.OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)
            self.OVEN.TTC_ON()
            self.OVEN.TTC_ENABLE_TEMP()

        self.TP = TP
        self.RE_VAL = RE_VAL

        # set PID parameters
        self.P = 5
        self.I = 0
        self.D = 0

        self.pid = PID.PID(self.P, self.I, self.D)
        self.pid.setSampleTime(1)

        self.lock = threading.Lock()

        self.Father = Father

        self.t1 = 0
        self.t2 = 0
        self.t3 = 0
    def main(self, set_temp, Father):
        RE_VAL = set()

        self.set_temp = set_temp
        t_start = time.time()
        print("start")
        print(self.set_temp)

        OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)
        OVEN.TTC_ON()
        OVEN.TTC_ENABLE_TEMP()

        while True:
            t_now = time.time()
            t_run = t_now - t_start
            # setting the oven
            OVEN.TTC_Set_Temp(self.set_temp)

            # run oven
            print('01 - Reading data from Oven...')

            temp_set = str(format(OVEN.TTC_Read_SP_Temp(), "0,.2f"))
            temp_real = str(format(OVEN.TTC_Read_PV_Temp(), "0,.2f"))

            Father.updateOven([str(t_run), str(self.set_temp), temp_real])

            DE = str(DIS.read())
            # print (DE)
            RE_VAL.add(DE)
            # print (RE_VAL)

            if "['e\\x11\\x04\\x01\\xff\\xff\\xff']" in RE_VAL:
                print("Exiting")
                OVEN.TTC_OFF()
                RE_VAL.clear()
                DIS.write("page Device Select\xff\xff\xff")
                return

            elif "['e\\x11\\x05\\x01\\xff\\xff\\xff']" in RE_VAL:
                # DIS.write("rest\xff\xff\xff")
                RE_VAL.clear()
                DIS.write("page restart\xff\xff\xff")
                os.system("sudo reboot")

            time.sleep(1)
Exemple #3
0
    def main(self, Father):
        RE_VAL = set()
        print("start")
        TP = readTempProfile(FILE_NAME)[0]
        print(TP)

        OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)
        OVEN.TTC_ON()
        OVEN.TTC_ENABLE_TEMP()

        t_start = time.time()

        for step in TP:
            # setting the oven
            step_time = step[0] * 60  # step_time in seconds
            step_temp = float(format(float(step[1]), ".2f"))

            print(step)

            t1 = datetime.datetime.now()
            t2 = datetime.datetime.now() + datetime.timedelta(
                seconds=step_time)

            while (t1 < t2):
                # run oven
                print('01 - Reading data from Oven...')

                t_step = time.time()
                t_r = t_step - t_start
                t_run = format(t_r, "0.2f")

                temp_set1 = OVEN.TTC_Read_SP_Temp()
                temp_real1 = OVEN.TTC_Read_PV_Temp()
                temp_set = str(format(temp_set1, "0,.2f"))
                temp_real = str(format(temp_real1, "0,.2f"))

                OVEN.TTC_Set_Temp(step_temp)

                Father.updateOven([str(t_run), str(step_temp), temp_real])

                DE = str(DIS.read())
                # print (DE)
                RE_VAL.add(DE)
                # print (RE_VAL)

                if "['e\\x11\\x04\\x01\\xff\\xff\\xff']" in RE_VAL:
                    print("Exiting")
                    OVEN.TTC_OFF()
                    RE_VAL.clear()
                    DIS.write("page Device Select\xff\xff\xff")
                    return

                elif "['e\\x11\\x05\\x01\\xff\\xff\\xff']" in RE_VAL:
                    # DIS.write("rest\xff\xff\xff")
                    RE_VAL.clear()
                    DIS.write("page restart\xff\xff\xff")
                    os.system("sudo reboot")

                time.sleep(1)

                t1 = datetime.datetime.now()
    def main(self, num_samples, set_temperature, Father):
        RE_VAL = set()

        # Initialize Relay
        REL = relay.Relay_module()
        REL.reset()

        # set PID parameters
        P = 5
        I = 0
        D = 0

        pid = PID.PID(P, I, D)
        pid.setSampleTime(1)

        if APP_NEXTION_PRESENT:
            self.NEXTION_NUM_SAMPLES = num_samples
            self.NEXTION_SET_TEMP = float(format(float(set_temperature) / 0.84, ".2f"))
        else:
            self.NEXTION_NUM_SAMPLES = 8
            self.NEXTION_SET_TEMP = 25

        # import oven and multimeter

        if APP_OVEN_PRESENT:
            OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)
            OVEN.TTC_ON()
            OVEN.TTC_ENABLE_TEMP()

        if APP_DMM_196_PRESENT:
            Multimeter = DMM_196.DMM_196(DMM_IP, DMM_PORT)
            Multimeter.startComm()

        # create file and title
        CF = data_storage.create_file()
        test_mode = "Manual"
        equipment_Info = "TTC-4006 + DMM-196"
        Driver_root = detect_file.File(folder)[1]
        start_time = str(datetime.datetime.now())
        filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-")
        PATH = CF.folder(Driver_root, filename)
        CF.header(PATH, filename, start_time, equipment_Info, test_mode, self.NEXTION_NUM_SAMPLES)
        CF.content(PATH, filename,
                   ("Time(s)\tSetTemp.(oC)\tActual Temp.(oC)\tHumidity(%)\tTemp.Sensor(oC)\tSample number\tResistence(ohm)\r\n"))

        t_start = time.time()

        while True:
            # Relay reset
            REL.reset()

            for i in range(self.NEXTION_NUM_SAMPLES):
                if APP_OVEN_PRESENT:
                    # run oven)
                    print("01 - Reading data from Oven...")
                    temp_set1 = OVEN.TTC_Read_SP_Temp()
                    temp_real1 = OVEN.TTC_Read_PV_Temp()
                    temp_set = str(format(temp_set1, "0,.2f"))
                    temp_real = str(format(temp_real1, "0,.2f"))
                else:
                    temp_set = format(1.00, "0.2f")
                    temp_real = format(1.00, "0.2f")

                pid.SetPoint = self.NEXTION_SET_TEMP
                pid.setKp(float(P))
                pid.setKi(float(I))
                pid.setKd(float(D))

                # read temperature sensor
                # Humidity Sensor
                # If is not OK => apply non valid temp and humidity
                print("02 - Reading data from Humidity Sensor...")
                if APP_BME_280_PRESENT:
                    try:
                        temperature, pressure, humidity = bme280.readBME280All()

                        # Medicine
                        if ((humidity == None) or (temperature == None)):
                            humidity = BME_280_INVALID_HUMI
                            temperature = BME_280_INVALID_TEMP
                            print("02 - Reading data from Humidity Sensor (NONE! - ERROR)...")
                        elif ((type(humidity) == str) or (type(temperature) == str)):
                            humidity = BME_280_INVALID_HUMI
                            temperature = BME_280_INVALID_TEMP
                            print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...")

                    except:
                        humidity = BME_280_INVALID_HUMI
                        temperature = BME_280_INVALID_TEMP
                        print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...")

                else:
                    print("02 - Reading data from Humidity Sensor (DISABLED)...")
                    humidity = BME_280_INVALID_HUMI
                    temperature = BME_280_INVALID_TEMP

                HUMI_sensor = format(humidity, "0.2f")
                TEMP_sensor = format(temperature, "0.2f")
                print("02 - Reading data from Humidity Sensor: Temp(oC): ", TEMP_sensor)
                print("02 - Reading data from Humidity Sensor: Humi(%): ", HUMI_sensor)

                print("Sensor Temperature : ", str(TEMP_sensor))

                pid.update(TEMP_sensor)

                target_temperature = pid.output

                if target_temperature > 130:
                    target_temperature = 130
                elif target_temperature < -40:
                    target_temperature = -40
                else:
                    target_temperature = target_temperature

                print("PID set Temperature : ", str(target_temperature))
                print("Chamber real Temperature : ", temp_real)

                OVEN.TTC_Set_Temp(target_temperature)

                # run time
                t_step = time.time()
                t_run = format(t_step - t_start, "0.2f")

                # relay selection
                print("03 - Swtich Relay: %d" % i)
                REL.RelaySelect(i)
                sleep(RELAY_HOLDING_TIME)

                # run multimeter
                print("04- Multimeter DMM196 Reading...")
                if APP_DMM_196_PRESENT:
                    mval = Multimeter.read_resiatance()
                else:
                    mval = (i * float(t_run))

                R_value = str(mval)

                # relay reset
                print("05 - Swtich Relay Unselection: %d" % i)
                REL.RelayDeSelect(i)

                # Persistency
                print("06 - Saving data...")
                result1 = []
                result2 = []
                result1.append([str(t_run), str(temp_set), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i),
                                str(R_value)])
                CF.content(PATH, filename, result1)

                # create file for each sample
                result2.append([str(t_run), str(temp_set), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i),
                                str(R_value)])
                CF.content(PATH, 'Sample' + str(i), result2)

                Father.updateMultimeter([temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, R_value, i])

                DE = str(DIS.read())
                # print (DE)
                RE_VAL.add(DE)
                # print (RE_VAL)

                if "['e\\x0e\\x13\\x01\\xff\\xff\\xff']" in RE_VAL:
                    print("Exiting")
                    OVEN.TTC_OFF()
                    RE_VAL.clear()
                    DIS.write("page Device Select\xff\xff\xff")
                    return

                elif "['e\\x0e\\x14\\x01\\xff\\xff\\xff']" in RE_VAL:
                    # DIS.write("rest\xff\xff\xff")
                    RE_VAL.clear()
                    DIS.write("page restart\xff\xff\xff")
                    os.system("sudo reboot")

                print("07 - Updating Display...")
    def main(self, num_samples, set_temperature, start_freq, end_freq, set_voltage, Father):
        RE_VAL = set()

        # Initialize Relay
        REL = relay.Relay_module()
        REL.reset()

        # set PID parameters
        P = 5
        I = 0
        D = 0

        pid = PID.PID(P, I, D)
        pid.setSampleTime(1)

        self.NEXTION_NUM_SAMPLES = num_samples
        self.NEXTION_SET_TEMP = float(format(float(set_temperature) / 0.84, ".2f"))
        self.NEXTION_START_FREQ = start_freq
        self.NEXTION_END_FREQ = end_freq
        self.NEXTION_SET_VOLTAGE = set_voltage

        # import oven and multimeter
        if APP_OVEN_PRESENT:
            OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)
            OVEN.TTC_ON()
            OVEN.TTC_ENABLE_TEMP()

        if APP_IMP_PRESENT:
            IMP = Impedanz_4192A_Eth.Impedance_Analyser(IMP_IP, IMP_PORT)
            IMP.startComm()

        # create file and title
        CF = data_storage.create_file()
        test_mode = "Auto"
        equipment_Info = "TTC-4006 + IMP-4192A"
        Driver_root = detect_file.File(folder)[1]
        start_time = str(datetime.datetime.now())
        filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-")
        CF.folder(Driver_root, filename)

        t_start = time.time()

        t1 = datetime.datetime.now()
        t2 = datetime.datetime.now() + datetime.timedelta(seconds=20 * 60)

        while True:
            if APP_OVEN_PRESENT:
                # run oven)
                print("01 - Reading data from Oven...")
                temp_real = OVEN.TTC_Read_PV_Temp()
                temp_set = OVEN.TTC_Read_SP_Temp()
            else:
                temp_set = format(1.00, "0.2f")
                temp_real = format(1.00, "0.2f")

            pid.SetPoint = self.NEXTION_SET_TEMP
            pid.setKp(float(P))
            pid.setKi(float(I))
            pid.setKd(float(D))

            # read temperature sensor
            # Humidity Sensor
            # If is not OK => apply non valid temp and humidity
            print("02 - Reading data from Humidity Sensor...")
            if APP_BME_280_PRESENT:
                try:
                    temperature, pressure, humidity = bme280.readBME280All()

                    # Medicine
                    if ((humidity == None) or (temperature == None)):
                        humidity = BME_280_INVALID_HUMI
                        temperature = BME_280_INVALID_TEMP
                        print("02 - Reading data from Humidity Sensor (NONE! - ERROR)...")
                    elif ((type(humidity) == str) or (type(temperature) == str)):
                        humidity = BME_280_INVALID_HUMI
                        temperature = BME_280_INVALID_TEMP
                        print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...")

                except:
                    humidity = BME_280_INVALID_HUMI
                    temperature = BME_280_INVALID_TEMP
                    print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...")

            else:
                print("02 - Reading data from Humidity Sensor (DISABLED)...")
                humidity = BME_280_INVALID_HUMI
                temperature = BME_280_INVALID_TEMP

            HUMI_sensor = format(humidity, "0.2f")
            TEMP_sensor = format(temperature, "0.2f")
            print('02 - Reading data from Humidity Sensor: Temp(oC): ', TEMP_sensor)
            print('02 - Reading data from Humidity Sensor: Humi(%): ', HUMI_sensor)

            print("Sensor Temperature : ", str(TEMP_sensor))

            pid.update(float(TEMP_sensor))

            target_temperature = pid.output

            if target_temperature > 130:
                target_temperature = 130
            elif target_temperature < -40:
                target_temperature = -40
            else:
                target_temperature = target_temperature

            print("PID set Temperature : ", str(target_temperature))
            print("Chamber real Temperature : ", temp_real)

            OVEN.TTC_Set_Temp(target_temperature)

            t_step = time.time()
            while (t1 > t2):
                for i in range(self.NEXTION_NUM_SAMPLES):
                    # run time
                    t_run = format(t_step - t_start, "0.2f")

                    # relay selection
                    print("03 - Swtich Relay: %d" % i)
                    REL.RelaySelect(i)
                    sleep(RELAY_HOLDING_TIME)

                    # create folder for each sample
                    current_time = str(datetime.datetime.now())
                    self.time_str = current_time.replace(" ", "_").replace(".", "-").replace(":", "-")

                    Father.updateIMPSweep([temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, "Measureing", " ", i])

                    DE = str(DIS.read())
                    # print (DE)
                    RE_VAL.add(DE)
                    # print (RE_VAL)

                    if "['e\\x0f\\x1b\\x01\\xff\\xff\\xff']" in RE_VAL:
                        print("Exiting")
                        OVEN.TTC_OFF()
                        RE_VAL.clear()
                        DIS.write("page Device Select\xff\xff\xff")
                        return

                    elif "['e\\x0f\\x1c\\x01\\xff\\xff\\xff']" in RE_VAL:
                        # DIS.write("rest\xff\xff\xff")
                        RE_VAL.clear()
                        DIS.write("page restart\xff\xff\xff")
                        os.system("sudo reboot")

                    print("07 - Updating Display...")

                    # creat file
                    sample_time = str(datetime.datetime.now()).replace(" ", "_").replace(".", "-").replace(":", "-")
                    name = 'Sample' + str(i)
                    locals()['v' + str(i)] = i
                    PA = CF.sample_folder(name)
                    CF.header_imp(PA, self.time_str, self.time_str, equipment_Info, test_mode,
                                      self.NEXTION_START_FREQ,
                                      self.NEXTION_END_FREQ, self.NEXTION_SET_VOLTAGE)

                    # run multimeter
                    print("04- Multimeter DMM196 Reading...")
                    if APP_IMP_PRESENT:
                        data = IMP.sweep_measure(self.NEXTION_START_FREQ, self.NEXTION_END_FREQ,
                                                        self.NEXTION_SET_VOLTAGE)
                        CF.content(PA, self.time_str, data)

                    # relay reset
                    print("06 - Swtich Relay Unselection: %d" % i)
                    REL.RelayDeSelect(i)

            else:
                if APP_NEXTION_PRESENT:
                    # run time
                    t_run = format(t_step - t_start, "0.2f")

                    Father.updateIMPSweep([temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, "Waiting", " ", 0])

                    DE = str(DIS.read())
                    # print (DE)
                    RE_VAL.add(DE)
                    # print (RE_VAL)

                    if "['e\\x0f\\x1b\\x01\\xff\\xff\\xff']" in RE_VAL:
                        print("Exiting")
                        OVEN.TTC_OFF()
                        RE_VAL.clear()
                        DIS.write("page Device Select\xff\xff\xff")
                        return

                    elif "['e\\x0f\\x1c\\x01\\xff\\xff\\xff']" in RE_VAL:
                        # DIS.write("rest\xff\xff\xff")
                        RE_VAL.clear()
                        DIS.write("page restart\xff\xff\xff")
                        os.system("sudo reboot")

                    print("07 - Updating Display...")

                t1 = datetime.datetime.now()
    def main(self, num_samples, set_voltage, Father):
        RE_VAL = set()

        # Initialize Relay
        REL = relay.Relay_module()
        REL.reset()

        # detect file
        if APP_PEN_DRIVE:
            FILE_NAME = detect_file.File(folder)[0]
        else:
            FILE_NAME = "/home/pi/Desktop/Temperature_profile.txt"

        # Load Profile
        TP = readTempProfile(FILE_NAME)[0]
        print(TP)

        self.NEXTION_NUM_SAMPLES = num_samples
        self.NEXTION_SET_VOLTAGE = set_voltage

        # import oven and multimeter
        if APP_OVEN_PRESENT:
            OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)
            OVEN.TTC_ON()
            OVEN.TTC_ENABLE_TEMP()

        # set PID parameter
        P = 5
        I = 0
        D = 0

        pid = PID.PID(P, I, D)
        pid.setSampleTime(1)

        if APP_Sourcemeter_PRESENT:
            Sourcemeter = Keithley_2602_Eth.SourceMeter(SM_IP, SM_PORT)
            Sourcemeter.startComm()

        # create file and title
        CF = data_storage.create_file()
        test_mode = "Auto"
        head = []
        head.append([
            "Time(s)", "SetTemp.(oC)", "Actual Temp.(oC)", "Humidity(%)",
            "Temp.Sensor(oC)", "Sample number", "Current(A)", "Resistence(ohm)"
        ])
        equipment_Info = "TTC-4006 + Sourcemeter-2602"
        Driver_root = detect_file.File(folder)[1]
        start_time = str(datetime.datetime.now())
        filename = start_time.replace(" ", "_").replace(".",
                                                        "-").replace(":", "-")
        PATH = CF.folder(Driver_root, filename)
        CF.header(PATH, filename, start_time, equipment_Info, test_mode,
                  self.NEXTION_NUM_SAMPLES)
        CF.content(PATH, filename, head)

        t_start = time.time()

        for step in TP:
            print(step)
            # setting the oven
            step_time = step[0] * 60  # step_time in seconds
            step_temp = float(format(float(step[1]) / 0.84, ".2f"))

            t1 = datetime.datetime.now()
            t2 = datetime.datetime.now() + datetime.timedelta(
                seconds=step_time)

            while (t1 < t2):
                # Relay switching
                REL.reset()

                for i in range(self.NEXTION_NUM_SAMPLES):
                    if APP_OVEN_PRESENT:
                        # run oven)
                        print("01 - Reading data from Oven...")
                        temp_real = OVEN.TTC_Read_PV_Temp()
                        temp_set = OVEN.TTC_Read_SP_Temp()
                    else:
                        temp_set = format(1.00, "0.2f")
                        temp_real = format(1.00, "0.2f")

                    pid.SetPoint = step_temp
                    pid.setKp(float(P))
                    pid.setKi(float(I))
                    pid.setKd(float(D))

                    print("02 - Reading data from Humidity Sensor...")
                    if APP_BME_280_PRESENT:
                        try:
                            temperature, pressure, humidity = bme280.readBME280All(
                            )

                            # Medicine
                            if ((humidity == None) or (temperature == None)):
                                humidity = BME_280_INVALID_HUMI
                                temperature = BME_280_INVALID_TEMP
                                print(
                                    "02 - Reading data from Humidity Sensor (NONE! - ERROR)..."
                                )
                            elif ((type(humidity) == str)
                                  or (type(temperature) == str)):
                                humidity = BME_280_INVALID_HUMI
                                temperature = BME_280_INVALID_TEMP
                                print(
                                    "02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)..."
                                )

                        except:
                            humidity = BME_280_INVALID_HUMI
                            temperature = BME_280_INVALID_TEMP
                            print(
                                "02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)..."
                            )

                    else:
                        print(
                            "02 - Reading data from Humidity Sensor (DISABLED)..."
                        )
                        humidity = BME_280_INVALID_HUMI
                        temperature = BME_280_INVALID_TEMP

                    HUMI_sensor = format(humidity, "0.2f")
                    TEMP_sensor = format(temperature, "0.2f")
                    print("02 - Reading data from Humidity Sensor: Temp(oC): ",
                          TEMP_sensor)
                    print("02 - Reading data from Humidity Sensor: Humi(%): ",
                          HUMI_sensor)

                    print("Sensor Temperature : ", str(TEMP_sensor))

                    pid.update(float(TEMP_sensor))

                    target_temperature = pid.output

                    # limit oven temperature
                    if target_temperature > 180:
                        target_temperature = 180
                    elif target_temperature < -40:
                        target_temperature = -40
                    else:
                        target_temperature = target_temperature

                    OVEN.TTC_Set_Temp(target_temperature)

                    print("PID set Temperature : ", str(target_temperature))
                    print("Chamber real Temperature : ", temp_real)

                    # run time
                    t_step = time.time()
                    t_run = format(t_step - t_start, "0.2f")

                    REL.RelaySelect(i)
                    sleep(RELAY_HOLDING_TIME)

                    if APP_Sourcemeter_PRESENT:
                        fcurrent = Sourcemeter.Measure(
                            "a", self.NEXTION_SET_VOLTAGE)
                        print("Reading Sourcemeter:", i)
                    else:
                        fcurrent = (i * float(t_run))

                    I_Value = format(float(fcurrent), ".4E")

                    R_Value = format(self.NEXTION_SET_VOLTAGE / float(I_Value),
                                     ".4E")

                    print("Resistance:", R_Value)
                    print("")

                    REL.RelayDeSelect(i)

                    # Persistency
                    print("06 - Saving data...")
                    result1 = []
                    result2 = []
                    result1.append([
                        str(t_run),
                        str(step[1]),
                        str(temp_real),
                        str(HUMI_sensor),
                        str(TEMP_sensor),
                        str(i),
                        str(I_Value),
                        str(R_Value)
                    ])
                    CF.content(PATH, filename, result1)

                    # create file for each sample
                    result2.append([
                        str(t_run),
                        str(step[1]),
                        str(temp_real),
                        str(HUMI_sensor),
                        str(TEMP_sensor),
                        str(i),
                        str(I_Value),
                        str(R_Value)
                    ])
                    CF.content(PATH, 'Sample' + str(i), result2)

                    Father.updateMultimeter([
                        temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run,
                        R_Value, i
                    ])

                    DE = str(DIS.read())
                    # print (DE)
                    RE_VAL.add(DE)
                    # print (RE_VAL)

                    if "['e\\x0e\\x13\\x01\\xff\\xff\\xff']" in RE_VAL:
                        print("Exiting")
                        OVEN.TTC_OFF()
                        RE_VAL.clear()
                        DIS.write("page Device Select\xff\xff\xff")
                        return

                    elif "['e\\x0e\\x14\\x01\\xff\\xff\\xff']" in RE_VAL:
                        # DIS.write("rest\xff\xff\xff")
                        RE_VAL.clear()
                        DIS.write("page restart\xff\xff\xff")
                        os.system("sudo reboot")

                    print("07 - Updating Display...")

                t1 = datetime.datetime.now()

        if APP_OVEN_PRESENT:
            OVEN.TTC_OFF()
    def main(self):
        print("start")
        TP = readTempProfile(FILE_NAME)[0]
        print(TP)

        OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT)

        P = 5
        I = 0
        D = 0

        pid = PID.PID(P, I, D)
        pid.setSampleTime(1)

        t_start = te.time()

        for step in TP:
            # setting the oven
            step_time = step[0] * 60  # step_time in seconds
            step_temp = float(format(float(step[1]) / 0.84, ".2f"))

            start_time = str(datetime.datetime.now())
            #filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") + "_P_5"
            filename = "PID_15" + "_" + start_time.replace(" ", "_").replace(
                ".", "-").replace(":", "-")
            op = open("/home/pi/Desktop/" + filename + ".txt", "a")
            op.write(
                "Time(s)\tSetTemp.(oC)\tActual Temp.(oC)\tTemp.Sensor(oC)\r\n")
            op.close()

            print(step)

            t1 = datetime.datetime.now()
            t2 = datetime.datetime.now() + datetime.timedelta(
                seconds=step_time)

            while (t1 < t2):
                t_step = te.time()
                t_r = t_step - t_start
                t_run = format(t_r, "0.2f")

                # run oven
                print('01 - Reading data from Oven...')

                t_step = time.time()
                t_r = t_step - t_start
                t_run = format(t_r, "0.2f")

                pid.SetPoint = step_temp
                pid.setKp(float(P))
                pid.setKi(float(I))
                pid.setKd(float(D))

                temp_set1 = OVEN.TTC_Read_SP_Temp()
                temp_real1 = OVEN.TTC_Read_PV_Temp()
                temp_set = str(format(temp_set1, "0,.2f"))
                temp_real = str(format(temp_real1, "0,.2f"))

                actual_temperature = bme280.readBME280All()[0]

                print("Sensor Temperature : " + str(actual_temperature))

                pid.update(actual_temperature)

                target_temperature = pid.output

                if target_temperature > 130:
                    target_temperature = 130
                elif target_temperature < -40:
                    target_temperature = -40
                else:
                    target_temperature = target_temperature

                print("PID set Temperature : " + str(target_temperature))
                print("Chamber real Temperature : " + temp_real)

                OVEN.TTC_Set_Temp(target_temperature)

                print('Saving data...')
                op = open("/home/pi/Desktop/" + filename + ".txt", "a")
                op.writelines([
                    str(t_run), "\t",
                    str(target_temperature), "\t", temp_real, "\t",
                    str(actual_temperature), "\r\n"
                ])
                op.close()

                time.sleep(1)

                t1 = datetime.datetime.now()