# Importações: Rede organiza todo coódigo de conecxão em uma única biblioteca
# Importações: MTTQClient gerencia a conexão ao broker
from machine import Pin
from rede import Rede
from umqtt.simple import MQTTClient
# Define a msg do primeiro tópico
# Define a msg do segundo tópico: "gerência" a lâmpada
topico = b'ifrs/rg/auto/1e1/213/m'
topcom = b'ifrs/rg/auto/1e1/213/m/lampada'
# Define os pinos do relé
rele = Pin(23, Pin.OUT, value = 0)
# ??
def informante (t, p):
if t == topcom:
msg = p.decode() # Transforma bytes em caractere
if p == 'on':
rele.on()
else:
rele.off()
else:
print (t, p)
# Organiza as informações da rede em uma variável
r = Rede('Wokwi-GUEST', '', conecta = False)
# Realiza 20 tentativas de 500 em 500 milisegundos, basicamente espera 10 segundos
r.conectar(tentativas = 20, intervalo = 500)
# Cria uma variável que gerencia a conexão com o broker
# Define uma função de retorno para as mensagens de assinatura recebidas.
# Conecta está variável ao broker
# Inscreve-se no tópico da lâmpada
bb = MQTTClient('27012010', 'broker.hivemq.com')
bb.set_callback(informante)
bb.connect()
bb.subscribe(topcom)
# Vê se o broker enviou alguma msg
while True:
bb.check_msg()
# Publica um tópico
bb.publish(topico, b'oie')
# Desconecta o broker
bb.disconnect()