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()