From c4a32eeca9aee980b53b749f16e39a97954ffc3b Mon Sep 17 00:00:00 2001 From: brentru Date: Fri, 20 Nov 2020 13:59:26 -0500 Subject: [PATCH] add esp32spi simpletest to match cpython, native socket --- .../adafruit_io_simpletest_esp32spi.py | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 examples/adafruit_io_http/adafruit_io_simpletest_esp32spi.py diff --git a/examples/adafruit_io_http/adafruit_io_simpletest_esp32spi.py b/examples/adafruit_io_http/adafruit_io_simpletest_esp32spi.py new file mode 100644 index 0000000..86f8b8c --- /dev/null +++ b/examples/adafruit_io_http/adafruit_io_simpletest_esp32spi.py @@ -0,0 +1,71 @@ +# adafruit_circuitpython_adafruitio usage with an esp32spi_socket +from random import randint +import board +import busio +from digitalio import DigitalInOut +import adafruit_esp32spi.adafruit_esp32spi_socket as socket +from adafruit_esp32spi import adafruit_esp32spi +import adafruit_requests as requests +from adafruit_io.adafruit_io import IO_HTTP, AdafruitIO_RequestError + +# Add a secrets.py to your filesystem that has a dictionary called secrets with "ssid" and +# "password" keys with your WiFi credentials. DO NOT share that file or commit it into Git or other +# source control. +# pylint: disable=no-name-in-module,wrong-import-order +try: + from secrets import secrets +except ImportError: + print("WiFi secrets are kept in secrets.py, please add them there!") + raise + +# If you are using a board with pre-defined ESP32 Pins: +esp32_cs = DigitalInOut(board.ESP_CS) +esp32_ready = DigitalInOut(board.ESP_BUSY) +esp32_reset = DigitalInOut(board.ESP_RESET) + +# If you have an externally connected ESP32: +# 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) + +print("Connecting to AP...") +while not esp.is_connected: + try: + esp.connect_AP(secrets["ssid"], secrets["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) + +socket.set_interface(esp) +requests.set_socket(socket, esp) + +# Set your Adafruit IO Username and Key in secrets.py +# (visit io.adafruit.com if you need to create an account, +# or if you need your Adafruit IO key.) +aio_username = secrets["aio_username"] +aio_key = secrets["aio_key"] + +# Initialize an Adafruit IO HTTP API object +io = IO_HTTP(aio_username, aio_key, requests) + +try: + # Get the 'temperature' feed from Adafruit IO + temperature_feed = io.get_feed("temperature") +except AdafruitIO_RequestError: + # If no 'temperature' feed exists, create one + temperature_feed = io.create_new_feed("temperature") + +# Send random integer values to the feed +random_value = randint(0, 50) +print("Sending {0} to temperature feed...".format(random_value)) +io.send_data(temperature_feed["key"], random_value) +print("Data sent!") + +# Retrieve data value from the feed +print("Retrieving data from temperature feed...") +received_data = io.receive_data(temperature_feed["key"]) +print("Data from temperature feed: ", received_data["value"])