from machine import Pin, I2C
from neopixel import NeoPixel
from ssd1306 import SSD1306_I2C
from rede import Rede
from time import sleep_ms
from umqttsimple import MQTTClient
import ujson # Certifique-se de usar ujson para carregar JSON
# Inicializações
i2c = I2C(0)
oled = SSD1306_I2C(128, 64, i2c)
np = NeoPixel(Pin(17, Pin.OUT), 1)
pixels = NeoPixel(Pin(2, Pin.OUT), 3)
botoes = (Pin(19, Pin.IN, Pin.PULL_DOWN),
Pin(18, Pin.IN, Pin.PULL_DOWN),
Pin(16, Pin.IN, Pin.PULL_DOWN))
b = [0, 0, 0]
bAnt = [0, 0, 0]
def indica(arg):
np[0] = arg
np.write()
def indica2(arg):
oled.fill(0)
oled.text(arg, 10, 10)
oled.show()
net = Rede('Wokwi-GUEST', '', cb=indica2)
'''
def trataMsg(topico, conteudo):
global automatico, c
print(topico, ',', conteudo)
if topico == topcomandos:
texto = conteudo.decode()
dados = ujson.loads(texto)
if 'modo' in dados:
automatico = dados['modo'] == 'automatico'
if 'nivel3' in dados:
c = dados['nivel3']
'''
topcomandos = '/ifrsgauto/projetos/sala/luminaria/comando'
if not net.conectado:
net.configurar('192.168.0.204', '255.255.255.0', '192.168.0.1', '8.8.8.8')
net.conectar()
indica((255, 255, 0))
indica2('Conectando')
if net.conectado:
indica((0, 0, 255))
indica2('Conectado')
cliente = MQTTClient('broker.hivemq.com', '2024S1botoes')
#cliente.set_callback(trataMsg) # Certifique-se de que a função `trataMsg` é usada
cliente.connect()
#cliente.subscribe(topcomandos)
else:
indica((255, 0, 0))
indica2('Desconectado')
while True:
for posicao in range(3):
b[posicao] = botoes[posicao].value()
if b[posicao] != bAnt[posicao]:
if b[posicao] == 1:
if pixels[posicao] != (0, 0, 0):
pixels[posicao] = (0, 0, 0)
else:
pixels[posicao] = (0, 0, 255)
pixels.write()
sleep_ms(200)
bAnt[posicao] = b[posicao]