Include python cffi in setup dependencies
[EVA-2020-02-2.git] / examples / luftdaten.py
index 27478c590c06088cea81334723a92417de559359..84f111776c6f65c0e3d0b5e39b75c8d31625d60a 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import requests
 import ST7735
 
 import requests
 import ST7735
@@ -7,6 +7,7 @@ from bme280 import BME280
 from pms5003 import PMS5003, ReadTimeoutError
 from subprocess import PIPE, Popen, check_output
 from PIL import Image, ImageDraw, ImageFont
 from pms5003 import PMS5003, ReadTimeoutError
 from subprocess import PIPE, Popen, check_output
 from PIL import Image, ImageDraw, ImageFont
+from fonts.ttf import RobotoMedium as UserFont
 
 try:
     from smbus2 import SMBus
 
 try:
     from smbus2 import SMBus
@@ -72,7 +73,7 @@ def read_values():
 
 # Get CPU temperature to use for compensation
 def get_cpu_temperature():
 
 # 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("'")])
 
     output, _error = process.communicate()
     return float(output[output.index('=') + 1:output.rindex("'")])
 
@@ -114,32 +115,35 @@ def send_to_luftdaten(values, id):
     pm_values = dict(i for i in values.items() if i[0].startswith("P"))
     temp_values = dict(i for i in values.items() if not i[0].startswith("P"))
 
     pm_values = dict(i for i in values.items() if i[0].startswith("P"))
     temp_values = dict(i for i in values.items() if not i[0].startswith("P"))
 
-    resp_1 = requests.post("https://api.luftdaten.info/v1/push-sensor-data/",
-             json={
-                 "software_version": "enviro-plus 0.0.1",
-                 "sensordatavalues": [{"value_type": key, "value": val} for
-                                      key, val in pm_values.items()]
-             },
-             headers={
-                 "X-PIN":    "1",
-                 "X-Sensor": id,
-                 "Content-Type": "application/json",
-                 "cache-control": "no-cache"
-             }
+    pm_values_json = [{"value_type": key, "value": val} for key, val in pm_values.items()]
+    temp_values_json = [{"value_type": key, "value": val} for key, val in temp_values.items()]
+
+    resp_1 = requests.post(
+        "https://api.luftdaten.info/v1/push-sensor-data/",
+        json={
+            "software_version": "enviro-plus 0.0.1",
+            "sensordatavalues": pm_values_json
+        },
+        headers={
+            "X-PIN": "1",
+            "X-Sensor": id,
+            "Content-Type": "application/json",
+            "cache-control": "no-cache"
+        }
     )
 
     )
 
-    resp_2 = requests.post("https://api.luftdaten.info/v1/push-sensor-data/",
-             json={
-                 "software_version": "enviro-plus 0.0.1",
-                 "sensordatavalues": [{"value_type": key, "value": val} for
-                                      key, val in temp_values.items()]
-             },
-             headers={
-                 "X-PIN":    "11",
-                 "X-Sensor": id,
-                 "Content-Type": "application/json",
-                 "cache-control": "no-cache"
-             }
+    resp_2 = requests.post(
+        "https://api.luftdaten.info/v1/push-sensor-data/",
+        json={
+            "software_version": "enviro-plus 0.0.1",
+            "sensordatavalues": temp_values_json
+        },
+        headers={
+            "X-PIN": "11",
+            "X-Sensor": id,
+            "Content-Type": "application/json",
+            "cache-control": "no-cache"
+        }
     )
 
     if resp_1.ok and resp_2.ok:
     )
 
     if resp_1.ok and resp_2.ok:
@@ -149,7 +153,7 @@ def send_to_luftdaten(values, id):
 
 
 # Compensation factor for temperature
 
 
 # Compensation factor for temperature
-comp_factor = 1.2
+comp_factor = 2.25
 
 # Raspberry Pi ID to send to Luftdaten
 id = "raspi-" + get_serial_number()
 
 # Raspberry Pi ID to send to Luftdaten
 id = "raspi-" + get_serial_number()
@@ -160,7 +164,7 @@ HEIGHT = disp.height
 
 # Text settings
 font_size = 16
 
 # Text settings
 font_size = 16
-font = ImageFont.truetype("fonts/Asap/Asap-Bold.ttf", font_size)
+font = ImageFont.truetype(UserFont, font_size)
 
 # Display Raspberry Pi serial and Wi-Fi status
 print("Raspberry Pi serial: {}".format(get_serial_number()))
 
 # Display Raspberry Pi serial and Wi-Fi status
 print("Raspberry Pi serial: {}".format(get_serial_number()))