from machine import Pin
from time import sleep, ticks_ms, ticks_diff
import network
import dht
from umqtt.simple import MQTTClient
import ujson
import random
# ===== CONFIGURAÇÕES =====
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASS = ""
MQTT_SERVER = "mqtt-dashboard.com"
MQTT_PORT = 1883
MQTT_TOPIC = b"sdcp/teste"
DHT_PIN = 15
LED_PIN = 2
PUBLISH_INTERVAL = 5000 # ms
# ===== HARDWARE =====
led = Pin(LED_PIN, Pin.OUT)
sensor = dht.DHT22(Pin(DHT_PIN))
# ===== WIFI =====
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Conectando ao Wi-Fi...")
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
sleep(0.2)
print("Wi-Fi conectado!")
print("IP:", wlan.ifconfig()[0])
return wlan
# ===== MQTT =====
def connect_mqtt():
client_id = b"esp32-jr"
client = MQTTClient(client_id, MQTT_SERVER, port=MQTT_PORT)
client.connect()
print("Conectado ao broker MQTT!")
return client
def publicar(nome, client, temperatura, umidade):
payload = {
"nome": nome,
"temperatura": temperatura,
"umidade": umidade,
}
msg = ujson.dumps(payload)
client.publish(MQTT_TOPIC, msg)
print("Publicado:", msg)
# ===== PROGRAMA PRINCIPAL =====
wlan = connect_wifi()
mqtt = connect_mqtt()
ultimo_envio = 0
while True:
try:
if not wlan.isconnected():
wlan = connect_wifi()
agora = ticks_ms()
if ticks_diff(agora, ultimo_envio) >= PUBLISH_INTERVAL:
ultimo_envio = agora
sensor.measure()
temperatura = sensor.temperature()
umidade = random.randint(1, 100)
nome = "Arthur Ribeiro"
if temperatura > 30:
led.on()
else:
led.off()
if umidade > 30:
print ("Alerta na Umidade!")
publicar(nome, mqtt, temperatura, umidade)
sleep(0.2)
except OSError as e:
print("Erro:", e)
try:
mqtt = connect_mqtt()
except:
pass
sleep(2)