from ai.assistente import genera_messaggio
from audio.suoni import suona_neko

ding_suonato = False
messaggio_salvato = ""
ultimo_led_blu = []

def analizza_ambiente(
    temperatura,
    umidita,
    ppm,
    stato,
    meteo,
    giornaliero,
    colore_temperatura,
    colore_umidita,
    colore_aria,
    colore_meteo
):

    global ding_suonato
    global messaggio_salvato
    global ultimo_led_blu

    dati = {
        "temperatura": temperatura,
        "umidita": umidita,
        "ppm": ppm,
        "stato_aria": stato,

        "temperatura_esterna": meteo["temperature_2m"],
        "umidita_esterna": meteo["relative_humidity_2m"],
        "pioggia": meteo["rain"],
        "vento": meteo["wind_speed_10m"],
        "uv": giornaliero["uv_index_max"][0],
        "weather_code": meteo["weather_code"],

        "colore_temperatura": colore_temperatura,
        "colore_umidita": colore_umidita,
        "colore_aria": colore_aria,
        "colore_meteo": colore_meteo
    }

    # Calcolo dello stato di comfort

    punteggi = {
        "bianco": 100,
        "celeste": 85,
        "azzurro": 60,
        "blu": 20
    }

    comfort = int((
        punteggi[colore_temperatura] +
        punteggi[colore_umidita] +
        punteggi[colore_aria] +
        punteggi[colore_meteo]
        ) / 4)

    dati["comfort"] = comfort
    
    led_blu = []

    if colore_temperatura == "blu":
        led_blu.append("temperatura")

    if colore_umidita == "blu":
        led_blu.append("umidita")

    if colore_aria == "blu":
        led_blu.append("aria")

    if colore_meteo == "blu":
        led_blu.append("meteo")

    # LIVELLO 2 DISATTIVATO
    if len(led_blu) == 0:
        ding_suonato = False
        messaggio_salvato = ""
        ultimo_led_blu = []

        print("\n>>> LIVELLO 2 DISATTIVATO <<<")
        return False, dati

    # LIVELLO 2 ATTIVATO
    print("\n>>> LIVELLO 2 ATTIVATO <<<")
    print("LED critici:", ", ".join(led_blu))

    if led_blu != ultimo_led_blu:

        print(">>> NUOVA SITUAZIONE RILEVATA <<<")

        suona_neko()

        messaggio_salvato = genera_messaggio(dati)
        print(messaggio_salvato)

        ultimo_led_blu = led_blu.copy()

    return True, dati

def get_messaggio_salvato():
    return messaggio_salvato
