import machine
from machine import Pin, ADC
import network
from umqtt.simple import MQTTClient
import dht
import time
led_r = Pin (14, Pin.OUT)
led_v = Pin (26, Pin.OUT)
caudalimetro = ADC (Pin (34))
red = "Wokwi-GUEST"
password = ""
def coneccionWIFI(red, password):
global miRed
miRed = network.WLAN (network.STA_IF)
if not miRed.isconnected():
miRed.active(True)
miRed.connect(red, password)
timeout = time.time()
while not miRed.isconnected():
if(time.ticks_diff(time.time(),timeout) > 10):
return False
return True
MQTT_CLIENT_ID = "MhM5HhoyACc1FxADNTIfLzA" #
MQTT_USERNAME = "MhM5HhoyACc1FxADNTIfLzA" #
MQTT_PASSWORD = "Z/Zws5w5+6h5E/22DTqSyymO" #
MQTT_SERVER = "mqtt3.thingspeak.com" #
MQTT_PORT = 1883 #
MQTT_TOPIC = "Watreon/2959169/publish"
UPDATE_TIME_INTERVAL = 1000
if coneccionWIFI("Wokwi-GUEST", ""):
print ("Usted está conectado a internet")
print ("Datos de la red (IP/netmask/gw/DNS): ", miRed.ifconfig())
print ("Conectando al servidor MQTT... ", end="")
Client = MQTTClient(MQTT_CLIENT_ID, MQTT SERVER, port=MQTT_PORT user=MQTT_USERNAME, password=MQTT_PASSWORD, topic=MQTT_TOPIC)
try:
client.connect(clean_session=True)
print("Conectado!")
except Exception as e:
print("Fallo la conección al servidor MQTT: ", e)
last_update = time.ticks_ms()
caudalimetro.width(ADC.WIDTH_10BIT)
caudalimetro.atten(ADC.ATTN_11DB)
while True:
lectura = int(caudalimetro.read())
time.sleep_ms(500)
Agua = 75 / 1023
Flujo = Agua * lectura
if Flujo <= 0:
print ("No está pasando agua por el caudalímetro")
led_r.value(1)
led_v.value(0)
if Flujo > 0 and Flujo < 75:
print (f"se están usando {Flujo} Litros por segundo de agua en la casa")
led_r.value(0)
led_v.value(1)
if Flujo >= 75:
print ("conecte el caudalimetro a una tuberia de 25mm o menor")
led_r.value(1)
led_v.value(0)
time.sleep_ms(500)