/ examples / adafruit_io_http / adafruit_io_digital_out.py
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)