#Configurer le Wifi Client sur la ESP
import time
import network
import socket
import ujson
# Remplacez ces valeurs par les informations de notre AP Wi-Fi.
SSID = "ESP32_AP_WIFI"
PASSWORD = "ESP32TEST" #Le mot de passe de connexion Wifi.
# Update Time :
UPDATE_TIME_INTERVAL = 5000 # in ms
last_update = time.ticks_ms()
# Fonction pour se connecter au réseau Wi-Fi
def connect_to_wifi(ssid, password):
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print("Connexion au réseau Wi-Fi...")
sta_if.active(True)
sta_if.connect(ssid, password)
while not sta_if.isconnected():
pass # ne rien faire jusqu'a avoir le connexion valide
print("Connecté au réseau Wi-Fi")
# Fonction pour afficher les informations du signal Wi-Fi au niveau du client
def display_wifi_info():
sta_if = network.WLAN(network.STA_IF)
if sta_if.isconnected():
print("Informations du signal Wi-Fi :")
print(" - Est connecté : ", sta_if.isconnected())
print(" - Adresse IP : ", sta_if.ifconfig()[0])
print(" - SSID : ", sta_if.config("essid"))
print(" - RSSI : {} dBm".format(sta_if.status("rssi")))
print(" - Adresse MAC : ", ":".join("{:02X}".format(b) for b in sta_if.config("mac")))
else:
print("Non connecté au réseau Wi-Fi")
# Fonction pour retourner l'état de la connexion Wifi :
def re_wifi_info():
sta_if = network.WLAN(network.STA_IF)
if sta_if.isconnected():
Adresse_IP = sta_if.ifconfig()[0]
SSID = sta_if.config("essid")
RSSI = sta_if.status("rssi")
S_Q = 2*(RSSI + 100)
MAC = sta_if.config("mac")
S_connexion = sta_if.isconnected()
return(Adresse_IP, SSID, RSSI, S_Q, MAC, S_connexion)
else:
return(0, 0, 0, 0, False)
# Connexion au réseau Wi-Fi
connect_to_wifi(SSID, PASSWORD)
#Afficher les informations du client Wifi :
display_wifi_info()
# Configuration du socket UDP (Layer 4)
port = 12345 # Port de communication UDP
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", port))
# Boucle principale : pour executer en boucle mon programme:
while True:
data, addr = sock.recvfrom(1024)
if data:
received_data = data.decode('UTF-8')
print(received_data)
try:
#Transformer la data JSON au format dictionnaire
data = ujson.loads(received_data)
if "temperature" in data:
print('Temperature = ',data["temperature"]," C")
if "humidity" in data:
print('Humidity = ',data["humidity"]," %")
except Exception as e:
print('Erreur lors de l\'analyse de la requête JSON:', e)
#Afficher les indicateurs de la Carte ESP8266 périodiquement
if time.ticks_ms() - last_update >= UPDATE_TIME_INTERVAL:
last_update = time.ticks_ms()
Adresse_IP, SSID, RSSI, S_Q, MAC, S_connexion = re_wifi_info()
print("RSSI =", RSSI,"dBm", "QI =",S_Q,"%")