import time
from bme280 import BME280
-from subprocess import PIPE, Popen
try:
from smbus2 import SMBus
except ImportError:
from smbus import SMBus
- print("""compensated-temperature.py - Use the CPU temperature
+ 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("""compensated-temperature.py - Use the CPU temperature
to compensate temperature readings from the BME280 sensor.
Method adapted from Initial State's Enviro pHAT review:
https://medium.com/@InitialState/tutorial-review-enviro-phat-for-raspberry-pi-4cd6d8c63441
# Get the temperature of the CPU for compensation
def get_cpu_temperature():
- process = Popen(['vcgencmd', 'measure_temp'], stdout=PIPE, universal_newlines=True)
- output, _error = process.communicate()
- return float(output[output.index('=') + 1:output.rindex("'")])
+ with open("/sys/class/thermal/thermal_zone0/temp", "r") as f:
+ temp = f.read()
+ temp = int(temp) / 1000.0
+ return temp
# Tuning factor for compensation. Decrease this number to adjust the
# temperature down, and increase to adjust up
factor = 0.8
- cpu_temps = [0] * 5
+ cpu_temps = [get_cpu_temperature()] * 5
while True:
cpu_temp = get_cpu_temperature()
avg_cpu_temp = sum(cpu_temps) / float(len(cpu_temps))
raw_temp = bme280.get_temperature()
comp_temp = raw_temp - ((avg_cpu_temp - raw_temp) / factor)
- print("Compensated temperature: {:05.2f} *C".format(comp_temp))
+ logging.info("Compensated temperature: {:05.2f} *C".format(comp_temp))
time.sleep(1.0)
except ImportError:
from smbus import SMBus
-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,
+print("""luftdaten.py - Reads temperature, pressure, humidity,
PM2.5, and PM10 from Enviro plus and sends data to Luftdaten,
the citizen science air quality project.
def get_cpu_temperature():
process = Popen(['vcgencmd', 'measure_temp'], stdout=PIPE, universal_newlines=True)
output, _error = process.communicate()
++ output = output.decode()
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
-logging.info("Raspberry Pi serial: {}".format(get_serial_number()))
-logging.info("Wi-Fi: {}\n".format("connected" if check_wifi() else "disconnected"))
+print("Raspberry Pi serial: {}".format(get_serial_number()))
+print("Wi-Fi: {}\n".format("connected" if check_wifi() else "disconnected"))
time_since_update = 0
update_time = time.time()
try:
time_since_update = time.time() - update_time
values = read_values()
- logging.info(values)
+ print(values)
if time_since_update > 145:
resp = send_to_luftdaten(values, id)
update_time = time.time()
- logging.info("Response: {}\n".format("ok" if resp else "failed"))
+ print("Response: {}\n".format("ok" if resp else "failed"))
display_status()
except Exception as e:
- logging.info(e)
+ print(e)