Merge branch 'use-generic-variables' of git://github.com/cipy/enviroplus-python into...
authorPhil Howard <phil@gadgetoid.com>
Tue, 20 Aug 2019 15:28:38 +0000 (16:28 +0100)
committerPhil Howard <phil@gadgetoid.com>
Tue, 20 Aug 2019 15:28:38 +0000 (16:28 +0100)
examples/adc.py
examples/all-in-one-no-pm.py
examples/all-in-one.py
examples/compensated-temperature.py
examples/gas.py
examples/lcd.py
examples/light.py
examples/luftdaten.py
examples/particulates.py
examples/weather.py

index c4cf45cf8f0d598e2fd88ea93f10812b874de737..82bda4150b38a0c5be3c557b9a13bce21a24bf8f 100755 (executable)
@@ -2,8 +2,14 @@
 
 import time
 from enviroplus import gas
+import logging
 
-print("""adc.py - Print readings from the MICS6814 Gas sensor.
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""adc.py - Print readings from the MICS6814 Gas sensor.
 
 Press Ctrl+C to exit!
 
@@ -15,7 +21,7 @@ gas.set_adc_gain(4.096)
 try:
     while True:
         readings = gas.read_all()
-        print(readings)
+        logging.info(readings)
         time.sleep(1.0)
 except KeyboardInterrupt:
     pass
index 962f627548fe0c0b62395e3dacb59e8a755de74a..54860126bdc3ee37aa02d367f6f9f83e3755372d 100755 (executable)
@@ -13,8 +13,14 @@ from subprocess import PIPE, Popen
 from PIL import Image
 from PIL import ImageDraw
 from PIL import ImageFont
+import logging
 
-print("""all-in-one.py - Displays readings from all of Enviro plus' sensors
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""all-in-one.py - Displays readings from all of Enviro plus' sensors
 Press Ctrl+C to exit!
 """)
 
@@ -58,7 +64,7 @@ def display_text(variable, data, unit):
                - min(values[variable]) + 1) for v in values[variable]]
     # Format the variable name and value
     message = "{}: {:.1f} {}".format(variable[:4], data, unit)
-    print(message)
+    logging.info(message)
     draw.rectangle((0, 0, WIDTH, HEIGHT), (255, 255, 255))
     for i in range(len(colours)):
         # Convert the values to colours from red to blue
index 74b49581cd94681d71a6c4c889707d08b9246111..85a9a155ce8e7c12860f64c3e394cc0bfabe056b 100755 (executable)
@@ -14,8 +14,14 @@ from subprocess import PIPE, Popen
 from PIL import Image
 from PIL import ImageDraw
 from PIL import ImageFont
+import logging
 
-print("""all-in-one.py - Displays readings from all of Enviro plus' sensors
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""all-in-one.py - Displays readings from all of Enviro plus' sensors
 
 Press Ctrl+C to exit!
 
@@ -64,7 +70,7 @@ def display_text(variable, data, unit):
                - min(values[variable]) + 1) for v in values[variable]]
     # Format the variable name and value
     message = "{}: {:.1f} {}".format(variable[:4], data, unit)
-    print(message)
+    logging.info(message)
     draw.rectangle((0, 0, WIDTH, HEIGHT), (255, 255, 255))
     for i in range(len(colours)):
         # Convert the values to colours from red to blue
index 2733f56c756d43a2bcc1cf57a6eef085ed9f6117..74b6babf103cf63c3b98da31c733a83f62a54e90 100755 (executable)
@@ -2,14 +2,20 @@
 
 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
@@ -24,9 +30,10 @@ bme280 = BME280(i2c_dev=bus)
 
 # 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
@@ -42,5 +49,5 @@ while True:
     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)
index faf6eac84611944ec9b908cefeb7b47e1e31518d..2f849442b8bf61a253a1083dd2ef561f73ba70c7 100755 (executable)
@@ -2,8 +2,14 @@
 
 import time
 from enviroplus import gas
+import logging
 
