Les bases du réseau avec les ESP

Ce qui est très (très) intéressant avec les ESP 8266 et 32, c'est de disposer du wifi en natif, ce qui est idéal pour créer des objets connectés.

Connexion en Wifi

Une des caractéristiques intéressante des modules ESP, c'est de disposer de la connexion Wifi.

On a ici besoin d'un réseau wifi, que l'on peut utiliser sans sécurisation à des fins de tests, la sécurisation pouvant être faîte plus tard (il n'y a aucun danger particulier si de plus le réseau n'est pas connecté à internet). Dans l'exemple ici, on a un réseau wifi local dlink public.

On commence par importer le module network :

import network

Ensuite, on fait :

>>> import network
>>> station=network.WLAN(network.STA_IF)
>>> station.active(True)
True
>>> station.connect("dlink","")
>>> station.isconnected()
True
>>> station.ifconfig()
('192.168.0.101', '255.255.255.0', '192.168.0.1', '0.0.0.0')

Bah bah... tout ok en moins de 2 !

Lien : https://projetsdiy.fr/tutoriel-micropython-gerer-connexion-wifi/

Test de la réponse

Ensuite, il faut créer un socket qui va permettre de gérer la connexion (à faire une fois) :

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)

Ensuite on gère la réception d'une connexion et la réponse à envoyer (code à boucler) :

s.accept()
#(<socket>, ('192.168.0.100', 51836))
conn,addr=s.accept()
print(conn)
#<socket>
print(addr)
#('192.168.0.100', 51844)
print(conn.recv(1024))
#b'GET / HTTP/1.1\r\nHost: 192.168.0.101\r\nUser-Agent: Mozilla/5.0 (X11; Linux i686; rv:78.0) Gecko/20100101 Firefox/78.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Language: fr,en-US;q=0.7,en;q=0.3\r\nAccept-Encoding: gzip, deflate\r\nDNT: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-GPC: 1\r\n\r\n'
conn.settimeout(None)
response="Hello !"
conn.send('HTTP/1.1 200 OK\n')
conn.send('Content-Type: text/html\n')
conn.send('Connection: close\n\n')
conn.sendall(response)
conn.close()

Bref, on peut gérer assez simplement un petit serveur local et récupérer de la donnée sans fil. Vu que l'on est en wifi, un simple routeur de récup' fera l'affaire et on pourra avoir une portée non négligeable sans trop de problèmes.