from machine import Pin
from HC1SR04 import HCSR04
from time import sleep
import network
import umqtt.simple as mqtt
# Configuración de WiFi
SSID = "Wee Fibra853" # Cambia esto por tu SSID
PASSWORD = "43188853" # Cambia esto por tu contraseña
# Conectar a WiFi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
print("Conectando a WiFi...")
sleep(15)
print("Conectado a WiFi:", wlan.ifconfig())
# Configuración del sensor y el LED
medidor = HCSR04(trigger_pin=4, echo_pin=5)
led = Pin(2, Pin.OUT)
# Configuración de MQTT
broker_address = "192.168.1.105" # Cambia esto por tu broker
client = mqtt.MQTTClient("ESP32Client", broker_address)
client.connect()
# Parámetros
ALTURA_TANQUE = 100
UMBRAL_NIVEL_AGUA = 30
TIEMPO_PARPADEO = 0.5
TIEMPO_MEDICION = 4
while True:
try:
# Medir la distancia
distancia = medidor.distance_cm()
print("Distancia medida desde el sensor hasta la superficie del agua: " + str(distancia) + " cm")
# Calcular el nivel de agua
nivel_agua = ALTURA_TANQUE - distancia
print("Nivel de agua calculado: " + str(nivel_agua) + " cm")
# Publicar en MQTT
client.publish("tanque/nivel", str(nivel_agua))
# Controlar el LED según el nivel de agua
if nivel_agua < UMBRAL_NIVEL_AGUA:
print("Alerta!! El nivel de agua es demasiado bajo!")
for i in range(5):
led.value(1)
sleep(TIEMPO_PARPADEO)
led.value(0)
sleep(TIEMPO_PARPADEO)
else:
led.value(0)
print("Nivel de agua normal.")
except Exception as e:
print("Error al medir la distancia: ", str(e))
sleep(TIEMPO_MEDICION)