====== Commandes AT ======

Sans modification du programme le **circuit intégré ESP8266**  répondra à des commandes AT (ou commandes Hayes) s'il est chargé avec le [[electronique:esp:esp8266ex-restore-commandes-at|firmware adéquat]]. C'est le cas de la plupart des [[electronique:esp:specifications-esp-01|ESP-01]]

Je propose le T.P. suivant afin de prendre en main un **ESP8266** avec les commandes AT.

<WRAP clear/>
----

Vérifier le fonctionnement du mode Wifi

  AT+CWMODE?

----

Passer en mode dual (AP + client)  

  AT+CWMODE=3
  -> ok

----

Se connecter à un réseau
  
  AT+CWJAP="ACEGRP_NET","249cb30b415788bdd20c5d3c20"
  
  -> WIFI CONNECTED
  -> WIFI GOT IP
  -> 
  -> OK

----

Mémoriser les paramètres de connexion

  AT+CWQAP
  -> 
  -> OK

----

Lister les adresses réseaux

  AT+CIFSR
  -> +CIFSR:APIP,"192.168.4.1"
  -> +CIFSR:APMAC,"1a:fe:34:9a:36:13"
  -> +CIFSR:STAIP,"192.168.101.20"
  -> +CIFSR:STAMAC,"18:fe:34:9a:36:13"
  -> 
  -> OK

----

Activer les connexions multiples

<code>
00:21:55.429 -> OK
01:09:33.601 -> AT+CIPMUX=1
</code>

----

Activer le serveur Web (port 80)

<code>
01:09:33.601 -> OK
01:09:40.391 -> AT+CIPSERVER=1,80
</code>

Lorsqu'un client se connecte, les informations suivantes dans la console s'affichent :

<code>
01:09:56.319 -> 0,CONNECT
01:09:56.319 -> 
01:09:56.319 -> +IPD,0,341:GET / HTTP/1.1
01:09:56.319 -> Host: 192.168.101.20
01:09:56.319 -> User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0
01:09:56.319 -> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
01:09:56.319 -> Accept-Language: fr,fr-FR;q=0.5
01:09:56.319 -> Accept-Encoding: gzip, deflate
01:09:56.352 -> DNT: 1
01:09:56.352 -> Connection: keep-alive
01:09:56.352 -> Upgrade-Insecure-Requests: 1
01:09:56.352 -> 
01:12:56.522 -> 0,CLOSED
</code>
  
====== Glossaire des commandes AT - Wifi ======

===== CWMODE : Mode de fonctionnement du Wifi =====

**Retourner** la valeur numérique du mode de fonctionnement du Wifi du module ESP.

  AT+CWMODE?

**Désigner** la valeur numérique du mode de fonctionnement du Wifi du module ESP. Par exemple

  AT+CWMODE=3

**Valeurs numériques** pour désigner du mode de fonctionnement du Wifi pour **CWMODE** :

  * 1 = mode client
  * 2 = mode point d'accès (AP)
  * 3 = AP + mode client (dual mode)

__Exemple de réponse avec AT+CWMODE?__
  23:16:33.243 -> AT+CWMODE?
  23:16:33.243 -> +CWMODE:1


===== CWLAP - Lister les points d'accès =====

Lister les points d'accès vus par l'ESP.

  AT+CWLAP

Chaque ligne retournée correspond à un point d'accès avec les paramètres **ecn**, **ssid**, **rssi**, **mac**, **channel**.

  * ecn:  0 OPEN  , 1 WEP , 2 WPA_PSK , 3 WPA2_PSK , 4 WPA_WPA2_PSK
  * ssid: chaîne représentant le nom du point d'accès
  * rssi: force du signal en dB
  * mac: chaîne représentant l'adresse MAC
  * channel : valeur numérique

__Exemple de réponse avec AT+CWLAP__

<code>
23:16:55.796 -> AT+CWLAP
23:16:57.915 -> +CWLAP:(3,"ACEGRP_NET-F2",-22,"f8:9a:78:9b:67:05",4)
23:16:57.915 -> +CWLAP:(3,"ACEGRP_NET",-68,"50:c7:bf:8c:4f:e9",6)
23:16:57.915 -> +CWLAP:(3,"ACEGRP_NET",-82,"e0:24:81:49:14:eb",7)
23:16:57.915 -> 
23:16:57.915 -> OK
</code>

===== CWJAP - Se connecter à un point d'accès =====

Connecter à un point d'accès l'ESP de nom de réseau **ssid** et de mot de passe **passwd**.

  AT+CWJAP="ssid","passwd"

__Exemple de réponse avec AT+CWJAP en echec__

<code>
00:13:39.096 -> AT+CWJAP="ACEGRP_NET","249cb30b415788bdd20c5d3c20"

00:13:46.182 -> WIFI DISCONNECT
00:13:54.427 -> +CWJAP:1
00:13:54.427 -> 
00:13:54.427 -> FAIL
</code>

__Exemple de réponse avec AT+CWJAP en réussite__

<code>
00:14:02.538 -> AT+CWJAP="ACEGRP_NET","249cb30b415788bdd20c5d3c20"

00:14:08.763 -> WIFI CONNECTED
00:14:12.671 -> WIFI GOT IP
00:14:13.632 -> 
00:14:13.632 -> OK
</code>

===== CIFSR - Renvoi l'adresse IP local =====

  AT+CIFSR
  
Renvoi l'adresse IP local. Il y a une adresse en mode client et une adresse en mode AP.

===== CIPMUX - Permettre des connexions multiples =====

Permet des connexions multiples ou non. L'option **mode** permet d'autoriser (valeur 1) ou non (valeur 0) les connexions multiples.

  AT+CIPMUX=mode

===== CIPSERVER - Configurer comme un serveur =====

Configurer l'ESP8266 comme un serveur (**mode** à 1) ou non (**mode** à 0) sur le **port** indiqué. **Port** n'est pas une valeur obligatoire.

  AT+CIPSERVER=mode,port

Si **mode** est passé à 0, il faut redémarrer l'ESP8266.

Le **port** par défaut est le 333.

La création d'un serveur n'est possible qu'a condition d'executer en pré requis la commande ''AT+CIPMUX=1''.


