ESP32 gestion du Wifi

Bonjour,

Je me permets de venir poser ma question ici car je sèche un peu sur l'utilisation de l'ESP 32 et du wifi.

Alors voilà j'aimerais avoir un ESP32 qui sera le "Master" de plusieurs ESP32 "Slave", l'idée étant que le "Master" génère un serveur local http://192.161.X.YY sur lequel je viens me connecter et ou je puisse voir l'état des ESP "Salve" connecté dessus. Avec ceci j'aimerais dans un premier temps pour m'entraîner et découvrir un peu plus la gestion du Wifi avoir 2 "Slave". Le premier disposera d'un simple bouton et le second d'une simple led. Mon objectif est que lorsque je presse le bouton la led s'allume et une notification arrive sur le server web afin que l'interface utilisateur puisse être mise à jour. Je devrais donc aussi allumer la led depuis l'interface web directement.

J'ai déjà réussi a créer un serveur web et allumer une led sur l'ESP qui héberge le serveur maintenant je ne sait pas comment envoyer l'ordre reçu dans l'ESP depuis le web vers un autre ESP ?

Merci de votre aide !

Le slave équipé du bouton est un client. Il faut t'inspirer de l'exemple HttpClient de la librairie.

Le slave équipé de la LED est un serveur. Il faut t'inspirer de l'exemple HttpServer de la librairie.

Ensuite le master devra recevoir la requête du 1er pour l'envoyer vers de deuxième.

Je ne sais pas si c'est une bonne idée d'avoir un master et divers esclaves.
Cela peut être intéressant dans le cas où le master gère un genre de routage.
Les esclaves connaissent uniquement l'adresse IP du master, le master connaît les adresses des slaves.
A voir ...

Merci pour la réponse,

j'essaye de penser le projet, dans l'idée final il y aurait plus que 2 "Slave" reliés sur le "Master" et dans l'idée ou le slave qui dispose de la LED aurait lui aussi un bouton poussoir pour allumer un 3ieme "Slave" qu a une Led il jouerait donc le rôle de Server et de client à la fois si j'ai bien compris ? c'est possible cela ?
C'est pour cela que je veux un ESP central afin de centraliser les demandes des "Slaves" et les redistribuer ensuite ! Mais je n'arrive pas à voir comment faire cela ...

En faite faire comme un PC et ces périphériques mais j'arrive pas à trouver de solutions simple à mettre en oeuvre.

J'ai même poussé la réflexion à installer une arduino Nano en I2C sur l'ESP "Master" pour gérer la connexion en BLE sur les différents "Slaves" mais là c'est un peut tiré par les cheveux j'imagine qu'on peut faire plus simple avec la partie wifi ?

Merci de votre aide !

si vous mettez des serveurs HTTP partout (sur le maître et sur les esclaves) et que tout le monde est sur le même réseau, tout le monde peut parler à tout le monde. ensuite à vous de voir si vous voulez développer un petit langage de commande pour que le maître soit "centralisateur" et un mécanisme d'inscription pour que les esclaves se déclarent auprès du maître

si vous ne passez pas par un serveur HTTP, il faut gérer cela en transmission sur IP - en UDP par exemple (avec gestion des messages non délivrés)

D'un côté il y a Maitre/Esclave. A toi de voir le sens que tu donnes à ces mots.
De l'autre côté, il y a Client/Serveur. Et là, il y a des règles.

  • Serveur ne prend jamais la parole spontanément. Il attend qu'un (ou plusieurs) client(s) le contacte(nt), et il répond aux questions. Il peut éventuellement devenir lui même Client, le temps de propager quelque chose vers un autre Serveur, mais il retourne à son poste de serveur.

  • Client prend la parole. Il est à l'origine de l'échange. Il peut très bien ne vivre que le temps de l'échange.

Ainsi donc, si ton "Maître" veut interroger ses "Esclaves" quand bon lui semble :

  • le maître est Client,
  • les Esclaves sont Serveurs.
    Eh oui, c'est pas intuitif.
    Par example, j'ai réalisé une prise 220V commandable par WiFi, avec un ESP8266. Sur ce dernier tourne un Serveur HTTP. C'est logique, la prise rend un Service, elle porte donc un Serveur.

dans l'idée ou le slave qui dispose de la LED aurait lui aussi un bouton poussoir pour allumer un 3ieme "Slave" qu a une Led il jouerait donc le rôle de Server et de client à la fois si j'ai bien compris ? c'est possible cela ?

Le problème dans ce genre de situation est de savoir où se fait la prise de décision.

Soit le dispositif X qui possède le bouton sait qu'il doit envoyer une demande à un dispositif Y possédant une LED, et dans ce cas il connaît son adresse IP, soit il passe pas le maître, mais encore faut-il dire au maître que le dispositif à adresser s'appelle Y.

Personnellement j'adopterais plutôt un mécanisme différent.

Le dispositif X envoie un événement BOUTON au maître et le maître prend la décision d'allumer Y.
Les dispositifs X et Y ne doivent pas être intelligents. Ils doivent se contenter de signaler un événement au maître ou d'obéir à un ordre de sa part.

Ensuite l'intelligence du maître peut être plus ou moins figée, ou paramétrable.
Si tu dois modifier le code du maître à chaque fois que l'appui sur X doit déclencher une action différente sur Y ou Z cela risque d'être plutôt contraignant.

Ce que tu essaies de créer s'appelle un serveur domotique.
Regarde plutôt du côté DOMOTICZ ou JEEDOM, cela te donnera des idées.

Bonjour,

Merci pour vos réponses je commence à voir un peu plus claire sur comment utiliser ces petites ESP32 en wifi :slight_smile:

Pour info j'ai découvert le protocole ESP NOW il réponds à se dont j'avais besoin !

J'essaye d'apprendre à l'utiliser correctement maintenant !

Sinon, il y a la bibliothèque painless mesh qui est faite pour créer un mini réseau local dans fil de topologie mesh, maillée. Elle est un peu dure d'accès, mais elle simplifie la tâche grandement une fois fait l'effort de la comprendre.

Je l'ai testée dans mon projet de prises connectées (voir section ad-hoc)