Récupérer des données sur un site web HTTPS

Par le biais d'un schiel ethernet récupoérer des données en valeur JSON sur un site web

a marqué ce sujet comme résolu.

Bonjour, Je suis un nouveau venu sur ce forum. Après avoir échanger sur le sujet sur un autre forum, par le biais d’une connexion WiFi et d’un module ESP32 mon programme en C++ permettait d’afficher les valeurs de tarifications d’un contrat Tempo chez ENEDIS. Mon projet serait de réaliser un programme en C++ qui permettrait de récupérer les mêmes valeurs du même site mais par le biais d’un shiel Ethernet et d’une connexion Ethernet. Mes essais (nombreux) en partant des écrits des auteurs Eskimon et olyte, des bibliothèques, et j’en passe, ne m’ont pas donné de résultats positifs ! Je souhaiterai avoir une aide de la communauté si un tel cas aurait été traité ou de votre expérience ? Ne connaissant pas encore vos habitudes, je n’ai pas édité mon programme et les détails. D’avance merci pour vos retours.

L’Arsene57.

Bienvenue sur le forum ! Votre projet semble intéressant. Si votre programme ESP32 fonctionnait en WiFi, son adaptation à un bouclier Ethernet devrait principalement impliquer l’ajustement des bibliothèques réseau (passage du WiFi à Ethernet). Pourriez-vous partager des messages d’erreur ou des extraits de code ? Je suis monteur vidéo et mon plus grand défi a été de trouver un moyen fiable d’envoyer des fichiers vidéo haute résolution aux clients. De nombreux services réduisaient la qualité ou avaient des vitesses de transfert lentes. Filemail a tout changé ! Désormais, je peux réaliser instantanément des projets vidéo de haute qualité, ce qui rend mon processus de travail beaucoup plus fluide.

+0 -0

Bonjour,

Peux-tu montrer où tu en es, partager ton code et tes essais, pour qu’on puisse partir d’une base ? Si tu as pu récupérer les données par connexion wifi, ça veut dire que tu as déjà le code de connexion qui fonctionne, tu n’arrives donc pas à paramétrer la carte pour qu’elle utilise le port ethernet ?

+0 -0

Bonjour, Voici le programme (entre autres) pour faire des tests des connexions au site. Je n’ai pas de résultats positifs !

/*
 Web client
 */

#include <UIPEthernet.h>

// Entrez ci-dessous une adresse MAC pour votre contrôleur.
// Les boucliers Ethernet les plus récents ont une adresse MAC imprimée sur un autocollant sur le bouclier
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// si vous ne souhaitez pas utiliser DNS (et réduire la taille de votre sketch)
// utilise l'IP numérique au lieu du nom du serveur :
//Serveur d'adresse IP (74 125 232 128 );  // IP numérique pour Google (pas de DNS)
char server[] = "https://services-rte.com/cms/open_data/v1/tempo?season=2024-2025";    

// Définit l'adresse IP statique à utiliser si le DHCP ne parvient pas à l'attribuer
IPAddress ip(192, 168, 18, 249);
IPAddress myDns(192, 168, 0, 1);

// Initialise la bibliothèque client Ethernet
// avec l'adresse IP et le port du serveur
// auquel vous souhaitez vous connecter (le port 80 est par défaut pour HTTP) :
EthernetClient client;

// Variables pour mesurer la vitesse
unsigned long beginMicros, endMicros;
unsigned long byteCount = 0;
bool printWebData = true;  // défini sur false pour une meilleure mesure de la vitesse

void setup() {
  // Vous pouvez utiliser Ethernet.init(pin) pour configurer la broche CS
  Ethernet.init(10);    // La plupart des boucliers Arduino
  //Ethernet.init(5);   // MKR ETH Shield
  //Ethernet.init(0);   // Teensy 2.0
  //Ethernet.init(20);  // Teensy++ 2.0
  //Ethernet.init(15);  // ESP8266 with Adafruit FeatherWing Ethernet
  //Ethernet.init(33);  // ESP32 with Adafruit FeatherWing Ethernet

  // Ouvrir les communications série et attendre que le port s'ouvre :
  Serial.begin(115200);
  while (!Serial) {
    ; // attend que le port série se connecte. Nécessaire uniquement pour le port USB natif
  }

  // démarre la connexion Ethernet :
  Serial.println("Initialisez Ethernet avec DHCP :");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Échec de la configuration d'Ethernet à l'aide de DHCP");
    // Check for Ethernet hardware present
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Le schiel Ethernet n'a pas été trouvé.  Désolé, je ne peux pas fonctionner sans matériel. :(");
      while (true) {
        delay(1); // ne fait rien, inutile de fonctionner sans matériel Ethernet
      }
    }
    if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Le câble Ethernet n'est pas connecté.");
    }
    // essayez de configurer en utilisant l'adresse IP au lieu de DHCP :
    Ethernet.begin(mac, ip, myDns);
  } else {
    Serial.print("  IP attribuée par DHCP ");
    Serial.println(Ethernet.localIP());
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.print("se connecter à : ");
  Serial.print(server);
  Serial.println("...");

  // si vous obtenez une connexion, faites un rapport via série :
  if (client.connect(server, 80)) {
    Serial.print("connecté à ");
    Serial.println(client.remoteIP());
    // Faites une requête HTTP :
    client.println("GET /search?q=values https/1.1");
    //client.println("values:");
      // client.println("GET / HTTP/1.1");
      // client.println("Host: perdu.com");
      // client.println("Connection: close");
      // client.println();  

    client.println("Connection: close");
    client.println();
  } else {
    // si vous n'avez pas obtenu de connexion au serveur :
    Serial.println("la connexion a échoué");
  }
  beginMicros = micros();
}

void loop() {
// s'il y a des octets entrants disponibles
  // depuis le serveur, lisez-les et imprimez-les :
  int len = client.available();
  if (len > 0) {
    byte buffer[80];
    if (len > 80) len = 80;
    client.read(buffer, len);
    if (printWebData) {
      Serial.write(buffer, len); // s'affiche sur le moniteur série (ralentit certaines cartes)
    }
    byteCount = byteCount + len;
  }

  // si le serveur est déconnecté, arrête le client :
  if (!client.connected()) {
    endMicros = micros();
    Serial.println();
    Serial.println(" si le serveur est déconnecté, arrête le client :");
    client.stop();

    // ne fait plus rien pour l'instant :
    while (true) {
      delay(1);
    }
  }
}
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte