import requests
import ST7735
+ import time
from bme280 import BME280
from pms5003 import PMS5003, ReadTimeoutError
from subprocess import PIPE, Popen, check_output
except ImportError:
from smbus import SMBus
-print("""luftdaten.py - Reads temperature, pressure, humidity,
+import logging
+
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+ level=logging.INFO,
+ datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""luftdaten.py - Reads temperature, pressure, humidity,
PM2.5, and PM10 from Enviro plus and sends data to Luftdaten,
the citizen science air quality project.
# Get CPU temperature to use 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("'")])
font = ImageFont.truetype("fonts/Asap/Asap-Bold.ttf", font_size)
# Display Raspberry Pi serial and Wi-Fi status
-print("Raspberry Pi serial: {}".format(get_serial_number()))
-print("Wi-Fi: {}\n".format("connected" if check_wifi() else "disconnected"))
+logging.info("Raspberry Pi serial: {}".format(get_serial_number()))
+logging.info("Wi-Fi: {}\n".format("connected" if check_wifi() else "disconnected"))
+ time_since_update = 0
+ update_time = time.time()
+
# Main loop to read data, display, and send to Luftdaten
while True:
try:
+ time_since_update = time.time() - update_time
values = read_values()
- print(values)
+ logging.info(values)
- resp = send_to_luftdaten(values, id)
- logging.info("Response: {}\n".format("ok" if resp else "failed"))
+ if time_since_update > 145:
+ resp = send_to_luftdaten(values, id)
+ update_time = time.time()
- print("Response: {}\n".format("ok" if resp else "failed"))
++ logging.info("Response: {}\n".format("ok" if resp else "failed"))
display_status()
except Exception as e:
- print(e)
+ logging.info(e)