#ESP32 EN MODE AP
import machine
import network
import socket
import time
import ujson
import dht
# Configuration de la ESP en AP Wi-Fi
ssid = "ESP32_AP_WIFI"
password = "ESP32TEST"
channel = 4 # Canal Wifi
txpower = 11 # Puissance d'émission en dBm (0 à 20, selon la réglementation locale)
authmode=network.AUTH_WPA_WPA2_PSK
max_clients = 2
#Configuration des paramètres de la couche 2 (802.11n)
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=ssid, password=password, authmode=authmode, max_clients=max_clients, channel = channel, txpower= txpower)
# Attendez que le point d'accee Wifi soit active
while ap.active() == False:
pass
# Configuration de la couche 3 (Protocole IP)
ip_address = "192.168.10.1" # Adresse IP statique souhaitée
subnet_mask = "255.255.255.0" # Masque de sous-réseau
gateway = "192.168.10.1" # Passerelle par défaut
dns_server = "8.8.8.8" # Serveur DNS
#Activer la configuration au point d'accès Wifi (L3)
ap.ifconfig((ip_address, subnet_mask, gateway, dns_server))
# fonction d'affichage des paramètres :
def display_wifi_info():
ap = network.WLAN(network.AP_IF)
if ap.isconnected():
print("Adresse IP : ", ap.ifconfig()[0])
print("Adresse MAC : ", ":".join("{:02X}".format(b) for b in ap.config("mac")))
print("SSID : ", ap.config("ssid"))
print("Mode de chiffrement : ", ap.config("authmode"))
print("Canal Wi-Fi : ", ap.config("channel"))
print("Puissance d'émission: {} dBm".format(ap.config("txpower")))
else:
print("Non connecté avec un Client Wifi")
# Configuration du socket UDP (Mode UDP) (L4)
ip_client = "192.168.10.2" # Adresse IP du client
port = 12345 # Port de communication UDP
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Configuration du capteur DHT11
dht_pin = machine.Pin(18) # GPIO 18
dht_sensor = dht.DHT11(dht_pin)
while True:
# Lire les données du capteur DHT11
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
# Créer un dictionnaire pour enregister les paramètres a envoyés
data = {'temperature': temperature, 'humidity': humidity}
# Convertir le dictionnaire en une chaîne JSON
data_to_send = ujson.dumps(data)
if ap.isconnected():
try:
sock.sendto(data_to_send.encode('UTF-8'), (ip_client, port))
print("Données de capteur envoyées :", data_to_send)
time.sleep(2) # Lire les données du capteur toutes les 2 secondes
except Exception as e:
print("Erreur d'envoi :", e)
else:
print("Déconnecter")
time.sleep(5) #SLEEP 5s avant de tester la connexion à un client.