From: Phil Howard Date: Tue, 20 Aug 2019 15:36:17 +0000 (+0100) Subject: Merge branch 'master' of github.com:pimoroni/enviroplus-python X-Git-Url: https://zdv2.bktei.com/gitweb/EVA-2020-02-2.git/commitdiff_plain/1520d388a32f46d0a9a03f9c0d5875fce52ee4b9?hp=2d9581bb732a9281a5a40944706ceefdf21f6b97 Merge branch 'master' of github.com:pimoroni/enviroplus-python --- diff --git a/examples/adc.py b/examples/adc.py index c4cf45c..82bda41 100755 --- a/examples/adc.py +++ b/examples/adc.py @@ -2,8 +2,14 @@ import time from enviroplus import gas +import logging -print("""adc.py - Print readings from the MICS6814 Gas sensor. +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""adc.py - Print readings from the MICS6814 Gas sensor. Press Ctrl+C to exit! @@ -15,7 +21,7 @@ gas.set_adc_gain(4.096) try: while True: readings = gas.read_all() - print(readings) + logging.info(readings) time.sleep(1.0) except KeyboardInterrupt: pass diff --git a/examples/all-in-one-no-pm.py b/examples/all-in-one-no-pm.py index 367ebeb..5486012 100755 --- a/examples/all-in-one-no-pm.py +++ b/examples/all-in-one-no-pm.py @@ -13,8 +13,14 @@ from subprocess import PIPE, Popen from PIL import Image from PIL import ImageDraw from PIL import ImageFont +import logging -print("""all-in-one.py - Displays readings from all of Enviro plus' sensors +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""all-in-one.py - Displays readings from all of Enviro plus' sensors Press Ctrl+C to exit! """) @@ -58,7 +64,7 @@ def display_text(variable, data, unit): - min(values[variable]) + 1) for v in values[variable]] # Format the variable name and value message = "{}: {:.1f} {}".format(variable[:4], data, unit) - print(message) + logging.info(message) draw.rectangle((0, 0, WIDTH, HEIGHT), (255, 255, 255)) for i in range(len(colours)): # Convert the values to colours from red to blue @@ -78,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("'")]) @@ -87,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 @@ -121,7 +127,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 @@ -129,49 +135,49 @@ 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) # Exit cleanly except KeyboardInterrupt: diff --git a/examples/all-in-one.py b/examples/all-in-one.py index 8ba7681..eef99c3 100755 --- a/examples/all-in-one.py +++ b/examples/all-in-one.py @@ -8,14 +8,20 @@ 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 from PIL import ImageDraw from PIL import ImageFont +import logging -print("""all-in-one.py - Displays readings from all of Enviro plus' sensors +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""all-in-one.py - Displays readings from all of Enviro plus' sensors Press Ctrl+C to exit! @@ -64,7 +70,7 @@ def display_text(variable, data, unit): - min(values[variable]) + 1) for v in values[variable]] # Format the variable name and value message = "{}: {:.1f} {}".format(variable[:4], data, unit) - print(message) + logging.info(message) draw.rectangle((0, 0, WIDTH, HEIGHT), (255, 255, 255)) for i in range(len(colours)): # Convert the values to colours from red to blue @@ -84,7 +90,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,10 +99,10 @@ 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 +mode = 0 # The starting mode last_page = 0 light = 1 @@ -130,7 +136,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 +144,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: + logging.warn("Failed to read PMS5003") + 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: + logging.warn("Failed to read PMS5003") + else: + data = data.pm_ug_per_m3(2.5) + display_text(variables[mode], data, unit) if mode == 9: - variable = "pm10" + # variable = "pm10" unit = "ug/m3" - data = pms5003.read() - data = data.pm_ug_per_m3(10) - display_text(variable, data, unit) + try: + data = pms5003.read() + except pmsReadTimeoutError: + logging.warn("Failed to read PMS5003") + else: + data = data.pm_ug_per_m3(10) + display_text(variables[mode], data, unit) # Exit cleanly except KeyboardInterrupt: diff --git a/examples/compensated-temperature.py b/examples/compensated-temperature.py index 7d0d0f1..74b6bab 100755 --- a/examples/compensated-temperature.py +++ b/examples/compensated-temperature.py @@ -8,7 +8,14 @@ try: except ImportError: from smbus import SMBus -print("""compensated-temperature.py - Use the CPU temperature +import logging + +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""compensated-temperature.py - Use the CPU temperature to compensate temperature readings from the BME280 sensor. Method adapted from Initial State's Enviro pHAT review: https://medium.com/@InitialState/tutorial-review-enviro-phat-for-raspberry-pi-4cd6d8c63441 @@ -33,7 +40,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 while True: cpu_temp = get_cpu_temperature() @@ -42,5 +49,5 @@ while True: avg_cpu_temp = sum(cpu_temps) / float(len(cpu_temps)) raw_temp = bme280.get_temperature() comp_temp = raw_temp - ((avg_cpu_temp - raw_temp) / factor) - print("Compensated temperature: {:05.2f} *C".format(comp_temp)) + logging.info("Compensated temperature: {:05.2f} *C".format(comp_temp)) time.sleep(1.0) diff --git a/examples/gas.py b/examples/gas.py index faf6eac..2f84944 100755 --- a/examples/gas.py +++ b/examples/gas.py @@ -2,8 +2,14 @@ import time from enviroplus import gas +import logging -print("""gas.py - Print readings from the MICS6814 Gas sensor. +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""gas.py - Print readings from the MICS6814 Gas sensor. Press Ctrl+C to exit! @@ -12,7 +18,7 @@ Press Ctrl+C to exit! try: while True: readings = gas.read_all() - print(readings) + logging.info(readings) time.sleep(1.0) except KeyboardInterrupt: pass diff --git a/examples/lcd.py b/examples/lcd.py index aa0e193..7e50c94 100755 --- a/examples/lcd.py +++ b/examples/lcd.py @@ -2,8 +2,14 @@ import ST7735 from PIL import Image, ImageDraw, ImageFont +import logging -print("""lcd.py - Hello, World! example on the 0.96" LCD. +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""lcd.py - Hello, World! example on the 0.96" LCD. Press Ctrl+C to exit! diff --git a/examples/light.py b/examples/light.py index 216477a..3442fb4 100755 --- a/examples/light.py +++ b/examples/light.py @@ -2,8 +2,14 @@ import time import ltr559 +import logging -print("""light.py - Print readings from the LTR559 Light & Proximity sensor. +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""light.py - Print readings from the LTR559 Light & Proximity sensor. Press Ctrl+C to exit! @@ -13,7 +19,7 @@ try: while True: lux = ltr559.get_lux() prox = ltr559.get_proximity() - print("""Light: {:05.02f} Lux + logging.info("""Light: {:05.02f} Lux Proximity: {:05.02f} """.format(lux, prox)) time.sleep(1.0) diff --git a/examples/luftdaten.py b/examples/luftdaten.py index 27478c5..9995914 100755 --- a/examples/luftdaten.py +++ b/examples/luftdaten.py @@ -72,8 +72,9 @@ def read_values(): # Get CPU temperature to use 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() + output = output.decode() return float(output[output.index('=') + 1:output.rindex("'")]) diff --git a/examples/particulates.py b/examples/particulates.py index e71ca5d..9aa9c37 100755 --- a/examples/particulates.py +++ b/examples/particulates.py @@ -2,8 +2,14 @@ import time from pms5003 import PMS5003, ReadTimeoutError +import logging -print("""particulates.py - Print readings from the PMS5003 particulate sensor. +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""particulates.py - Print readings from the PMS5003 particulate sensor. Press Ctrl+C to exit! @@ -16,7 +22,7 @@ try: while True: try: readings = pms5003.read() - print(readings) + logging.info(readings) time.sleep(1.0) except ReadTimeoutError: pms5003 = PMS5003() diff --git a/examples/weather.py b/examples/weather.py index 17aba20..5036021 100755 --- a/examples/weather.py +++ b/examples/weather.py @@ -8,7 +8,14 @@ try: except ImportError: from smbus import SMBus -print("""weather.py - Print readings from the BME280 weather sensor. +import logging + +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') + +logging.info("""weather.py - Print readings from the BME280 weather sensor. Press Ctrl+C to exit! @@ -21,7 +28,7 @@ while True: temperature = bme280.get_temperature() pressure = bme280.get_pressure() humidity = bme280.get_humidity() - print("""Temperature: {:05.2f} *C + logging.info("""Temperature: {:05.2f} *C Pressure: {:05.2f} hPa Relative humidity: {:05.2f} % """.format(temperature, pressure, humidity))