last_temperature = None
last_humidity = None
last_light_intensity = None
last_update_time = None
#Simuler la data des capteurs :
def simulate_sensor_data(time_limit):
    global last_temperature, last_humidity, last_light_intensity, last_update_time
    current_time = time.time()
    if last_update_time is None or current_time - last_update_time > time_limit:
        # Générer de nouvelles valeurs seulement si la durée limite est dépassée
        last_temperature = random.uniform(20, 30)  # Simule une température entre 20°C et 30°C
        last_humidity = random.uniform(40, 60)  # Simule une humidité entre 40% et 60%
        last_light_intensity = random.uniform(100, 1000)  # Simule une luminosité entre 100 et 1000 lux
        last_update_time = current_time  # Mettre à jour le temps de la dernière mise à jour
    return(last_temperature,last_humidity,last_light_intensity)
    
#Fonction pour controler la LED
def led_rec_state(req):
    json_start = req.find('{')
    json_data =""
    if json_start != -1:
        # Extraire les données JSON
        json_data = req[json_start:]
    try:
        data = ujson.loads(json_data) #Lorsque vous appelez ujson.loads(req), cela va interpréter la chaîne JSON et la convertir en un dictionnaire Python
        if "led" in data:
            if data["led"] == "on":
                print('LED ON')
                led.value(1)
            elif data["led"] == "off":
                print('LED OFF')
                led.value(0)
            else:
                print('Commande LED non reconnue')
        else:
            print('Commande LED manquante dans la requête JSON')
    except Exception as e:
        print('Erreur lors de l\'analyse de la requête JSON:', e)
#*****************************************
#*****************************************
def relais_rec_state(req):
    json_start = req.find('{')
    json_data =""
    if json_start != -1:
        # Extraire les données JSON
        json_data = req[json_start:]
    try:
        data = ujson.loads(json_data) #Lorsque vous appelez ujson.loads(req), cela va interpréter la chaîne JSON et la convertir en un dictionnaire Python
        if "relais" in data:
            if data["relais"] == "on":
                print('RELAIS ON')
                relais.value(1)
            elif data["relais"] == "off":
                print('RELAIS OFF')
                relais.value(0)
            else:
                print('Commande RELAIS non reconnue')
        else:
            print('Commande RELAIS manquante dans la requête JSON')
    except Exception as e:
        print('Erreur lors de l\'analyse de la requête JSON:', e)
        
def main():

    # Demander à l'utilisateur de choisir entre le Mode AP ou client
    mode_f = input("Veuillez Saisir 1 -> (Mode ACCESS PONT) & 2 -> (Mode Client) : ")
    try:
        mode_f = int(mode_f)
        if(mode_f == 1):
            accesspoint_wifi() #executer le mode access point
        elif(mode_f == 2):
            connect_wifi() # executer le mode client
        else:
            print("Veuillez entrer une valeur valide.")
    except:
        print("Veuillez entrer une valeur valide.")
    
    
    # Créer une socket TCP
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(('', 80))
    server_socket.listen(5)

    while True:
        try :
            conn, addr = server_socket.accept()
            print(' Connexion de client -> %s' % str(addr))
            request = conn.recv(1024).decode('UTF-8')
            # Analyser la requete pour changer l'etat de la LED :
            led_rec_state(request)
            relais_rec_state(request)
            print('Content -> %s' % request)
            #Réponse du serveur ****************************
            temperature,humidity,light_intensity = simulate_sensor_data(5)
            #************************************************
            data = {"temperature": temperature, "humidity": humidity, "light_intensity": light_intensity}  # Exemple de données JSON
            response = ujson.dumps(data) # Fichier JSON des données
            conn.send('HTTP/1.1 200 OK\n')
            conn.send('Content-Type: application/json\n')
            conn.send('Connection: close\n\n')
            conn.sendall(response)
        except Exception as e:
            print(f'Erreur lors de la communication avec le client {str(addr)} : {e}')
        finally:
            # Fermer la connexion du client avec le serveur
            conn.close()

if __name__ == "__main__":
    main()