Votre ESP peut soit rejoindre un réseau Wi-Fi existant, soit créer son propre réseau sans fil (que les appareils devront rejoindre pour discuter avec lui)
Si vous créez le réseau, vous pouvez prendre l'adresse IP que vous voulez
Si vous rejoignez un réseau, le plus souvent l'adresse IP vous sera allouée par votre box internet, (attribution automatique d'une adresse IP à tout appareil qui rejoint le réseau et en a besoin par DHCP), mais vous pouvez aussi allouer une adresse autorisée fixe sur votre box pour l'ESP comme cela il aura toujours la même, ou câbler en dur une adresse dans l'ESP mais si d'aventure cette IP est allouée à un autre appareil par le routeur vous aurez des soucis réseau
la vraie question est sans doute "pourquoi voulez vous la fixer" ?
Pour créer un projet de domotique (par exemple allumer une lampe par l'ESP8266), il faut que l'ESP8266 rejoigne le réseau Wifi existant pour le contrôler d'où on veut.(sauf erreur de ma part)
ATTRIBUER UNE IP FIXE :
Donc quelle est la manip pour attribuer une IP fixe à l'ESP ? Si il n'y a que ordis et téléphones qui se connectent au réseau Wifi, y a-t-il un risque de soucis quelconques ?
OU
SINON ADRESSE VARIABLE :
Est ce qu'il est possible de :
connecter l'ESP en wifi à une box (donc il aura une certaine IP attribuée par la Box)
L'ESP pour une raison ou une autre se déconnecte (par exemple, la box s'éteint), puis se reconnecte automatiquement (est-ce possible ?)
L'ESP a donc une nouvelle adresse IP
Comment faire pour la récupérer pour pouvoir contrôler à nouveau l'ESP ?
Si j'utilise quelque chose comme Domoticz (où je crois il y a besoin d'entrer l'IP du module), suis-je obligé de entrer la nouvelle IP à chaque problème de connexion de Box wifi ?
pas nécessairement nouvelle ....
l'ESP8266 peut à la connection choisir son adresse ip
Celle ci peut également être rendue fixe paramétrage de la box qui associe alors de manière constante adresse ip et adresse MAC
si l'adresse ip est fixe elle est connue d'avance, on sait où se connecter.
Vous pouvez dire à votre Box de toujours donner la même adresse IP à votre ESP
la façon de faire dépend de votre Box mais en gros on associe l'adresse MAC de l'ESP à une adresse IP fixe. Quand votre box voit une demande d'adresse IP en provenance de cette adresse MAC, il lui donne celle que vous avez choisie
Autre question :
Est ce que pour lancer une requête à un serveur partir le l'ESP8266, on utilise cette commande :
http.begin(client, "http://serveur/") ?
Tprog:
Et comment on peut faire ça (au niveau du code) ?
bonjour
un déjà vieux bout de code pour esp8266
pour affecter une IP fixe en mode softAP (autre que le 192.162.4.1) et IP FIXE en mode STA
Si je me souviens bien, il y a un piege : il faut imperativement lancer la config AP avant la config STA , l'inverse ne fonctionne pas
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
confap();
confsta();
delay(10);
scannw();
Serial.println();
Serial.print("Flash Size = ");
Serial.println(ESP.getFlashChipSize());
Serial.println();
Serial.println();
Serial.print("Connecting to ");
// Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) { // wait until connected
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// server.begin(); // Start the server
Serial.println("Server started");
WiFi.printDiag(Serial);
}
void loop() {
}
void scannw()
{
// scan network
Serial.println("scan start");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
Serial.println("no networks found");
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
delay(10);
}
}
}
void confap() {
const char *apssid = "ESP8266 AP";
const char *appassword = "";
Serial.println();
Serial.print("SOFTAP SSID = ");
Serial.println(apssid);
Serial.print("SOFTAP PASSWORD = ");
Serial.println(appassword);
Serial.print("Configuring access point...");
IPAddress APIp(189, 32, 16, 8); // ok IP FIXE SOFT AP
IPAddress NMask(255, 255, 255, 0);
WiFi.softAPConfig(APIp, APIp, NMask);
WiFi.softAP(apssid, appassword);
Serial.print("MAC AP : ");
Serial.println(WiFi.softAPmacAddress());
Serial.print("AP IP address: ");
Serial.println(WiFi.softAPIP());
}
void confsta() {
const char* ssid = "azerty"; // SSID of LAN/WLAN
const char* password = "pw"; // password
const int port = 80; // port to serve pages through
WiFiServer server(port);
IPAddress ip(192, 168, 1, 130); // OK IP fixe STA
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
Serial.print("MAC STA : ");
Serial.println(WiFi.macAddress());
Serial.print("STA IP address: ");
Serial.println(WiFi.localIP());
}
Pour les requêtes d'un client le mieux est d'étudier les divers exemples disponibles deans l(IDE Arduino doté de l'extension ESP8266, à commencer par BasicHttpClient
deux pistes:
sur l'équivalent d'une box (BE) je peux avec la MAC address de l'ESP ajouter une IP fixe. Donc peut-être regarder dans les paramètres de la box comment lier une MAC avec une IP?
La MAC address est affichée lorsque tu load un sketch.
Autre solution, associer un Name à l'ESP:
//au début du .ino, ajouter:
#include <ESPmDNS.h> // header pour esp32 !! 1 seul des deux !!
#include <ESP8266mDNS.h> // header pour esp8266
const char* host = "web32_02"; // le nom que tu veux...
...
// dans la fonction setup() ajouter à la fin(après la connection wifi etc...) !!!
MDNS.begin(host);
Dans le browser: appeler l'url suivante
http://web32_02/
Pour avoir les caractéristiques de l'esp connecté - tu peux avec python et en ligne de commande y accéder facilement.
Avoir une version de python récente
y ajouter la librairie esptool : pip install esptool
Lancer en ligne de commande (répertoire scripts si tu as plusieurs version de python) la commande suivante:
(je suis sous windows donc esptool est un exe, sous d'autres os peut-être indiquer esptool.py)
esptool flash_id
C:\Winutils\DevUtils\Python38\Scripts>esptool flash_id
esptool.py v2.8
Found 2 serial ports
Serial port COM4
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 84:f3:eb:e3:93:25
Uploading stub...
Running stub...
Stub running...
Manufacturer: ef
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
C:\Winutils\DevUtils\Python38\Scripts>
Pour contacter une machine par son nom (par ex. "forum.arduino.cc") il est nécessaire de transformer ce nom en une adresse IP numérique (104.20.190.47).
Il y a plusieurs méthodes :
des méthodes qui dépendent complètement du système d'exploitation (Win, MacOS, Linux), la plus simple étant d'avoir un fichier "hosts" qui contient une liste de correspondances nom/IP.
la méthode générale du DNS. Un DNS (Domain Name Server) est un serveur joignable sur le réseau qui connaît les adresses IP de nombreuses machines (ou sites).
Quand dans ton navigateur tu tapes un nom de machine, le navigateur envoie ce nom au DNS qui fournit l'adresse IP en retour. En suite le navigateur contacte directement le site grâce à cette adresse.
Pour que ça marche il faut donc :
qu'un DNS soir accessible sur le réseau
que ton système connaisse l'adresse numérique du DNS (et que celle ci ne change pas !)
et que le DNS possède dans ses table la traduction désirée.
Donc quand dans ton navigateur tu vas taper http://web32_02/... ça va répondre ... NOT FOUND !
La méthode du fichier hosts peut marcher ... à condition que tes machines aient une IP fixe.
Je ne vois pas trop l'utilité d'avoir un adresse variable. Les adresses variables c'est bien quand on a un système d'exploitation qui masque tout ça. Pour communiquer d'un Mac à un autre j'ai juste besoin de leurs noms.
Je ne vois pas trop l'intérêt de s'ennuyer à paraméter sa box pour qu"elle délivre toujours la même IP à telle adresse MAC, alors qu'il suffit de choisir un adresse fixe par l'ESP (voir le post #8)
Risque de conflit ? J'ai paramétré ma box pour qu'elle attribue des IP uniquement entre X.Y.Z.20 et X.Y.Z.50. Reste de la place pour créer des adresses fixes.
Je ne vois pas trop l'intérêt de s'ennuyer à paraméter sa box pour qu"elle délivre toujours la même IP à telle adresse MAC, alors qu'il suffit de choisir un adresse fixe par l'ESP (voir le post #8)
L’avantage de paramétrer l’adresse associée à la MAC de l’ESP au niveau de la box c’est qu’on n’a pas a changer le code si vous avez plusieurs petits systèmes à déployer chez vous (disons des capteurs dans plusieurs pieces) vous n’aurez qu’un seul code à maintenir et pousser sur vos modules.
Et si vos potes vous disent “trop cool, tu peux m’en faire trois” vous n’avez pas à changer le code non plus si le réseau d’installation est en 10.0.0.x ou en 192.168.a.x (tout réseau qui utilise les plages d'adressage IP définies par la RFC 6761).
Bref ça permet d’ajouter une couche d’indirection que l’on gère de manière centralisée.
la méthode simplifiée du message #8 , dans la quelle l'ESP 'renvendique' un adresse ip , je ne l'utilise que quand j'ai la flemme d'entrer dans le menu de configuration de la Freebox, dans le cas d'un test rapide !!
Je trouve plus rationnelle la gestion centralisée des adresses ip fixes sur la Box, par adresse MAC
Hello
oui - en tout sur mon router ça fonctionne bien:
J'ai mis une capture en copie (pas trouvé le moyen de l'afficher directement sur le post).
J'ai indiqué "web32test" dans le code et dans le browser : http://web32test/ ou bien http://web32test.local/ - chez moi les deux fonctionnent.
Dans les exemples (arduino, File->Examples->ESP8266mDNS) il y a un browser avec DNS pour t'aider.
Par contre "Domoticz " je ne connais pas donc je ne peux pas t'aider sur ce coup là.
A+ D
Tprog:
C'est génial ça !
Donc au tout début de mon programme j'écris ça :
J'ai tout bien compris ?
Si j'utilise quelque chose comme Domoticz (où je crois il y a besoin d'entrer l'IP du module), suis-je obligé de entrer la nouvelle IP à chaque problème de connexion de Box wifi ?
oui cherchez dans votre Box sur la partie réseau l'onglet DHCP - vous aurez une interface sans doute qui permet de déclarer quelle adresse IP vous voulez pour quelle adresse MAC.
Le plus simple c'est d'avoir pour le DHCP une plage d'adresse par exemple vous dites que de .10 à .150 (à la fin de votre adresse) c'est pour le DHCP et vous mettez tout ce qui doit être fixe en à partir de 151