import time
import network
from machine import Pin
import dht
from umqtt.simple import MQTTClient
# WiFi setup
SSID = "Wokwi-GUEST"
PASSWORD = ""
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(0.5)
print("Connected! IP:", wlan.ifconfig()[0])
# MQTT setup
MQTT_BROKER = "broker.hivemq.com"
CLIENT_ID = "esp32-wokwi-demo"
TOPIC = b"esp32/iot/0235temp"
TOPIC_TEMP = b"esp32/iot/0235temp"
TOPIC_STATUS = b"esp32/iot/0235status"
TOPIC_CMD = b"esp32/iot/0235cmd"
TOPIC_HUM = b"esp32/iot/0235hum"
TOPIC_ACK = b"esp32/iot/0235ack"
mqtt = MQTTClient(CLIENT_ID, MQTT_BROKER)
mqtt.connect()
# Sensor setup
sensor = dht.DHT22(Pin(15))
# LED setup
led = Pin(2, Pin.OUT)
# blink_led = Pin(2, Pin.OUT)
# Callback for incoming messages
def callback(topic, msg):
if msg == b"ON":
led.value(1)
mqtt.publish(TOPIC_ACK, b"LED turned ON")
elif msg == b"OFF":
led.value(0)
mqtt.publish(TOPIC_ACK, b"LED turned OFF")
# def callback(topic, msg):
# print("Received:", topic.decode(), "->", msg.decode())
# if msg == b"ON":
# blink_led.value(1)
# elif msg == b"OFF":
# blink_led.value(0)
mqtt.set_callback(callback)
# mqtt.subscribe(TOPIC_CMD)
mqtt.subscribe(TOPIC_ACK)
print("Ready to receive commands...")
# Main loop
while True:
mqtt.check_msg()
# time.sleep(0.1)
# while True:
# sensor.measure()
# temp = sensor.temperature()
# hum = sensor.humidity()
# payload = f"{{'temperature': {temp}, 'humidity': {hum}}}"
# print("Publishing:", payload)
# # mqtt.publish(TOPIC, payload)
# # mqtt.publish(TOPIC_HUM, str(hum))
# if temp > 28:
# mqtt.publish(TOPIC_TEMP, payload)
# mqtt.publish(TOPIC_STATUS, b"Data sent successfully")
# time.sleep(2)