Accueil | Niveau de difficulté | Avancé | Librairie WiFiManager : gérer facilement la connexion Wi-Fi des projets ESP8266

Librairie WiFiManager : gérer facilement la connexion Wi-Fi des projets ESP8266

La librairie WiFiManager permet de gérer très simplement la connexion Wi-Fi dans vos projets ESP8266. La connexion WiFi est très bien prise en charge par de nombreuses librairies, par exemple Blynk, Cayenne, Homie, ESP Easy. Pour des projets plus simples ou qui sortent du cadre de ces librairies, vous devez gérer vous même la connexion au réseau Wi-Fi. La librairie WiFiManager démarre l’ESP8266 en mode point d’accès (mode AP) qui dispose alors d’une fenêtre de configuration à un réseau WiFi. Il est également possible de saisir d’autres paramètres (serveur MQTT, Token Blynk…) en même temps que les paramètres WiFi.

Avantages de la librairie WiFiManager

Il peut aussi être très intéressant de ne pas embarquer d’identifiant et de mot de passe à un réseau Wi-Fi dans le code Arduino du projet. Par exemple, l’objet devra se connecter sur un réseau dont vous ne connaissez pas les identifiants au moment du développement. Les identifiants peuvent changer. par exemple, dans un établissement scolaire, les identifiants et mot de passe sont changés à chaque rentrée. Le point d’accès a été remplacé et le nouveau mot de passe est différent. Bref, vous l’avez compris, en évitant de coder “en dure” l’identifiant et le mot de passe, vous n’aurez pas besoin de repasser par l’IDE Arduino en cas de changement de mot de passe, de matériel ou de point d’accès.

Installer la librairie WiFiManager dans l’IDE Arduino

La librairie WiFiManager est directement disponible depuis le gestionnaire de bibliothèque de l’IDE Arduino. La page officielle du projet se trouve sur GitHub à cette adresse. Le projet a été développé et il est maintenu par tzapu (sa page perso). C’est un projet très populaire (1500 étoiles) qui est maintenu très régulièrement.

Ouvrez le gestionnaire de librairie (Croquis/Inclure une librairie/Gérer les bibliothèques)

wifimanager 0 add library ide arduino

Cherchez WiFiManager dans le champ de recherche puis installer.

wifimanager 00 librarie

C’est tout.

Comment utiliser la librairie

La librairie WiFiManager s’exécute au démarrage de l’ESP8266. Lorsque l’ESP démarre, la librairie tente de se connecter au dernier réseau connu ou au réseau indiqué dans le code (oui c’est aussi possible).

Voici comment faire. Au début du programme, on déclare les librairies nécessaires

Dans la boucle setup, on initialise la librairie

Ensuite on lance la connexion au réseau Wi-Fi avec la fonction autoConnect(). Plusieurs configurations sont possibles :

  • autoConnect() : on laisse la librairie définir un identifiant composé du préfixe ESP associé au numéro de série de l’ESP8266. Ce n’est pas très judicieux si vous avez plusieurs appareils
  • autoConnect(“AP-NAME”) : on indique le nom que portera le point d’accès.
  • autoConnect(“AP-NAME”, “AP-PASSWORD) : et enfin on définit un mot de passe qui protège la page de connexion au réseau WiFi.

Donc, si aucun réseau WiFi n’a été configuré ou si le réseau WiFi est inaccessible, un point d’accès est créé. Voici un programme de base que vous pouvez utiliser pour tester la librairie.

Comme vous pouvez le voir, il existe plusieurs méthodes complémentaires :

  • resetSettings() : permet de ré-initialiser les paramètres de connexion. C’est pratique pour la mise au point ou forcer l’ESP à démarrer en mode point d’accès (AP – Access Point). Utile pour tester différents réseaux
  • setAPStaticIPConfig() : permet d’indiquer l’adresse IP du point d’accès.

Après avoir téléversé le programme sur l’ESP8266, utilisez un ordinateur, une tablette ou un smartphone pour vous connecter au point d’accès créé par ce dernier.

wifimanager 1 apmode connexion point acces

Choisissez le réseau créé par l’ESP8266. Une fenêtre de connexion s’ouvre automatiquement. Choisissez par exemple la méthode Configure WiFi qui va lister les réseaux wi-Fi à portée.

wifimanager 2 fonctions connexion

Choisissez le réseau voulu et indiquez le mot de passe. Terminez par Save. Les paramètres de connexion sont sauvegardés pour le prochaine redémarrage. L’ESP est redémarré aussitôt avec ces nouveaux paramètres et votre programme démarre immédiatement.

wifimanager 3 connection reseau wifi

Vous pouvez très facilement suivre le déroulement du processus de connexion (et identifier des problèmes) en ouvrant le moniteur série. Le journal est très bien détaillé.

D’autres stratégies de connexion sont proposés dans le dossier exemples ici

  • AutoConnect : la connexion de base
  • AutoConnectWithFSParameters : les paramètres sont stockés dans la zone mémoire SPIFFS de l’ESP8266 et rechargés au démarrage
  • AutoConnectWithFSParametersAndCustomIP : idem mais avec un IP fixe et les paramètres de connexion à u serveur MQTT. Les paramètres sont stockés au format JSON à l’aide de la librairie ArduinoJson présentée dans ce tutoriel
  • AutoConnectWithFeedback :
  • AutoConnectWithFeedbackLED
  • AutoConnectWithReset
  • AutoConnectWithStaticIP : configuration avec IP statique sauvegardée dans la zone mémoire SPIFFS
  • AutoConnectWithTimeout
  • OnDemandConfigPortal : permet de convoquer le mode AP pour configurer une nouvelle connexion à l’aide d’un bouton de commande physique relié sur une broche de l’ESP8266

Peut-on combiner avec d’autres librairies : pubsubclient, ArduinoOTA… ?

Oui, la librairie WiFiManager est conçu pour être compatible avec les autres librairies. En effet, c’est une couche d’abstraction à la librairie ESP8266WiFi. Elle n’intervient qu’au démarrage de l’ESP8266. Cependant, comme il y a toujours un MAIS, j’ai rencontré quelques difficultés à me connecter à un serveur MQTT. C’est probablement plus une mauvaise implémentation de ma part qu’un réel problème au niveau de la librairie. Si vous avez plus d’expérience n’hésitez pas à partager dans les commentaires.

Pour gérer la connexion à un serveur (broker) MQTT vous pouvez vous inspirer de cet exemple disponible sur GitHub. WiFiManager est capable d’intégrer la saisie de paramètres de connexion supplémentaires. Par contre, il faut gérer soit même l’enregistrement et la chargement des paramètres au lancement de l’ESP8266 à l’aide de la méthode setSaveConfigCallback.

Concernant la mise à jour sans fil en Wi-Fi à l’aide de la librairie ArduinoOTA, c’est également possible. Par contre il faut sauvegarder et recharger les paramètres de connexion. Après une mise à jour, la librairie WiFiManager a tendance à oublier les paramètres de connexion précédents.