X-Git-Url: https://zdv2.bktei.com/gitweb/EVA-2020-02-2.git/blobdiff_plain/ec0759414b8c76c42fe99e1ac9fcd2146899d545..8a7d81b6e515c44a2aec4172db1fb40ef2930183:/examples/all-in-one.py diff --git a/examples/all-in-one.py b/examples/all-in-one.py index 413b099..74b4958 100755 --- a/examples/all-in-one.py +++ b/examples/all-in-one.py @@ -8,7 +8,7 @@ import ST7735 import ltr559 from bme280 import BME280 -from pms5003 import PMS5003 +from pms5003 import PMS5003, ReadTimeoutError as pmsReadTimeoutError from enviroplus import gas from subprocess import PIPE, Popen from PIL import Image @@ -84,7 +84,7 @@ def display_text(variable, data, unit): # Get the temperature of the CPU for compensation def get_cpu_temperature(): - process = Popen(['vcgencmd', 'measure_temp'], stdout=PIPE) + process = Popen(['vcgencmd', 'measure_temp'], stdout=PIPE, universal_newlines=True) output, _error = process.communicate() return float(output[output.index('=') + 1:output.rindex("'")]) @@ -93,7 +93,7 @@ def get_cpu_temperature(): # temperature down, and increase to adjust up factor = 0.8 -cpu_temps = [0] * 5 +cpu_temps = [get_cpu_temperature()] * 5 delay = 0.5 # Debounce the proximity tap mode = 0 # The starting mode @@ -130,7 +130,7 @@ try: # One mode for each variable if mode == 0: - variable = "temperature" + # variable = "temperature" unit = "C" cpu_temp = get_cpu_temperature() # Smooth out with some averaging to decrease jitter @@ -138,70 +138,82 @@ try: avg_cpu_temp = sum(cpu_temps) / float(len(cpu_temps)) raw_temp = bme280.get_temperature() data = raw_temp - ((avg_cpu_temp - raw_temp) / factor) - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 1: - variable = "pressure" + # variable = "pressure" unit = "hPa" data = bme280.get_pressure() - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 2: - variable = "humidity" + # variable = "humidity" unit = "%" data = bme280.get_humidity() - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 3: - variable = "light" + # variable = "light" unit = "Lux" if proximity < 10: data = ltr559.get_lux() else: data = 1 - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 4: - variable = "oxidised" + # variable = "oxidised" unit = "kO" data = gas.read_all() data = data.oxidising / 1000 - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 5: - variable = "reduced" + # variable = "reduced" unit = "kO" data = gas.read_all() data = data.reducing / 1000 - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 6: - variable = "nh3" + # variable = "nh3" unit = "kO" data = gas.read_all() data = data.nh3 / 1000 - display_text(variable, data, unit) + display_text(variables[mode], data, unit) if mode == 7: - variable = "pm1" + # variable = "pm1" unit = "ug/m3" - data = pms5003.read() - data = data.pm_ug_per_m3(1.0) - display_text(variable, data, unit) + try: + data = pms5003.read() + except pmsReadTimeoutError: + pass + else: + data = data.pm_ug_per_m3(1.0) + display_text(variables[mode], data, unit) if mode == 8: - variable = "pm25" + # variable = "pm25" unit = "ug/m3" - data = pms5003.read() - data = data.pm_ug_per_m3(2.5) - display_text(variable, data, unit) + try: + data = pms5003.read() + except pmsReadTimeoutError: + pass + else: + data = data.pm_ug_per_m3(2.5) + display_text(variables[mode], data, unit) if mode == 9: - variable = "pm10" - unit = "g/m3" - data = pms5003.read() - data = data.pm_ug_per_m3(10) - display_text(variable, data, unit) + # variable = "pm10" + unit = "ug/m3" + try: + data = pms5003.read() + except pmsReadTimeoutError: + pass + else: + data = data.pm_ug_per_m3(10) + display_text(variables[mode], data, unit) # Exit cleanly except KeyboardInterrupt: