Skip to content

Commit bdb6433

Browse files
author
Melissa LeBlanc-Williams
committed
WiFi manager done and examples updated
1 parent 520272c commit bdb6433

File tree

3 files changed

+30
-85
lines changed

3 files changed

+30
-85
lines changed

adafruit_esp32spi/adafruit_esp32spi_wifimanager.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"""
3131

3232
import neopixel
33+
from adafruit_esp32spi import adafruit_esp32spi
3334
import adafruit_esp32spi.adafruit_esp32spi_requests as requests
3435

3536
class ESPSPI_WiFiManager:
@@ -76,31 +77,34 @@ def get(self, url, **kw):
7677
"""
7778
Pass the Get request to requests and update Status NeoPixel
7879
"""
80+
if not self._esp.is_connected:
81+
self.connect()
7982
self.neo_status((100, 100, 0))
8083
return_val = requests.get(url, **kw)
81-
self.neo_status((0, 0, 100))
84+
self.neo_status(0)
8285
return return_val
8386

8487
def post(self, url, **kw):
8588
"""
8689
Pass the Post request to requests and update Status NeoPixel
8790
"""
91+
if not self._esp.is_connected:
92+
self.connect()
8893
self.neo_status((100, 100, 0))
8994
return_val = requests.post(url, **kw)
90-
self.neo_status((0, 0, 100))
95+
self.neo_status(0)
9196
return return_val
9297

93-
def ping(self, host):
98+
def ping(self, host, ttl=250):
9499
"""
95-
Pass the Ping request to requests and update Status NeoPixel
100+
Pass the Ping request to the ESP32, update Status NeoPixel, return response time
96101
"""
102+
if not self._esp.is_connected:
103+
self.connect()
97104
self.neo_status((100, 100, 0))
98-
#Blink the LED Green
99-
#Send Stuff to Requests
100-
#stop Blinking LED
101-
#Return Result
102-
self.neo_status((0, 0, 100))
103-
return None
105+
response_time = self._esp.ping(host, ttl=ttl)
106+
self.neo_status(0)
107+
return response_time
104108

105109
def neo_status(self, value):
106110
"""

examples/esp32spi_aio_post.py

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,35 @@
1-
21
import time
32
import board
43
import busio
54
from digitalio import DigitalInOut
65

76
from adafruit_esp32spi import adafruit_esp32spi
8-
import adafruit_esp32spi.adafruit_esp32spi_requests as requests
9-
7+
from adafruit_esp32spi import adafruit_esp32spi_wifimanager
108

119
print("ESP32 SPI webclient test")
1210

1311
# Get wifi details and more from a settings.py file
1412
try:
1513
from esp32spi_settings import settings
1614
except ImportError:
17-
print("WiFi settings are kept in settings.py, please add them there!")
15+
print("WiFi settings are kept in esp32spi_settings.py, please add them there!")
1816
raise
1917

20-
2118
esp32_cs = DigitalInOut(board.D9)
2219
esp32_ready = DigitalInOut(board.D10)
2320
esp32_reset = DigitalInOut(board.D5)
2421
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
2522
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-
23+
wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, settings, board.NEOPIXEL)
4524

4625
counter = 0
4726
while True:
4827
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
5328
print("Posting data...", end='')
54-
data=counter
55-
feed='test'
56-
payload={'value':data}
57-
response=requests.post(
29+
data = counter
30+
feed = 'test'
31+
payload = {'value':data}
32+
response = wifi.post(
5833
"https://io.adafruit.com/api/v2/"+settings['aio_username']+"/feeds/"+feed+"/data",
5934
json=payload,headers={bytes("X-AIO-KEY","utf-8"):bytes(settings['aio_key'],"utf-8")})
6035
print(response.json())

examples/esp32spi_cheerlights.py

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,87 +4,53 @@
44
from digitalio import DigitalInOut
55

66
from adafruit_esp32spi import adafruit_esp32spi
7-
import adafruit_esp32spi.adafruit_esp32spi_requests as requests
7+
from adafruit_esp32spi import adafruit_esp32spi_wifimanager
88

99
import neopixel
1010
import adafruit_fancyled.adafruit_fancyled as fancy
1111

12-
13-
1412
# Get wifi details and more from a settings.py file
1513
try:
1614
from esp32spi_settings import settings
1715
except ImportError:
18-
print("WiFi settings are kept in settings.py, please add them there!")
16+
print("WiFi settings are kept in esp32spi_settings.py, please add them there!")
1917
raise
2018

21-
22-
2319
print("ESP32 SPI webclient test")
2420

2521
DATA_SOURCE = "https://api.thingspeak.com/channels/1417/feeds.json?results=1"
2622
DATA_LOCATION = ["feeds", 0, "field2"]
2723

28-
2924
esp32_cs = DigitalInOut(board.D9)
3025
esp32_ready = DigitalInOut(board.D10)
3126
esp32_reset = DigitalInOut(board.D5)
3227
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
3328
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-
29+
wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, settings, board.NEOPIXEL)
5330

5431
# neopixels
5532
pixels = neopixel.NeoPixel(board.A1, 16, brightness=0.3)
5633
pixels.fill(0)
57-
builtin = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.1)
58-
builtin[0] = 0
5934

6035
# we'll save the value in question
6136
last_value = value = None
6237
the_time = None
6338
times = 0
6439

65-
6640
while True:
6741
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)
7342
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]
43+
response = wifi.get(DATA_SOURCE)
44+
print(response.json())
45+
value=response.json()
46+
for key in DATA_LOCATION:
47+
value = value[key]
8148
print(value)
82-
r.close()
49+
response.close()
8350
except (ValueError, RuntimeError) as e:
8451
print("Failed to get data, retrying\n", e)
8552
continue
8653

87-
builtin[0] = (100, 100, 100)
8854
if not value:
8955
continue
9056
if last_value != value:

0 commit comments

Comments
 (0)