Autres articles / Other articles

Installation du client HTTP

publication: 3 août 2022 / mis à jour 4 août 2022

Read this page in english

 

Appel à collaboration

Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.

Partagez-les ici sur ce site.

ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.

Vos montages peuvent aider d'autres développeurs.

Les montages des autres développeurs peuvent vous aider.

Pour proposer un article ou un montage, cliquez ici


Modification du fichier source ESP32forth.ino

ESP32Forth est fourni sous forme de fichier source, écrit en langage C. Ce fichier doit être compilé à l'aide de ARDUINO IDE ou tout autre compilateur C compatible avec l'environnement de développement ARDUINO.

Voici les portions de code à modifier:

#define ENABLE_SD_SUPPORT
#define ENABLE_SPI_FLASH_SUPPORT
#define ENABLE_HTTP_SUPPORT
// #define ENABLE_HTTPS_SUPPORT
// .......
#define VOCABULARY_LIST \
  V(forth) V(internals) \
  V(rtos) V(SPIFFS) V(serial) V(SD) V(SD_MMC) V(ESP) \
  V(ledc) V(http) V(Wire) V(WiFi) V(bluetooth) V(sockets) V(oled) \
  V(rmt) V(interrupts) V(spi_flash) V(camera) V(timers)
  OPTIONAL_RMT_SUPPORT \
  OPTIONAL_OLED_SUPPORT \
  OPTIONAL_SPI_FLASH_SUPPORT \
  OPTIONAL_HTTP_SUPPORT \
  FLOATING_POINT_LIST

#ifndef ENABLE_HTTP_SUPPORT
# define OPTIONAL_HTTP_SUPPORT
#else

# include <HTTPClient.h>
  HTTPClient http;
  
# define OPTIONAL_HTTP_SUPPORT \
  XV(http, "HTTP.begin", HTTP_BEGIN, tos = http.begin(c0)) \
  XV(http, "HTTP.doGet", HTTP_DOGET, PUSH http.GET()) \
  XV(http, "HTTP.getPayload", HTTP_GETPL, String s = http.getString(); \
    memcpy((void *) n1, (void *) s.c_str(), n0); DROPn(2)) \
  XV(http, "HTTP.end", HTTP_END, http.end())
  #endif
vocabulary ledc  ledc definitions
transfer ledc-builtins
forth definitions

vocabulary http  http definitions
transfer http-builtins
forth definitions

vocabulary Serial   Serial definitions
transfer Serial-builtins
forth definitions

Une fois le fichier source modifié, vous le compilez et le téléversez sur la carte ESP32. Si tout s'est correctement déroulé, vous devez disposer d'un nouveau vocabulaire http:

http 
vlist 
HTTP.begin HTTP.doGet HTTP.getPayload HTTP.end http-builtins 

Test du client HTTP

Pour tester notre client HTTP, on peut le faire en interrogeant n'importe quel serveur web. Mais pour ce que nous envisageons ultérieurement, il faut disposer d'un serveur web personnel. Sur ce serveur, on crée un sous domaine:

Ce sous-domaine étant créé, il ne contient aucun script à exécuter. On crée la page index.php et on y met ce code:

It's OK

Pour vérifier que notre sous-domaine est fonctionnel, il suffir de l'interroger depuis notre navigateur web préféré:

Si tout se passe comme prévu, on doit avoir le texte It's OK qui s'affiche dans notre navigateur web préféré. Voyons maintenant comment réaliser cette même interrogation de serveur depuis ESP32Forth...

Voici le code FORTH écrit rapidement pour effectuer le test du client HTTP:

WiFi 
 
\ connection to local WiFi LAN 
: myWiFiConnect 
    z" Mariloo" 
    z" 1925144D91DE5373C3C2D7959F"   
    login 
  ; 
 
Forth 
 
create httpBuffer 700 allot 
    httpBuffer 700 erase 
 
HTTP 
 
: run  
    cr 
    z" http://ws.arduino-forth.com/" HTTP.begin  
    if 
        HTTP.doGet dup ." Get results: " . cr 0 > 
        if  
            httpBuffer 700 HTTP.getPayload 
            httpBuffer z>s dup . cr type 
        then 
    then 
    HTTP.end 
  ; 

On active la liaison Wifi en exécutant myWiFiConnect puis run:

--> myWiFiConnect
192.168.1.23
MDNS started
 ok
--> run
 
Get results: 200
8
It's OK
 ok

Notre client HTTP a parfaitement interrogé le serveur web en affichant le même texte que celui récupéré à partir de notre navigateur web.

Ce petit test réussi ouvre la voie à d'énormes possibilités qui seront développées dans d'autres articles...


Legal: site web personnel sans commerce / personal site without seling