From 6b727e8353f411c775e3b62c0adb86a4a066e45e Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Wed, 13 Feb 2019 07:39:26 -0500 Subject: [PATCH 1/3] add aio post and cheerlights examples --- examples/._ | 71 ++++++++++++++++++++++ examples/esp32spi_aio_post.py | 68 +++++++++++++++++++++ examples/esp32spi_cheerlights.py | 101 +++++++++++++++++++++++++++++++ examples/settings.py | 10 +++ 4 files changed, 250 insertions(+) create mode 100644 examples/._ create mode 100644 examples/esp32spi_aio_post.py create mode 100644 examples/esp32spi_cheerlights.py create mode 100644 examples/settings.py diff --git a/examples/._ b/examples/._ new file mode 100644 index 0000000..9783f37 --- /dev/null +++ b/examples/._ @@ -0,0 +1,71 @@ + +import board +import busio +from digitalio import DigitalInOut +import time + +from adafruit_esp32spi import adafruit_esp32spi +import adafruit_esp32spi.adafruit_esp32spi_requests as requests + + +print("ESP32 SPI webclient test") + +# Get wifi details and more from a settings.py file +try: + from settings import settings +except ImportError: + print("WiFi settings are kept in settings.py, please add them there!") + raise + + +esp32_cs = DigitalInOut(board.D9) +esp32_ready = DigitalInOut(board.D10) +esp32_reset = DigitalInOut(board.D5) +spi = busio.SPI(board.SCK, board.MOSI, board.MISO) +esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) + +requests.set_interface(esp) +esp._debug = False + +if esp.status == adafruit_esp32spi.WL_IDLE_STATUS: + print("ESP32 found and in idle mode") +print("Firmware vers.", esp.firmware_version) +print("MAC addr:", [hex(i) for i in esp.MAC_address]) +for ap in esp.scan_networks(): + print("\t%s\t\tRSSI: %d" % (str(ap['ssid'], 'utf-8'), ap['rssi'])) +while not esp.is_connected: + try: + print("Connecting to AP...") + esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) + except (ValueError, RuntimeError) as e: + print("Failed to connect, retrying\n", e) + continue +print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) +print("My IP address is", esp.pretty_ip(esp.ip_address)) + + +counter = 0 +while True: + try: + while not esp.is_connected: + # settings dictionary must contain 'ssid' and 'password' at a minimum + esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) + # great, lets get the data + print("Posting data...", end='') + data=counter + feed='test' + payload={'value':data} + response=requests.post( + "https://io.adafruit.com/api/v2/"+settings['aio_username']+"/feeds/"+feed+"/data", + json=payload,headers={bytes("X-AIO-KEY","utf-8"):bytes(settings['aio_key'],"utf-8")}) + print(response.json()) + response.close() + counter = counter + 1 + print("OK") + except (ValueError, RuntimeError) as e: + print("Failed to get data, retrying\n", e) + continue + response = None + time.sleep(15) + + diff --git a/examples/esp32spi_aio_post.py b/examples/esp32spi_aio_post.py new file mode 100644 index 0000000..5209fc2 --- /dev/null +++ b/examples/esp32spi_aio_post.py @@ -0,0 +1,68 @@ + +import time +import board +import busio +from digitalio import DigitalInOut + +from adafruit_esp32spi import adafruit_esp32spi +import adafruit_esp32spi.adafruit_esp32spi_requests as requests + + +print("ESP32 SPI webclient test") + +# Get wifi details and more from a settings.py file +try: + from settings import settings +except ImportError: + print("WiFi settings are kept in settings.py, please add them there!") + raise + + +esp32_cs = DigitalInOut(board.D9) +esp32_ready = DigitalInOut(board.D10) +esp32_reset = DigitalInOut(board.D5) +spi = busio.SPI(board.SCK, board.MOSI, board.MISO) +esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) + +requests.set_interface(esp) + +if esp.status == adafruit_esp32spi.WL_IDLE_STATUS: + print("ESP32 found and in idle mode") +print("Firmware vers.", esp.firmware_version) +print("MAC addr:", [hex(i) for i in esp.MAC_address]) +for ap in esp.scan_networks(): + print("\t%s\t\tRSSI: %d" % (str(ap['ssid'], 'utf-8'), ap['rssi'])) +while not esp.is_connected: + try: + print("Connecting to AP...") + esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) + except (ValueError, RuntimeError) as e: + print("Failed to connect, retrying\n", e) + continue +print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) +print("My IP address is", esp.pretty_ip(esp.ip_address)) + + +counter = 0 +while True: + try: + while not esp.is_connected: + # settings dictionary must contain 'ssid' and 'password' at a minimum + esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) + # great, lets get the data + print("Posting data...", end='') + data=counter + feed='test' + payload={'value':data} + response=requests.post( + "https://io.adafruit.com/api/v2/"+settings['aio_username']+"/feeds/"+feed+"/data", + json=payload,headers={bytes("X-AIO-KEY","utf-8"):bytes(settings['aio_key'],"utf-8")}) + print(response.json()) + response.close() + counter = counter + 1 + print("OK") + except (ValueError, RuntimeError) as e: + print("Failed to get data, retrying\n", e) + continue + response = None + time.sleep(15) diff --git a/examples/esp32spi_cheerlights.py b/examples/esp32spi_cheerlights.py new file mode 100644 index 0000000..4717e3d --- /dev/null +++ b/examples/esp32spi_cheerlights.py @@ -0,0 +1,101 @@ +import time +import board +import busio +from digitalio import DigitalInOut + +from adafruit_esp32spi import adafruit_esp32spi +import adafruit_esp32spi.adafruit_esp32spi_requests as requests + +import neopixel +import adafruit_fancyled.adafruit_fancyled as fancy + + + +# Get wifi details and more from a settings.py file +try: + from settings import settings +except ImportError: + print("WiFi settings are kept in settings.py, please add them there!") + raise + + + +print("ESP32 SPI webclient test") + +DATA_SOURCE = "https://api.thingspeak.com/channels/1417/feeds.json?results=1" +DATA_LOCATION = ["feeds", 0, "field2"] + + +esp32_cs = DigitalInOut(board.D9) +esp32_ready = DigitalInOut(board.D10) +esp32_reset = DigitalInOut(board.D5) +spi = busio.SPI(board.SCK, board.MOSI, board.MISO) +esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) + +requests.set_interface(esp) + +if esp.status == adafruit_esp32spi.WL_IDLE_STATUS: + print("ESP32 found and in idle mode") +print("Firmware vers.", esp.firmware_version) +print("MAC addr:", [hex(i) for i in esp.MAC_address]) +for ap in esp.scan_networks(): + print("\t%s\t\tRSSI: %d" % (str(ap['ssid'], 'utf-8'), ap['rssi'])) +while not esp.is_connected: + try: + print("Connecting to AP...") + esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) + except (ValueError, RuntimeError) as e: + print("Failed to connect, retrying\n", e) + continue +print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) +print("My IP address is", esp.pretty_ip(esp.ip_address)) + + +# neopixels +pixels = neopixel.NeoPixel(board.A1, 16, brightness=0.3) +pixels.fill(0) +builtin = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.1) +builtin[0] = 0 + +# we'll save the value in question +last_value = value = None +the_time = None +times = 0 + + +while True: + try: + while not esp.is_connected: + builtin[0] = (100, 0, 0) + # settings dictionary must contain 'ssid' and 'password' at a minimum + esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) + builtin[0] = (0, 100, 0) + print("Fetching json from", DATA_SOURCE) + builtin[0] = (100, 100, 0) + r = requests.get(DATA_SOURCE) + builtin[0] = (0, 0, 100) + print(r.json()) + value=r.json() + for x in DATA_LOCATION: + value = value[x] + print(value) + r.close() + except (ValueError, RuntimeError) as e: + print("Failed to get data, retrying\n", e) + continue + + builtin[0] = (100, 100, 100) + if not value: + continue + if last_value != value: + color = int(value[1:],16) + red = color >> 16 & 0xFF + green = color >> 8 & 0xFF + blue = color& 0xFF + gamma_corrected = fancy.gamma_adjust(fancy.CRGB(red, green, blue)).pack() + + pixels.fill(gamma_corrected) + last_value = value + times += 1 + r = None + time.sleep(60) diff --git a/examples/settings.py b/examples/settings.py new file mode 100644 index 0000000..4b5013d --- /dev/null +++ b/examples/settings.py @@ -0,0 +1,10 @@ +# This file is where you keep secret settings, passwords, and tokens! +# If you put them in the code you risk committing that info or sharing it + +settings = { + 'ssid' : 'yourssid', + 'password' : 'yourpassword', + 'timezone' : -5, # this is offset from UTC + 'aio_username' : 'youraiousername', + 'aio_key' : 'youraiokey', +} From bd7f679cb3016f93c0781f68a806d7506b0b400a Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Wed, 13 Feb 2019 08:48:38 -0500 Subject: [PATCH 2/3] remove extraneous file --- examples/._ | 71 ----------------------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 examples/._ diff --git a/examples/._ b/examples/._ deleted file mode 100644 index 9783f37..0000000 --- a/examples/._ +++ /dev/null @@ -1,71 +0,0 @@ - -import board -import busio -from digitalio import DigitalInOut -import time - -from adafruit_esp32spi import adafruit_esp32spi -import adafruit_esp32spi.adafruit_esp32spi_requests as requests - - -print("ESP32 SPI webclient test") - -# Get wifi details and more from a settings.py file -try: - from settings import settings -except ImportError: - print("WiFi settings are kept in settings.py, please add them there!") - raise - - -esp32_cs = DigitalInOut(board.D9) -esp32_ready = DigitalInOut(board.D10) -esp32_reset = DigitalInOut(board.D5) -spi = busio.SPI(board.SCK, board.MOSI, board.MISO) -esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) - -requests.set_interface(esp) -esp._debug = False - -if esp.status == adafruit_esp32spi.WL_IDLE_STATUS: - print("ESP32 found and in idle mode") -print("Firmware vers.", esp.firmware_version) -print("MAC addr:", [hex(i) for i in esp.MAC_address]) -for ap in esp.scan_networks(): - print("\t%s\t\tRSSI: %d" % (str(ap['ssid'], 'utf-8'), ap['rssi'])) -while not esp.is_connected: - try: - print("Connecting to AP...") - esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) - except (ValueError, RuntimeError) as e: - print("Failed to connect, retrying\n", e) - continue -print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) -print("My IP address is", esp.pretty_ip(esp.ip_address)) - - -counter = 0 -while True: - try: - while not esp.is_connected: - # settings dictionary must contain 'ssid' and 'password' at a minimum - esp.connect_AP(bytes(settings['ssid'],'utf-8'), bytes(settings['password'],'utf-8')) - # great, lets get the data - print("Posting data...", end='') - data=counter - feed='test' - payload={'value':data} - response=requests.post( - "https://io.adafruit.com/api/v2/"+settings['aio_username']+"/feeds/"+feed+"/data", - json=payload,headers={bytes("X-AIO-KEY","utf-8"):bytes(settings['aio_key'],"utf-8")}) - print(response.json()) - response.close() - counter = counter + 1 - print("OK") - except (ValueError, RuntimeError) as e: - print("Failed to get data, retrying\n", e) - continue - response = None - time.sleep(15) - - From 7a83bb26554655dd4f995d9afe6e06933e449b4f Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Wed, 13 Feb 2019 10:59:15 -0500 Subject: [PATCH 3/3] rename setting.py to esp32_settings.py --- examples/esp32spi_aio_post.py | 2 +- examples/esp32spi_cheerlights.py | 2 +- examples/{settings.py => esp32spi_settings.py} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename examples/{settings.py => esp32spi_settings.py} (100%) diff --git a/examples/esp32spi_aio_post.py b/examples/esp32spi_aio_post.py index 5209fc2..817ea70 100644 --- a/examples/esp32spi_aio_post.py +++ b/examples/esp32spi_aio_post.py @@ -12,7 +12,7 @@ # Get wifi details and more from a settings.py file try: - from settings import settings + from esp32spi_settings import settings except ImportError: print("WiFi settings are kept in settings.py, please add them there!") raise diff --git a/examples/esp32spi_cheerlights.py b/examples/esp32spi_cheerlights.py index 4717e3d..7ef9419 100644 --- a/examples/esp32spi_cheerlights.py +++ b/examples/esp32spi_cheerlights.py @@ -13,7 +13,7 @@ # Get wifi details and more from a settings.py file try: - from settings import settings + from esp32spi_settings import settings except ImportError: print("WiFi settings are kept in settings.py, please add them there!") raise diff --git a/examples/settings.py b/examples/esp32spi_settings.py similarity index 100% rename from examples/settings.py rename to examples/esp32spi_settings.py