#------------------------------ [IMPORT]------------------------------------
import machine
from machine import Pin
import network
from umqtt.simple import MQTTClient
import dht
import time # tiempo
#--------------------------- [OBJETOS]---------------------------------------
led = machine.Pin(2, machine.Pin.OUT)
sensor = dht.DHT22(Pin(15))
#----------------------[ CONECTAR WIFI ]---------------------------------------------------------#
def conectaWifi(red, password):
global miRed
miRed = network.WLAN(network.STA_IF)
if not miRed.isconnected(): # Si no está conectado…
miRed.active(True) # Activa la interface
miRed.connect(red, password) # Intenta conectar con la red
print('Conectando a la red', red + "…")
timeout = time.time()
while not miRed.isconnected(): # Mientras no se conecte..
if (time.ticks_diff(time.time(), timeout) > 10):
return False
return True
#------------------------------------[CONFIGURACIÓN MQTT]----------------------------------------#
MQTT_CLIENT_ID = "BwMfDjcdIBYqAxMdBxMcLxA" # Reemplaza con el ID de cliente MQTT
MQTT_USERNAME = "BwMfDjcdIBYqAxMdBxMcLxA" # Reemplaza con el nombre de usuario MQTT
MQTT_PASSWORD = "mYp8Z0sb4qfri+Istr9SbMBD" # Reemplaza con la contraseña MQTT
MQTT_SERVER = "mqtt3.thingspeak.com"
MQTT_PORT = 1883
MQTT_TOPIC = "channels/2581729/publish" #reemplazar numero del canal
UPDATE_TIME_INTERVAL = 5000 # en ms
#------------------------------------[BOT]---------------------------------------------------------------------#
if conectaWifi("Wokwi-GUEST", ""):
print("Conexión exitosa!")
print('Datos de la red (IP/netmask/gw/DNS):', miRed.ifconfig())
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_SERVER, port=MQTT_PORT, user=MQTT_USERNAME, password=MQTT_PASSWORD, keepalive=60)
try:
client.connect(clean_session=True)
print("Connected!")
except Exception as e:
print("Failed to connect to MQTT server:", e)
# **************************************#
last_update = time.ticks_ms()
while True:
if time.ticks_ms() - last_update >= UPDATE_TIME_INTERVAL:
sensor.measure()
Temperatura = sensor.temperature()
Humedad = sensor.humidity()
payload = f"field1={Temperatura}&field2={Humedad}&status=MQTTPUBLISH"
try:
if not client.connect(clean_session=False):
print("Reconnected to MQTT server")
client.publish(MQTT_TOPIC, payload)
client.disconnect()
print("Published payload:", payload)
except Exception as e:
print("Failed to publish to MQTT server:", e)
led.value(not led.value())
last_update = time.ticks_ms()