from time import localtime, time, sleep
from machine import Pin
from ntptime import settime
from rede import Rede
from json import dumps, loads
from umqtt.robust import MQTTClient
def debug(arg):
print (arg)
led = Pin(23, Pin.OUT)
topEnvia = b'ifrsrgauto/projeto/luminaria/estado'
topRecebe = b'ifrsrgauto/projeto/luminaria/comando'
topFofoca = b'ifrsrgauto/projeto/luminaria/fofoca'
def fofoqueira(topico, mensagem):
if topico == topRecebe:
try:
cmd = loads(mensagem.decode())
if 'acao' in cmd:
if cmd['acao'] == 'liga':
led.on()
else:
led.off()
except:
print ('deu ruim')
elif topico == topFofoca:
print (topico)
print (mensagem.decode())
print ('\n\nConectando a rede\n\n')
r = Rede ('Wokwi-GUEST','', cb=None, conecta=False)
r.conectar(tentativas=40, intervalo=1000)
if r.conectado:
settime()
ts = localtime()
dados = {'data': f'{ts[2]}/{ts[1]}/{ts[0]}',
'hora': f'{ts[3]}:{ts[4]}:{ts[5]}',
'luminaria': False}
mqtt = MQTTClient('crr0948','broker.hivemq.com')
mqtt.set_callback(fofoqueira)
mqtt.connect()
mqtt.subscribe(topRecebe)
mqtt.subscribe(topFofoca)
while True:
if r.conectado:
mqtt.check_msg()
ts = localtime()
dados['hora'] = f'{ts[3]}:{ts[4]}:{ts[5]}'
msgfinal = dumps(dados)
mqtt.publish(topEnvia, msgfinal.encode())
else:
print ('Não conectou à rede')
sleep(1)