Merge pull request #54 from spincrisis/patch-1
[EVA-2020-02-2.git] / examples / all-in-one.py
index 87840901fd5efd3610d2aecbb943ed6c27432d41..c0423e6d6a54f3cfaf6dcbf880edc03eda0f72d1 100755 (executable)
@@ -1,19 +1,25 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import time
 import colorsys
 import os
 import sys
 import ST7735
 
 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 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
 from enviroplus import gas
 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(
 import logging
 
 logging.basicConfig(
@@ -52,8 +58,8 @@ HEIGHT = st7735.height
 # Set up canvas and font
 img = Image.new('RGB', (WIDTH, HEIGHT), color=(0, 0, 0))
 draw = ImageDraw.Draw(img)
 # Set up canvas and font
 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 = ""
 
 
 message = ""
 
@@ -97,12 +103,12 @@ def get_cpu_temperature():
 
 # Tuning factor for compensation. Decrease this number to adjust the
 # temperature down, and increase to adjust up
 
 # 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 = [get_cpu_temperature()] * 5
 
 delay = 0.5  # Debounce the proximity tap
 
 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
 
 last_page = 0
 light = 1
 
@@ -193,25 +199,33 @@ try:
             unit = "ug/m3"
             try:
                 data = pms5003.read()
             unit = "ug/m3"
             try:
                 data = pms5003.read()
-            except pms5003.ReadTimeoutError:
-                pass
+            except pmsReadTimeoutError:
+                logging.warn("Failed to read PMS5003")
             else:
             else:
-                data = data.pm_ug_per_m3(1.0)
+                data = float(data.pm_ug_per_m3(1.0))
                 display_text(variables[mode], data, unit)
 
         if mode == 8:
             # variable = "pm25"
             unit = "ug/m3"
                 display_text(variables[mode], data, unit)
 
         if mode == 8:
             # variable = "pm25"
             unit = "ug/m3"
-            data = pms5003.read()
-            data = data.pm_ug_per_m3(2.5)
-            display_text(variables[mode], data, unit)
+            try:
+                data = pms5003.read()
+            except pmsReadTimeoutError:
+                logging.warn("Failed to read PMS5003")
+            else:
+                data = float(data.pm_ug_per_m3(2.5))
+                display_text(variables[mode], data, unit)
 
         if mode == 9:
             # variable = "pm10"
             unit = "ug/m3"
 
         if mode == 9:
             # variable = "pm10"
             unit = "ug/m3"
-            data = pms5003.read()
-            data = data.pm_ug_per_m3(10)
-            display_text(variables[mode], data, unit)
+            try:
+                data = pms5003.read()
+            except pmsReadTimeoutError:
+                logging.warn("Failed to read PMS5003")
+            else:
+                data = float(data.pm_ug_per_m3(10))
+                display_text(variables[mode], data, unit)
 
 # Exit cleanly
 except KeyboardInterrupt:
 
 # Exit cleanly
 except KeyboardInterrupt: