|
14 | 14 | from PIL import Image |
15 | 15 | from PIL import ImageDraw |
16 | 16 | from PIL import ImageFont |
| 17 | +import logging |
17 | 18 |
|
18 | | -print("""all-in-one.py - Displays readings from all of Enviro plus' sensors |
| 19 | +logging.basicConfig( |
| 20 | + format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', |
| 21 | + level=logging.INFO, |
| 22 | + datefmt='%Y-%m-%d %H:%M:%S') |
| 23 | + |
| 24 | +logging.info("""all-in-one.py - Displays readings from all of Enviro plus' sensors |
19 | 25 |
|
20 | 26 | Press Ctrl+C to exit! |
21 | 27 |
|
@@ -64,7 +70,7 @@ def display_text(variable, data, unit): |
64 | 70 | - min(values[variable]) + 1) for v in values[variable]] |
65 | 71 | # Format the variable name and value |
66 | 72 | message = "{}: {:.1f} {}".format(variable[:4], data, unit) |
67 | | - print(message) |
| 73 | + logging.info(message) |
68 | 74 | draw.rectangle((0, 0, WIDTH, HEIGHT), (255, 255, 255)) |
69 | 75 | for i in range(len(colours)): |
70 | 76 | # Convert the values to colours from red to blue |
@@ -93,7 +99,7 @@ def get_cpu_temperature(): |
93 | 99 | # temperature down, and increase to adjust up |
94 | 100 | factor = 0.8 |
95 | 101 |
|
96 | | -cpu_temps = [0] * 5 |
| 102 | +cpu_temps = [get_cpu_temperature()] * 5 |
97 | 103 |
|
98 | 104 | delay = 0.5 # Debounce the proximity tap |
99 | 105 | mode = 0 # The starting mode |
@@ -130,78 +136,82 @@ def get_cpu_temperature(): |
130 | 136 |
|
131 | 137 | # One mode for each variable |
132 | 138 | if mode == 0: |
133 | | - variable = "temperature" |
| 139 | + # variable = "temperature" |
134 | 140 | unit = "C" |
135 | 141 | cpu_temp = get_cpu_temperature() |
136 | 142 | # Smooth out with some averaging to decrease jitter |
137 | 143 | cpu_temps = cpu_temps[1:] + [cpu_temp] |
138 | 144 | avg_cpu_temp = sum(cpu_temps) / float(len(cpu_temps)) |
139 | 145 | raw_temp = bme280.get_temperature() |
140 | 146 | data = raw_temp - ((avg_cpu_temp - raw_temp) / factor) |
141 | | - display_text(variable, data, unit) |
| 147 | + display_text(variables[mode], data, unit) |
142 | 148 |
|
143 | 149 | if mode == 1: |
144 | | - variable = "pressure" |
| 150 | + # variable = "pressure" |
145 | 151 | unit = "hPa" |
146 | 152 | data = bme280.get_pressure() |
147 | | - display_text(variable, data, unit) |
| 153 | + display_text(variables[mode], data, unit) |
148 | 154 |
|
149 | 155 | if mode == 2: |
150 | | - variable = "humidity" |
| 156 | + # variable = "humidity" |
151 | 157 | unit = "%" |
152 | 158 | data = bme280.get_humidity() |
153 | | - display_text(variable, data, unit) |
| 159 | + display_text(variables[mode], data, unit) |
154 | 160 |
|
155 | 161 | if mode == 3: |
156 | | - variable = "light" |
| 162 | + # variable = "light" |
157 | 163 | unit = "Lux" |
158 | 164 | if proximity < 10: |
159 | 165 | data = ltr559.get_lux() |
160 | 166 | else: |
161 | 167 | data = 1 |
162 | | - display_text(variable, data, unit) |
| 168 | + display_text(variables[mode], data, unit) |
163 | 169 |
|
164 | 170 | if mode == 4: |
165 | | - variable = "oxidised" |
| 171 | + # variable = "oxidised" |
166 | 172 | unit = "kO" |
167 | 173 | data = gas.read_all() |
168 | 174 | data = data.oxidising / 1000 |
169 | | - display_text(variable, data, unit) |
| 175 | + display_text(variables[mode], data, unit) |
170 | 176 |
|
171 | 177 | if mode == 5: |
172 | | - variable = "reduced" |
| 178 | + # variable = "reduced" |
173 | 179 | unit = "kO" |
174 | 180 | data = gas.read_all() |
175 | 181 | data = data.reducing / 1000 |
176 | | - display_text(variable, data, unit) |
| 182 | + display_text(variables[mode], data, unit) |
177 | 183 |
|
178 | 184 | if mode == 6: |
179 | | - variable = "nh3" |
| 185 | + # variable = "nh3" |
180 | 186 | unit = "kO" |
181 | 187 | data = gas.read_all() |
182 | 188 | data = data.nh3 / 1000 |
183 | | - display_text(variable, data, unit) |
| 189 | + display_text(variables[mode], data, unit) |
184 | 190 |
|
185 | 191 | if mode == 7: |
186 | | - variable = "pm1" |
| 192 | + # variable = "pm1" |
187 | 193 | unit = "ug/m3" |
188 | | - data = pms5003.read() |
189 | | - data = data.pm_ug_per_m3(1.0) |
190 | | - display_text(variable, data, unit) |
| 194 | + try: |
| 195 | + data = pms5003.read() |
| 196 | + except pms5003.ReadTimeoutError: |
| 197 | + pass |
| 198 | + else: |
| 199 | + data = data.pm_ug_per_m3(1.0) |
| 200 | + display_text(variables[mode], data, unit) |
191 | 201 |
|
192 | 202 | if mode == 8: |
193 | | - variable = "pm25" |
| 203 | + # variable = "pm25" |
194 | 204 | unit = "ug/m3" |
195 | 205 | data = pms5003.read() |
196 | 206 | data = data.pm_ug_per_m3(2.5) |
197 | | - display_text(variable, data, unit) |
| 207 | + display_text(variables[mode], data, unit) |
198 | 208 |
|
199 | 209 | if mode == 9: |
200 | | - variable = "pm10" |
| 210 | + # variable = "pm10" |
201 | 211 | unit = "ug/m3" |
202 | 212 | data = pms5003.read() |
203 | 213 | data = data.pm_ug_per_m3(10) |
204 | | - display_text(variable, data, unit) |
| 214 | + display_text(variables[mode], data, unit) |
205 | 215 |
|
206 | 216 | # Exit cleanly |
207 | 217 | except KeyboardInterrupt: |
|
0 commit comments