import network
import time
from machine import Pin
from umqtt import MQTTClient
# ---------- WIFI ----------
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# ---------- ADAFRUIT IO ----------
AIO_BROKER = "io.adafruit.com"
AIO_PORT = 1883
AIO_USERNAME = "dkiranvvit"
AIO_KEY = "aio_OVVt85ybGFsKzE6u9mCcQBrWsUEj"
FEED = b"dkiranvvit/feeds/shadow-led"
CLIENT_ID = "pico-shadow-led"
# ---------- HARDWARE ----------
led = Pin(15, Pin.OUT)
button = Pin(14, Pin.IN, Pin.PULL_UP)
led_state = False
last_button = 1
# ---------- WIFI CONNECT ----------
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
print("Connecting to WiFi...")
while not wlan.isconnected():
time.sleep(0.2)
print("WiFi connected")
# ---------- MQTT CALLBACK ----------
def mqtt_callback(topic, msg):
global led_state
msg = msg.decode()
print("Received:", msg)
if msg == "ON":
led.on()
led_state = True
elif msg == "OFF":
led.off()
led_state = False
# ---------- MQTT CONNECT ----------
def connect_mqtt():
client = MQTTClient(
CLIENT_ID,
AIO_BROKER,
user=AIO_USERNAME,
password=AIO_KEY,
port=AIO_PORT
)
client.set_callback(mqtt_callback)
client.connect()
client.subscribe(FEED)
print("MQTT connected to Adafruit IO")
return client
# ---------- MAIN ----------
connect_wifi()
client = connect_mqtt()
while True:
client.check_msg()
current = button.value()
if last_button == 1 and current == 0:
led_state = not led_state
msg = "ON" if led_state else "OFF"
print("Button pressed →", msg)
client.publish(FEED, msg)
time.sleep(0.3)
last_button = current
time.sleep(0.05)
Loading
pi-pico-w
pi-pico-w