X-Git-Url: https://zdv2.bktei.com/gitweb/EVA-2020-02-2.git/blobdiff_plain/95b2a7c614880e28fdfe0ae318afd74adc707963..4bb1de200af34000c9447c09f1fee02dbe72b98a:/examples/all-in-one-no-pm.py diff --git a/examples/all-in-one-no-pm.py b/examples/all-in-one-no-pm.py old mode 100644 new mode 100755 index 367ebeb..d9b1069 --- a/examples/all-in-one-no-pm.py +++ b/examples/all-in-one-no-pm.py @@ -1,11 +1,16 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import time import colorsys import os import sys import ST7735 -import ltr559 +try: + # Transitional fix for breaking change in LTR559 + from ltr559 import LTR559 + ltr559 = LTR559() +except ImportError: + import ltr559 from bme280 import BME280 from enviroplus import gas @@ -13,8 +18,15 @@ from subprocess import PIPE, Popen from PIL import Image from PIL import ImageDraw from PIL import ImageFont +from fonts.ttf import RobotoMedium as UserFont +import logging + +logging.basicConfig( + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', + level=logging.INFO, + datefmt='%Y-%m-%d %H:%M:%S') -print("""all-in-one.py - Displays readings from all of Enviro plus' sensors +logging.info("""all-in-one.py - Displays readings from all of Enviro plus' sensors Press Ctrl+C to exit! """) @@ -41,7 +53,8 @@ HEIGHT = st7735.height img = Image.new('RGB', (WIDTH, HEIGHT), color=(0, 0, 0)) draw = ImageDraw.Draw(img) path = os.path.dirname(os.path.realpath(__file__)) -font = ImageFont.truetype(path + "/fonts/Asap/Asap-Bold.ttf", 20) +font_size = 20 +font = ImageFont.truetype(UserFont, font_size) message = "" @@ -58,7 +71,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,16 +91,16 @@ 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("'")]) # Tuning factor for compensation. Decrease this number to adjust the # temperature down, and increase to adjust up -factor = 0.8 +factor = 2.25 -cpu_temps = [0] * 5 +cpu_temps = [get_cpu_temperature()] * 5 delay = 0.5 # Debounce the proximity tap mode = 0 # The starting mode @@ -121,7 +134,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 +142,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: