adafruit_io_digital_out.py
1 """ 2 Example of turning on and off a LED 3 from an Adafruit IO Dashboard. 4 """ 5 import time 6 import board 7 import busio 8 from digitalio import DigitalInOut, Direction 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, AdafruitIO_RequestError 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 try: 55 # Get the 'digital' feed from Adafruit IO 56 digital_feed = io.get_feed("digital") 57 except AdafruitIO_RequestError: 58 # If no 'digital' feed exists, create one 59 digital_feed = io.create_new_feed("digital") 60 61 # Set up LED 62 LED = DigitalInOut(board.D13) 63 LED.direction = Direction.OUTPUT 64 65 while True: 66 # Get data from 'digital' feed 67 print("getting data from IO...") 68 feed_data = io.receive_data(digital_feed["key"]) 69 70 # Check if data is ON or OFF 71 if int(feed_data["value"]) == 1: 72 print("received <- ON\n") 73 elif int(feed_data["value"]) == 0: 74 print("received <= OFF\n") 75 76 # Set the LED to the feed value 77 LED.value = int(feed_data["value"]) 78 79 time.sleep(5)