from wifi_lib import conecta
from umqttsimple import MQTTClient
from machine import Pin, ADC
import time
from servo import Servo

mqtt_server = "broker.mqttdashboard.com"
mqtt_port = 1883
mqtt_user = ""
mqtt_password = ""
mqtt_client_id = "clientId-5ohu0Lyld8-Wokwi"

# Definir LED e Sensor de Temperatura
LED = Pin(5, Pin.OUT)
sensor_temp = ADC(Pin(34))  # pino para o sensor de temperatura
braco = Servo(4)

client = MQTTClient(mqtt_client_id, mqtt_server, mqtt_port, mqtt_user, mqtt_password)

def le_temperatura():
    # Simulação da leitura de temperatura
    valor_adc = sensor_temp.read()
    temperatura = (valor_adc / 4095) * 100  # Conversão fictícia
    print(f"Temperatura atual: {temperatura} °C")
    
    if temperatura > 1:
        print("Temperatura acima de 60°C!")
        client.publish("pucpr/prgg/msg_node_red_led", "LED ativado.")
        LED.on()
    else:
        print("Temperatura abaixo de 60°C. LED desativado.")
        LED.off()
    return temperatura

def recebi(topico, msg):
    braco.set_angle(int(msg.decode()))
# Função para conectar e publicar no MQTT Broker
def conecta_e_publica():
    print("Conectando WiFi...")
    station = conecta("Wokwi-GUEST", "")
    
    if not station.isconnected():
        print("Falha na conexão")
        return
    else:
        print("Conectado ao WiFi")

    # Conectar ao Broker MQTT
    print("Conectando ao Broker MQTT...")
    
    try:
        client.connect()
        print("Broker MQTT conectado com sucesso!")
        
        # Publicar leitura do sensor de temperatura
        temperatura = le_temperatura()
        client.publish("pucpr/prgg/temperatura", str(temperatura))
        print(f"Temperatura enviada: {temperatura}")
        
        # Configurar callback para controle do LED
        client.set_callback(recebi)
        print("Aguardando mensagem...")

        for i in range(3*60):
            client.publish("pucpr/prgg/msg_node_red", f"{i}")
            client.sleep(1)

    except Exception as e:
        print("Erro ao conectar ao Broker MQTT: ", e)

    finally:
        print("Desconectando...")
        client.disconnect()
        station.disconnect()
        print("Desconectado do WiFi e do Broker MQTT")

# Executa a função
conecta_e_publica()