Skip to content

Commit 2d1bd43

Browse files
authored
Merge pull request #3 from jerryneedell/jerryn_examples
add aio post and cheerlights examples
2 parents eee2981 + 7a83bb2 commit 2d1bd43

File tree

3 files changed

+179
-0
lines changed

3 files changed

+179
-0
lines changed

examples/esp32spi_aio_post.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
import time
3+
import board
4+
import busio
5+
from digitalio import DigitalInOut
6+
7+
from adafruit_esp32spi import adafruit_esp32spi
8+
import adafruit_esp32spi.adafruit_esp32spi_requests as requests
9+
10+
11+
print("ESP32 SPI webclient test")
12+
13+
# Get wifi details and more from a settings.py file
14+
try:
15+
from esp32spi_settings import settings
16+
except ImportError:
17+
print("WiFi settings are kept in settings.py, please add them there!")
18+
raise
19+
20+
21+
esp32_cs = DigitalInOut(board.D9)
22+
esp32_ready = DigitalInOut(board.D10)
23+
esp32_reset = DigitalInOut(board.D5)
24+
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
25+
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
26+
27+
requests.set_interface(esp)
28+
29+
if esp.status == adafruit_esp32spi.WL_IDLE_STATUS:
30+
print("ESP32 found and in idle mode")
31+
print("Firmware vers.", esp.firmware_version)
32+
print("MAC addr:", [hex(i) for i in esp.MAC_address])
33+
for ap in esp.scan_networks():
34+
print("\t%s\t\tRSSI: %d" % (str(ap['ssid'], 'utf-8'), ap['rssi']))
35+
while not esp.is_connected:
36+
try:
37+
print("Connecting to AP...")
38+
esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8'))
39+
except (ValueError, RuntimeError) as e:
40+
print("Failed to connect, retrying\n", e)
41+
continue
42+
print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi)
43+
print("My IP address is", esp.pretty_ip(esp.ip_address))
44+
45+
46+
counter = 0
47+
while True:
48+
try:
49+
while not esp.is_connected:
50+
# settings dictionary must contain 'ssid' and 'password' at a minimum
51+
esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8'))
52+
# great, lets get the data
53+
print("Posting data...", end='')
54+
data=counter
55+
feed='test'
56+
payload={'value':data}
57+
response=requests.post(
58+
"https://io.adafruit.com/api/v2/"+settings['aio_username']+"/feeds/"+feed+"/data",
59+
json=payload,headers={bytes("X-AIO-KEY","utf-8"):bytes(settings['aio_key'],"utf-8")})
60+
print(response.json())
61+
response.close()
62+
counter = counter + 1
63+
print("OK")
64+
except (ValueError, RuntimeError) as e:
65+
print("Failed to get data, retrying\n", e)
66+
continue
67+
response = None
68+
time.sleep(15)

examples/esp32spi_cheerlights.py

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import time
2+
import board
3+
import busio
4+
from digitalio import DigitalInOut
5+
6+
from adafruit_esp32spi import adafruit_esp32spi
7+
import adafruit_esp32spi.adafruit_esp32spi_requests as requests
8+
9+
import neopixel
10+
import adafruit_fancyled.adafruit_fancyled as fancy
11+
12+
13+
14+
# Get wifi details and more from a settings.py file
15+
try:
16+
from esp32spi_settings import settings
17+
except ImportError:
18+
print("WiFi settings are kept in settings.py, please add them there!")
19+
raise
20+
21+
22+
23+
print("ESP32 SPI webclient test")
24+
25+
DATA_SOURCE = "https://api.thingspeak.com/channels/1417/feeds.json?results=1"
26+
DATA_LOCATION = ["feeds", 0, "field2"]
27+
28+
29+
esp32_cs = DigitalInOut(board.D9)
30+
esp32_ready = DigitalInOut(board.D10)
31+
esp32_reset = DigitalInOut(board.D5)
32+
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
33+
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
34+
35+
requests.set_interface(esp)
36+
37+
if esp.status == adafruit_esp32spi.WL_IDLE_STATUS:
38+
print("ESP32 found and in idle mode")
39+
print("Firmware vers.", esp.firmware_version)
40+
print("MAC addr:", [hex(i) for i in esp.MAC_address])
41+
for ap in esp.scan_networks():
42+
print("\t%s\t\tRSSI: %d" % (str(ap['ssid'], 'utf-8'), ap['rssi']))
43+
while not esp.is_connected:
44+
try:
45+
print("Connecting to AP...")
46+
esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8'))
47+
except (ValueError, RuntimeError) as e:
48+
print("Failed to connect, retrying\n", e)
49+
continue
50+
print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi)
51+
print("My IP address is", esp.pretty_ip(esp.ip_address))
52+
53+
54+
# neopixels
55+
pixels = neopixel.NeoPixel(board.A1, 16, brightness=0.3)
56+
pixels.fill(0)
57+
builtin = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.1)
58+
builtin[0] = 0
59+
60+
# we'll save the value in question
61+
last_value = value = None
62+
the_time = None
63+
times = 0
64+
65+
66+
while True:
67+
try:
68+
while not esp.is_connected:
69+
builtin[0] = (100, 0, 0)
70+
# settings dictionary must contain 'ssid' and 'password' at a minimum
71+
esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8'))
72+
builtin[0] = (0, 100, 0)
73+
print("Fetching json from", DATA_SOURCE)
74+
builtin[0] = (100, 100, 0)
75+
r = requests.get(DATA_SOURCE)
76+
builtin[0] = (0, 0, 100)
77+
print(r.json())
78+
value=r.json()
79+
for x in DATA_LOCATION:
80+
value = value[x]
81+
print(value)
82+
r.close()
83+
except (ValueError, RuntimeError) as e:
84+
print("Failed to get data, retrying\n", e)
85+
continue
86+
87+
builtin[0] = (100, 100, 100)
88+
if not value:
89+
continue
90+
if last_value != value:
91+
color = int(value[1:],16)
92+
red = color >> 16 & 0xFF
93+
green = color >> 8 & 0xFF
94+
blue = color& 0xFF
95+
gamma_corrected = fancy.gamma_adjust(fancy.CRGB(red, green, blue)).pack()
96+
97+
pixels.fill(gamma_corrected)
98+
last_value = value
99+
times += 1
100+
r = None
101+
time.sleep(60)

examples/esp32spi_settings.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file is where you keep secret settings, passwords, and tokens!
2+
# If you put them in the code you risk committing that info or sharing it
3+
4+
settings = {
5+
'ssid' : 'yourssid',
6+
'password' : 'yourpassword',
7+
'timezone' : -5, # this is offset from UTC
8+
'aio_username' : 'youraiousername',
9+
'aio_key' : 'youraiokey',
10+
}

0 commit comments

Comments
 (0)