projects
/
EVA-2020-02-2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
catching the correct ReadTimeoutError for pms5003
[EVA-2020-02-2.git]
/
examples
/
all-in-one.py
diff --git
a/examples/all-in-one.py
b/examples/all-in-one.py
index 8ba76815b25347a48d70f8d3d26dfdcdf90b319e..74b49581cd94681d71a6c4c889707d08b9246111 100755
(executable)
--- a/
examples/all-in-one.py
+++ b/
examples/all-in-one.py
@@
-8,7
+8,7
@@
import ST7735
import ltr559
from bme280 import BME280
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 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():
# 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("'")])
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
# 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
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:
# 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
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)
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(variable
s[mode]
, data, unit)
if mode == 1:
if mode == 1:
- variable = "pressure"
+
#
variable = "pressure"
unit = "hPa"
data = bme280.get_pressure()
unit = "hPa"
data = bme280.get_pressure()
- display_text(variable, data, unit)
+ display_text(variable
s[mode]
, data, unit)
if mode == 2:
if mode == 2:
- variable = "humidity"
+
#
variable = "humidity"
unit = "%"
data = bme280.get_humidity()
unit = "%"
data = bme280.get_humidity()
- display_text(variable, data, unit)
+ display_text(variable
s[mode]
, data, unit)
if mode == 3:
if mode == 3:
- variable = "light"
+
#
variable = "light"
unit = "Lux"
if proximity < 10:
data = ltr559.get_lux()
else:
data = 1
unit = "Lux"
if proximity < 10:
data = ltr559.get_lux()
else:
data = 1
- display_text(variable, data, unit)
+ display_text(variable
s[mode]
, data, unit)
if mode == 4:
if mode == 4:
- variable = "oxidised"
+
#
variable = "oxidised"
unit = "kO"
data = gas.read_all()
data = data.oxidising / 1000
unit = "kO"
data = gas.read_all()
data = data.oxidising / 1000
- display_text(variable, data, unit)
+ display_text(variable
s[mode]
, data, unit)
if mode == 5:
if mode == 5:
- variable = "reduced"
+
#
variable = "reduced"
unit = "kO"
data = gas.read_all()
data = data.reducing / 1000
unit = "kO"
data = gas.read_all()
data = data.reducing / 1000
- display_text(variable, data, unit)
+ display_text(variable
s[mode]
, data, unit)
if mode == 6:
if mode == 6:
- variable = "nh3"
+
#
variable = "nh3"
unit = "kO"
data = gas.read_all()
data = data.nh3 / 1000
unit = "kO"
data = gas.read_all()
data = data.nh3 / 1000
- display_text(variable, data, unit)
+ display_text(variable
s[mode]
, data, unit)
if mode == 7:
if mode == 7:
- variable = "pm1"
+
#
variable = "pm1"
unit = "ug/m3"
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:
if mode == 8:
- variable = "pm25"
+
#
variable = "pm25"
unit = "ug/m3"
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:
if mode == 9:
- variable = "pm10"
+
#
variable = "pm10"
unit = "ug/m3"
unit = "ug/m3"
- data = pms5003.read()
- data = data.pm_ug_per_m3(10)
- display_text(variable, data, unit)
+ 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:
# Exit cleanly
except KeyboardInterrupt: