Serveur Web HTTP asynchrone – techtutorialsx – Bien choisir son serveur d impression

Author: Titanfall —

Short summary: L'objectif de ce didacticiel est d'expliquer comment définir un serveur Web HTTP asynchrone sur l'ESP8266, à l'aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot. introduction L'objectif de ce didacticiel est d'expliquer comment définir un serveur Web HTTP asynchrone sur l'ESP8266, à l'aide du cœur Arduino. À titre […]

Quick overview

Site
Tutos GameServer
Canonical URL
https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/
LLM HTML version
https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/llm
LLM JSON version
https://tutos-gameserver.fr/2019/05/03/serveur-web-http-asynchrone-techtutorialsx-bien-choisir-son-serveur-d-impression/llm.json
Manifest
https://tutos-gameserver.fr/llm-endpoints-manifest.json
Estimated reading time
10 minutes (552 seconds)
Word count
1840

Key points

Primary visual

Serveur Web HTTP asynchrone – techtutorialsx

 – Bien choisir son serveur d impression
Main illustration associated with the content.

Structured content

L'objectif de ce didacticiel est d'expliquer comment définir un serveur Web HTTP asynchrone sur l'ESP8266, à l'aide du cœur Arduino. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot. introduction L'objectif de ce didacticiel est d'expliquer comment définir un serveur Web HTTP asynchrone sur l'ESP8266, à l'aide du cœur Arduino. À titre d'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'ESP8266. Afin de configurer le serveur à l'aide d'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'ESP32 et vous pouvez consulter ici un didacticiel d'introduction à ce microcontrôleur. Ce didacticiel a été testé sur une carte ESP8266 FireBeetle de DFRobot. Installer les librairies Comme indiqué dans la section d'introduction, nous devrons installer la bibliothèque ESPAsyncWebServer afin d'accéder aux fonctions de haut niveau nécessaires à la configuration du serveur Web HTTP. De plus, nous devrons également installer la bibliothèque ESPAsyncTCP, qui est une bibliothèque TCP asynchrone pour l'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. Pour 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. Pour 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 – Télécharger le code source des bibliothèques. Ensuite, sélectionnez simplement le "Télécharger le ZIP”Et les fichiers doivent être transférés sur votre ordinateur. Ensuite, extrayez les fichiers dans votre répertoire de bibliothèques Arduino IDE, qui se trouve généralement dans le chemin suivant: C: Utilisateurs Nom d'utilisateur Documents Arduino bibliothèques Notez que les dossiers extraits doivent avoir un -maîtriser ajouté dans le nom. Supprimer cette annexe -maîtriser et conservez le nom restant. Une fois la procédure terminée pour les deux bibliothèques, elles devraient être disponibles pour une utilisation dans l'environnement Arduino. Le code Nous 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'appareil à un réseau WiFi et recevoir plus tard les requêtes HTTP. Ensuite, nous devrons également inclure les deux bibliothèques que nous venons d’installer, à savoir: ESPAsyncTCP.h et le ESPAsyncWebServer.h.

#include "ESP8266WiFi.h" #include "ESPAsyncTCP.h" #include "ESPAsyncWebServer.h"

Nous allons également déclarer deux variables globales qui contiendront les informations d'identification du réseau WiFi auquel nous allons connecter l'ESP8266. Nous aurons besoin du SSID du réseau (nom du réseau) et du mot de passe.

const char * ssid = "YourNetworkName"; const char * password = "YourNetworkPassword";

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. Il 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. Dans 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'aide d'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)     délai (1000);     Serial.println ("Connexion au WiFi ..");

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'intérieur du réseau local auquel l'ESP est connecté. Pour atteindre le serveur Web de l'extérieur du réseau local, nous devons d'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'appareil à un réseau WiFi et obtenu son IP locale, nous allons gérer la configuration du serveur Web. Ainsi, nous allons configurer une route de serveur et une fonction de traitement qui sera exécutée lorsqu'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. Comme 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 "/rand" route. En 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'ESP8266, nous n'écouterons que les requêtes HTTP GET. Ainsi nous passons le HTTP_GET valeur. En 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. Chaque client qui fait une demande aura un de ces objets associé et nous utiliserons également cet objet pour renvoyer la réponse. Afin de garder le code compact et d'éviter de déclarer une fonction nommée, nous allons définir notre fonction de gestion de route comme un lambda C ++. Bien 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 ("/ rand", HTTP_GET, [](Demande AsyncWebServerRequest *) // Mise en oeuvre de la fonction );

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. Cette méthode reçoit comme première entrée le code de retour HTTP, qui sera 200 (OK) pour notre exemple. En second argument, il reçoit le type de contenu, qui sera “texte simple“, Puisque nous allons simplement retourner un nombre aléatoire. En 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. le 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. Notez 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 ("/ rand", HTTP_GET, [](Demande AsyncWebServerRequest *)     request-> send (200, "text / plain", String (random (1000))); );

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'agit d'une meilleure approche en ce qui concerne la mise en œuvre du serveur HTTP ESP8266 d'origine, où nous aurions besoin d'appeler une fonction de gestion de client régulièrement. Vous pouvez consulter ici un tutoriel sur cette implémentation. Vous pouvez consulter le code source complet pour ce tutoriel ESP8266 ci-dessous.

#include "ESP8266WiFi.h" #include "ESPAsyncTCP.h" #include "ESPAsyncWebServer.h"

const char * ssid = "YourNetworkName"; const char * password = "YourNetworkPassword";

Serveur AsyncWebServer (80);

void setup()   Serial.begin (115200);

  WiFi.begin (ssid, mot de passe);

  while (WiFi.status ()! = WL_CONNECTED)     délai (1000);     Serial.println ("Connexion au WiFi ..");   

  Serial.println (WiFi.localIP ());

  server.on ("/ rand", HTTP_GET, [](Demande AsyncWebServerRequest *)     request-> send (200, "text / plain", String (random (1000)));   );

  server.begin ();

void loop ()

Tester le code Pour tester le code, compilez-le d'abord et chargez-le sur votre microcontrôleur ESP8266 à l'aide de l'IDE Arduino. Une fois la procédure de téléchargement terminée, ouvrez le moniteur série Arduino IDE et attendez que l'appareil se connecte au réseau WiFi. Une fois connecté avec succès, une adresse IP doit être imprimée. Copiez cette adresse IP. Enfin, 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'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'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 – Nombre aléatoire généré par l'ESP8266. Notes finales Cet exemple simple montre comment configurer un serveur HTTP asynchrone sur l'ESP8266, ce qui supprime la surcharge liée à la nécessité de vérifier périodiquement les demandes entrantes. Cette 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. Une 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'un capteur. Articles Similaires

Comme ça: Comme Chargement…

Click to rate this post! [Total: 0 Average: 0]

Topics and keywords

Themes: Serveur d'impression

License & attribution

License: CC BY-ND 4.0.

Attribution required: yes.

Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json

LLM Endpoints plugin version 1.1.2.