Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
ateliers:esp-serveur-web:accueil [2020/02/07 11:20] laurent [contrôler une LED] |
ateliers:esp-serveur-web:accueil [2020/02/17 13:48] (Version actuelle) laurent [en pratique] |
||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| * Contexte : INIT' | * Contexte : INIT' | ||
| * Lien : [[https:// | * Lien : [[https:// | ||
| + | |||
| + | {{ : | ||
| ===== Préparation ===== | ===== Préparation ===== | ||
| Ligne 19: | Ligne 21: | ||
| ===== Servir une page web ===== | ===== Servir une page web ===== | ||
| ==== en pratique ==== | ==== en pratique ==== | ||
| - | Ouvrir l' | + | Ouvrir l' |
| + | |||
| + | {{ : | ||
| Dans un navigateur web, taper cette même adresse (ici **%%http:// | Dans un navigateur web, taper cette même adresse (ici **%%http:// | ||
| + | |||
| + | Si l' | ||
| + | {{ : | ||
| ==== comment ça marche ? ==== | ==== comment ça marche ? ==== | ||
| On peut voir dans le code qu'à chaque adresse définie dans le //setup// correspond une fonction : <code cpp> | On peut voir dans le code qu'à chaque adresse définie dans le //setup// correspond une fonction : <code cpp> | ||
| - | Les fonctions appelées par les routes contiennent toutes un <code cpp> | + | Les fonctions appelées par les routes contiennent toutes un <code cpp> |
| + | Pour info, voici la liste des [[https:// | ||
| ===== contrôler une LED ===== | ===== contrôler une LED ===== | ||
| On cherche à présent à allumer la LED intégrée à l' | On cherche à présent à allumer la LED intégrée à l' | ||
| Ligne 46: | Ligne 54: | ||
| et le tour est joué. | et le tour est joué. | ||
| + | [[https:// | ||
| ===== lire un potentiomètre ===== | ===== lire un potentiomètre ===== | ||
| + | ==== page statique ==== | ||
| + | On a vu comment afficher du texte, il semble donc assez simple d' | ||
| + | <code cpp> | ||
| + | void handlePotentiometer() { | ||
| + | unsigned int potValue = analogRead(A0); | ||
| + | server.send(200, | ||
| + | } | ||
| + | </ | ||
| + | puis on ajoute une route au //setup// : | ||
| + | <code cpp> | ||
| + | server.on("/ | ||
| + | </ | ||
| + | et on visite la page **%%< | ||
| + | |||
| + | [[https:// | ||
| + | ==== page dynamique ==== | ||
| + | === le SPIFFS === | ||
| + | Le **SPIFFS** ou //SPI FileSystem// | ||
| + | === HTML === | ||
| + | Le code javascript peut être intégré à une page HTML qui permet d' | ||
| + | <code html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta http-equiv=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | et le renommer en // | ||
| + | === servir la page === | ||
| + | Pour accéder à cette page depuis l' | ||
| + | <code cpp># | ||
| + | ... | ||
| + | void setup() { | ||
| + | ... | ||
| + | SPIFFS.begin() | ||
| + | } | ||
| + | </ | ||
| + | La fonction qui sera appelée lorsqu' | ||
| + | <code cpp> | ||
| + | void handleHTMLpage() { | ||
| + | File file = SPIFFS.open("/ | ||
| + | size_t sent = server.streamFile(file, | ||
| + | } | ||
| + | </ | ||
| + | Comme d' | ||
| + | <code cpp> | ||
| + | puis on téléverse le code, sans oublier d' | ||
| + | La page < | ||
| + | === le javascript === | ||
| + | Pour mettre à jour la valeur du potentiomètre sans recharger la page, il nous faut envoyer régulièrement une requête au serveur et en récupérer la réponse. Pour ce faire, on utilisera la fonction **fetch** qui sera répétée toutes les 500ms par le navigateur grâce à la fonction **setInterval**. Enfin, on affiche la valeur en replaçant le texte du %%< | ||
| + | <code javascript> | ||
| + | fetch("/ | ||
| + | .then(response => response.text()) // on récupère le texte de la réponse | ||
| + | .then((response) => { | ||
| + | document.getElementById(" | ||
| + | }) | ||
| + | .catch(err => console.log(err)) // si une erreur se produit, on l' | ||
| + | }, 500) // à répéter toutes les 500 millisecondes (2x par seconde) | ||
| + | </ | ||
| + | On peut maintenant insérer ce code javascript entre deux balises // | ||
| + | <code cpp> | ||
| + | void handlePotentiometer() { | ||
| + | unsigned int potValue = analogRead(A0); | ||
| + | server.send(200, | ||
| + | } | ||
| + | </ | ||
| + | La page **%%< | ||
| + | |||
| + | [[https:// | ||