Go Down

Topic: Envoyer et recevoir des donnée d'une base de données ( pon (Read 529 times) previous topic - next topic

lgabed420

Bonjour ,

J'ai reçu à envoyer les mesure d'un dht sur un fichier json, malheuresement pas sur une base de données ( j'ai essayé mais j'ai pas reçu) , donc en utilisant un script php qui permet de creer un fichier json et puis evoyer les mesures dans ce dernier.
  et puis j'ai tester aussi de transmettre deux variable de l'arduino mega à l'esp via le serial port mais c'est pas encore puisque je maitrise pas encore le String, je mets tout cela dans un topic dés que c'est finit .

Maintenant j'essaie de me connecter à un url qui contient un fichier json pour recevoir des datas grace au PARSE de ArduinoJSON, donc cette fois-ci j'utilise le https et j'arrive pas à me connecter, est ce que cela pourrais venir des permissions de l'url meme ?

NB : je n'utilise plus l'ESP-01 je viens de recevoir le Nodemcu enfin après 2 mois d'attentes ^^ et j'avoue c'est beaucoup plus pratique .

lgabed420

voilà le code avec lequel je teste le HTTPS  :


Code: [Select]
#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#include <WiFiClientSecureBearSSL.h>


const uint8_t fingerprint[20] = { fingerprint obtenu à partir du certificat dans le navigateur};

ESP8266WiFiMulti WiFiMulti;

void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  for (uint8_t t = 4; t > 0; t--) {
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay(1000);
  }

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("ssid", "mdp wifi");
}

void loop() {
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {

    std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);

    client->setFingerprint(fingerprint);

    HTTPClient https;

    Serial.print("[HTTPS] begin...\n");
    if (https.begin(*client, "https://URL HTTPS ")) {  // HTTPS

      Serial.print("[HTTPS] GET...\n");
      // start connection and send HTTP header
      int httpCode = https.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTPS] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = https.getString();
          Serial.println(payload);
        }
      } else {
        Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
      }

      https.end();
    } else {
      Serial.printf("[HTTPS] Unable to connect\n");
    }
  }

  Serial.println("Wait 10s before next round...");
  delay(10000);
}


donc j'obtiens le message du print:

Quote
[HTTPS] GET... failed, error: connection refuse

lgabed420

Update : j'ai utilisé aussi l'exemple BasicHttpsClient avec le meme lien j'ai mis à jour le fingerprint mais toujours pas, par contre le http ca marche nickel

supercc

Salut lgabed420,

j'ai un peu de mal a te suivre. Tu cherches toujours à insérer et lire dans une base de données MySql ?

Si c'est le cas, pourquoi empiler tous ces protocoles alors que MySql Connector fait le boulot ?

lgabed420

Salut supercc, me voilà de retour !
finalement j'ai laissé tombé la lecture et l'insertion dans un BdD, je ferai cela plus tard quand j'aurai le temps de bien reviser tout ce qui est BdD.

je l'ai fait en Json donc en utilisant la fameuse librairie de ce dernier.

donc en gros ce que j'ai fait :

envoyer des requetes post à un https puis recuperer le json ( parametre : humidité temperature ...) et le parser ( je sais pas si on peut dire ca en francais ^^)  .

ce qu'il me reste c'est de envoyer les données Json de l'esp à l'arduino mega, j'ai cherché un peu j'ai vuqu'on peut pas envoyé plusieurs variables à l'aide du UART ou plutot j'ai pas encore trouver comment, peut etre si j'utilise un autre bus de communication plus adapté à ce que je fais, j'ai pas encore regardé , est ce que t'aurais des propositions ?


je sais pas si j'ai bien expliqué, je suis un peu fatigué mais n'hesite pas à me demander si c'est pas le cas et je te remercie pour l'interet que tu portes à mon ptit sujet ca fait zizir !

supercc

Tu sais donc récupérer sur l'esp des données

Quote
envoyer des requetes post à un https puis recuperer le json ( parametre : humidité temperature ...) et le parser ( je sais pas si on peut dire ca en francais ^^)  .
Et c'est quoi le serveur derrière ? Domoticz ?

Quote
ce qu'il me reste c'est de envoyer les données Json de l'esp à l'arduino mega, j'ai cherché un peu j'ai vuqu'on peut pas envoyé plusieurs variables à l'aide du UART ou plutot j'ai pas encore trouver comment, peut etre si j'utilise un autre bus de communication plus adapté à ce que je fais, j'ai pas encore regardé , est ce que t'aurais des propositions ?
Et pourquoi pas un truc comme ça pour envoyer du json de l'esp vers le mega :

1. l'esp écrit le json sur la liaison série.
2. le mega lit le json sur sa liaison série et le décode

Il te suffit normalement juste de relier en croisant les Rx et les Tx  (UART) entre les 2 cartes. Je ne connais pas la mega mais je crois qu'il y a plusieurs ports séries, il y a donc moyen d'en utiliser un autre que Serial (Serial2 ?). Sur l'esp tu n'as que 1 UART du coup pense a bien déconnecter la liaison série entre l'esp et la mega avant de télécharger un programme sur une des cartes.






lgabed420

Bonjour supercc,

non c'est un api rest.

si j'ai essayé mais c'est vrai que j'ai pas envoyé le json entier, je l'ai d'abord parser et puis j'ai essayé d'envoyer à l'aide de l'UART mais vu le nombre de données que j'ai il a pas du aimé, je vais essayé ce soir d'envoyer le json et le parser sur le mega.

Go Up