from machine import Pin, ADC
from umqtt.simple import MQTTClient
import ujson
import network
import utime as time
import dht
DEVICE_ID = "wokwi001"
WIFI_SSID = "Wokwi-GUEST"
CONTRASEÑA_DEL_WIFI = ""
BROKER_MQTT = "broker.mqttdashboard.com"
CLIENTE_MQTT = DEVICE_ID
MQTT_TEMA_DE_TELEMETRIA = "iot/telemetry"
MQTT_TEMA_DE_CONTROL = "iot/control"
USUARIO_MQTT = ""
CONTRASENA_MQTT = ""
DHT_PIN = Pin(15)
Caudalimetro = ADC (Pin (34))
Caudalimetro.width(ADC.WIDTH_10BIT)
Caudalimetro.atten(ADC.ATTN_11DB)
caudalimetro = int(Caudalimetro.read())
RED_LED = Pin(12, Pin.OUT)
GREEN_LED = Pin(13, Pin.OUT)
def callback_recibida(topic, message):
print('\n Información recibida desde el broker MQTT \n tema = {0}, mensaje = {1}'.format(topic, message))
def on_connect():
print(f"Conectandose al broker MQTT {BROKER_MQTT}...", end="")
mqtt_client = MQTTClient(CLIENTE_MQTT, BROKER_MQTT, user=USUARIO_MQTT, password=CONTRASENA_MQTT)
mqtt_client.set_callback(callback_recibida)
mqtt_client.connect()
print(f"Conectado al broker MQTT {BROKER_MQTT}.")
mqtt_client.subscribe(MQTT_TEMA_DE_CONTROL)
return mqtt_client
def datos_del_sensor(humidity):
data = ujson.dumps({
"Flujo de agua": (35/100)*humidity,
"Porcentaje de agua pasando por el caudalimetro": humidity,
})
return data
def on_publish(topic, data):
print("\nactualizando el broker MQTT...")
mqtt_client.publish(topic, data)
print(data)
wifi_client = network.WLAN(network.STA_IF)
wifi_client.active(True)
print("Conectando a la red WiFi")
wifi_client.connect(WIFI_SSID, CONTRASEÑA_DEL_WIFI)
while not wifi_client.isconnected():
print("Conectandose al WiFi")
time.sleep(0.1)
print("Conectado a la red WiFi")
print(wifi_client.ifconfig())
mqtt_client = on_connect()
RED_LED.off()
GREEN_LED.off()
on_publish(MQTT_TEMA_DE_CONTROL, 'holaa')
dht_sensor = dht.DHT22(DHT_PIN)
datos_antiguos_1 = "yo existí"
datos_antiguos_2 = "yo existí"
while True:
mqtt_client.check_msg()
print(". ", end="")
try:
dht_sensor.measure()
Caudalimetro.measure()
except:
pass
time.sleep(0.2)
datos_actualizados_1 = datos_del_sensor(dht_sensor.humidity()) #
datos_actualizados_2 = caudalimetro
if datos_actualizados_1 != datos_antiguos_1:
on_publish(MQTT_TEMA_DE_TELEMETRIA, datos_actualizados_1)
datos_antiguos_1 = datos_actualizados_1
"""
if datos_actualizados_2 != datos_antiguos_2:
on_publish(MQTT_TEMA_DE_TELEMETRIA, datos_actualizados_2)
datos_antiguos_2 = datos_actualizados_2
"""
time.sleep(0.1)