from machine import Pin
from dht import DHT22
from time import sleep_ms localtime
from json import dumps loads
from rede import rede
from umqtt.robust import MQTTClient
from ntptime import settime
def debug(arg):
print (arg)
def fofoqueira(t, p):
print(f"Tópico:{t}")
print(f"Conteúdo:{p}")
if t == t2:
comando = loads(p.decode())
if comando["acao"] == "porta":
if comando ["param"] == 1:
rele.on()
else:
rele.off()
else:
print ("Comando não reconhecido")
elif t == t3:
print("Nem te conto")
print(p.decode() )
topico = b"ifrs/auto/projeto/902/telemetria"
t2 = b'ifrs/geral/mensagens'
t3 = b'ifrs/geral/babados'
sensor = DHT22(Pin(10))
rele = Pin(1, Pin.OUT, value=0)
dados = {}
r =Rede('Wokwi-GUEST', '', cb=debug)
if r.conectado:
settime()
cliente = MQTTClient('arnesto1234',
'broker.hivemq.com')
cliente.set_callback(fofoqueira)
cliente.connect()
cliente.subscribe(t2)
cliente.subscribe(t3)
else:
print("Sem rede. Que ruim")
while True:
cliente.check_msg()
sensor.measure()
t = localtime()
dt = f'{t[0]}-{t[1]}-{t[2]}'
hr = f'{t[3]}:{t[4]}:{t[5]}'
dados['quando'] = f'{dt} T {hr}'
dados['temperatura'] = sensor.temperature()
dados['umidade'] = sensor.humidity()
conteudo = dumps(dados)
payload = conteudo.encode()
if r.conectado:
cliente.publish(topico, payload)
print(payload)
sleep_ms(2000)