import time import board import busio from digitalio import DigitalInOut from digitalio import Direction # ESP32 SPI from adafruit_espatcontrol import ( adafruit_espatcontrol, adafruit_espatcontrol_wifimanager, ) import neopixel import adafruit_fancyled.adafruit_fancyled as fancy # Get wifi details and more from a secrets.py file try: from secrets import secrets except ImportError: print("WiFi secrets are kept in secrets.py, please add them there!") raise # With a Particle Argon RX = board.ESP_TX TX = board.ESP_RX resetpin = DigitalInOut(board.ESP_WIFI_EN) rtspin = DigitalInOut(board.ESP_CTS) uart = busio.UART(TX, RX, timeout=0.1) esp_boot = DigitalInOut(board.ESP_BOOT_MODE) esp_boot.direction = Direction.OUTPUT esp_boot.value = True status_light = None print("ESP AT commands") esp = adafruit_espatcontrol.ESP_ATcontrol( uart, 115200, reset_pin=resetpin, rts_pin=rtspin, debug=False ) wifi = adafruit_espatcontrol_wifimanager.ESPAT_WiFiManager(esp, secrets, status_light) DATA_SOURCE = "https://api.thingspeak.com/channels/1417/feeds.json?results=1" DATA_LOCATION = ["feeds", 0, "field2"] # neopixels pixels = neopixel.NeoPixel(board.A1, 16, brightness=0.3) pixels.fill(0) # we'll save the value in question last_value = value = None while True: try: print("Fetching json from", DATA_SOURCE) response = wifi.get(DATA_SOURCE) print(response.json()) value = response.json() for key in DATA_LOCATION: value = value[key] print(value) response.close() except (ValueError, RuntimeError, adafruit_espatcontrol.OKError) as e: print("Failed to get data, retrying\n", e) wifi.reset() continue 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 response = None time.sleep(60)