import network
import time
import random
from umqtt.simple import MQTTClient
import json
# Configuración WiFi
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# Configuración MQTT para Flespi
MQTT_BROKER = "mqtt.flespi.io"
MQTT_PORT = 1883
FLESPI_TOKEN = "RbH4j1tj8JUG2uYLKBDEIH92OUtHwxB6vTZGqlNg0mUyvOup5bEW7yVStpkTd57O" # reemplázalo con tu token real
MQTT_CLIENT_ID = "esp32-flespi"
MQTT_STATUS_TOPIC = "Riemon/BoardStatus"
MQTT_SENSORS_TOPIC= "Riemon/sensores"
# Conectar a WiFi
print("\n🌐 Conectando a WiFi...", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(WIFI_SSID, WIFI_PASSWORD)
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.5)
print("\n✅ Conectado a WiFi:", sta_if.ifconfig())
# Conectar a Flespi MQTT
print("Conectando a Flespi MQTT...")
client = MQTTClient(
client_id=MQTT_CLIENT_ID,
server=MQTT_BROKER,
port=MQTT_PORT,
user="",
password=FLESPI_TOKEN,
keepalive=60
)
client.connect()
print("\n✅ Conectado a Flespi MQTT")
# Publicar mensajes cada 5 segundos
while True:
try:
# Simulación sensores
temperatura = round(random.uniform(18, 35), 2)
humedad_tierra = random.randint(20, 80)
nivel_agua = random.randint(0, 100)
payload = json.dumps({
"temp": temperatura,
"humedad": humedad_tierra,
"nivel": nivel_agua
})
mensaje_status = "✅ Sistema de Riego en Linea"
# Publicar
client.publish(MQTT_STATUS_TOPIC, mensaje_status)
client.publish(MQTT_SENSORS_TOPIC, payload)
print("Publicado en Flespi:")
print(" Estado:", mensaje_status)
print(" Sensores:", payload)
time.sleep(15)
except OSError as e:
print("⚠️ Error MQTT:", e)
try:
# Reintentar conexión
client.connect()
print("🔄 Reconectado a Flespi MQTT")
client.publish(MQTT_STATUS_TOPIC, mensaje_status)
except Exception as e2:
print("❌ Fallo reconexión:", e2)
time.sleep(5)