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('Rafael', broker_address)
mqtt.connect()
print("Conectado ao MQTT")
sensor = dht.DHT22(Pin(17))
#dicionário de dados -->
dicDados = {
'timestamp': '2000-1-1T0',
'temperatura': 0,
'umidade': 0
}
while True:
try:
sensor.measure()
dicDados['temperatura'] = float(sensor.temperature())
dicDados['umidade'] = float(sensor.humidity())
except Exception as e:
print(f"Erro ao ler o sensor: {e}")
continue
t = localtime() #data e hora no leitor
dicDados['timestamp'] = f'{t[0]}-{t[1]}-{t[2]}T{t[3]}:{t[4]}:{t[5]}'
if conectado: #manda os dados pro mqtt
msg = dumps(dicDados)
mqtt.publish(topTele, msg.encode())
print("Publicado:", msg)
sleep_ms(5000)