-print("""gas.py - Print readings from the MICS6814 Gas sensor.
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""gas.py - Print readings from the MICS6814 Gas sensor.
 
 Press Ctrl+C to exit!
 
@@ -12,7 +18,7 @@ Press Ctrl+C to exit!
 try:
     while True:
         readings = gas.read_all()
-        print(readings)
+        logging.info(readings)
         time.sleep(1.0)
 except KeyboardInterrupt:
     pass
index aa0e193604388cdd3ec8ac2de8b286b2bef639fc..7e50c94eb68c5a2f6788c5c0d9810100860a683e 100755 (executable)
@@ -2,8 +2,14 @@
 
 import ST7735
 from PIL import Image, ImageDraw, ImageFont
+import logging
 
-print("""lcd.py - Hello, World! example on the 0.96" LCD.
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""lcd.py - Hello, World! example on the 0.96" LCD.
 
 Press Ctrl+C to exit!
 
index 216477a766db19768e9d92683f7984bc664f3fac..3442fb489d0ac677636255458a2029a9c5511ad7 100755 (executable)
@@ -2,8 +2,14 @@
 
 import time
 import ltr559
+import logging
 
-print("""light.py - Print readings from the LTR559 Light & Proximity sensor.
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""light.py - Print readings from the LTR559 Light & Proximity sensor.
 
 Press Ctrl+C to exit!
 
@@ -13,7 +19,7 @@ try:
     while True:
         lux = ltr559.get_lux()
         prox = ltr559.get_proximity()
-        print("""Light: {:05.02f} Lux
+        logging.info("""Light: {:05.02f} Lux
 Proximity: {:05.02f}
 """.format(lux, prox))
         time.sleep(1.0)
index c5b03873356bbdca7a808ab0f29729e6f4b88501..9995914e23d71144c9f1e99ff11c58f7baaf4e69 100755 (executable)
@@ -2,6 +2,7 @@
 
 import requests
 import ST7735
+import time
 from bme280 import BME280
 from pms5003 import PMS5003, ReadTimeoutError
 from subprocess import PIPE, Popen, check_output
@@ -73,6 +74,7 @@ def read_values():
 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("'")])
 
 
@@ -165,13 +167,19 @@ font = ImageFont.truetype("fonts/Asap/Asap-Bold.ttf", font_size)
 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()
+
 # 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)
-        resp = send_to_luftdaten(values, id)
-        print("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"))
         display_status()
     except Exception as e:
         print(e)
index e71ca5d96f78782f5237134e1dffd3df51dfcf7e..9aa9c37814a0bc3f6d34bf03f1df52d58fa3408f 100755 (executable)
@@ -2,8 +2,14 @@
 
 import time
 from pms5003 import PMS5003, ReadTimeoutError
+import logging
 
-print("""particulates.py - Print readings from the PMS5003 particulate sensor.
+logging.basicConfig(
+    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
+    level=logging.INFO,
+    datefmt='%Y-%m-%d %H:%M:%S')
+
+logging.info("""particulates.py - Print readings from the PMS5003 particulate sensor.
 
 Press Ctrl+C to exit!
 
@@ -16,7 +22,7 @@ try:
     while True:
         try:
             readings = pms5003.read()
-            print(readings)
+            logging.info(readings)
             time.sleep(1.0)
         except ReadTimeoutError:
             pms5003 = PMS5003()
index 17aba2041ac13d819ff23f3f431cf6b8f395702f..503602104ced2a691e2b70eff06d51b54c7f7a37 100755 (executable)
@@ -8,7 +8,14 @@ try:
 except ImportError:
     from smbus import SMBus
 
-print("""weather.py - Print readings from the BME280 weather sensor.
+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("""weather.py - Print readings from the BME280 weather sensor.
 
 Press Ctrl+C to exit!
 
@@ -21,7 +28,7 @@ while True:
     temperature = bme280.get_temperature()
     pressure = bme280.get_pressure()
     humidity = bme280.get_humidity()
-    print("""Temperature: {:05.2f} *C
+    logging.info("""Temperature: {:05.2f} *C
 Pressure: {:05.2f} hPa
 Relative humidity: {:05.2f} %
 """.format(temperature, pressure, humidity))