from machine import Pin, ADC
from time import sleep_ms, localtime
from network import WLAN, STA_IF
from ntptime import settime
from umqtt.robust import MQTTClient
from json import loads, dumps
import dht
topTele = b'ifrsrgauto/infoindustrial/telemetria/0377'
def conectarWiFi(nomerede, senharede):
r = WLAN(STA_IF)
r.active(True) # Ativa rede
if not r.isconnected():
r.connect(nomerede, senharede)
tentativas = 0
while not r.isconnected() and tentativas < 20:
sleep_ms(500)
tentativas += 1
return r, r.isconnected()
rede, conectado = conectarWiFi(nomerede='Wokwi-GUEST', senharede='')
if conectado:
print(localtime())
settime()
mqtt = MQTTClient('ClientID','broker.hivemq.com')
mqtt.connect()
print(localtime())
sensor = dht.DHT22(Pin(2))
while True:
t = localtime()
dicDados['timestamp'] = f'{t[0]}-{t[1]}-{t[2]}T{t[3]}:{t[4]}:{t[5]}'
sensor.measure()
temperatura = d.temperature()
umidade = d.humidity()
temperaturas.append(temperatura)
temperaturas.pop(0)
umidades.append(umidade)
umidades.pop(0)
# Calcula as médias móveis
media_T = sum(temperaturas) / len(temperaturas)
media_U = sum(umidades) / len(umidades)
dicDados = {'timestamp': '2000-1-1T0:0:0',
'temperatura': temperatura,
'umidade': umidade ,
'media_temp': media_T,
'media_umi': media_U
}
if conectado:
msg = dumps(dicDados)
mqtt.publish(topTele, msg.encode())
print(dicDados)
sleep_ms(15000)