from machine import Pin
from time import sleep_ms, localtime
from network import WLAN, STA_IF
from ntptime import settime
from umqtt.robust import MQTTClient
from json import dumps
import dht
topTele = b'ifrs\pav10\lab1'
broker_address = 'broker.hivemq.com'
def conectaWiFi(nomerede, senharede):
r = WLAN(STA_IF)
r.active(True)
if not r.isconnected():
r.connect(nomerede, senharede)
tentativas = 0
while not r.isconnected() and tentativas < 20:
sleep_ms(700)
tentativas += 1
return r, r.isconnected()
rede, conectado = conectaWiFi(nomerede='Wokwi-GUEST', senharede='')
if conectado:
print(localtime())
settime()
mqtt = MQTTClient('GuiESP_32', broker_address)
mqtt.connect()
print("Conectado ao MQTT")
sensor = dht.DHT22(Pin(4))
dlcDados = {
'timestamp': '2000-1-1T0:0:0',
'temperature': 0,
'umidade': 0 }
while True:
#leitura dados
try:
sensor.measure()
dlcDados['temperature'] = int(sensor.temperature())
dlcDados['umidade'] = int(sensor.humidity())
except Exception as e:
print(f"Erro ao ler o sensor: {e}")
continue
t = localtime() #data e hora no leitor
dlcDados['timestamp'] = f'{t[0]}-{t[1]}-{t[2]}T{t[3]}:{t[4]}:{t[5]}'
if conectado: #manda os dados pro mqtt
msg = dumps(dlcDados)
mqtt.publish(topTele, msg.encode())
print(dlcDados)
sleep_ms(15000)
#Usa esse link https://www.hivemq.com/demos/websocket-client/