***Pour revenir à la page d’accueil** ICI
L’objectif est de comprendre puis réaliser un mini serveur Web sur un ESP 32/8266 connecté en WiFi
sur
une Box Internet ou
directement
sur un smartphone (Access Point).
Ce serveur est accessible localement mais aussi de n’importe quel endroit via Internet grace à la technique du port forwarding.
On évite ainsi de passer par un intermédiaire en general payant.
Un exemple utilisé quotidiennement de relevé de deux températures sur un navigateur de smartphone est présenté en annexe.
Dans le modèle client /serveur Web, on peut comparer le client à un client entrant dans un restaurant.
Il appelle un serveur, celui ci réagit en fournissant le menu ( ici une page Web ) au client.
Ensuite le client indique par un clic son choix au serveur.
Le serveur récupère l’information et peut effectuer une action locale : mesure de température, Led ou relais ON/OFF...
Ensuite le serveur peut soit renvoyer la page modifiée ou alors une autre page vers le client.
Dans la suite, le client sera un navigateur (Chrome, Firefox...) et le serveur un ESP 32 en mode WiFi.
L’ESP 32 ( ou son prédécesseur le 8266, compatible) a été choisi pour
son
WiFi (aussi le Bluetooth, compris la version BLE, basse énergie)
la
puissance de ses 2 processeurs ( 32 bits, 160/240 MHz, 512 kB RAM,4 MB
Flash)
mais
surtout pour sa compatibilité software avec
l’environnement Arduino IDE.
Concrètement, on le programme comme un Arduino, mais en bien plus musclé.
Un tel kit, environ 8€, se connecte via un cable microUSB (chargeur de telephone) sur un PC qui assure son alimentation (le 5 V du PC est abaissé par le kit en 3.3 V, tension de fonctionnement des ESP ).
Le chargement de la librairie est expliqué en detail sur https://randomnerdtutorials.com/dow...
Ci joint l’inevitable sketch Blink pour tester l’installation : il fait clignoter la led bleue incluse, associée au port GPIO 2 (c’est l’equivalent de D 13 sur l’Arduino qui a lui aussi sa led bleue).
Ce sketch provient de https://www.hackster.io/mjrobot/iot... qui est une bonne source de tests élémentaires avec l’ESP 32.
Les variantes entre les kits se retrouvent essentiellement dans la numérotation des entrées/sorties, ce qui est secondaire pour ce tuto.
Nota : si l’on veut creuser un peu sérieusement l’ESP 32, je conseil ce cours de plus de 500 pages, particulièrement clair et copieux, pour le prix d’un demi plein de super !
https://randomnerdtutorials.com/lea...
Pour ce premier exemple de serveur minimal, l’ESP 32 a été programmé avec ce code :
Afin de se concentrer sur l’étude de la partie serveur, aucun capteur n’est connecté.
Au démarrage, l’écran du moniteur (réglé à 115200 bps) permet de suivre les évolutions :
connexion
au réseau local, LAN
affiche l’adresse IP que la Box lui a attribué,
ici 192.168.0.12
***********Nota ces adresses varient suivant le nombre de périphériques connectés au réseau local*****************
mise
à l’écoute d’une demande/requête émise par un client
c’est à dire un navigateur Web, ici sur PC local ou un smartphone
connecté en WiFi.
le client entre http://192.168.0.12
cette requête arrive sous la forme d’une chaîne
de caractères au serveur
le serveur compose et envoie en réponse une
page Web au client
la page s’affiche dans le navigateur
Lorsque l’on clic sur "ICI", la chaîne
GET /maString HTTP/1.1
est transmise au serveur.
Page Web
Celle ci est composée en langage HTML (HyperTextMark-upLanguage). Ce n’est pas un langage de programmation comme le C ou le Java, mais une mise en forme un peu spéciale de lignes de texte au moyen de balises.
Un bonne introduction se trouve sur le site de reference pour le HTML : https://www.w3schools.com/html/defa...
Source ; https://randomnerdtutorials.com/esp...
Le client commande l’état des deux GPIO 26 et 27.
Jusqu’ici le serveur ESP 32 était relié au réseau local d’une Box, celle ci jouant le rôle de Point d’Accès (AP ou encore HotSpot).
On va maintenant programmer l’ESP 32 pour qu’il devienne lui même un point d’accès.
Source https://randomnerdtutorials.com/lea... Page 426
Logiciel
Ceci permettra par exemple d’utiliser un smartphone directement comme télécommande, indépendamment de tout autre réseau, Box(routeur) ou Internet.
Les deux seules modifications du code consistent à :
remplacer
l’identifiant (ssid) de la Box par sa propre appellation, les deux
lignes indiquées.Ici on a choisi "Mon-ESP32-en-AP", avec en option un
mot de passe (attention 8 caractères au moins).
les
lignes 39-40
On note l’adresse IP locale, fixe 192.168.4.1
UTILISATION
Sur le smartphone
Paramètres/WiFi
et on trouve "Mon-ESP32-en-AP"
Se
connecter, avec mot de passe éventuel
Ouvrir
le navigateur et entrer 192.168.4.1
|
Jusqu’ici le client devait être dans la zone couverte par le WiFi de la Box ou du serveur.Ils devaient être relativement proches.
Pour un dialogue client/serveur sans limitation de distance, l’idéal est de les faire communiquer via le réseau Internet.
Différents services de relais via des sites spécialisés sont proposés sur le marché mais il est tentant de s’en passer en procédant à un simple paramétrage au niveau de la Box : c’est la technique du Port Forwarding / Transfer de ports.
Le principe est d’établir une connexion directe entre
client et serveur en passant par l’adresse IP (fixe) de la Box :
le client compose cette adresse
la Box reçoit cette requête http sur son port
80 (c’est la convention) et comme elle a été paramétrée pour associer
le port 80 à l’adresse IP locale du serveur (193.168.12 ici) la liaison
client/serveur est établie.
Paramétrage
Le cas d’une Box SFR (ex Numericable) est présenté ici. Voir l’annexe pour d’autres Boxs.
L’adresse de la Box sur le réseau local est typiquement 192.168.0.1 à entrer dans le navigateur.
On prendra note au passage de l’adresse publique de la Box.Si elle est fixe, c’est parfait sinon voir l’Annexe.
Ensuite on accède aux paramètres
Sur la DMZ : https://fr.m.wikipedia.org/wiki/Zon...
On observe que les adresses IP locales distribuées par la Box changent en fonction du nombre de périphériques connectés à un instant donné.
Or le transfert de port associant une IP locale avec l’IP public de la Box, il est indispensable de FIXER cette IP locale.
On commence par lire la valeur de l’adresse MAC de l’ESP 32.
Selon Wikipedia : "Une adresse MAC (Media Access Control), :parfois nommée adresse physique, est un identifiant physique stocké dans une carte réseau ou une interface réseau similaire. À moins qu’elle n’ait été modifiée par l’utilisateur, elle est unique au monde".
On la trouve listée comme ci dessous
Ensuite on recopie cette adresse et choisit une IP dans la fourchette autorisée.
Dorénavant chaque fois que cet ESP 32 se connectera sur cette Box, il se verra attribué l’adresse 192.168.0.42.
Selon les fournisseurs d’accès, l’adresse publique d’une Box peut être fixe ou varier dans le temps.
Dans ce dernier cas, on peut utiliser un service tel
que :
DynDNS
noIP
dtDNS
DNS-O-MATIC
qui attribuent une IP fixe.
Voir par exemple https://homeprotection.fr/content/1...
LiveBox de chez Orange.
Au lieu de Port Forwarding, ici on utilise NAT et PAT : Network Address Translation, Port Address Translation
Les deux capteurs sont de type DS18B20, one wire--Dallas, connectés sur le même port, ici GPIO 5.
La page web se rafraîchit automatiquement, sans intervention de l’utilisateur ni du serveur toutes les 10 secondes.
Nota : un capteur déconnecté affiche -127.