adafruit_io_randomizer.py
1 """ 2 Example of using Adafruit IO's 3 random data service. 4 """ 5 import time 6 import board 7 import busio 8 from digitalio import DigitalInOut 9 10 # ESP32 SPI 11 from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager 12 13 # Import NeoPixel Library 14 import neopixel 15 16 # Import Adafruit IO HTTP Client 17 from adafruit_io.adafruit_io import IO_HTTP 18 19 # Get wifi details and more from a secrets.py file 20 try: 21 from secrets import secrets 22 except ImportError: 23 print("WiFi secrets are kept in secrets.py, please add them there!") 24 raise 25 26 # ESP32 Setup 27 try: 28 esp32_cs = DigitalInOut(board.ESP_CS) 29 esp32_ready = DigitalInOut(board.ESP_BUSY) 30 esp32_reset = DigitalInOut(board.ESP_RESET) 31 except AttributeError: 32 esp32_cs = DigitalInOut(board.D9) 33 esp32_ready = DigitalInOut(board.D10) 34 esp32_reset = DigitalInOut(board.D5) 35 36 spi = busio.SPI(board.SCK, board.MOSI, board.MISO) 37 esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) 38 status_light = neopixel.NeoPixel( 39 board.NEOPIXEL, 1, brightness=0.2 40 ) # Uncomment for Most Boards 41 """Uncomment below for ItsyBitsy M4""" 42 # status_light = dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.2) 43 wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, secrets, status_light) 44 45 # Set your Adafruit IO Username and Key in secrets.py 46 # (visit io.adafruit.com if you need to create an account, 47 # or if you need your Adafruit IO key.) 48 aio_username = secrets["aio_username"] 49 aio_key = secrets["aio_key"] 50 51 # Create an instance of the Adafruit IO HTTP client 52 io = IO_HTTP(aio_username, aio_key, wifi) 53 54 # Random Data ID 55 # (to obtain this value, visit 56 # https://io.adafruit.com/services/words 57 # and copy over the location ID) 58 random_data_id = 1234 59 60 while True: 61 try: 62 print("Fetching random data from Adafruit IO...") 63 random_data = io.receive_random_data(random_data_id) 64 print("Random Data: ", random_data["value"]) 65 print("Data Seed: ", random_data["seed"]) 66 print("Waiting 1 minute to fetch new randomized data...") 67 except (ValueError, RuntimeError) as e: 68 print("Failed to get data, retrying\n", e) 69 wifi.reset() 70 continue 71 time.sleep(60)