-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode.py
More file actions
144 lines (111 loc) · 4.62 KB
/
Copy pathcode.py
File metadata and controls
144 lines (111 loc) · 4.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import board
import busio
from digitalio import DigitalInOut
import adafruit_requests as requests
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
import json
import adafruit_scd30
import time
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text import label
scd = adafruit_scd30.SCD30(board.I2C())
# Get wifi details and more from a secrets.py file
try:
f=open('config.json')
config=json.load(f)
except:
print("error opening config.json!")
print("ESP32 SPI webclient test")
TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html"
JSON_URL = "http://api.coindesk.com/v1/bpi/currentprice/USD.json"
# If you are using a board with pre-defined ESP32 Pins:
esp32_cs = DigitalInOut(board.D10)
esp32_ready = DigitalInOut(board.D9)
esp32_reset = DigitalInOut(board.D7)
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
requests.set_socket(socket, esp)
import board
import displayio
import terminalio
from adafruit_display_text import label
import adafruit_displayio_ssd1306
displayio.release_displays()
i2c = board.I2C()
display_bus = displayio.I2CDisplay(i2c, device_address=0x3C)
display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=128, height=64)
#splash = displayio.Group()
#display.show(splash)
#color_bitmap = displayio.Bitmap(128, 32, 1)
#color_palette = displayio.Palette(1)
#color_palette[0] = 0xFFFFFF # White
#bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
#splash.append(bg_sprite)
# Draw a smaller inner rectangle
#inner_bitmap = displayio.Bitmap(118, 24, 1)
#inner_palette = displayio.Palette(1)
#inner_palette[0] = 0x000000 # Black
#inner_sprite = displayio.TileGrid(inner_bitmap, pixel_shader=inner_palette, x=5, y=4)
#splash.append(inner_sprite)
# Draw a label
text = "PVOS.ORG\nCO2 Monitor\nREV_T"
text_area = label.Label(terminalio.FONT, text=text, color=0xFFFF00, x=20, y=15)
display.show(text_area)
time.sleep(3)
exception_count = 0
sample_recorded_count = 0
while True:
if scd.data_available:
try:
if (scd.CO2>1):
# print("Data Available!")
print("CO2: %d PPM" % scd.CO2)
# print("Connecting to AP...")
text = str(round(scd.CO2))
#font = bitmap_font.load_font("/Helvetica-Bold-16.bdf")
display.refresh()
#font = bitmap_font.load_font("/Junction-regular-24.bdf")
#font = bitmap_font.load_font("/Helvetica-Bold-16.bdf")
font = terminalio.FONT
color = 0xFFFF00
text_area = label.Label(font=font, text=text, color=color, x=25, y=25)
display.show(text_area)
#splash.append(text_area)
while not esp.is_connected:
try:
esp.connect_AP(config["wifi_ssid"], config["wifi_password"])
except RuntimeError as e:
print("could not connect to AP, retrying: ", e)
continue
# print("Connected to", str(esp.ssid, "utf-8"), "\tRSSI:", esp.rssi)
# print("My IP address is", esp.pretty_ip(esp.ip_address))
# print(
# "IP lookup adafruit.com: %s" % esp.pretty_ip(esp.get_host_by_name("adafruit.com"))
# )
# print("Ping google.com: %d ms" % esp.ping("google.com"))
# esp._debug = True
JSON_POST_URL = "http://bayou.pvos.org/data/" + config["public_key"]
data = {}
data.update({'private_key':config["private_key"]})
data.update({'co2_ppm':scd.CO2})
data.update({'node_id':0})
data.update({'aux_2': exception_count})
data.update({'aux_1' : sample_recorded_count})
print("POSTing data to {0}: {1}".format(JSON_POST_URL, data))
response = requests.post(JSON_POST_URL, data=data)
print("Response: ", response.text.rstrip())
# print("-" * 40)
response.close()
sample_recorded_count += 1
# print("Done!")
time.sleep(1)
text = "Uploaded"
text_area = label.Label(terminalio.FONT, text=text, color=0xFFFF00, x=20, y=15)
display.show(text_area)
time.sleep(2)
except Exception as e:
print("*** Exception: " + str(e))
exception_count += 1
# break
time.sleep(2)