import network
import time
import machine
import dht
from umqtt.simple import MQTTClient
# ==========================================
# WIFI CONFIG
# ==========================================
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# ==========================================
# MQTT CONFIG
# ==========================================
MQTT_BROKER = "broker.hivemq.com"
# Change this to something unique
MQTT_CLIENT_ID = "esp32_temp_sensor_01"
# MQTT Topics
TEMP_TOPIC = "home/bedroom/temperature"
HUM_TOPIC = "home/bedroom/humidity"
# ==========================================
# DHT22 SENSOR CONFIG
# ==========================================
# DHT22 DATA pin connected to GPIO15
dht_sensor = dht.DHT22(machine.Pin(15))
# ==========================================
# WIFI CONNECTION
# ==========================================
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Connecting to WiFi...")
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print("WiFi Connected!")
print("IP Address:", wlan.ifconfig()[0])
# ==========================================
# MQTT CONNECTION
# ==========================================
def connect_mqtt():
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER)
client.connect()
print("Connected to MQTT Broker!")
return client
# ==========================================
# MAIN PROGRAM
# ==========================================
connect_wifi()
client = connect_mqtt()
try:
while True:
# Read DHT22 Sensor
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
print("Temperature:", temperature, "°C")
print("Humidity:", humidity, "%")
# Publish Temperature
client.publish(TEMP_TOPIC, str(temperature))
# Publish Humidity
client.publish(HUM_TOPIC, str(humidity))
print("MQTT Data Published!")
print("------------------------")
# Wait 5 seconds
time.sleep(5)
except KeyboardInterrupt:
print("Program stopped.")