def extra_telemetry(): tmp,pre,hum = bme280.readBME280All() return "{:.2f}".format(tmp) + ',' + "{:.5f}".format(pre) + ',' + "{:.5f}".format(hum)
time_now3 = t while True: if time.time() != t: rn = datetime.datetime.now() ltime = rn.strftime("%H:%M:%S") daydate = rn.strftime("%A, %d %B %Y") ser.write(b'time.txt=\"' + ltime.encode() + b'\"' + e) ser.write(b'daydate.txt=\"' + daydate.encode() + b'\"' + e) t = time.time() # Crude scheduler to get BME280 readings every 10 secs if time.time() >= time_now1 + 10: try: ltemp, lpres, lhum = readBME280All() ser.write(b'temp.txt=\"' + b'%.2f' % ltemp + b'C\"' + e) ser.write(b'hum.txt=\"' + b'%.2f' % lhum + b'%RH\"' + e) ser.write(b'pres.txt=\"' + b'%.1f' % lpres + b'hPa\"' + e) except: ser.write(b'temp.txt=\"No data\"' + e) ser.write(b'hum.txt=\"No data\"' + e) ser.write(b'pres.txt=\"No data\"' + e) time_now1 = time.time() # Crude scheduler to get Google calendar every 30 mins if time.time() >= time_now2 + 1800: try: tdyStr, tmwStr = getCal(myCalUrl) ser.write(b"cal.txt=\"" + tdyStr.encode() + tmwStr.encode() + b"\"" + e)
def main(self, num_samples, set_temperature, Father): # 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 VOL = readTempProfile(FILE_NAME)[0] print(VOL) self.NEXTION_NUM_SAMPLES = num_samples self.NEXTION_SET_temperature = set_temperature # import oven and multimeter if APP_OVEN_PRESENT: OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) OVEN.TTC_ON() OVEN.TTC_ENABLE_TEMP() 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" 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, ( "Time(s)\tSetTemp.(oC)\tActual Temp.(oC)\tHumidity(%)\tTemp.Sensor(oC)\tSample number\tCurrent(A)\tResistence(ohm)\r\n" )) t_start = time.time() for step in VOL: print(step) # setting the oven step_time = step[0] * 60 # step_time in seconds step_temp = float( format(float(self.NEXTION_SET_temperature) / 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 = self.NEXTION_SET_temperature 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 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), '.3E') R_Value = format(self.NEXTION_SET_VOLTAGE / float(I_Value), '.3E') print("Resistance:", R_Value) print("") REL.RelayDeSelect(i) # Persistency print('06 - Saving data...') CF.content(PATH, filename, (str(t_run), str(temp_set), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(I_Value), str(R_Value))) # create file for each sample CF.content(PATH, 'Sample' + str(i), (str(t_run), str(temp_set), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(I_Value), str(R_Value))) if APP_NEXTION_PRESENT: print('07 - Reading Display...') RE_VAL = set() DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x05\\x15\\x01\\xff\\xff\\xff']" in RE_VAL: DIS.write('t0.txt="Stop"') OVEN.TTC_OFF() sys.exit() elif "['e\\x05\\x14\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") os.system("sudo reboot") break print('07 - Updating Display...') if Father != None: Father.updateMultimeter([ temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, R_Value, i ]) t1 = datetime.datetime.now() if APP_OVEN_PRESENT: OVEN.TTC_OFF()
import bme280 (chip_id, chip_version) = bme280.readBME280ID() print "Chip ID :", chip_id print "Version :", chip_version temperature, pressure, humidity = bme280.readBME280All() print "Temperature : ", temperature, "C" print "Pressure : ", pressure, "hPa" print "Humidity : ", humidity, "%"
cam.framerate = 15 #cam.rotation = 270 #number of data points to collect over time loop_num = 100000 df = pd.DataFrame(data=np.zeros((loop_num, 7)), columns=['time', 'temp', 'press', 'rh', 'mq2', 'mq3', 'mq5']) save_df_path = '/media/pi/KINGSTON/sensor_df.csv' for i in range(loop_num): print('%i / %i' % (i + 1, loop_num)) #read BME280 temp, press, rh = bme280.readBME280All() temp_f = temp * (9 / 5) + 32 #read MCP3008 ADC mcp_output = read_mcp_all() mq2, mq3, mq5 = mcp_output[0], mcp_output[1], mcp_output[2] #print results print(time.ctime()) print('temp (C), (F): ' + format(temp) + ', ' + format(temp_f)) print('pressure (hPa): ' + format(press)) print('humidity (%): ' + format(rh)) print('MQ-X sensors: ' + format(np.around([mq2, mq3, mq5], decimals=5))) df.iloc[i] = [time.ctime(), temp, press, rh, mq2, mq3, mq5]
def read_external_pressure(): temperature, pressure, humidity = bme280.readBME280All() pressure = "{:.2f}".format(pressure) return pressure
def main(self, num_samples, set_temperature, setV, setF, Father): RE_VAL = set() # Initialize Relay REL = relay.Relay_module() REL.reset() # set PID parameters P = 15 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.94, ".2f")) else: self.NEXTION_NUM_SAMPLES = 8 self.NEXTION_SET_TEMP = 25 # import oven and multimeter if APP_OVEN_PRESENT: OVEN = VT4002_SM.VT4002(VT4002_IP) OVEN.startComm() if APP_DMM_196_PRESENT: LCR = LCR_Eth.LCR_Meter(LCR_IP, LCR_PORT) LCR.startComm() # create file and title CF = data_storage.create_file() test_mode = "Manual" equipment_Info = "VT-4002 + LCR-4192A" 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\tR\tX\tCP\tRP\r\n" ) t_start = time.time() while True: for i in range(self.NEXTION_NUM_SAMPLES): if APP_OVEN_PRESENT: # run oven) print("01 - Reading data from Oven...") temp = OVEN.read_temp() temp_set = temp[0] temp_real = temp[1] 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.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: FinalD = LCR.measure(setV, setF) print("LCR Reading: ", FinalD) CP = str(FinalD[0]) RP = str(FinalD[1]) R_value = str(FinalD[2]) X_value = str(FinalD[3]) else: CP = 0 RP = 0 R_value = 0 X_value = 0 REL.RelayDeSelect(i) # Persistency print("06 - Saving data...") print("") result1 = [] result2 = [] result1.append([ str(t_run), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(R_value), str(X_value), str(CP), str(RP) ]) CF.content(PATH, filename, result1) # create file for each sample result2.append([ str(t_run), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(R_value), str(X_value), str(CP), str(RP) ]) CF.content(PATH, 'Sample' + str(i), result2) Father.Update([ temp_set, temp_real, TEMP_sensor, humidity, t_run, R_value, X_value, 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.close() 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...")
def main(): global DEVICE global SMBUSID global LEDGPIO global SWITCHGPIO global INTERVAL global AUTOSHUTDOWN global THINGSPEAKKEY global THINGSPEAKURL # Check if config file exists and overwrite # default constants with new values if os.path.isfile('templogger.cfg') == True: print("Found templogger.cfg") f = open('templogger.cfg', 'r') data = f.read().splitlines() f.close() if data[0] == 'Temp Logger': print("Using templogger.cfg") DEVICE = int(data[1], 16) SMBUSID = int(data[2]) LEDGPIO = int(data[3]) SWITCHGPIO = int(data[4]) INTERVAL = int(data[5]) AUTOSHUTDOWN = int(data[6]) THINGSPEAKKEY = data[7] THINGSPEAKURL = data[8] # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(True) # LED on GPIO17 GPIO.setup(LEDGPIO, GPIO.OUT) # Switch on GPIO22 as input pulled LOW by default GPIO.setup(SWITCHGPIO, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Define what function to call when switch pressed GPIO.add_event_detect(SWITCHGPIO, GPIO.RISING, callback=switchCallback) bus = smbus.SMBus(SMBUSID) try: while True: GPIO.output(LEDGPIO, True) (temperature, pressure) = bme280.readBME280All() sendData(THINGSPEAKURL, THINGSPEAKKEY, 'field1', 'field2', 'field3', temperature, pressure, currentHumidity(bus)) # Toggle LED while we wait for next reading for i in range(0, INTERVAL * 60): GPIO.output(LEDGPIO, not GPIO.input(LEDGPIO)) time.sleep(1) except Exception as e: # Reset GPIO settings crash = [ "Error on line {}".format(sys.exc_info()[-1].tb_lineno), "\n", e ] print(crash) timeX = str(time.time()) with open("CRASH-" + timeX + ".txt", "w") as crashLog: for i in crash: i = str(i) crashLog.write(i) GPIO.cleanup() sys.exit(0)
def readBME(): temp, pres, humid = bme280.readBME280All() temp = round(float(temp),1) pres = round(float(pres),1) humid = round(float(humid),1) return (temp, pres, humid)
def main(): #Bring in constants global BME_ADDR global SMBUSID global INTERVAL global THINGSPEAKKEY global THINGSPEAKURL global errors global I2C_ADDR global LCD_WIDTH global pwm_live #Setup errors = 0 #exception counter GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) #Use BCM numbering for pins GPIO.setup(pushButton, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(PUMP, GPIO.OUT, initial=GPIO.LOW) GPIO.add_event_detect(pushButton, GPIO.BOTH) GPIO.add_event_callback(pushButton, BUTTON) bus = smbus.SMBus(SMBUSID) lcd_i2c.lcd_init() MAX31790.initializeMAX(1) try: sensW = bmp280.bmp280Wrapper() except: print BMP280 init FAIL print("Found BMP280 : (%s)" %hex(sensW.chipID)) sensW.resetSensor() # configuration byte contains standby time, filter, and SPI enable. bmp280Config = sensW.tSb62t5 | sensW.filt4 # measurement byte contains temperature + pressure oversampling and mode. bmp280Meas = sensW.osP16 | sensW.osT2 | sensW.modeNormal # Set sensor mode. sensW.setMode(config = bmp280Config, meas = bmp280Meas) while True: try: #pull data from BME lcd_i2c.lcd_string(" UPDATING ",LCD_LINE_1) #display "updating" during thingspeak update (temperature,pressure,humidity)=bme280.readBME280All(BME_ADDR) temperatureF=temperature*(9)/(5)+32 #send to thingspeak server sendData(THINGSPEAKURL,THINGSPEAKKEY,'field1','field2','field3','field4',temperature,pressure,humidity,temperatureF) sys.stdout.flush() # DO THINGS HERE while Waiting for next ThingsSpeak update for i in range(0,INTERVAL*6): (temperature,pressure,humidity)=bme280.readBME280All(BME_ADDR) temperatureF=temperature*(9)/(5)+32 rpm = MAX31790.readRPM(1) #BMP280 TEST sensW.readSensor() print("Pressure : %s Pa" %sensW.pressure) print("Temperature: %s C" %sensW.temperature) #Fan Speed Control Loop templog = "Temp = {:.2f} F | RPM = {:d}".format(temperatureF,rpm) + " | " if temperatureF > 82: MAX31790.setPWMTargetDuty(1, 30) # MAX fan speed templog = templog + "PWM = 70" pwm_live = 80 print templog elif temperatureF > 80: MAX31790.setPWMTargetDuty(1, 40) templog = templog + "PWM = 60" pwm_live = 60 print templog elif temperatureF > 76: MAX31790.setPWMTargetDuty(1, 50) templog = templog + "PWM = 50" pwm_live = 50 print templog elif temperatureF > 72: MAX31790.setPWMTargetDuty(1, 60) templog = templog + "PWM = 40" pwm_live = 40 print templog else: MAX31790.setPWMTargetDuty(1, 70) # MIN fan speed templog = templog + "PWM = 30" pwm_live = 30 print templog # Refresh LCD screen lcd_i2c.lcd_string("PWM = {:.0f} | [{}]".format(pwm_live, time.strftime("%H:%M")),LCD_LINE_1) #update the time lcd_i2c.lcd_string("Tach = {:d} rpm".format(rpm),LCD_LINE_2) lcd_i2c.lcd_string("Temp = {:.1f} F | {:.0f}C".format(temperatureF,temperature),LCD_LINE_3) lcd_i2c.lcd_string("Hum = {:.2f} %".format(humidity),LCD_LINE_4) time.sleep(10) #Error Handling except : errors += 1 print "err cnt: {:d} , delay 5s -> try again".format(errors) #lcd_i2c.lcd_string(" err = {:d} ERROR".format(errors),LCD_LINE_1) #display that an error occured time.sleep(5) continue
# datasheet for more details on the meanings of each mode (accuracy and power # consumption are primarily the differences). The default mode is STANDARD. #sensor = BMP085.BMP085(mode=BMP085.BMP085_ULTRAHIGHRES) UDP_IP = "127.0.0.1" UDP_PORT = 8056 sock = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP (chip_id, chip_version) = readBME280ID() print "Chip ID :", chip_id print "Version :", chip_version temperature,pressure,humidity = readBME280All() print "Temperature : ", temperature, "C" print "Pressure : ", pressure, "hPa" print "Humidity : ", humidity, "%" while(True): #pressure = sensor.read_pressure() temperature,pressure,humidity = readBME280All() pressure = pressure * 100 avgFilter.Update(pressure) if avgFilter.GetCount() % 50 == 0: #print('Temp = {0:0.2f} *C'.format(sensor.read_temperature())) #print('Pressure = {0:0.2f} Pa'.format(sensor.read_pressure())) #print('Altitude = {0:0.2f} m'.format(sensor.read_altitude())) #print('Sealevel Pressure = {0:0.2f} Pa'.format(sensor.read_sealevel_pressure()))
print(*pm25) print(*pm10) post_data = { 'pm2': round(sum(pm25) / len(pm25)), 'pm10': round(sum(pm10) / len(pm10)), 'date': time.time() } except: post_data = {'date': time.time()} t = list() p = list() rh = list() for i in range(0, 15): try: t1, p1, rh1 = bme280.readBME280All() except: t1, p1, rh1 = (-999, -999, -999) t.append(t1) p.append(p1) rh.append(rhcode(rh1)) time.sleep(1) for i in range(0, 5): try: rh1, t1 = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4) print("DHT: ", t1, rh1) except: rh1, t1 = (-999, -999) try: gpio.output(17, gpio.LOW) time.sleep(1)
uhr_2 = (244, 243, 242) frueh = (240, 239, 238, 237) vor_2 = (236, 235, 234) # Zeile 15 abends = (252, 253, 254, 255, 256, 257) mitternacht = (258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268) nachts = (264, 265, 266, 267, 268, 269) # Zeile 16 morgens = (287, 286, 285, 284, 283, 282, 281) warm = (280, 279, 278, 277) mittags = (276, 275, 274, 273, 272, 271, 270) # Start actual infinite while loop to run script while True: # check and light h temp, p, h = bme280.readBME280All() temp = int(temp) temperature = get_temperature(temp) temperature = temperature + es + ist + grad + warm # check brightness reload(brightness) from brightness import * # adjust brightness/color levels when wrong values input if l > 1: l = 1 if r > 255: r = 255 elif r < 0: r = 0 if g > 255:
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()
if values is not None and len(values) == 2: print("PM2.5: ", values[0], ", PM10: ", values[1], "for dummy") time.sleep(2) for t in range(15): values = cmd_query_data(); if values is not None and len(values) == 2: print("PM2.5: ", values[0], ", PM10: ", values[1]) time.sleep(2) pm25.append(values[0]) pm10.append(values[1]) print(*pm25) print(*pm10) post_data = {'pm2' : round(sum(pm25)/len(pm25)), 'pm10' : round(sum(pm10)/len(pm10)), 'date' : time.time(), 'station_id' : '273'} try: t1,p,rh = bme280.readBME280All() print ("I2C Interface ") print ("Temperature : ", t1, "C") print ("Pressure : ", p, "hPa") print ("Humidity : ", rh, "%") post_data['Pressure']=p except: print("There is no i2c temperature") try: rh, t = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4) post_data['temperature']=round(t,1) post_data['humidity']=round(rh,1) print (" DHT22: ") print ("Temperature : ", round(t,1), "C") print ("Humidity : ", round(rh,1), "%")
# Petr Lukas # July, 11 2017 # # Version 1.0 import subprocess from configparser import ConfigParser import urllib3 from CCS811_RPi import CCS811_RPi import time import json import requests from bme280 import readBME280All urllib3.disable_warnings() temperature, pressure, humidity = readBME280All(addr=0x76) ccs811 = CCS811_RPi() parser = ConfigParser() parser.read('/boot/configuration.data') lat = (parser.getfloat('airmonitor', 'lat')) long = (parser.getfloat('airmonitor', 'long')) sensor = (parser.get('airmonitor', 'sensor_model_co2')) co2_values = [] tvoc_values = [] INITIALBASELINE = False ''' MEAS MODE REGISTER AND DRIVE MODE CONFIGURATION 0b0 Idle (Measurements are disabled in this mode) 0b10000 Constant power mode, IAQ measurement every second
with open(output_tpv_name, 'a') as csvfile: csvwriter = csv.writer(csvfile) csvwriter.writerow(["TPV Data"]) #initalize first row of SKY data file with open(output_sky_name, 'a') as csvfile: csvwriter = csv.writer(csvfile) csvwriter.writerow(["SKY Data"]) try: # Main data collection loop while True: current_time = time.time() # keep track of time for each epoch elapsed_time = current_time - start_time tm = datetime.now().time() #Current Time temperature, pressure, humidity = bme280.readBME280All( ) # Data from TPH sensor data = gpsd.next() # data from the gps unit print("Data: ", str(data)) print("------------------------------") print("\n") # append to the data matrix in a naive quick way rows.append([count, temperature, pressure, humidity, data, tm]) #save a quick version to the backfile just in case we dont reach the final step with open(backup_name, 'w') as csvfile: csvwriter = csv.writer(csvfile) csvwriter.writerow(["Backup Data"]) csvwriter.writerow(["BACKUP-SESSION", "count: ", count]) csvwriter.writerows(rows) csvwriter.writerow(["BACKUP-SESSION", "count: ", count]) #break the loop if we finish the seconds if elapsed_time > seconds:
def timerEvent(self, e): #print e.timerId() if e.timerId()==self.timer.timerId(): # data refresh if self.velocitySensor <> None: if not self.velocitySensor.isConnected(): #print "Usuwanie czujnika predkosci" self.statusBar().showMessage('Utracono połaczenie z czujnikiem ' + str(self.velocitySensor.name)) self.velocitySensor.disconnect() self.velocitySensor = None if self.diffSensor <> None: if not self.diffSensor.isConnected(): #print "usuwanie czujnika roznicy cisnien" self.statusBar().showMessage('Utracono połaczenie z czujnikiem ' + str(self.diffSensor.name)) self.diffSensor.disconnect() self.diffSensor = None stream1Value = None stream2Value = None date = datetime.datetime.now().strftime("%d-%m-%Y") time = datetime.datetime.now().strftime("%H:%M:%S\t") self.dateTime.setText("Aktualna data i godzina:\t" + time + date) try: temperature,pressure,humidity = bme280.readBME280All() #self.statusBar().showMessage('Odczytano czujnik BME280') #print "Temperature : ", temperature, "C", #print "Pressure : ", pressure, "hPa", #print "Humidity : ", humidity, "%" self.temperatureValue.setText("{0:.2f}".format(temperature)) self.pressureValue.setText("{0:.2f}".format(pressure)) self.humidityValue.setText("{0:.2f}".format(humidity)) except IOError: self.setColorText(self.temperatureValue, "{0:.2f}".format(0), Qt.red) self.setColorText(self.pressureValue, "{0:.2f}".format(0), Qt.red) self.setColorText(self.humidityValue, "{0:.2f}".format(0), Qt.red) if self.velocitySensor <> None: self.temperatureCanalValue.setText("{0:.2f}".format(self.velocitySensor.temperature)) self.temperatureCanalValue.setToolTip(self.velocitySensor.temperatureDT.strftime("%H:%M:%S\t\t")) self.velocityValue.setText("{0:.2f}".format(self.velocitySensor.velocity)) self.velocityValue.setToolTip(self.velocitySensor.velocityDT.strftime("%H:%M:%S\t\t")) self.batteryDev1.setText("{0:.2f}".format(self.velocitySensor.battery)) self.batteryDev1.setToolTip(self.velocitySensor.batteryDT.strftime("%H:%M:%S\t\t")) else: self.temperatureCanalValue.setText("{0:.2f}".format(0)) self.velocityValue.setText("{0:.2f}".format(0)) self.batteryDev1.setText("{0:.2f}".format(0)) self.setColorText(self.temperatureCanalValue, "{0:.2f}".format(0), Qt.yellow) self.setColorText(self.velocityValue, "{0:.2f}".format(0), Qt.yellow) self.setColorText(self.batteryDev1, "{0:.2f}".format(0), Qt.yellow) if self.diffSensor <> None: self.pressureDiffValue.setText("{0:.2f}".format(self.diffSensor.differentialPressure)) self.pressureDiffValue.setToolTip(self.diffSensor.differentialPressureDT.strftime("%H:%M:%S\t\t")) self.batteryDev2.setText("{0:.2f}".format(self.diffSensor.battery)) self.batteryDev2.setToolTip(self.diffSensor.batteryDT.strftime("%H:%M:%S\t\t")) else: self.setColorText(self.pressureDiffValue, "{0:.2f}".format(0), Qt.yellow) self.setColorText(self.batteryDev2, "{0:.2f}".format(0), Qt.yellow) #self.pressureDiffValue.setText("{0:.2f}".format(0)) #self.batteryDev2.setText("{0:.2f}".format(0)) #self.batteryDev2.setStyleSheet('color: yellow') if self.velocitySensor <> None and self.diffSensor <> None: ro = 1.287 A = 0.06745867 roCanal = (101325.0+self.diffSensor.differentialPressure)*28.84/8314.0/(273.0+self.velocitySensor.temperature) m = self.velocitySensor.velocity*A*roCanal stream1Value = m/ro*3600 stream2Value = m/roCanal*3600 #print ro, A, roCanal, m, stream1Value, stream2Value self.stream1.setText("{0:.2f}".format(stream1Value)) self.stream2.setText("{0:.2f}".format(stream2Value)) self.streamKg.setText("{0:.2f}".format(m)) else: self.setColorText(self.stream1, "{0:.2f}".format(0), Qt.yellow) self.setColorText(self.stream2, "{0:.2f}".format(0), Qt.yellow) self.setColorText(self.streamKg, "{0:.2f}".format(0), Qt.yellow) #s = np.array([time]) #v = np.array([temperature]) #self.staticPlt.plot(s, v, pen='r', symbol='o') #X = int(temperature) #Y = int(humidity) #Z = int(pressure) if self.velocitySensor <> None: self.data.pop(0) self.data.append(self.velocitySensor.temperature) self.data2.pop(0) self.data2.append(self.velocitySensor.velocity) if self.diffSensor <> None: self.data3.pop(0) self.data3.append(self.diffSensor.differentialPressure/100.0) if self.velocitySensor <> None and self.diffSensor <> None: if stream1Value <> None and stream2Value <> None: self.dataStream.pop(0) self.dataStream.append(stream2Value) #xdata = np.array(data, dtype='float64') self.curve.setData(self.data) self.curve2.setData(self.data2) self.curve3.setData(self.data3) self.curveStream.setData(self.dataStream) elif e.timerId()==self.timerLogging.timerId(): # data logging GPIO.output(16, GPIO.LOW) date = datetime.datetime.now().strftime("%Y-%m-%d") time = datetime.datetime.now().strftime("%H:%M:%S") self.writer.writerow({self.fieldnames[0]: date, \ self.fieldnames[1]: time, \ self.fieldnames[2]: self.getCleanText(self.temperatureValue.text()), \ self.fieldnames[3]: self.getCleanText(self.humidityValue.text()), \ self.fieldnames[4]: self.getCleanText(self.pressureValue.text()), \ self.fieldnames[5]: self.getCleanText(self.temperatureCanalValue.text()), \ self.fieldnames[6]: self.getCleanText(self.velocityValue.text()), \ self.fieldnames[7]: self.getCleanText(self.pressureDiffValue.text()), \ self.fieldnames[8]: self.getCleanText(self.stream1.text()), \ self.fieldnames[9]: self.getCleanText(self.stream2.text()), \ self.fieldnames[10]: self.getCleanText(self.streamKg.text()) \ }) self.logCount += 1 self.statusBar().showMessage('Wpisano rekordów do pliku z danymi: '+str(self.logCount)) elif e.timerId()==self.timerGATTConnect.timerId(): #print adapters if self.velocitySensor == None or self.diffSensor == None: self.statusBar().showMessage('Wyszukiwanie urządzeń Bluetooth') devs = self.adapters[0].scan(timeout=3, run_as_root=True) #print devs self.statusBar().showMessage('Znaleziono urządzeń: ' + str(len(devs))) for dev in devs: #print "\tUrzadzenie ", dev["name"], " o adresie: ", dev["address"] if dev["name"].find('T405i')<>-1 or dev["name"].find('T410i')<>-1: self.statusBar().showMessage('Łączenie z czujnikiem ' + str(dev["name"])) try: newDevice = TestoDevice(dev["name"], dev["address"], self.adapters[1], self.statusBar()) self.velocitySensor = newDevice self.statusBar().showMessage('Połączono z czujnikiem ' + str(dev["name"])) except: self.statusBar().showMessage('BŁĄD łączenia z czujnikiem ' + str(dev["name"])) elif dev["name"].find('T510i')<>-1: self.statusBar().showMessage('Łączenie z czujnikiem ' + str(dev["name"])) try: newDevice = TestoDevice(dev["name"], dev["address"], self.adapters[2], self.statusBar()) self.diffSensor = newDevice self.statusBar().showMessage('Połączono z czujnikiem ' + str(dev["name"])) except: self.statusBar().showMessage('BŁĄD łączenia z czujnikiem ' + str(dev["name"]))
current_day = datetime.datetime.utcnow().day if logged_day != current_day: logged_day = current_day tipping_count = 0 optical_count = 0 tipping_bucket_file.close() optical_bucket_file.close() metdata_file.close() tipping_bucket_file, optical_bucket_file, metdata_file = open_dayfile() # See if it's time to read the T,RH,P and log it if so current_minute = datetime.datetime.utcnow().minute if current_minute != logged_minute: # Time to log! logged_minute = current_minute temperature, pressure, humidity = bme280.readBME280All() ts = datetime.datetime.utcnow().strftime('%H:%M') metdata_file.write("%s,%.2f,%.2f,%.2f\n" %(ts, temperature, pressure, humidity)) metdata_file.flush() tipping_bucket_file.flush() optical_bucket_file.flush() os.fsync(metdata_file.fileno()) os.fsync(tipping_bucket_file.fileno()) os.fsync(optical_bucket_file.fileno()) else: time.sleep(5) print("Checking to see if I need to log the T,RH,P sensor") while not q.empty(): print write_queue_element(q.get()) tipping_bucket_file.close()
def read_external_temperature(): temp_c, pressure, humidity = bme280.readBME280All() temp_f = (temp_c * 1.8) + 32 return "{:+.2f}".format(temp_c), "{:+.2f}".format(temp_f)
from bme280 import readBME280All from time import sleep print("---- STARTEN DER MESSWERTERFASSUNG VOM BME280 ----") while True: temperature, pressure, humidity = readBME280All() print("Temperatur : " + str(temperature) + " C") print("Luftdruck : " + str(pressure) + " hPa") print("Feuchtigkeit : " + str(humidity) + " %") print("--------------------------------------------------") sleep(2)
def bme_280(): temperature, pressure, humidity = bme280.readBME280All() return temperature, pressure, humidity
mydir = "/".join(os.path.abspath(__file__).split("/")[:-1]) logfiles = [ f for f in listdir(mydir + "/logs") if isfile(join(mydir + "/logs", f)) ] count = 0 while "log" + str(count) + ".csv" in logfiles: count += 1 logfile = mydir + "/logs/log" + str(count) + ".csv" print(logfile) nanonum = 0 t = 0 baseline_p = 0 for i in range(50): temp, p, h = readBME280All() baseline_p += p baseline_p /= 50 print( 'a["x"], a["y"], a["z"], g["x"], g["y"], g["z"], temp, p, nanonum, t, yaw, pitch, roll, altitude(relative), altitude(sea level)' ) with open(logfile, "w") as csvfile: csvwriter = csv.writer(csvfile, delimiter=",") csvwriter.writerow([ 'a["x"]', 'a["y"]', 'a["z"]', 'g["x"]', 'g["y"]', 'g["z"]', 'temp', 'p', nanonum, 't', 'yaw', 'pitch', 'roll', 'altitude(relative)', 'altitude(sea level)' ]) csvfile.close()
def poll_sensors(): timestamp = datetime.datetime.now().replace(microsecond=0).isoformat() temperature, pressure, humidity = readBME280All() return [timestamp, temperature, pressure, humidity, read_ppm()]
from device import ssd1306 from render import canvas from PIL import ImageFont from time import strftime, gmtime, sleep import subprocess device = ssd1306(port=2, address=0x3C) # display in port 2 with adress 0x3C font = ImageFont.load_default() # font default font_ra = ImageFont.truetype('OpenSans-Regular.ttf', 12) # font 1 font2 = ImageFont.truetype('fontawesome-webfont.ttf', 14) # font 2 font_cl = ImageFont.truetype('OpenSans-Regular.ttf', 32) # font 3 try: while True: temperature, pressure, humidity = bme280.readBME280All( ) #weather sensor initialization cmd = "hostname -I | cut -d\' \' -f1 | head --bytes -1" # command to get IP adress IP = subprocess.check_output(cmd, shell=True) with canvas(device) as draw: draw.text((0, 0), ("MSK"), font=font_ra, fill=255) # "MSK" draw.text((40, 0), strftime('%H : %M : %S'), font=font_ra, fill=255) # time line to display draw.text((0, 16), unicode("Дата", 'utf-8'), font=font_ra, fill=255) # "Data" in Russian language draw.text((40, 16), strftime('%d . %m . %y'),
def main(self, num_samples, 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] # Load Profile TP = readTempProfile(FILE_NAME)[0] print(TP) # set PID parameters P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) # get sample number if APP_NEXTION_PRESENT: self.NEXTION_NUM_SAMPLES = num_samples else: self.NEXTION_NUM_SAMPLES = 8 # 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 = "Auto" 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() # temperature loop 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")) print(step) 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): # run oven if APP_OVEN_PRESENT: 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 = step_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) if APP_OVEN_PRESENT: OVEN.TTC_Set_Temp(target_temperature) # run time t_step = time.time() t_r = t_step - t_start t_run = format(t_r, "0.2f") 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 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...") t1 = datetime.datetime.now() if APP_OVEN_PRESENT: OVEN.TTC_OFF()
def main(self,num_samples, start_voltage, end_voltage, step_voltage, Father): # Initialize Relay self.REL = relay.Relay_module() self.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) print(TP) #sleep(5) P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) # import oven and multimeter if APP_OVEN_PRESENT: OVEN = VT4002_SM.VT4002(VT4002_IP) OVEN.startComm() if APP_Sourcemeter_PRESENT: self.Sourcemeter = Sourcemeter_sweep.SourceMeter(IP_addr, PORT) self.Sourcemeter.startComm() self.NEXTION_NUM_SAMPLES = num_samples self.NEXTION_START_VOLTAGE = start_voltage self.NEXTION_END_VOLTAGE = end_voltage self.NEXTION_STEP_VOLTAGE = step_voltage # create file and title self.CF = data_storage.create_file() self.test_mode = "Auto" self.equipment_Info = "VT-4002 + Sourcemeter-2602" # Driver_root = detect_file.File(folder)[1] Driver_root = "/home/pi/Desktop/" start_time = str(datetime.datetime.now()) self.folder_name = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") self.CF.folder(Driver_root, self.folder_name) t_start = time.time() for step in TP: #create folder for each step self.CF.folder_SM(step) # setting the oven step_time = step[1] * 60 # step_time in seconds step_temp = float(format(float(step[0]) / 0.94, ".2f")) print(step) #sleep(5) t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta(seconds=step_time) t3 = datetime.datetime.now() + datetime.timedelta(seconds=10) counter = 0 while (t1 < t2): # run oven print('01 - Reading data from Oven...') if APP_OVEN_PRESENT: temp = OVEN.read_temp() temp_set = temp[0] temp_real = temp[1] else: temp_set = format(1.00, "0.2f") temp_real = format(1.00, "0.2f") # 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) # run oven if APP_OVEN_PRESENT: pid.SetPoint = step_temp pid.setKp(float(P)) pid.setKi(float(I)) pid.setKd(float(D)) temp = OVEN.read_temp() temp_real = str(temp[1]) self.actual_temperature = temperature print("Sensor Temperature : " + str(self.actual_temperature)) pid.update(self.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.set_temp(target_temperature) if t1 > t3 and t1 < t2 and counter < 2: for i in range(self.NEXTION_NUM_SAMPLES): print('03 - Swtich Relay: %d' % i) self.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(":", "-") name = 'Sample' + str(i) locals()['v' + str(i)] = i PA = self.CF.sample_folder(name) self.CF.header_sm(PA, self.time_str, self.time_str, self.equipment_Info, self.test_mode, self.NEXTION_NUM_SAMPLES, self.NEXTION_START_VOLTAGE, self.NEXTION_END_VOLTAGE, self.NEXTION_STEP_VOLTAGE, 10) print('04 - Sourcemeter Reading...') # measurement of sourcemeter if APP_Sourcemeter_PRESENT: data = self.Sourcemeter.Measure('a', self.NEXTION_START_VOLTAGE, self.NEXTION_END_VOLTAGE, self.NEXTION_STEP_VOLTAGE, self) self.CF.content(PA, self.time_str, data) print('05 - Swtich Relay Unselection: %d' % i) self.REL.RelayDeSelect(i) if APP_NEXTION_PRESENT: print('07 - Reading Display...') RE_VAL = set() DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x05\\x15\\x01\\xff\\xff\\xff']" in RE_VAL: DIS.write('t0.txt="Stop"') OVEN.close() sys.exit() elif "['e\\x05\\x14\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") os.system("sudo reboot") print('07 - Updating Display...') Father.Update(self.updateList) counter += 1 t1 = datetime.datetime.now() if APP_OVEN_PRESENT: OVEN.close()