import network
import time
import dht
from machine import Pin
from umqtt.simple import MQTTClient
import json
# WiFi credentials
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASS = ""
# MQTT broker details
MQTT_BROKER = "broker.hivemq.com"
MQTT_PORT = 1883
MQTT_TOPIC = "aiot/dht22"
# Initialize DHT22
sensor = dht.DHT22(Pin(15))
# Connect to WiFi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
print("Connecting to WiFi...", end="")
while not wlan.isconnected():
print(".", end="")
time.sleep(0.5)
print("\nConnected:", wlan.ifconfig())
return wlan
# Connect to MQTT broker
def connect_mqtt():
client_id = "ESP32_" + str(time.ticks_ms())
client = MQTTClient(client_id, MQTT_BROKER, port=MQTT_PORT)
client.connect()
print("Connected to MQTT broker:", MQTT_BROKER)
return client
# Main program
def main():
wlan = connect_wifi()
client = connect_mqtt()
while True:
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
# Create JSON message
data = json.dumps({"temperature": temp, "humidity": hum})
# Publish message
client.publish(MQTT_TOPIC, data)
print("Published:", data)
except OSError as e:
print("Sensor error:", e)
time.sleep(5) # Publish every 5 seconds
# Run main loop
main()
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4