from time import localtime, time, sleep_ms, ticks_ms, sleep
from ntptime import settime
from dht import DHT22
from rede import Rede
from json import dumps, loads
from umqtt.simple import MQTTClient
from machine import Pin
import machine
i = DHT22(Pin(21))
Sensor = Pin(12)
led = Pin(13, Pin.OUT)
start = ticks_ms()
conteudo = {
"Temperatura": 0,
"Umidade": 0,
"Data": ''
}
print('\n\nConectando\n\n')
r = Rede('Wokwi-GUEST', '')
r.conectar(tentativas=20)
if r.conectado:
print("to na rede")
settime()
print(f'Data/Hora: {time()}')
ts = localtime()
print(f'Data/Hora: {ts}')
print(f'Data: {ts[2]}/{ts[1]}/{ts[0]},{ts[6]}')
tsb = time() - 3600 * 3
hb = localtime(tsb)
print(f'hora: {hb[3]}:{hb[4]}')
dados = MQTTClient('tsr2024', 'broker.hivemq.com')
dados.connect()
t = b'ifrs/rg/auto/2004s2/2024328900/movimento'
else:
print('Falha ao conectar à rede Wi-Fi')
JaSei = False
while True:
if Sensor.value() == 1 and not JaSei:
ts = localtime()
print(f'{ts[0]}-{ts[1]}-{ts[2]}T{ts[3]}:{ts[4]}:{ts[5]}')
print("Movimento detectado")
m = "Movimento"
dados.publish(t, m.encode())
led.value(1)
JaSei = True
elif Sensor.value() == 0:
JaSei = False
led.value(0)
if (ticks_ms() - start) >= 6000:
sleep_ms(100)
try:
i.measure()
conteudo["Temperatura"] = i.temperature()
conteudo["Umidade"] = i.humidity()
except Exception as e:
print(f"Erro ao ler o sensor DHT22: {e}")
conteudo["Temperatura"] = -1
conteudo["Umidade"] = -1
ts = localtime()
conteudo["Data"] = f"{ts[0]}-{ts[1]}-{ts[2]}T{ts[3]}:{ts[4]}:{ts[5]}"
print(conteudo)
start = ticks_ms()
texto = dumps(conteudo)
dados.publish(t, texto.encode())