{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Serveur Web HTTP asynchrone &#8211; techtutorialsx\n\n &#8211; Bien choisir son serveur d impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-03T18:03:22+00:00","modified_at":"2019-05-03T18:03:22+00:00","word_count":1840,"reading_time_seconds":552,"summary":"L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot. introduction L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino. À titre [&hellip;]","summary_points":["L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino.","Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.","introduction\nL&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino.","À titre d&#39;exemple simple, nous allons configurer un itinéraire de serveur qui reçoit les demandes HTTP GET et renvoie au client un nombre aléatoire, généré par l&#39;ESP8266."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"5837b1b756dc8d733e7a2ec2fc12db94","plain_text":"L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nintroduction\nL&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino.\nÀ titre d&#39;exemple simple, nous allons configurer un itinéraire de serveur qui reçoit les demandes HTTP GET et renvoie au client un nombre aléatoire, généré par l&#39;ESP8266.\nAfin de configurer le serveur à l&#39;aide d&#39;une API de haut niveau, nous allons utiliser cette bibliothèque, qui prend en charge tous les détails du niveau inférieur. La bibliothèque est également disponible pour l&#39;ESP32 et vous pouvez consulter ici un didacticiel d&#39;introduction à ce microcontrôleur.\nCe didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nInstaller les librairies\nComme indiqué dans la section d&#39;introduction, nous devrons installer la bibliothèque ESPAsyncWebServer afin d&#39;accéder aux fonctions de haut niveau nécessaires à la configuration du serveur Web HTTP.\nDe plus, nous devrons également installer la bibliothèque ESPAsyncTCP, qui est une bibliothèque TCP asynchrone pour l&#39;ESP8266. Cette bibliothèque est utilisée sous le capot par le ESPAsyncWebServer bibliothèque et est donc une dépendance que nous devons satisfaire.\nPour installer les bibliothèques, nous pouvons télécharger leur code source et le placer dans le dossier des bibliothèques Arduino de notre installation.\nPour télécharger chaque bibliothèque, allez sur leur page GitHub et cliquez sur le bouton “Cloner ou télécharger”En haut de la page, comme indiqué à la figure 1.\n\n\nFigure 1 &#8211; Télécharger le code source des bibliothèques.\nEnsuite, sélectionnez simplement le &quot;Télécharger le ZIP”Et les fichiers doivent être transférés sur votre ordinateur.\nEnsuite, extrayez les fichiers dans votre répertoire de bibliothèques Arduino IDE, qui se trouve généralement dans le chemin suivant:\nC:  Utilisateurs  Nom d&#39;utilisateur  Documents  Arduino  bibliothèques\nNotez que les dossiers extraits doivent avoir un -maîtriser ajouté dans le nom. Supprimer cette annexe -maîtriser et conservez le nom restant.\nUne fois la procédure terminée pour les deux bibliothèques, elles devraient être disponibles pour une utilisation dans l&#39;environnement Arduino.\nLe code\nNous commençons le code en faisant la bibliothèque nécessaire inclut. Tout d’abord, nous aurons besoin de la ESP8266WiFi.h, afin que nous puissions connecter l&#39;appareil à un réseau WiFi et recevoir plus tard les requêtes HTTP.\nEnsuite, nous devrons également inclure les deux bibliothèques que nous venons d’installer, à savoir: ESPAsyncTCP.h et le ESPAsyncWebServer.h.\n\n\n\n\n#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;\n\nNous allons également déclarer deux variables globales qui contiendront les informations d&#39;identification du réseau WiFi auquel nous allons connecter l&#39;ESP8266. Nous aurons besoin du SSID du réseau (nom du réseau) et du mot de passe.\n\n\n\n\nconst char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;\n\nPour finaliser la section des variables globales, nous allons déclarer un objet de classe AsyncWebServer, qui exposera les méthodes nécessaires pour configurer le serveur HTTP et gérer les demandes entrantes.\nIl est important de prendre en compte le fait que le constructeur de cette classe reçoit en entrée le port sur lequel le serveur HTTP écoutera les demandes entrantes. Cette valeur est pertinente pour que le client puisse se connecter au serveur.\nDans notre cas, nous utiliserons le port 80, qui est le port HTTP par défaut. Ainsi, puisque notre client sera un navigateur Web, il utilisera le port 80 par défaut et nous n’avons pas besoin de le spécifier explicitement. Si vous utilisez un port différent de 80, nous devons le spécifier lorsque vous contactez le serveur à l&#39;aide d&#39;un navigateur Web.\n\n\n\n\nServeur AsyncWebServer (80);\n\nPassons maintenant à la fonction de configuration. Nous allons ouvrir une connexion série, puis nous connecterons l’ESP8266 au réseau WiFi auquel nous avons fourni les informations d’identité sous forme de variables globales.\n\n\n\n\nWiFi.begin (ssid, mot de passe);\n\nwhile (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);\n\n\nUne fois la connexion établie, nous imprimerons l’ESP8266 IP sur le réseau local afin d’atteindre le serveur. Veuillez noter que nous ne pourrons atteindre le serveur Web que de l&#39;intérieur du réseau local auquel l&#39;ESP est connecté.\nPour atteindre le serveur Web de l&#39;extérieur du réseau local, nous devons d&#39;abord transférer le routeur, ce qui est une procédure plus avancée que nous ne couvrirons pas ici.\n\n\n\n\nSerial.println (WiFi.localIP ());\n\nMaintenant que nous avons connecté l&#39;appareil à un réseau WiFi et obtenu son IP locale, nous allons gérer la configuration du serveur Web.\nAinsi, nous allons configurer une route de serveur et une fonction de traitement qui sera exécutée lorsqu&#39;une demande est faite sur cette route. Pour le faire, nous appelons simplement le sur méthode sur notre précédemment déclaré serveur objet.\nComme première entrée de cette méthode, nous passons une chaîne avec la route où le serveur écoutera les demandes entrantes. Nous écouterons sur le &quot;/rand&quot; route.\nEn second argument, nous devons passer une valeur énumérée qui indique les méthodes HTTP autorisées sur la route. Pour cet exemple, comme nous obtenons simplement des nombres aléatoires générés par l&#39;ESP8266, nous n&#39;écouterons que les requêtes HTTP GET. Ainsi nous passons le HTTP_GET valeur.\nEn troisième et dernier argument, le sur méthode reçoit la fonction de traitement qui sera exécutée à la réception de la demande. Cette fonction doit suivre une signature fixe, plus précisément, elle doit retourner vide et recevoir en entrée un pointeur sur un objet de classe AsyncWebServerRequest.\nChaque client qui fait une demande aura un de ces objets associé et nous utiliserons également cet objet pour renvoyer la réponse.\nAfin de garder le code compact et d&#39;éviter de déclarer une fonction nommée, nous allons définir notre fonction de gestion de route comme un lambda C ++.\nBien que, pour cet exemple simple, la surcharge liée à la déclaration d’une fonction nommée ne soit pas considérable, pour les projets plus complexes où de nombreux itinéraires ont une implémentation simple, la déclaration d’une fonction nommée pour chacun d’eux rendrait le code plus complexe.\n\n\n\n\nserver.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n// Mise en oeuvre de la fonction\n);\n\nPour renvoyer une réponse au client, il suffit d’appeler le envoyer méthode du AsyncWebServerRequest objet que nous recevons sur notre fonction de traitement.\nCette méthode reçoit comme première entrée le code de retour HTTP, qui sera 200 (OK) pour notre exemple.\nEn second argument, il reçoit le type de contenu, qui sera “texte simple“, Puisque nous allons simplement retourner un nombre aléatoire.\nEn troisième argument, nous transmettrons le contenu réel à renvoyer au client. Dans notre cas, ce sera un nombre aléatoire que nous pourrons générer en appelant la fonction aléatoire Arduino.\nle au hasard fonction peut être appelée passer en entrée la limite supérieure (exclusive) des nombres générés aléatoirement. Nous allons passer 1000 et cette fonction devrait donc renvoyer une valeur comprise entre 0 et 999.\nNotez que nous devons convertir le nombre entier renvoyé par le au hasard fonction à une chaîne, afin que nous puissions passer à la envoyer méthode.\n\n\n\n\nserver.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n);\n\nPour finaliser la configuration du serveur, nous devons appeler le commencer méthode du serveur objet, le serveur commence à écouter les demandes entrantes. Avec cela, nous terminons la fonction de configuration Arduino.\n\n\n\n\nserver.begin ();\n\nL’implémentation du serveur étant asynchrone, nous n’avons besoin d’appeler aucune fonction de traitement sur la boucle principale, que nous pouvons laisser vide. Il s&#39;agit d&#39;une meilleure approche en ce qui concerne la mise en œuvre du serveur HTTP ESP8266 d&#39;origine, où nous aurions besoin d&#39;appeler une fonction de gestion de client régulièrement. Vous pouvez consulter ici un tutoriel sur cette implémentation.\nVous pouvez consulter le code source complet pour ce tutoriel ESP8266 ci-dessous.\n\n\n\n\n#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;\n\nconst char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;\n\nServeur AsyncWebServer (80);\n\nvoid setup()\n  Serial.begin (115200);\n\n  WiFi.begin (ssid, mot de passe);\n\n  while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);\n  \n\n  Serial.println (WiFi.localIP ());\n\n  server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n  );\n\n  server.begin ();\n\n\nvoid loop () \n\nTester le code\nPour tester le code, compilez-le d&#39;abord et chargez-le sur votre microcontrôleur ESP8266 à l&#39;aide de l&#39;IDE Arduino.\nUne fois la procédure de téléchargement terminée, ouvrez le moniteur série Arduino IDE et attendez que l&#39;appareil se connecte au réseau WiFi. Une fois connecté avec succès, une adresse IP doit être imprimée. Copiez cette adresse IP.\nEnfin, pour faire la demande au serveur et obtenir le nombre aléatoire, ouvrez un navigateur Web de votre choix. Dans la barre d’adresse, tapez ce qui suit, en changeant # yourDeviceIp # par l&#39;IP que vous venez de copier.\n\n\n\n\nhttp: // # yourDeviceIp # / rand\n\nVous devriez obtenir un résultat similaire à celui de la figure 2, qui indique le nombre aléatoire renvoyé par l&#39;ESP8266. Naturellement, chaque demande doit renvoyer un nombre différent, car une valeur comprise entre 0 et 999 est générée de manière aléatoire.\n\n\nFigure 2 &#8211; Nombre aléatoire généré par l&#39;ESP8266.\nNotes finales\nCet exemple simple montre comment configurer un serveur HTTP asynchrone sur l&#39;ESP8266, ce qui supprime la surcharge liée à la nécessité de vérifier périodiquement les demandes entrantes.\nCette approche est de loin supérieure car, comme indiqué dans la page de la bibliothèque, elle permet de gérer plusieurs connexions à la fois.\nUne chose importante à mentionner est que nous avons la liberté de faire ce que nous voulons sur la fonction de traitement. Dans notre exemple simple, nous générions simplement un nombre aléatoire, mais nous aurions pu envoyer des commandes à un actionneur ou récupérer des mesures à partir d&#39;un capteur.\nArticles Similaires\n\n\nComme ça:\nComme Chargement&#8230;\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nintroduction\nL&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino.\nÀ titre d&#39;exemple simple, nous allons configurer un itinéraire de serveur qui reçoit les demandes HTTP GET et renvoie au client un nombre aléatoire, généré par l&#39;ESP8266.\nAfin de configurer le serveur à l&#39;aide d&#39;une API de haut niveau, nous allons utiliser cette bibliothèque, qui prend en charge tous les détails du niveau inférieur. La bibliothèque est également disponible pour l&#39;ESP32 et vous pouvez consulter ici un didacticiel d&#39;introduction à ce microcontrôleur.\nCe didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nInstaller les librairies\nComme indiqué dans la section d&#39;introduction, nous devrons installer la bibliothèque ESPAsyncWebServer afin d&#39;accéder aux fonctions de haut niveau nécessaires à la configuration du serveur Web HTTP.\nDe plus, nous devrons également installer la bibliothèque ESPAsyncTCP, qui est une bibliothèque TCP asynchrone pour l&#39;ESP8266. Cette bibliothèque est utilisée sous le capot par le ESPAsyncWebServer bibliothèque et est donc une dépendance que nous devons satisfaire.\nPour installer les bibliothèques, nous pouvons télécharger leur code source et le placer dans le dossier des bibliothèques Arduino de notre installation.\nPour télécharger chaque bibliothèque, allez sur leur page GitHub et cliquez sur le bouton “Cloner ou télécharger”En haut de la page, comme indiqué à la figure 1.","Figure 1 &#8211; Télécharger le code source des bibliothèques.\nEnsuite, sélectionnez simplement le &quot;Télécharger le ZIP”Et les fichiers doivent être transférés sur votre ordinateur.\nEnsuite, extrayez les fichiers dans votre répertoire de bibliothèques Arduino IDE, qui se trouve généralement dans le chemin suivant:\nC:  Utilisateurs  Nom d&#39;utilisateur  Documents  Arduino  bibliothèques\nNotez que les dossiers extraits doivent avoir un -maîtriser ajouté dans le nom. Supprimer cette annexe -maîtriser et conservez le nom restant.\nUne fois la procédure terminée pour les deux bibliothèques, elles devraient être disponibles pour une utilisation dans l&#39;environnement Arduino.\nLe code\nNous commençons le code en faisant la bibliothèque nécessaire inclut. Tout d’abord, nous aurons besoin de la ESP8266WiFi.h, afin que nous puissions connecter l&#39;appareil à un réseau WiFi et recevoir plus tard les requêtes HTTP.\nEnsuite, nous devrons également inclure les deux bibliothèques que nous venons d’installer, à savoir: ESPAsyncTCP.h et le ESPAsyncWebServer.h.","#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;","Nous allons également déclarer deux variables globales qui contiendront les informations d&#39;identification du réseau WiFi auquel nous allons connecter l&#39;ESP8266. Nous aurons besoin du SSID du réseau (nom du réseau) et du mot de passe.","const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;","Pour finaliser la section des variables globales, nous allons déclarer un objet de classe AsyncWebServer, qui exposera les méthodes nécessaires pour configurer le serveur HTTP et gérer les demandes entrantes.\nIl est important de prendre en compte le fait que le constructeur de cette classe reçoit en entrée le port sur lequel le serveur HTTP écoutera les demandes entrantes. Cette valeur est pertinente pour que le client puisse se connecter au serveur.\nDans notre cas, nous utiliserons le port 80, qui est le port HTTP par défaut. Ainsi, puisque notre client sera un navigateur Web, il utilisera le port 80 par défaut et nous n’avons pas besoin de le spécifier explicitement. Si vous utilisez un port différent de 80, nous devons le spécifier lorsque vous contactez le serveur à l&#39;aide d&#39;un navigateur Web.","Serveur AsyncWebServer (80);","Passons maintenant à la fonction de configuration. Nous allons ouvrir une connexion série, puis nous connecterons l’ESP8266 au réseau WiFi auquel nous avons fourni les informations d’identité sous forme de variables globales.","WiFi.begin (ssid, mot de passe);","while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);","Une fois la connexion établie, nous imprimerons l’ESP8266 IP sur le réseau local afin d’atteindre le serveur. Veuillez noter que nous ne pourrons atteindre le serveur Web que de l&#39;intérieur du réseau local auquel l&#39;ESP est connecté.\nPour atteindre le serveur Web de l&#39;extérieur du réseau local, nous devons d&#39;abord transférer le routeur, ce qui est une procédure plus avancée que nous ne couvrirons pas ici.","Serial.println (WiFi.localIP ());","Maintenant que nous avons connecté l&#39;appareil à un réseau WiFi et obtenu son IP locale, nous allons gérer la configuration du serveur Web.\nAinsi, nous allons configurer une route de serveur et une fonction de traitement qui sera exécutée lorsqu&#39;une demande est faite sur cette route. Pour le faire, nous appelons simplement le sur méthode sur notre précédemment déclaré serveur objet.\nComme première entrée de cette méthode, nous passons une chaîne avec la route où le serveur écoutera les demandes entrantes. Nous écouterons sur le &quot;/rand&quot; route.\nEn second argument, nous devons passer une valeur énumérée qui indique les méthodes HTTP autorisées sur la route. Pour cet exemple, comme nous obtenons simplement des nombres aléatoires générés par l&#39;ESP8266, nous n&#39;écouterons que les requêtes HTTP GET. Ainsi nous passons le HTTP_GET valeur.\nEn troisième et dernier argument, le sur méthode reçoit la fonction de traitement qui sera exécutée à la réception de la demande. Cette fonction doit suivre une signature fixe, plus précisément, elle doit retourner vide et recevoir en entrée un pointeur sur un objet de classe AsyncWebServerRequest.\nChaque client qui fait une demande aura un de ces objets associé et nous utiliserons également cet objet pour renvoyer la réponse.\nAfin de garder le code compact et d&#39;éviter de déclarer une fonction nommée, nous allons définir notre fonction de gestion de route comme un lambda C ++.\nBien que, pour cet exemple simple, la surcharge liée à la déclaration d’une fonction nommée ne soit pas considérable, pour les projets plus complexes où de nombreux itinéraires ont une implémentation simple, la déclaration d’une fonction nommée pour chacun d’eux rendrait le code plus complexe.","server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n// Mise en oeuvre de la fonction\n);","Pour renvoyer une réponse au client, il suffit d’appeler le envoyer méthode du AsyncWebServerRequest objet que nous recevons sur notre fonction de traitement.\nCette méthode reçoit comme première entrée le code de retour HTTP, qui sera 200 (OK) pour notre exemple.\nEn second argument, il reçoit le type de contenu, qui sera “texte simple“, Puisque nous allons simplement retourner un nombre aléatoire.\nEn troisième argument, nous transmettrons le contenu réel à renvoyer au client. Dans notre cas, ce sera un nombre aléatoire que nous pourrons générer en appelant la fonction aléatoire Arduino.\nle au hasard fonction peut être appelée passer en entrée la limite supérieure (exclusive) des nombres générés aléatoirement. Nous allons passer 1000 et cette fonction devrait donc renvoyer une valeur comprise entre 0 et 999.\nNotez que nous devons convertir le nombre entier renvoyé par le au hasard fonction à une chaîne, afin que nous puissions passer à la envoyer méthode.","server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n);","Pour finaliser la configuration du serveur, nous devons appeler le commencer méthode du serveur objet, le serveur commence à écouter les demandes entrantes. Avec cela, nous terminons la fonction de configuration Arduino.","server.begin ();","L’implémentation du serveur étant asynchrone, nous n’avons besoin d’appeler aucune fonction de traitement sur la boucle principale, que nous pouvons laisser vide. Il s&#39;agit d&#39;une meilleure approche en ce qui concerne la mise en œuvre du serveur HTTP ESP8266 d&#39;origine, où nous aurions besoin d&#39;appeler une fonction de gestion de client régulièrement. Vous pouvez consulter ici un tutoriel sur cette implémentation.\nVous pouvez consulter le code source complet pour ce tutoriel ESP8266 ci-dessous.","#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;","const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;","Serveur AsyncWebServer (80);","void setup()\n  Serial.begin (115200);","  WiFi.begin (ssid, mot de passe);","  while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);\n  ","  Serial.println (WiFi.localIP ());","  server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n  );","  server.begin ();","void loop ()","Tester le code\nPour tester le code, compilez-le d&#39;abord et chargez-le sur votre microcontrôleur ESP8266 à l&#39;aide de l&#39;IDE Arduino.\nUne fois la procédure de téléchargement terminée, ouvrez le moniteur série Arduino IDE et attendez que l&#39;appareil se connecte au réseau WiFi. Une fois connecté avec succès, une adresse IP doit être imprimée. Copiez cette adresse IP.\nEnfin, pour faire la demande au serveur et obtenir le nombre aléatoire, ouvrez un navigateur Web de votre choix. Dans la barre d’adresse, tapez ce qui suit, en changeant # yourDeviceIp # par l&#39;IP que vous venez de copier.","http: // # yourDeviceIp # / rand","Vous devriez obtenir un résultat similaire à celui de la figure 2, qui indique le nombre aléatoire renvoyé par l&#39;ESP8266. Naturellement, chaque demande doit renvoyer un nombre différent, car une valeur comprise entre 0 et 999 est générée de manière aléatoire.","Figure 2 &#8211; Nombre aléatoire généré par l&#39;ESP8266.\nNotes finales\nCet exemple simple montre comment configurer un serveur HTTP asynchrone sur l&#39;ESP8266, ce qui supprime la surcharge liée à la nécessité de vérifier périodiquement les demandes entrantes.\nCette approche est de loin supérieure car, comme indiqué dans la page de la bibliothèque, elle permet de gérer plusieurs connexions à la fois.\nUne chose importante à mentionner est que nous avons la liberté de faire ce que nous voulons sur la fonction de traitement. Dans notre exemple simple, nous générions simplement un nombre aléatoire, mais nous aurions pu envoyer des commandes à un actionneur ou récupérer des mesures à partir d&#39;un capteur.\nArticles Similaires","Comme ça:\nComme Chargement&#8230;","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nintroduction\nL&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino.\nÀ titre d&#39;exemple simple, nous allons configurer un itinéraire de serveur qui reçoit les demandes HTTP GET et renvoie au client un nombre aléatoire, généré par l&#39;ESP8266.\nAfin de configurer le serveur à l&#39;aide d&#39;une API de haut niveau, nous allons utiliser cette bibliothèque, qui prend en charge tous les détails du niveau inférieur. La bibliothèque est également disponible pour l&#39;ESP32 et vous pouvez consulter ici un didacticiel d&#39;introduction à ce microcontrôleur.\nCe didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nInstaller les librairies\nComme indiqué dans la section d&#39;introduction, nous devrons installer la bibliothèque ESPAsyncWebServer afin d&#39;accéder aux fonctions de haut niveau nécessaires à la configuration du serveur Web HTTP.\nDe plus, nous devrons également installer la bibliothèque ESPAsyncTCP, qui est une bibliothèque TCP asynchrone pour l&#39;ESP8266. Cette bibliothèque est utilisée sous le capot par le ESPAsyncWebServer bibliothèque et est donc une dépendance que nous devons satisfaire.\nPour installer les bibliothèques, nous pouvons télécharger leur code source et le placer dans le dossier des bibliothèques Arduino de notre installation.\nPour télécharger chaque bibliothèque, allez sur leur page GitHub et cliquez sur le bouton “Cloner ou télécharger”En haut de la page, comme indiqué à la figure 1.","html":"<p>L&#039;objectif de ce didacticiel est d&#039;expliquer comment définir un serveur Web HTTP asynchrone sur l&#039;ESP8266, à l&#039;aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nintroduction\nL&#039;objectif de ce didacticiel est d&#039;expliquer comment définir un serveur Web HTTP asynchrone sur l&#039;ESP8266, à l&#039;aide du cœur Arduino.\nÀ titre d&#039;exemple simple, nous allons configurer un itinéraire de serveur qui reçoit les demandes HTTP GET et renvoie au client un nombre aléatoire, généré par l&#039;ESP8266.\nAfin de configurer le serveur à l&#039;aide d&#039;une API de haut niveau, nous allons utiliser cette bibliothèque, qui prend en charge tous les détails du niveau inférieur. La bibliothèque est également disponible pour l&#039;ESP32 et vous pouvez consulter ici un didacticiel d&#039;introduction à ce microcontrôleur.\nCe didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nInstaller les librairies\nComme indiqué dans la section d&#039;introduction, nous devrons installer la bibliothèque ESPAsyncWebServer afin d&#039;accéder aux fonctions de haut niveau nécessaires à la configuration du serveur Web HTTP.\nDe plus, nous devrons également installer la bibliothèque ESPAsyncTCP, qui est une bibliothèque TCP asynchrone pour l&#039;ESP8266. Cette bibliothèque est utilisée sous le capot par le ESPAsyncWebServer bibliothèque et est donc une dépendance que nous devons satisfaire.\nPour installer les bibliothèques, nous pouvons télécharger leur code source et le placer dans le dossier des bibliothèques Arduino de notre installation.\nPour télécharger chaque bibliothèque, allez sur leur page GitHub et cliquez sur le bouton “Cloner ou télécharger”En haut de la page, comme indiqué à la figure 1.</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Figure 1 &#8211; Télécharger le code source des bibliothèques.\nEnsuite, sélectionnez simplement le &quot;Télécharger le ZIP”Et les fichiers doivent être transférés sur votre ordinateur.\nEnsuite, extrayez les fichiers dans votre répertoire de bibliothèques Arduino IDE, qui se trouve généralement dans le chemin suivant:\nC:  Utilisateurs  Nom d&#39;utilisateur  Documents  Arduino  bibliothèques\nNotez que les dossiers extraits doivent avoir un -maîtriser ajouté dans le nom. Supprimer cette annexe -maîtriser et conservez le nom restant.\nUne fois la procédure terminée pour les deux bibliothèques, elles devraient être disponibles pour une utilisation dans l&#39;environnement Arduino.\nLe code\nNous commençons le code en faisant la bibliothèque nécessaire inclut. Tout d’abord, nous aurons besoin de la ESP8266WiFi.h, afin que nous puissions connecter l&#39;appareil à un réseau WiFi et recevoir plus tard les requêtes HTTP.\nEnsuite, nous devrons également inclure les deux bibliothèques que nous venons d’installer, à savoir: ESPAsyncTCP.h et le ESPAsyncWebServer.h.","html":"<p>Figure 1 &#8211; Télécharger le code source des bibliothèques.\nEnsuite, sélectionnez simplement le &quot;Télécharger le ZIP”Et les fichiers doivent être transférés sur votre ordinateur.\nEnsuite, extrayez les fichiers dans votre répertoire de bibliothèques Arduino IDE, qui se trouve généralement dans le chemin suivant:\nC:  Utilisateurs  Nom d&#039;utilisateur  Documents  Arduino  bibliothèques\nNotez que les dossiers extraits doivent avoir un -maîtriser ajouté dans le nom. Supprimer cette annexe -maîtriser et conservez le nom restant.\nUne fois la procédure terminée pour les deux bibliothèques, elles devraient être disponibles pour une utilisation dans l&#039;environnement Arduino.\nLe code\nNous commençons le code en faisant la bibliothèque nécessaire inclut. Tout d’abord, nous aurons besoin de la ESP8266WiFi.h, afin que nous puissions connecter l&#039;appareil à un réseau WiFi et recevoir plus tard les requêtes HTTP.\nEnsuite, nous devrons également inclure les deux bibliothèques que nous venons d’installer, à savoir: ESPAsyncTCP.h et le ESPAsyncWebServer.h.</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;","html":"<p>#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"Nous allons également déclarer deux variables globales qui contiendront les informations d&#39;identification du réseau WiFi auquel nous allons connecter l&#39;ESP8266. Nous aurons besoin du SSID du réseau (nom du réseau) et du mot de passe.","html":"<p>Nous allons également déclarer deux variables globales qui contiendront les informations d&#039;identification du réseau WiFi auquel nous allons connecter l&#039;ESP8266. Nous aurons besoin du SSID du réseau (nom du réseau) et du mot de passe.</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;","html":"<p>const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"Pour finaliser la section des variables globales, nous allons déclarer un objet de classe AsyncWebServer, qui exposera les méthodes nécessaires pour configurer le serveur HTTP et gérer les demandes entrantes.\nIl est important de prendre en compte le fait que le constructeur de cette classe reçoit en entrée le port sur lequel le serveur HTTP écoutera les demandes entrantes. Cette valeur est pertinente pour que le client puisse se connecter au serveur.\nDans notre cas, nous utiliserons le port 80, qui est le port HTTP par défaut. Ainsi, puisque notre client sera un navigateur Web, il utilisera le port 80 par défaut et nous n’avons pas besoin de le spécifier explicitement. Si vous utilisez un port différent de 80, nous devons le spécifier lorsque vous contactez le serveur à l&#39;aide d&#39;un navigateur Web.","html":"<p>Pour finaliser la section des variables globales, nous allons déclarer un objet de classe AsyncWebServer, qui exposera les méthodes nécessaires pour configurer le serveur HTTP et gérer les demandes entrantes.\nIl est important de prendre en compte le fait que le constructeur de cette classe reçoit en entrée le port sur lequel le serveur HTTP écoutera les demandes entrantes. Cette valeur est pertinente pour que le client puisse se connecter au serveur.\nDans notre cas, nous utiliserons le port 80, qui est le port HTTP par défaut. Ainsi, puisque notre client sera un navigateur Web, il utilisera le port 80 par défaut et nous n’avons pas besoin de le spécifier explicitement. Si vous utilisez un port différent de 80, nous devons le spécifier lorsque vous contactez le serveur à l&#039;aide d&#039;un navigateur Web.</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Serveur AsyncWebServer (80);","html":"<p>Serveur AsyncWebServer (80);</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"Passons maintenant à la fonction de configuration. Nous allons ouvrir une connexion série, puis nous connecterons l’ESP8266 au réseau WiFi auquel nous avons fourni les informations d’identité sous forme de variables globales.","html":"<p>Passons maintenant à la fonction de configuration. Nous allons ouvrir une connexion série, puis nous connecterons l’ESP8266 au réseau WiFi auquel nous avons fourni les informations d’identité sous forme de variables globales.</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"WiFi.begin (ssid, mot de passe);","html":"<p>WiFi.begin (ssid, mot de passe);</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);","html":"<p>while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"Une fois la connexion établie, nous imprimerons l’ESP8266 IP sur le réseau local afin d’atteindre le serveur. Veuillez noter que nous ne pourrons atteindre le serveur Web que de l&#39;intérieur du réseau local auquel l&#39;ESP est connecté.\nPour atteindre le serveur Web de l&#39;extérieur du réseau local, nous devons d&#39;abord transférer le routeur, ce qui est une procédure plus avancée que nous ne couvrirons pas ici.","html":"<p>Une fois la connexion établie, nous imprimerons l’ESP8266 IP sur le réseau local afin d’atteindre le serveur. Veuillez noter que nous ne pourrons atteindre le serveur Web que de l&#039;intérieur du réseau local auquel l&#039;ESP est connecté.\nPour atteindre le serveur Web de l&#039;extérieur du réseau local, nous devons d&#039;abord transférer le routeur, ce qui est une procédure plus avancée que nous ne couvrirons pas ici.</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"Serial.println (WiFi.localIP ());","html":"<p>Serial.println (WiFi.localIP ());</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"Maintenant que nous avons connecté l&#39;appareil à un réseau WiFi et obtenu son IP locale, nous allons gérer la configuration du serveur Web.\nAinsi, nous allons configurer une route de serveur et une fonction de traitement qui sera exécutée lorsqu&#39;une demande est faite sur cette route. Pour le faire, nous appelons simplement le sur méthode sur notre précédemment déclaré serveur objet.\nComme première entrée de cette méthode, nous passons une chaîne avec la route où le serveur écoutera les demandes entrantes. Nous écouterons sur le &quot;/rand&quot; route.\nEn second argument, nous devons passer une valeur énumérée qui indique les méthodes HTTP autorisées sur la route. Pour cet exemple, comme nous obtenons simplement des nombres aléatoires générés par l&#39;ESP8266, nous n&#39;écouterons que les requêtes HTTP GET. Ainsi nous passons le HTTP_GET valeur.\nEn troisième et dernier argument, le sur méthode reçoit la fonction de traitement qui sera exécutée à la réception de la demande. Cette fonction doit suivre une signature fixe, plus précisément, elle doit retourner vide et recevoir en entrée un pointeur sur un objet de classe AsyncWebServerRequest.\nChaque client qui fait une demande aura un de ces objets associé et nous utiliserons également cet objet pour renvoyer la réponse.\nAfin de garder le code compact et d&#39;éviter de déclarer une fonction nommée, nous allons définir notre fonction de gestion de route comme un lambda C ++.\nBien que, pour cet exemple simple, la surcharge liée à la déclaration d’une fonction nommée ne soit pas considérable, pour les projets plus complexes où de nombreux itinéraires ont une implémentation simple, la déclaration d’une fonction nommée pour chacun d’eux rendrait le code plus complexe.","html":"<p>Maintenant que nous avons connecté l&#039;appareil à un réseau WiFi et obtenu son IP locale, nous allons gérer la configuration du serveur Web.\nAinsi, nous allons configurer une route de serveur et une fonction de traitement qui sera exécutée lorsqu&#039;une demande est faite sur cette route. Pour le faire, nous appelons simplement le sur méthode sur notre précédemment déclaré serveur objet.\nComme première entrée de cette méthode, nous passons une chaîne avec la route où le serveur écoutera les demandes entrantes. Nous écouterons sur le &quot;/rand&quot; route.\nEn second argument, nous devons passer une valeur énumérée qui indique les méthodes HTTP autorisées sur la route. Pour cet exemple, comme nous obtenons simplement des nombres aléatoires générés par l&#039;ESP8266, nous n&#039;écouterons que les requêtes HTTP GET. Ainsi nous passons le HTTP_GET valeur.\nEn troisième et dernier argument, le sur méthode reçoit la fonction de traitement qui sera exécutée à la réception de la demande. Cette fonction doit suivre une signature fixe, plus précisément, elle doit retourner vide et recevoir en entrée un pointeur sur un objet de classe AsyncWebServerRequest.\nChaque client qui fait une demande aura un de ces objets associé et nous utiliserons également cet objet pour renvoyer la réponse.\nAfin de garder le code compact et d&#039;éviter de déclarer une fonction nommée, nous allons définir notre fonction de gestion de route comme un lambda C ++.\nBien que, pour cet exemple simple, la surcharge liée à la déclaration d’une fonction nommée ne soit pas considérable, pour les projets plus complexes où de nombreux itinéraires ont une implémentation simple, la déclaration d’une fonction nommée pour chacun d’eux rendrait le code plus complexe.</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n// Mise en oeuvre de la fonction\n);","html":"<p>server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n// Mise en oeuvre de la fonction\n);</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"Pour renvoyer une réponse au client, il suffit d’appeler le envoyer méthode du AsyncWebServerRequest objet que nous recevons sur notre fonction de traitement.\nCette méthode reçoit comme première entrée le code de retour HTTP, qui sera 200 (OK) pour notre exemple.\nEn second argument, il reçoit le type de contenu, qui sera “texte simple“, Puisque nous allons simplement retourner un nombre aléatoire.\nEn troisième argument, nous transmettrons le contenu réel à renvoyer au client. Dans notre cas, ce sera un nombre aléatoire que nous pourrons générer en appelant la fonction aléatoire Arduino.\nle au hasard fonction peut être appelée passer en entrée la limite supérieure (exclusive) des nombres générés aléatoirement. Nous allons passer 1000 et cette fonction devrait donc renvoyer une valeur comprise entre 0 et 999.\nNotez que nous devons convertir le nombre entier renvoyé par le au hasard fonction à une chaîne, afin que nous puissions passer à la envoyer méthode.","html":"<p>Pour renvoyer une réponse au client, il suffit d’appeler le envoyer méthode du AsyncWebServerRequest objet que nous recevons sur notre fonction de traitement.\nCette méthode reçoit comme première entrée le code de retour HTTP, qui sera 200 (OK) pour notre exemple.\nEn second argument, il reçoit le type de contenu, qui sera “texte simple“, Puisque nous allons simplement retourner un nombre aléatoire.\nEn troisième argument, nous transmettrons le contenu réel à renvoyer au client. Dans notre cas, ce sera un nombre aléatoire que nous pourrons générer en appelant la fonction aléatoire Arduino.\nle au hasard fonction peut être appelée passer en entrée la limite supérieure (exclusive) des nombres générés aléatoirement. Nous allons passer 1000 et cette fonction devrait donc renvoyer une valeur comprise entre 0 et 999.\nNotez que nous devons convertir le nombre entier renvoyé par le au hasard fonction à une chaîne, afin que nous puissions passer à la envoyer méthode.</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n);","html":"<p>server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n);</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"Pour finaliser la configuration du serveur, nous devons appeler le commencer méthode du serveur objet, le serveur commence à écouter les demandes entrantes. Avec cela, nous terminons la fonction de configuration Arduino.","html":"<p>Pour finaliser la configuration du serveur, nous devons appeler le commencer méthode du serveur objet, le serveur commence à écouter les demandes entrantes. Avec cela, nous terminons la fonction de configuration Arduino.</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"server.begin ();","html":"<p>server.begin ();</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"L’implémentation du serveur étant asynchrone, nous n’avons besoin d’appeler aucune fonction de traitement sur la boucle principale, que nous pouvons laisser vide. Il s&#39;agit d&#39;une meilleure approche en ce qui concerne la mise en œuvre du serveur HTTP ESP8266 d&#39;origine, où nous aurions besoin d&#39;appeler une fonction de gestion de client régulièrement. Vous pouvez consulter ici un tutoriel sur cette implémentation.\nVous pouvez consulter le code source complet pour ce tutoriel ESP8266 ci-dessous.","html":"<p>L’implémentation du serveur étant asynchrone, nous n’avons besoin d’appeler aucune fonction de traitement sur la boucle principale, que nous pouvons laisser vide. Il s&#039;agit d&#039;une meilleure approche en ce qui concerne la mise en œuvre du serveur HTTP ESP8266 d&#039;origine, où nous aurions besoin d&#039;appeler une fonction de gestion de client régulièrement. Vous pouvez consulter ici un tutoriel sur cette implémentation.\nVous pouvez consulter le code source complet pour ce tutoriel ESP8266 ci-dessous.</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;","html":"<p>#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;","html":"<p>const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"Serveur AsyncWebServer (80);","html":"<p>Serveur AsyncWebServer (80);</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"void setup()\n  Serial.begin (115200);","html":"<p>void setup()\n  Serial.begin (115200);</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"  WiFi.begin (ssid, mot de passe);","html":"<p>  WiFi.begin (ssid, mot de passe);</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"  while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);\n  ","html":"<p>  while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);\n  </p>"},{"id":"text-26","type":"text","heading":"","plain_text":"  Serial.println (WiFi.localIP ());","html":"<p>  Serial.println (WiFi.localIP ());</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"  server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n  );","html":"<p>  server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n  );</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"  server.begin ();","html":"<p>  server.begin ();</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"void loop ()","html":"<p>void loop ()</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"Tester le code\nPour tester le code, compilez-le d&#39;abord et chargez-le sur votre microcontrôleur ESP8266 à l&#39;aide de l&#39;IDE Arduino.\nUne fois la procédure de téléchargement terminée, ouvrez le moniteur série Arduino IDE et attendez que l&#39;appareil se connecte au réseau WiFi. Une fois connecté avec succès, une adresse IP doit être imprimée. Copiez cette adresse IP.\nEnfin, pour faire la demande au serveur et obtenir le nombre aléatoire, ouvrez un navigateur Web de votre choix. Dans la barre d’adresse, tapez ce qui suit, en changeant # yourDeviceIp # par l&#39;IP que vous venez de copier.","html":"<p>Tester le code\nPour tester le code, compilez-le d&#039;abord et chargez-le sur votre microcontrôleur ESP8266 à l&#039;aide de l&#039;IDE Arduino.\nUne fois la procédure de téléchargement terminée, ouvrez le moniteur série Arduino IDE et attendez que l&#039;appareil se connecte au réseau WiFi. Une fois connecté avec succès, une adresse IP doit être imprimée. Copiez cette adresse IP.\nEnfin, pour faire la demande au serveur et obtenir le nombre aléatoire, ouvrez un navigateur Web de votre choix. Dans la barre d’adresse, tapez ce qui suit, en changeant # yourDeviceIp # par l&#039;IP que vous venez de copier.</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"http: // # yourDeviceIp # / rand","html":"<p>http: // # yourDeviceIp # / rand</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"Vous devriez obtenir un résultat similaire à celui de la figure 2, qui indique le nombre aléatoire renvoyé par l&#39;ESP8266. Naturellement, chaque demande doit renvoyer un nombre différent, car une valeur comprise entre 0 et 999 est générée de manière aléatoire.","html":"<p>Vous devriez obtenir un résultat similaire à celui de la figure 2, qui indique le nombre aléatoire renvoyé par l&#039;ESP8266. Naturellement, chaque demande doit renvoyer un nombre différent, car une valeur comprise entre 0 et 999 est générée de manière aléatoire.</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"Figure 2 &#8211; Nombre aléatoire généré par l&#39;ESP8266.\nNotes finales\nCet exemple simple montre comment configurer un serveur HTTP asynchrone sur l&#39;ESP8266, ce qui supprime la surcharge liée à la nécessité de vérifier périodiquement les demandes entrantes.\nCette approche est de loin supérieure car, comme indiqué dans la page de la bibliothèque, elle permet de gérer plusieurs connexions à la fois.\nUne chose importante à mentionner est que nous avons la liberté de faire ce que nous voulons sur la fonction de traitement. Dans notre exemple simple, nous générions simplement un nombre aléatoire, mais nous aurions pu envoyer des commandes à un actionneur ou récupérer des mesures à partir d&#39;un capteur.\nArticles Similaires","html":"<p>Figure 2 &#8211; Nombre aléatoire généré par l&#039;ESP8266.\nNotes finales\nCet exemple simple montre comment configurer un serveur HTTP asynchrone sur l&#039;ESP8266, ce qui supprime la surcharge liée à la nécessité de vérifier périodiquement les demandes entrantes.\nCette approche est de loin supérieure car, comme indiqué dans la page de la bibliothèque, elle permet de gérer plusieurs connexions à la fois.\nUne chose importante à mentionner est que nous avons la liberté de faire ce que nous voulons sur la fonction de traitement. Dans notre exemple simple, nous générions simplement un nombre aléatoire, mais nous aurions pu envoyer des commandes à un actionneur ou récupérer des mesures à partir d&#039;un capteur.\nArticles Similaires</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"Comme ça:\nComme Chargement&#8230;","html":"<p>Comme ça:\nComme Chargement&#8230;</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"L&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nintroduction\nL&#39;objectif de ce didacticiel est d&#39;expliquer comment définir un serveur Web HTTP asynchrone sur l&#39;ESP8266, à l&#39;aide du cœur Arduino.\nÀ titre d&#39;exemple simple, nous allons configurer un itinéraire de serveur qui reçoit les demandes HTTP GET et renvoie au client un nombre aléatoire, généré par l&#39;ESP8266.\nAfin de configurer le serveur à l&#39;aide d&#39;une API de haut niveau, nous allons utiliser cette bibliothèque, qui prend en charge tous les détails du niveau inférieur. La bibliothèque est également disponible pour l&#39;ESP32 et vous pouvez consulter ici un didacticiel d&#39;introduction à ce microcontrôleur.\nCe didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot.\nInstaller les librairies\nComme indiqué dans la section d&#39;introduction, nous devrons installer la bibliothèque ESPAsyncWebServer afin d&#39;accéder aux fonctions de haut niveau nécessaires à la configuration du serveur Web HTTP.\nDe plus, nous devrons également installer la bibliothèque ESPAsyncTCP, qui est une bibliothèque TCP asynchrone pour l&#39;ESP8266. Cette bibliothèque est utilisée sous le capot par le ESPAsyncWebServer bibliothèque et est donc une dépendance que nous devons satisfaire.\nPour installer les bibliothèques, nous pouvons télécharger leur code source et le placer dans le dossier des bibliothèques Arduino de notre installation.\nPour télécharger chaque bibliothèque, allez sur leur page GitHub et cliquez sur le bouton “Cloner ou télécharger”En haut de la page, comme indiqué à la figure 1."},{"id":"text-2","heading":"Text","content":"Figure 1 &#8211; Télécharger le code source des bibliothèques.\nEnsuite, sélectionnez simplement le &quot;Télécharger le ZIP”Et les fichiers doivent être transférés sur votre ordinateur.\nEnsuite, extrayez les fichiers dans votre répertoire de bibliothèques Arduino IDE, qui se trouve généralement dans le chemin suivant:\nC:  Utilisateurs  Nom d&#39;utilisateur  Documents  Arduino  bibliothèques\nNotez que les dossiers extraits doivent avoir un -maîtriser ajouté dans le nom. Supprimer cette annexe -maîtriser et conservez le nom restant.\nUne fois la procédure terminée pour les deux bibliothèques, elles devraient être disponibles pour une utilisation dans l&#39;environnement Arduino.\nLe code\nNous commençons le code en faisant la bibliothèque nécessaire inclut. Tout d’abord, nous aurons besoin de la ESP8266WiFi.h, afin que nous puissions connecter l&#39;appareil à un réseau WiFi et recevoir plus tard les requêtes HTTP.\nEnsuite, nous devrons également inclure les deux bibliothèques que nous venons d’installer, à savoir: ESPAsyncTCP.h et le ESPAsyncWebServer.h."},{"id":"text-3","heading":"Text","content":"#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;"},{"id":"text-4","heading":"Text","content":"Nous allons également déclarer deux variables globales qui contiendront les informations d&#39;identification du réseau WiFi auquel nous allons connecter l&#39;ESP8266. Nous aurons besoin du SSID du réseau (nom du réseau) et du mot de passe."},{"id":"text-5","heading":"Text","content":"const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;"},{"id":"text-6","heading":"Text","content":"Pour finaliser la section des variables globales, nous allons déclarer un objet de classe AsyncWebServer, qui exposera les méthodes nécessaires pour configurer le serveur HTTP et gérer les demandes entrantes.\nIl est important de prendre en compte le fait que le constructeur de cette classe reçoit en entrée le port sur lequel le serveur HTTP écoutera les demandes entrantes. Cette valeur est pertinente pour que le client puisse se connecter au serveur.\nDans notre cas, nous utiliserons le port 80, qui est le port HTTP par défaut. Ainsi, puisque notre client sera un navigateur Web, il utilisera le port 80 par défaut et nous n’avons pas besoin de le spécifier explicitement. Si vous utilisez un port différent de 80, nous devons le spécifier lorsque vous contactez le serveur à l&#39;aide d&#39;un navigateur Web."},{"id":"text-7","heading":"Text","content":"Serveur AsyncWebServer (80);"},{"id":"text-8","heading":"Text","content":"Passons maintenant à la fonction de configuration. Nous allons ouvrir une connexion série, puis nous connecterons l’ESP8266 au réseau WiFi auquel nous avons fourni les informations d’identité sous forme de variables globales."},{"id":"text-9","heading":"Text","content":"WiFi.begin (ssid, mot de passe);"},{"id":"text-10","heading":"Text","content":"while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);"},{"id":"text-11","heading":"Text","content":"Une fois la connexion établie, nous imprimerons l’ESP8266 IP sur le réseau local afin d’atteindre le serveur. Veuillez noter que nous ne pourrons atteindre le serveur Web que de l&#39;intérieur du réseau local auquel l&#39;ESP est connecté.\nPour atteindre le serveur Web de l&#39;extérieur du réseau local, nous devons d&#39;abord transférer le routeur, ce qui est une procédure plus avancée que nous ne couvrirons pas ici."},{"id":"text-12","heading":"Text","content":"Serial.println (WiFi.localIP ());"},{"id":"text-13","heading":"Text","content":"Maintenant que nous avons connecté l&#39;appareil à un réseau WiFi et obtenu son IP locale, nous allons gérer la configuration du serveur Web.\nAinsi, nous allons configurer une route de serveur et une fonction de traitement qui sera exécutée lorsqu&#39;une demande est faite sur cette route. Pour le faire, nous appelons simplement le sur méthode sur notre précédemment déclaré serveur objet.\nComme première entrée de cette méthode, nous passons une chaîne avec la route où le serveur écoutera les demandes entrantes. Nous écouterons sur le &quot;/rand&quot; route.\nEn second argument, nous devons passer une valeur énumérée qui indique les méthodes HTTP autorisées sur la route. Pour cet exemple, comme nous obtenons simplement des nombres aléatoires générés par l&#39;ESP8266, nous n&#39;écouterons que les requêtes HTTP GET. Ainsi nous passons le HTTP_GET valeur.\nEn troisième et dernier argument, le sur méthode reçoit la fonction de traitement qui sera exécutée à la réception de la demande. Cette fonction doit suivre une signature fixe, plus précisément, elle doit retourner vide et recevoir en entrée un pointeur sur un objet de classe AsyncWebServerRequest.\nChaque client qui fait une demande aura un de ces objets associé et nous utiliserons également cet objet pour renvoyer la réponse.\nAfin de garder le code compact et d&#39;éviter de déclarer une fonction nommée, nous allons définir notre fonction de gestion de route comme un lambda C ++.\nBien que, pour cet exemple simple, la surcharge liée à la déclaration d’une fonction nommée ne soit pas considérable, pour les projets plus complexes où de nombreux itinéraires ont une implémentation simple, la déclaration d’une fonction nommée pour chacun d’eux rendrait le code plus complexe."},{"id":"text-14","heading":"Text","content":"server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n// Mise en oeuvre de la fonction\n);"},{"id":"text-15","heading":"Text","content":"Pour renvoyer une réponse au client, il suffit d’appeler le envoyer méthode du AsyncWebServerRequest objet que nous recevons sur notre fonction de traitement.\nCette méthode reçoit comme première entrée le code de retour HTTP, qui sera 200 (OK) pour notre exemple.\nEn second argument, il reçoit le type de contenu, qui sera “texte simple“, Puisque nous allons simplement retourner un nombre aléatoire.\nEn troisième argument, nous transmettrons le contenu réel à renvoyer au client. Dans notre cas, ce sera un nombre aléatoire que nous pourrons générer en appelant la fonction aléatoire Arduino.\nle au hasard fonction peut être appelée passer en entrée la limite supérieure (exclusive) des nombres générés aléatoirement. Nous allons passer 1000 et cette fonction devrait donc renvoyer une valeur comprise entre 0 et 999.\nNotez que nous devons convertir le nombre entier renvoyé par le au hasard fonction à une chaîne, afin que nous puissions passer à la envoyer méthode."},{"id":"text-16","heading":"Text","content":"server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n);"},{"id":"text-17","heading":"Text","content":"Pour finaliser la configuration du serveur, nous devons appeler le commencer méthode du serveur objet, le serveur commence à écouter les demandes entrantes. Avec cela, nous terminons la fonction de configuration Arduino."},{"id":"text-18","heading":"Text","content":"server.begin ();"},{"id":"text-19","heading":"Text","content":"L’implémentation du serveur étant asynchrone, nous n’avons besoin d’appeler aucune fonction de traitement sur la boucle principale, que nous pouvons laisser vide. Il s&#39;agit d&#39;une meilleure approche en ce qui concerne la mise en œuvre du serveur HTTP ESP8266 d&#39;origine, où nous aurions besoin d&#39;appeler une fonction de gestion de client régulièrement. Vous pouvez consulter ici un tutoriel sur cette implémentation.\nVous pouvez consulter le code source complet pour ce tutoriel ESP8266 ci-dessous."},{"id":"text-20","heading":"Text","content":"#include &quot;ESP8266WiFi.h&quot;\n#include &quot;ESPAsyncTCP.h&quot;\n#include &quot;ESPAsyncWebServer.h&quot;"},{"id":"text-21","heading":"Text","content":"const char * ssid = &quot;YourNetworkName&quot;;\nconst char * password = &quot;YourNetworkPassword&quot;;"},{"id":"text-22","heading":"Text","content":"Serveur AsyncWebServer (80);"},{"id":"text-23","heading":"Text","content":"void setup()\n  Serial.begin (115200);"},{"id":"text-24","heading":"Text","content":"  WiFi.begin (ssid, mot de passe);"},{"id":"text-25","heading":"Text","content":"  while (WiFi.status ()! = WL_CONNECTED) \n    délai (1000);\n    Serial.println (&quot;Connexion au WiFi ..&quot;);\n  "},{"id":"text-26","heading":"Text","content":"  Serial.println (WiFi.localIP ());"},{"id":"text-27","heading":"Text","content":"  server.on (&quot;/ rand&quot;, HTTP_GET, [](Demande AsyncWebServerRequest *) \n    request-&gt; send (200, &quot;text / plain&quot;, String (random (1000)));\n  );"},{"id":"text-28","heading":"Text","content":"  server.begin ();"},{"id":"text-29","heading":"Text","content":"void loop ()"},{"id":"text-30","heading":"Text","content":"Tester le code\nPour tester le code, compilez-le d&#39;abord et chargez-le sur votre microcontrôleur ESP8266 à l&#39;aide de l&#39;IDE Arduino.\nUne fois la procédure de téléchargement terminée, ouvrez le moniteur série Arduino IDE et attendez que l&#39;appareil se connecte au réseau WiFi. Une fois connecté avec succès, une adresse IP doit être imprimée. Copiez cette adresse IP.\nEnfin, pour faire la demande au serveur et obtenir le nombre aléatoire, ouvrez un navigateur Web de votre choix. Dans la barre d’adresse, tapez ce qui suit, en changeant # yourDeviceIp # par l&#39;IP que vous venez de copier."},{"id":"text-31","heading":"Text","content":"http: // # yourDeviceIp # / rand"},{"id":"text-32","heading":"Text","content":"Vous devriez obtenir un résultat similaire à celui de la figure 2, qui indique le nombre aléatoire renvoyé par l&#39;ESP8266. Naturellement, chaque demande doit renvoyer un nombre différent, car une valeur comprise entre 0 et 999 est générée de manière aléatoire."},{"id":"text-33","heading":"Text","content":"Figure 2 &#8211; Nombre aléatoire généré par l&#39;ESP8266.\nNotes finales\nCet exemple simple montre comment configurer un serveur HTTP asynchrone sur l&#39;ESP8266, ce qui supprime la surcharge liée à la nécessité de vérifier périodiquement les demandes entrantes.\nCette approche est de loin supérieure car, comme indiqué dans la page de la bibliothèque, elle permet de gérer plusieurs connexions à la fois.\nUne chose importante à mentionner est que nous avons la liberté de faire ce que nous voulons sur la fonction de traitement. Dans notre exemple simple, nous générions simplement un nombre aléatoire, mais nous aurions pu envoyer des commandes à un actionneur ou récupérer des mesures à partir d&#39;un capteur.\nArticles Similaires"},{"id":"text-34","heading":"Text","content":"Comme ça:\nComme Chargement&#8230;"},{"id":"text-35","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/05/esp32-async-arduino-http-webserver.png"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}