Problème d'envoi des données par GPRS vers un serveur en ligne
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Problème d'envoi des données par GPRS vers un serveur en ligne



  1. #1
    vincentuc

    Problème d'envoi des données par GPRS vers un serveur en ligne


    ------

    Comme l'envoi ne marche pas, j'envoie des requêtes GET à d'autre serveur comme 'www.google.com' et 'www.facebook.com' et ça marche. Mais avec GET au serveur qu'on m'a demandé les données ne marche toujours pas, cela me renvoie un statut code: 604 ou 601 des fois. voici le code:

    Code:
    #include <SoftwareSerial.h>
     
     //SoftwareSerial mySerial(7, 8); //SIM900 Tx & Rx is connected to Arduino #9 & #10
     SoftwareSerial mySerial(1,3); //SIM900 Tx & Rx is connected to NodeMCU #Tx & #Rx 
     //const char *host = "192.168.1.104";
    
    String immatriculation = "AZ1408RB";
    int vitesse = 800;
       
    void testPostRequest(String urlencodedToSend){
       
      sendCommand("AT");
      ShowSerialData();
      sendCommand("AT+CIPSHUT");
      ShowSerialData();
      delay(500);
      sendCommand("AT+SAPBR=0,1");
      delay(2000);
      ShowSerialData();
      sendCommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
      ShowSerialData();
      sendCommand("AT+SAPBR=3,1,\"APN\",\"internet.mtn.bj\"");
      ShowSerialData();
      sendCommand("AT+SAPBR=1,1");
      ShowSerialData();
      sendCommand("AT+SAPBR=2,1");
      ShowSerialData();
      sendCommand("AT+CGATT?"); //  +CGATT: 1  --- Cela signifie que la connexion GPRS est active
      ShowSerialData();
      sendCommand("AT+HTTPINIT");
      delay(1000);
      ShowSerialData();
      sendCommand("AT+HTTPPARA=\"CID\",1");
      ShowSerialData();
       // Activer le mode SSL/TLS pour HTTPS
      sendCommand("AT+HTTPSSL=1"); 
      delay(2000); 
      ShowSerialData();
      //String url = "https://www.google.com" ;
      //String url = "https://www.facebook.com";
      String url = "https://dgl-api.e-gbavou.com/api/voitures";
      sendCommand(("AT+HTTPPARA=\"URL\",\"" + url + "\"").c_str());
      ShowSerialData();
      //sendCommand("AT+HTTPPARA=\"CONTENT\",\"application/x-www-form-urlencoded\"");
      sendCommand("AT+HTTPPARA=\"CONTENT\",\"application/json\"");
      ShowSerialData();
      sendCommand(("AT+HTTPDATA=" + String(urlencodedToSend.length()) + ",20000").c_str());
      delay(6000);
       //Envoi des données x-www-form-urlencoded
      mySerial.println(urlencodedToSend);
      delay(1000);
      ShowSerialData();
      Serial.println(urlencodedToSend);
      delay(1000);
      sendCommand("AT+HTTPACTION=1");   // requête POST
      delay(10000);
      ShowSerialData();
      // sendCommand("AT+HTTPACTION=0");   // requête GET
      // delay(10000);
      // ShowSerialData();
      sendCommand("AT+HTTPREAD");
      delay(300);
      ShowSerialData();
      sendCommand("AT+HTTPTERM");
      ShowSerialData();
      sendCommand("AT+CIPSHUT");
      ShowSerialData();
    }
    
    void sendCommand(const char* command) {
    
      Serial.print("C: ");
      Serial.print(command);
      mySerial.println(command);
      delay(1000);
    }
    
     void ShowSerialData() {
    
      while (mySerial.available())
      {
        Serial.write(mySerial.read()) ;
        //Serial.println( );
      }
       while (Serial.available())
      {
        mySerial.write(Serial.read());
        Serial.println( );
      }
    } 
    
    void setup() {
      int baudRate = 115200;
      Serial.begin(baudRate); // Serial monitor
      mySerial.begin(baudRate); // GSM module
      delay(7000);
    }
    
    void loop() {
       String urlencodedToSend = "{\"immatriculation\":\"immatriculation\", \"vitesse\":\" String(vitesse)\"}"   ;
       //String urlencodedToSend= "immatriculation=" + immatriculation + "&vitesse=" + vitesse ; 
       Serial.print("urlencodedToSend: ");
       Serial.println(urlencodedToSend);
       
      testPostRequest(urlencodedToSend) ;
       
    }

    -----

  2. #2
    umfred

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Je vais répondre à celui-ci: les erreurs ont des significations:
    Erreur 601: Declined – The server declined the request and will include the reason for this (e.g., user account not authorized).

    Erreur 603 (indiqué dans ton autre post): Service Unavailable – The server is temporarily unable to handle the request due to maintenance downtime, overloaded servers, or other reasons. In some cases, this may be caused because the service has been rendered unavailable to external clients by another service shutting it down temporarily to perform maintenance.

    Erreur 604: Method Not Allowed – The method is not allowed for the requested resource. This should rarely be used as a response because the error_status value is more descriptive and it exists for a long time.

    https://www.thatcompany.com/understa...atus-codes#6XX

    En tout cas, l'url fonctionne bien.
    Dernière modification par umfred ; 19/03/2024 à 09h28.

  3. #3
    umfred

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    et d'après ce que tu as rajouté sur le forum Arduino (résultat affiché dans la console série), tout semble pourtant bien se passer à chacune des étapes.
    Tu as la doc de ton API ?

  4. #4
    Ikhar84
    Animateur Informatique

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Tu as la main sur le serveur ?

    Le serveur attend une requête GET ou POST ?
    Tu parles de GET mais ton code fait un POST (la ligne du GET est commentée).
    Ce serait pas top de faire un GET vers une api web pour envoyer des données…

    D'autre part, si les sites que tu as testés ont bien "fonctionné" (comment tu as vérifié que c'était OK ?), c'est que ce sont de simples "pages web" destinée à être consultées, via une méthode GET.

    Le serveur attend une authentification ?
    Possèdes tu une clé d'API ou un jeton d'authentification (JWT) ?

    Tu as vu cet exemple ?
    https://github.com/RDjarbeng/HTTP-GE...-GSM/tree/main

    Je pense que oui, ton code y ressemble pas mal …
    J'ai glissé Chef !

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    j'ai oublié de mettre les liens des forums arduino où il a fournit les messages de retour (si ça peut être utile)
    https://forum.arduino.cc/t/probleme-...gprs/1233913/2
    https://forum.arduino.cc/t/probleme-...r-gprs/1233900

  7. #6
    vincentuc

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Salut à tous,

    Je rencontre des difficultés pour envoyer des données (POST) via GPRS vers un serveur en ligne. Je reçois un code d'état 603 ou 601. J'ai pensé à essayer un GET vers d'autres serveurs comme www.google.com et www.facebook.com , et cela fonctionne avec un code d'état 200. Cependant, lorsque j'ai tenté un GET vers mon propre serveur où j'envoie habituellement des POST, j'ai rencontré les mêmes erreurs (603 ou 601). Cette erreur se reproduit avec la plupart des serveurs que j'ai testés.

    j'ai checké des solutions à des problèmes similaire mais rien n'a marché. Voici mon code ci-dessus. Auriez-vous des suggestions sur la façon de faire fonctionner le script pour communiquer avec mon serveur ? Merci d'avance pour votre aide.

    OS: Windows
    IDE: Arduino 2.1.1

  8. #7
    vincentuc

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Non j'ai la doc sur API

  9. #8
    vincentuc

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    En faisant la requête sur www.facebook, je reçois : +HTTPACTION:0,200,59167
    Oui, https://github.com/RDjarbeng/HTTP-GE...-GSM/tree/main, c'est ça j'ai utlisé

    Je ne possèdes pas une clé d'API ni un jeton d'authentification (JWT)

  10. #9
    vincentuc

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne


  11. #10
    umfred

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Citation Envoyé par vincentuc Voir le message
    Non j'ai la doc sur API
    Tu peux nous donné un lien vers cette API.

    Tous les serveurs ne répondent aux mêmes commandes GET ou POST, il faut respecter leur "grammaire".
    Pour les erreurs 601, il faudrait récupérer le reste du message pour connaitre la raison du refus.

  12. #11
    polo974

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Et tester les requêtes avec wget ou curl ou autre client http affûté pour faire les rest...

    Une présentation de certains: https://hevodata.com/learn/rest-clients/

    Ça évite de compiler à chaque modif...
    Jusqu'ici tout va bien...

  13. #12
    umfred

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Il y a aussi une histoire de timeout, dans la requête de POST, on donne un timeout de 20000 (20s), or après l'initialisation de l'envoi du POST (sendCommand("AT+HTTPACTION=1" ); // requête POST) , tu n'attends que 10000ms (10s) avant de faire une lecture, double ce délai pour voir

  14. #13
    Ikhar84
    Animateur Informatique

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    GPRS c'est obligé ?
    Tu ne peux pas passer par un modem 4G via le WIFI ?
    Tu es dans quel pays (sans indiscrétion), en europe le GPRS va pas faire long feu...
    J'ai glissé Chef !

  15. #14
    polo974

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    C'est vrai qu'en France les licence 2G courrent jusqu'à (fin?) 2025...
    Acheter un équipement 2G pour une nouvelle application de nos jours est peu raisonnable.
    Jusqu'ici tout va bien...

  16. #15
    umfred

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Dans tous les cas, ça ne change pas la problématique du questionnement du serveur

  17. #16
    Ikhar84
    Animateur Informatique

    Re : Problème d'envoi des données par GPRS vers un serveur en ligne

    Ben si plus de commandes AT, place à de simples requêtes HTTP...
    J'ai glissé Chef !

Discussions similaires

  1. envoi des données par gsm/gprs vers un server
    Par Name1 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 03/04/2020, 15h52
  2. Réponses: 10
    Dernier message: 14/02/2014, 14h44
  3. Problème de connexion entre mon PC et mon module GPRS en mode serveur
    Par invite0a395cf4 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/02/2011, 13h24
  4. envoi de données par GPRS
    Par invite9e01463d dans le forum Électronique
    Réponses: 3
    Dernier message: 06/02/2010, 08h55