Go Down

Topic: ESP8266 api rest (Read 179 times) previous topic - next topic

creale

Mar 25, 2019, 05:30 pm Last Edit: Mar 25, 2019, 05:42 pm by creale
Bonjour à tous,

Je sollicite votre aide, Je souhaiterai faire un appel api sur une api que j'ai déjà en fonctionnement sur arduino via Esp8266.

Pour positionner l'état de mon projet, j'ai un arduino uno avec un esp8266, j'arrive d'ores et déjà à envoyer mes command AT pour lesquels j'ai des réponses.

Et à me connecter à mon réseau wifi (je vois le esp8266 connecté à mon réseau sur mon routeur)

Pour être franc, je suis pas bon en environnement de codage pour arduino encore, les installations de librairies etc.

A chaque fois que j'ajoute une librairie, il me manque un fichier :) (dernièrement par exemple avec l'inclusion de esp8266Wifi.h)

Code: [Select]
Contents/Java/libraries/ESP8266WiFi/src/ESP8266WiFiType.h:26:19: fatal error: queue.h: No such file or directory

Mon but final est d'avoir des arduino qui communiquent avec mon api en GET et en POST pour faire le lien entre eux...

Je ne sais pas si je suis clair dans mon explication :( et là je suis bloqué à l'appel de mon URL pour l'API

Quelqu'un pourrait m'aider ?

Mon code qui fonctionne avec les commandes AT
Code: [Select]
//#include <ESP8266WiFi.h>;
//#include <ESP8266HTTPCLIENT.h>;
#include <SoftwareSerial.h>
#define RX 10
#define TX 11

String AP = "ssid";     
String PASS = "mdp";
int countTrueCommand;
int countTimeCommand;
boolean found = false;
int valSensor = 1;
SoftwareSerial esp8266(RX,TX);
 
 
void setup() {
  Serial.begin(9600);
  esp8266.begin(115200);
  sendCommand("AT",5,"OK");
  sendCommand("AT+CWMODE=1",5,"OK");
  sendCommand("AT+CWJAP=\""+ AP +"\",\""+ PASS +"\"",20,"OK");
}
void loop() {
 sendCommand("AT+RST",5,"OK");
 sendCommand("AT",5,"OK");
}

void sendCommand(String command, int maxTime, char readReplay[]) {
  Serial.print(countTrueCommand);
  Serial.print(". at command => ");
  Serial.print(command);
  Serial.print(" ");
  while(countTimeCommand < (maxTime*1))
  {
    esp8266.println(command);//at+cipsend
    if(esp8266.find(readReplay))//ok
    {
      found = true;
      Serial.write(Serial.read()); 
      break;
    }
 
    countTimeCommand++;
  }
 
  if(found == true)
  {
    Serial.println("Il a trouvé qqch");
    countTrueCommand++;
    countTimeCommand = 0;
  }
 
  if(found == false)
  {
    Serial.println("Il a rien trouvé");
    countTrueCommand = 0;
    countTimeCommand = 0;
  }
 
  found = false;
 }


NB : J'essaye vraiment de garder l'arduino comme type de carte pour pouvoir piloter autre chose avec. (on trouve bcp de tutos qui passent uniquement par le esp8266, j'imagine que c'est ça qui me pose problème au niveau des librairie)

Si jamais j'ai dis une grosse bêtise dans tous ça :( ... dsl j'apprend le truc :)

Merci d'avance

hbachetti

ESP8266WiFi.h est un fichier à inclure dédié à l'ESP8266

Je ne vois pas trop ce que tu pourrais en faire dans un code avr (UNO).
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

creale

Oui c'est bien ce que je me disais :)

Mais du coup on peut bien appeler des url en POST ou GET via les commande AT ?  (pour l'API)

J'avais vu un bout de code qui disais qu'il fallait compter le nombre de bytes avant d'envoyer la requête, mais impossible de remettre al main sur ce bout de code pour le tester :(

Je cherche encore :)

Merci pour le retour rapide en tous cas

hbachetti

Quote
Mais du coup on peut bien appeler des url en POST ou GET via les commande AT ?  (pour l'API)
Absolument aucune idée. Je n'utilise jamais ce genre de montage UNO / ESP8266.
C'est contre performant et complètement dépassé.
Un ESP8266 sait tout faire mieux qu'une UNO, à part si l'on a besoin de plusieurs pins ADC.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up