"""Gerar, a cada intervalo definido, um resumo com temperatura, umidade, estado atual, maior temperatura registrada e quantidade de alertas.
Objetivo: organizar as medições em uma saída mais clara para análise.
Aplicação: simular uma telemetria local antes do envio para nuvem ou dashboard."""
from machine import Pin, PWM
from time import sleep, ticks_ms, ticks_diff
import dht
sensor = dht.DHT22(Pin(15))
def relatorio_status(temperatura, umidade, estado, maior_temperatura, quantidade_alertas):
"""
Exibe o relatório do sistema.
"""
print()
print("RELATÓRIO DE STATUS")
print()
print("Temperatura atual: {:.1f} °C".format(temperatura))
print("Umidade atual: {:.1f} %".format(umidade))
print("Estado atual:", estado)
print("Maior temperatura: {:.1f} °C".format(maior_temperatura))
print("Quantidade de alertas:", quantidade_alertas)
print()
print()
print("SISTEMA DE MONITORAMENTO")
print()
maior_temperatura = -100
quantidade_alertas = 0
# 15 segundos para teste
intervalo_relatorio = 15000
ultimo_relatorio = ticks_ms()
while True:
try:
sensor.measure()
temperatura = sensor.temperature()
umidade = sensor.humidity()
#maior temperatura
if temperatura > maior_temperatura:
maior_temperatura = temperatura
#classificação da umidade
if umidade < 35:
estado = "TEMPO SECO"
quantidade_alertas += 1
elif umidade < 70:
estado = "NORMAL"
else:
estado = "MUITO ÚMIDO"
quantidade_alertas += 1
#verifica se é hora de gerar o próximo relatório
agora = ticks_ms()
if ticks_diff(agora, ultimo_relatorio) >= intervalo_relatorio:
relatorio_status(temperatura, umidade, estado, maior_temperatura, quantidade_alertas)
print("Relatório gerado após {:.1f} segundos de execução.".format(agora / 1000))
ultimo_relatorio = agora
except OSError as erro:
print("Erro na leitura do sensor:", erro)
sleep(2)