import network
import time
from machine import Pin
import dht
from umqtt import MQTTClient
# ---------------- Adafruit IO Credentials ----------------
AIO_USERNAME = "YOUR USERNAME"
AIO_KEY = "YOUR ACTIVE KEY"
MQTT_BROKER = "io.adafruit.com"
MQTT_PORT = 1883
MQTT_CLIENT_ID = "esp32-weather-client"
# Feeds
TEMP_FEED = AIO_USERNAME + "/feeds/temperature"
HUM_FEED = AIO_USERNAME + "/feeds/humidity"
# ---------------- Sensor ----------------
sensor = dht.DHT22(Pin(16))
# ---------------- WiFi Connection ----------------
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("Wokwi-GUEST", "")
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
# ---------------- MQTT Connection ----------------
print("Connecting to Adafruit IO...", end="")
client = MQTTClient(
MQTT_CLIENT_ID,
MQTT_BROKER,
user=AIO_USERNAME,
password=AIO_KEY,
port=MQTT_PORT
)
client.connect()
print(" Connected!")
# ---------------- Main Loop ----------------
while True:
try:
print("Measuring weather...")
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
print("Temp:", temperature, "°C")
print("Humidity:", humidity, "%")
# Publish to Adafruit IO feeds
client.publish(TEMP_FEED, str(temperature))
client.publish(HUM_FEED, str(humidity))
print("Data sent to Adafruit IO")
except Exception as e:
print("Error:", e)
time.sleep(5)