Fix for PMS5003 ReadTimeoutError
[EVA-2020-02-2.git] / examples / luftdaten.py
index 2177a56162539e755bda192a6b413e60a6949e82..d22be88f822a5db6ffdf0292d37d2b558c39cf77 100755 (executable)
@@ -5,7 +5,7 @@ import json
 import requests
 import ST7735
 from bme280 import BME280
-from pms5003 import PMS5003
+from pms5003 import PMS5003, ReadTimeoutError
 from subprocess import PIPE, Popen, check_output
 from PIL import Image, ImageDraw, ImageFont
 
@@ -55,9 +55,15 @@ def read_values():
     values["temperature"] = "{:.2f}".format(comp_temp)
     values["pressure"] = "{:.2f}".format(bme280.get_pressure() * 100)
     values["humidity"] = "{:.2f}".format(bme280.get_humidity())
-    pm_values = pms5003.read()
-    values["P2"] = str(pm_values.pm_ug_per_m3(2.5))
-    values["P1"] = str(pm_values.pm_ug_per_m3(10))
+    try:
+        pm_values = pms5003.read()
+        values["P2"] = str(pm_values.pm_ug_per_m3(2.5))
+        values["P1"] = str(pm_values.pm_ug_per_m3(10))
+    except ReadTimeoutError:
+        pms5003 = PMS5003()
+        pm_values = pms5003.read()
+        values["P2"] = str(pm_values.pm_ug_per_m3(2.5))
+        values["P1"] = str(pm_values.pm_ug_per_m3(10))
     return values
 
 # Get CPU temperature to use for compensation