IP Fixe. Téléversement WiFi. Accès via internet

IP Fixe et Téléversement WiFi

En cas de changement de box ou de réinitialisation de la box, il arrive de perdre la table DHCP avec pour conséquence de voir tous les modules ESP changer d'adresse IP. Pour se prémunir contre cela, le plus simple consiste à se connecter en imposant l'adresse IP de la connexion (sous réserve que l'adresse soit libre).

Par ailleurs, lorsque le module est peu accessible, placé dans un faux plafond par exemple, la possibilité de téléverser de nouvelles versions du programme interne est un plus évident.

Ces deux évolutions sont proposées dans la vidéo ci-dessous.

Le code proposé dans la vidéo :

#include "Arduino.h"
#include "ESP8266WiFi.h"
#include "InfoConnexion.h"
#include "ArduinoOTA.h"

// Définition des entrées/sorties
#define PIN_LED_ROUGE 5
#define PIN_LED_VERTE 4

// Informations de connexion : cachées dans fichier InfoConnexion.h
// Vous pouvez décommenter ici ou créer comme moi un fichier InfoConnexion.h
//const char * SSID = "A définir";
//const char * PASSWORD = "A définir";

// Gestion des événements du WiFi
// Lorsque la connexion vient d'aboutir
void onConnected(const WiFiEventStationModeConnected& event);
// Lorsque l'adresse IP est attribuée
void onGotIP(const WiFiEventStationModeGotIP& event);

void setup() {
  IPAddress ip(192,168,0,201);
  IPAddress gateway(192,168,0,1);
  IPAddress subnet(255, 255, 255, 0);
  IPAddress dns(192, 168, 0, 1);

  // Mise en place d'une liaison série
  Serial.begin(9600L);
  delay(100);

  // Configuration des entrées/sorties
  pinMode(PIN_LED_ROUGE, OUTPUT);
  pinMode(PIN_LED_VERTE, OUTPUT);

  // Nom de l'objet OTA
  ArduinoOTA.setHostname("Objet LED");
  ArduinoOTA.setPassword("testtoto");

  // Mode de connexion
  WiFi.mode(WIFI_STA);

  // Mode point d'accès
  WiFi.softAP("Objet LED");
 
  // Configuration pour l'IP Fixe
  WiFi.config(ip, gateway, subnet, dns);

  // Démarrage de la connexion
  WiFi.begin(SSID, PASSWORD);

  static WiFiEventHandler onConnectedHandler = WiFi.onStationModeConnected(onConnected);
  static WiFiEventHandler onGotIPHandler = WiFi.onStationModeGotIP(onGotIP);
}

void loop() {
  // Si l'objet est connecté au réseau, on effectue les tâches qui doivent l'être dans ce cas
  if (WiFi.isConnected()) {
    digitalWrite(PIN_LED_ROUGE, HIGH);
    ArduinoOTA.begin();
  }
  else {
    digitalWrite(PIN_LED_ROUGE, LOW);
  }

  // ArduinoOTA...
  ArduinoOTA.handle();
}

void onConnected(const WiFiEventStationModeConnected& event) {
  Serial.println("WiFi connecté");
  Serial.println("Adresse IP : " + WiFi.localIP().toString());
}

void onGotIP(const WiFiEventStationModeGotIP& event) {
  Serial.println("Adresse IP : " + WiFi.localIP().toString());
  Serial.println("Passerelle IP : " + WiFi.gatewayIP().toString());
  Serial.println("DNS IP : " + WiFi.dnsIP().toString());
  Serial.print("Puissance de réception : ");
  Serial.println(WiFi.RSSI());
}

Accès via internet

Pour qu'un module ESP soit accessible de l'extérieur, c'est à dire via internet, il faut : connaître l'adresse IP de votre routeur sur l'internet et rediriger le protocole http d'un port de votre choix vers le serveur Web de l'objet connecté.

Votre adresse IP dépend de votre fournisseur d'accès à internet. Elle peut être fixe ou changer régulièrement. Si elle est fixe, aucun problème, vous pourrez l'utiliser en clair pour accéder à votre objet connecté une fois le routeur configuré. Si elle est variable, ce qui est mon cas avec Orange, il faudra passer par un DNS dynamique avec une inscription sur ddns.net.

La vidéo suivante vous explique tout ça.