import network
import time
from machine import Pin, I2C
import dht
import ssd1306
from umqtt.simple import MQTTClient
# -------- WIFI --------
ssid = "Wokwi-GUEST"
password = ""
# -------- MQTT --------
mqtt_broker = "broker.hivemq.com"
client_id = "esp32_temp_mov"
topic = b"sensor/temperatura_movimiento"
# -------- SENSOR DHT22 --------
sensor = dht.DHT22(Pin(15))
# -------- SENSOR PIR --------
pir = Pin(13, Pin.IN)
# -------- OLED --------
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# -------- WIFI --------
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, password)
while not wifi.isconnected():
print("Conectando WiFi...")
time.sleep(1)
print("WiFi conectado")
# -------- MQTT --------
client = MQTTClient(client_id, mqtt_broker)
client.connect()
print("MQTT conectado")
oled.fill(0)
oled.text("Sistema iniciado", 0, 0)
oled.show()
time.sleep(2)
# -------- LOOP --------
while True:
sensor.measure()
temperatura = sensor.temperature()
movimiento = pir.value()
oled.fill(0)
oled.text("Temp: {} C".format(temperatura), 0, 0)
if movimiento == 1:
oled.text("Movimiento: SI", 0, 20)
else:
oled.text("Movimiento: NO", 0, 20)
oled.show()
mensaje = "Temp:{} Mov:{}".format(
temperatura, movimiento
)
client.publish(topic, mensaje)
print("Datos enviados:", mensaje)
time.sleep(5)